@capillarytech/creatives-library 8.0.353-alpha.6 → 8.0.353

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 (124) hide show
  1. package/constants/unified.js +0 -29
  2. package/package.json +1 -1
  3. package/services/tests/api.test.js +20 -35
  4. package/utils/commonUtils.js +1 -19
  5. package/v2Components/CapActionButton/constants.js +0 -7
  6. package/v2Components/CapActionButton/index.js +108 -166
  7. package/v2Components/CapActionButton/index.scss +6 -157
  8. package/v2Components/CapActionButton/messages.js +3 -19
  9. package/v2Components/CapActionButton/tests/index.test.js +17 -41
  10. package/v2Components/CapTagList/index.js +0 -10
  11. package/v2Components/CommonTestAndPreview/CustomValuesEditor.js +49 -72
  12. package/v2Components/CommonTestAndPreview/DeliverySettings/DeliverySettings.scss +2 -8
  13. package/v2Components/CommonTestAndPreview/DeliverySettings/ModifyDeliverySettings.js +21 -213
  14. package/v2Components/CommonTestAndPreview/DeliverySettings/constants.js +0 -16
  15. package/v2Components/CommonTestAndPreview/DeliverySettings/index.js +10 -85
  16. package/v2Components/CommonTestAndPreview/DeliverySettings/messages.js +0 -30
  17. package/v2Components/CommonTestAndPreview/DeliverySettings/utils/parseSenderDetailsResponse.js +11 -79
  18. package/v2Components/CommonTestAndPreview/SendTestMessage.js +5 -10
  19. package/v2Components/CommonTestAndPreview/UnifiedPreview/RcsPreviewContent.js +15 -157
  20. package/v2Components/CommonTestAndPreview/UnifiedPreview/_unifiedPreview.scss +76 -346
  21. package/v2Components/CommonTestAndPreview/UnifiedPreview/index.js +4 -133
  22. package/v2Components/CommonTestAndPreview/_commonTestAndPreview.scss +0 -11
  23. package/v2Components/CommonTestAndPreview/constants.js +2 -38
  24. package/v2Components/CommonTestAndPreview/index.js +186 -691
  25. package/v2Components/CommonTestAndPreview/messages.js +3 -45
  26. package/v2Components/CommonTestAndPreview/sagas.js +6 -25
  27. package/v2Components/CommonTestAndPreview/tests/CustomValuesEditor.test.js +284 -308
  28. package/v2Components/CommonTestAndPreview/tests/DeliverySettings/ModifyDeliverySettings.test.js +65 -231
  29. package/v2Components/CommonTestAndPreview/tests/DeliverySettings/index.test.js +5 -118
  30. package/v2Components/CommonTestAndPreview/tests/DeliverySettings/utils/parseSenderDetailsResponse.test.js +0 -341
  31. package/v2Components/CommonTestAndPreview/tests/PreviewSection.test.js +1 -8
  32. package/v2Components/CommonTestAndPreview/tests/SendTestMessage.test.js +13 -34
  33. package/v2Components/CommonTestAndPreview/tests/UnifiedPreview/RcsPreviewContent.test.js +283 -281
  34. package/v2Components/CommonTestAndPreview/tests/UnifiedPreview/index.test.js +1 -199
  35. package/v2Components/CommonTestAndPreview/tests/index.test.js +4 -132
  36. package/v2Components/CommonTestAndPreview/tests/sagas.test.js +26 -36
  37. package/v2Components/FormBuilder/index.js +168 -63
  38. package/v2Components/TemplatePreview/_templatePreview.scss +23 -38
  39. package/v2Components/TemplatePreview/index.js +31 -143
  40. package/v2Components/TemplatePreview/tests/index.test.js +0 -142
  41. package/v2Components/TestAndPreviewSlidebox/index.js +1 -13
  42. package/v2Components/TestAndPreviewSlidebox/sagas.js +4 -11
  43. package/v2Components/TestAndPreviewSlidebox/tests/saga.test.js +1 -3
  44. package/v2Containers/CreativesContainer/SlideBoxContent.js +4 -36
  45. package/v2Containers/CreativesContainer/SlideBoxFooter.js +1 -10
  46. package/v2Containers/CreativesContainer/SlideBoxHeader.js +4 -29
  47. package/v2Containers/CreativesContainer/constants.js +0 -9
  48. package/v2Containers/CreativesContainer/index.js +163 -346
  49. package/v2Containers/CreativesContainer/index.scss +1 -51
  50. package/v2Containers/CreativesContainer/tests/SlideBoxFooter.test.js +34 -78
  51. package/v2Containers/CreativesContainer/tests/SlideBoxHeader.test.js +16 -79
  52. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +0 -8
  53. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxHeader.test.js.snap +98 -357
  54. package/v2Containers/CreativesContainer/tests/__snapshots__/index.test.js.snap +15 -20
  55. package/v2Containers/CreativesContainer/tests/index.test.js +9 -71
  56. package/v2Containers/MobilePush/Create/test/saga.test.js +2 -2
  57. package/v2Containers/Rcs/constants.js +10 -119
  58. package/v2Containers/Rcs/index.js +818 -2450
  59. package/v2Containers/Rcs/index.scss +8 -280
  60. package/v2Containers/Rcs/messages.js +3 -34
  61. package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +70073 -98018
  62. package/v2Containers/Rcs/tests/__snapshots__/utils.test.js.snap +5 -0
  63. package/v2Containers/Rcs/tests/index.test.js +121 -152
  64. package/v2Containers/Rcs/tests/mockData.js +0 -38
  65. package/v2Containers/Rcs/tests/utils.test.js +30 -646
  66. package/v2Containers/Rcs/utils.js +11 -478
  67. package/v2Containers/Sms/Create/index.js +40 -106
  68. package/v2Containers/SmsTrai/Create/index.js +4 -9
  69. package/v2Containers/SmsTrai/Edit/constants.js +0 -2
  70. package/v2Containers/SmsTrai/Edit/index.js +130 -640
  71. package/v2Containers/SmsTrai/Edit/messages.js +4 -14
  72. package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +2296 -4249
  73. package/v2Containers/SmsWrapper/index.js +8 -37
  74. package/v2Containers/TagList/index.js +0 -6
  75. package/v2Containers/Templates/_templates.scss +9 -166
  76. package/v2Containers/Templates/actions.js +0 -11
  77. package/v2Containers/Templates/constants.js +0 -2
  78. package/v2Containers/Templates/index.js +52 -120
  79. package/v2Containers/Templates/sagas.js +12 -56
  80. package/v2Containers/Templates/tests/__snapshots__/index.test.js.snap +1017 -1062
  81. package/v2Containers/Templates/tests/sagas.test.js +16 -199
  82. package/v2Containers/TemplatesV2/TemplatesV2.style.js +1 -72
  83. package/v2Containers/TemplatesV2/index.js +23 -86
  84. package/v2Containers/WeChat/MapTemplates/test/saga.test.js +9 -9
  85. package/v2Containers/Whatsapp/index.js +20 -3
  86. package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +34 -578
  87. package/utils/rcsPayloadUtils.js +0 -92
  88. package/utils/templateVarUtils.js +0 -201
  89. package/utils/tests/rcsPayloadUtils.test.js +0 -226
  90. package/utils/tests/templateVarUtils.test.js +0 -204
  91. package/v2Components/CommonTestAndPreview/previewApiUtils.js +0 -59
  92. package/v2Components/CommonTestAndPreview/tests/previewApiUtils.test.js +0 -67
  93. package/v2Components/SmsFallback/SmsFallbackLocalSelector.js +0 -91
  94. package/v2Components/SmsFallback/constants.js +0 -73
  95. package/v2Components/SmsFallback/index.js +0 -956
  96. package/v2Components/SmsFallback/index.scss +0 -265
  97. package/v2Components/SmsFallback/messages.js +0 -78
  98. package/v2Components/SmsFallback/smsFallbackUtils.js +0 -119
  99. package/v2Components/SmsFallback/tests/SmsFallbackLocalSelector.test.js +0 -50
  100. package/v2Components/SmsFallback/tests/rcsSmsFallback.acceptance.test.js +0 -147
  101. package/v2Components/SmsFallback/tests/smsFallbackHandlers.test.js +0 -304
  102. package/v2Components/SmsFallback/tests/smsFallbackUi.test.js +0 -223
  103. package/v2Components/SmsFallback/tests/smsFallbackUtils.test.js +0 -309
  104. package/v2Components/SmsFallback/tests/useLocalTemplateList.test.js +0 -422
  105. package/v2Components/SmsFallback/useLocalTemplateList.js +0 -92
  106. package/v2Components/TemplatePreview/constants.js +0 -2
  107. package/v2Components/VarSegmentMessageEditor/constants.js +0 -2
  108. package/v2Components/VarSegmentMessageEditor/index.js +0 -125
  109. package/v2Components/VarSegmentMessageEditor/index.scss +0 -46
  110. package/v2Containers/CreativesContainer/CreativesSlideBoxWrapper.js +0 -43
  111. package/v2Containers/CreativesContainer/embeddedSlideboxUtils.js +0 -79
  112. package/v2Containers/CreativesContainer/tests/SlideBoxContent.localTemplates.test.js +0 -90
  113. package/v2Containers/CreativesContainer/tests/embeddedSlideboxUtils.test.js +0 -258
  114. package/v2Containers/CreativesContainer/tests/useLocalTemplatesProp.test.js +0 -125
  115. package/v2Containers/Rcs/rcsLibraryHydrationUtils.js +0 -225
  116. package/v2Containers/Rcs/tests/rcsLibraryHydrationUtils.test.js +0 -318
  117. package/v2Containers/Sms/smsFormDataHelpers.js +0 -67
  118. package/v2Containers/Sms/tests/smsFormDataHelpers.test.js +0 -253
  119. package/v2Containers/SmsTrai/Edit/index.scss +0 -121
  120. package/v2Containers/Templates/TemplatesActionBar.js +0 -101
  121. package/v2Containers/Templates/tests/TemplatesActionBar.test.js +0 -120
  122. package/v2Containers/Templates/tests/smsTemplatesListApi.test.js +0 -180
  123. package/v2Containers/Templates/utils/smsTemplatesListApi.js +0 -79
  124. package/v2Containers/TemplatesV2/tests/TemplatesV2.localTemplates.test.js +0 -131
@@ -37,7 +37,6 @@ import { createStructuredSelector } from 'reselect';
37
37
  import { CAP_SPACE_12, CAP_SPACE_08, FONT_COLOR_05, FONT_COLOR_04 } from '@capillarytech/cap-ui-library/styled/variables';
38
38
  import UnifiedPreview from '../CommonTestAndPreview/UnifiedPreview';
39
39
  import { ANDROID } from '../CommonTestAndPreview/constants';
40
- import TemplatePreview from '../TemplatePreview';
41
40
  import TagList from '../../v2Containers/TagList';
42
41
  import CapTagListWithInput from '../CapTagListWithInput';
43
42
  import SlideBox from '../SlideBox';
@@ -80,6 +79,69 @@ const errorMessageForTags = {
80
79
  TAG_BRACKET_COUNT_MISMATCH_ERROR: 'tagBracketCountMismatchError'
81
80
  };
82
81
 
82
+ // Isolated input for EMAIL template-name: only this tiny component re-renders on each keystroke.
83
+ // formData is updated only on blur (onCommit), eliminating all re-renders during typing.
84
+ class HighFreqInput extends React.Component {
85
+ constructor(props) {
86
+ super(props);
87
+ this.state = { localValue: props.value || '' };
88
+ }
89
+
90
+ componentDidUpdate(prevProps) {
91
+ if (prevProps.value !== this.props.value && this.state.localValue !== this.props.value) {
92
+ this.setState({ localValue: this.props.value || '' });
93
+ }
94
+ }
95
+
96
+ handleChange = (e) => {
97
+ this.setState({ localValue: e.target.value });
98
+ };
99
+
100
+ handleBlur = (e) => {
101
+ this.props.onCommit(this.state.localValue);
102
+ if (this.props.onBlur) this.props.onBlur(e);
103
+ };
104
+
105
+ render() {
106
+ const { value: _v, onCommit: _oc, onBlur: _ob, ...rest } = this.props;
107
+ return <CapInput {...rest} value={this.state.localValue} onChange={this.handleChange} onBlur={this.handleBlur} />;
108
+ }
109
+ }
110
+
111
+ // Isolated wrapper for EMAIL template-subject: blur-only commit, same as HighFreqInput.
112
+ class HighFreqTagInput extends React.Component {
113
+ constructor(props) {
114
+ super(props);
115
+ this.state = { localInputValue: props.inputValue || '' };
116
+ }
117
+
118
+ componentDidUpdate(prevProps) {
119
+ if (prevProps.inputValue !== this.props.inputValue && this.state.localInputValue !== this.props.inputValue) {
120
+ this.setState({ localInputValue: this.props.inputValue || '' });
121
+ }
122
+ }
123
+
124
+ handleInputChange = (e) => {
125
+ this.setState({ localInputValue: e.target.value });
126
+ };
127
+
128
+ handleBlur = () => {
129
+ this.props.onCommit(this.state.localInputValue);
130
+ };
131
+
132
+ render() {
133
+ const { inputValue: _iv, onCommit: _oc, inputOnChange: _ic, ...rest } = this.props;
134
+ return (
135
+ <CapTagListWithInput
136
+ {...rest}
137
+ inputValue={this.state.localInputValue}
138
+ inputOnChange={this.handleInputChange}
139
+ inputProps={{ ...(this.props.inputProps || {}), onBlur: this.handleBlur }}
140
+ />
141
+ );
142
+ }
143
+ }
144
+
83
145
  class FormBuilder extends React.Component { // eslint-disable-line react/prefer-stateless-function
84
146
  constructor(props) {
85
147
  super(props);
@@ -353,6 +415,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
353
415
  this.setState({tabCount: nextProps.tabCount});
354
416
  }
355
417
  if (nextProps.startValidation && nextProps.startValidation !== false && this.props.startValidation !== nextProps.startValidation) {
418
+ if (this.debouncedUpdateFormData) this.debouncedUpdateFormData.flush();
356
419
  this.setState({checkValidation: true});
357
420
  this.validateForm(null, null, true, true, () => {
358
421
  //triggering the saveFormData or onSubmit when validation sets isFormValid to TRUE
@@ -2990,8 +3053,8 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
2990
3053
  userLocale={this.props.userLocale}
2991
3054
  selectedOfferDetails={this.props.selectedOfferDetails}
2992
3055
  eventContextTags={this.props?.eventContextTags}
2993
- waitEventContextTags={this.props?.waitEventContextTags}
2994
3056
  restrictPersonalization={this.props.restrictPersonalization}
3057
+ waitEventContextTags={this.props?.waitEventContextTags}
2995
3058
  />
2996
3059
  </CapColumn>
2997
3060
  );
@@ -3411,26 +3474,25 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
3411
3474
  ? formatMessage(messages.personalizationTagsErrorMessage)
3412
3475
  : (errorType === TAG_BRACKET_COUNT_MISMATCH_ERROR ? formatMessage(globalMessages.unbalanacedCurlyBraces) : (val.errorMessage && ifError ? val.errorMessage : ''));
3413
3476
  if (styling === 'semantic') {
3414
- columns.push(
3415
- <CapColumn key={val.id} span={val.width} offset={val.offset} style={val.style || {}}>
3416
- <CapInput
3417
- id={val.id}
3418
- errorMessage={errorMessageText}
3419
- label={val.label}
3420
- inductiveText={val.inductiveText}
3421
- className={`input-primary chart-name-input${ifError ? ' error' : ''}`}
3422
- // fluid={val.fluid}
3423
- style={val.style ? val.style : {}}
3424
- placeholder={val.placeholder}
3425
- onChange={(e) => this.updateFormData(e.target.value, val)}
3426
- onBlur={(e) => this.handleFieldBlur(e, val)}
3427
- value={value || ""}
3428
- defaultValue={isVersionEnable ? this.state.formData[`${this.state.currentTab - 1}`][val.id] : this.state.formData[val.id]}
3429
- disabled={val.disabled}
3430
- size={val.size || "default"}
3431
- />
3432
- {this.props.schema?.channel === EMAIL &&
3433
- !aiContentBotDisabled && (
3477
+ const isEmailStandaloneHighFreq = val.standalone && this.props.schema?.channel?.toUpperCase() === EMAIL;
3478
+ if (isEmailStandaloneHighFreq) {
3479
+ columns.push(
3480
+ <CapColumn key={val.id} span={val.width} offset={val.offset} style={val.style || {}}>
3481
+ <HighFreqInput
3482
+ id={val.id}
3483
+ errorMessage={errorMessageText}
3484
+ label={val.label}
3485
+ inductiveText={val.inductiveText}
3486
+ className={`input-primary chart-name-input${ifError ? ' error' : ''}`}
3487
+ style={val.style ? val.style : {}}
3488
+ placeholder={val.placeholder}
3489
+ onCommit={(newValue) => this.performFormDataUpdate(newValue, val)}
3490
+ onBlur={(e) => this.handleFieldBlur(e, val)}
3491
+ value={value || ""}
3492
+ disabled={val.disabled}
3493
+ size={val.size || "default"}
3494
+ />
3495
+ {!aiContentBotDisabled && (
3434
3496
  <CapAskAira.ContentGenerationBot
3435
3497
  text={value || ""}
3436
3498
  setText={this.handleSetText.bind(this, val)}
@@ -3439,12 +3501,48 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
3439
3501
  rootStyle={{
3440
3502
  bottom: "0.2rem",
3441
3503
  right: "0.2rem",
3442
- left: "auto",
3504
+ left: "auto",
3443
3505
  }}
3444
3506
  />
3445
3507
  )}
3446
- </CapColumn>
3447
- );
3508
+ </CapColumn>
3509
+ );
3510
+ } else {
3511
+ columns.push(
3512
+ <CapColumn key={val.id} span={val.width} offset={val.offset} style={val.style || {}}>
3513
+ <CapInput
3514
+ id={val.id}
3515
+ errorMessage={errorMessageText}
3516
+ label={val.label}
3517
+ inductiveText={val.inductiveText}
3518
+ className={`input-primary chart-name-input${ifError ? ' error' : ''}`}
3519
+ // fluid={val.fluid}
3520
+ style={val.style ? val.style : {}}
3521
+ placeholder={val.placeholder}
3522
+ onChange={(e) => this.updateFormData(e.target.value, val)}
3523
+ onBlur={(e) => this.handleFieldBlur(e, val)}
3524
+ value={value || ""}
3525
+ defaultValue={isVersionEnable ? this.state.formData[`${this.state.currentTab - 1}`][val.id] : this.state.formData[val.id]}
3526
+ disabled={val.disabled}
3527
+ size={val.size || "default"}
3528
+ />
3529
+ {this.props.schema?.channel === EMAIL &&
3530
+ !aiContentBotDisabled && (
3531
+ <CapAskAira.ContentGenerationBot
3532
+ text={value || ""}
3533
+ setText={this.handleSetText.bind(this, val)}
3534
+ iconPlacement="float-br"
3535
+ iconSize="1.6rem"
3536
+ rootStyle={{
3537
+ bottom: "0.2rem",
3538
+ right: "0.2rem",
3539
+ left: "auto",
3540
+ }}
3541
+ />
3542
+ )}
3543
+ </CapColumn>
3544
+ );
3545
+ }
3448
3546
  }
3449
3547
  break;
3450
3548
 
@@ -3660,11 +3758,8 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
3660
3758
  selectedOfferDetails={this.props.selectedOfferDetails}
3661
3759
  channel={channel}
3662
3760
  eventContextTags={this.props?.eventContextTags}
3663
- waitEventContextTags={this.props?.waitEventContextTags}
3664
3761
  restrictPersonalization={this.props.restrictPersonalization}
3665
- getPopupContainer={this.props.tagListGetPopupContainer}
3666
- popoverOverlayStyle={this.props.tagListPopoverOverlayStyle}
3667
- popoverOverlayClassName={this.props.tagListPopoverOverlayClassName}
3762
+ waitEventContextTags={this.props?.waitEventContextTags}
3668
3763
  />
3669
3764
  </CapColumn>
3670
3765
  );
@@ -3688,37 +3783,48 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
3688
3783
  isBEEAppEnableForCapTagList === false ||
3689
3784
  channelForCapTagList !== 'EMAIL'
3690
3785
  ) {
3786
+ const isEmailStandaloneSubject = val.standalone && channelForCapTagList === EMAIL && val.id === 'template-subject';
3787
+ const tagListProps = {
3788
+ key: `input-${val.id}`,
3789
+ inputId: val.id,
3790
+ inputValue: this.state.formData[val.id] || '',
3791
+ inputPlaceholder: val.placeholder || '',
3792
+ inputErrorMessage: val.errorMessage && ifError ? val.errorMessage : '',
3793
+ inputRequired: val.required || false,
3794
+ inputDisabled: val.disabled || false,
3795
+ headingText: val.label || '',
3796
+ headingStyle: val.headingStyle || { marginTop: '3%', marginRight: '79%' },
3797
+ headingType: "h4",
3798
+ onTagSelect: (data) => this.callChildEvent(data, val, 'onTagSelect'),
3799
+ onContextChange: this.props.onContextChange,
3800
+ location: this.props.location,
3801
+ tags: this.props.tags ? this.props.tags : [],
3802
+ injectedTags: this.props.injectedTags ? this.props.injectedTags : {},
3803
+ className: val.className ? val.className : '',
3804
+ userLocale: this.state.translationLang,
3805
+ selectedOfferDetails: this.props.selectedOfferDetails,
3806
+ eventContextTags: this.props?.eventContextTags,
3807
+ waitEventContextTags: this.props?.waitEventContextTags,
3808
+ moduleFilterEnabled: moduleFilterEnabledForCapTagList,
3809
+ containerStyle: val.style || {},
3810
+ inputProps: val.inputProps || {},
3811
+ showInput: val.showInput !== false,
3812
+ showTagList: val.showTagList !== false,
3813
+ restrictPersonalization: this.props.restrictPersonalization,
3814
+ };
3691
3815
  columns.push(
3692
3816
  <CapColumn key={`input-${val.id}`} offset={val.offset} span={val.width ? val.width : ''} style={val.style ? val.style : {marginBottom: '16px'}}>
3693
- <CapTagListWithInput
3694
- key={`input-${val.id}`}
3695
- inputId={val.id}
3696
- inputValue={this.state.formData[val.id] || ''}
3697
- inputOnChange={(e) => this.updateFormData(e.target.value, val)}
3698
- inputPlaceholder={val.placeholder || ''}
3699
- inputErrorMessage={val.errorMessage && ifError ? val.errorMessage : ''}
3700
- inputRequired={val.required || false}
3701
- inputDisabled={val.disabled || false}
3702
- headingText={val.label || ''}
3703
- headingStyle={val.headingStyle || { marginTop: '3%', marginRight: '79%' }}
3704
- headingType="h4"
3705
- onTagSelect={(data) => this.callChildEvent(data, val, 'onTagSelect')}
3706
- onContextChange={this.props.onContextChange}
3707
- location={this.props.location}
3708
- tags={this.props.tags ? this.props.tags : []}
3709
- injectedTags={this.props.injectedTags ? this.props.injectedTags : {}}
3710
- className={val.className ? val.className : ''}
3711
- userLocale={this.state.translationLang}
3712
- selectedOfferDetails={this.props.selectedOfferDetails}
3713
- eventContextTags={this.props?.eventContextTags}
3714
- waitEventContextTags={this.props?.waitEventContextTags}
3715
- moduleFilterEnabled={moduleFilterEnabledForCapTagList}
3716
- containerStyle={val.style || {}}
3717
- inputProps={val.inputProps || {}}
3718
- showInput={val.showInput !== false}
3719
- showTagList={val.showTagList !== false}
3720
- restrictPersonalization={this.props.restrictPersonalization}
3721
- />
3817
+ {isEmailStandaloneSubject ? (
3818
+ <HighFreqTagInput
3819
+ {...tagListProps}
3820
+ onCommit={(newValue) => this.performFormDataUpdate(newValue, val)}
3821
+ />
3822
+ ) : (
3823
+ <CapTagListWithInput
3824
+ {...tagListProps}
3825
+ inputOnChange={(e) => this.updateFormData(e.target.value, val)}
3826
+ />
3827
+ )}
3722
3828
  </CapColumn>
3723
3829
  );
3724
3830
  }
@@ -4007,6 +4113,8 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
4007
4113
  moduleFilterEnabled={isModuleFilterEnabled}
4008
4114
  eventContextTags={this.props?.eventContextTags}
4009
4115
  waitEventContextTags={this.props?.waitEventContextTags}
4116
+ isGetBeeData={this.props?.isGetBeeData}
4117
+ getBEEData={this.props?.getBEEData}
4010
4118
  />
4011
4119
  </CapColumn>
4012
4120
  );
@@ -4309,8 +4417,8 @@ FormBuilder.defaultProps = {
4309
4417
  userLocale: localStorage.getItem('jlocale') || 'en',
4310
4418
  showLiquidErrorInFooter: () => {},
4311
4419
  metaDataStatus: "",
4312
- isTestAndPreviewMode: false, // Default to false to maintain existing behavior
4313
4420
  waitEventContextTags: {},
4421
+ isTestAndPreviewMode: false, // Default to false to maintain existing behavior
4314
4422
  };
4315
4423
 
4316
4424
  FormBuilder.propTypes = {
@@ -4358,16 +4466,13 @@ FormBuilder.propTypes = {
4358
4466
  type: PropTypes.string.isRequired,
4359
4467
  isEmailLoading: PropTypes.bool.isRequired,
4360
4468
  moduleType: PropTypes.string.isRequired,
4361
- showLiquidErrorInFooter: PropTypes.func.isRequired,
4469
+ showLiquidErrorInFooter: PropTypes.bool.isRequired,
4362
4470
  eventContextTags: PropTypes.array.isRequired,
4363
4471
  waitEventContextTags: PropTypes.object,
4364
4472
  forwardedTags: PropTypes.object.isRequired,
4365
4473
  isLoyaltyModule: PropTypes.bool.isRequired,
4366
4474
  isTestAndPreviewMode: PropTypes.bool, // Add new prop type
4367
4475
  restrictPersonalization: PropTypes.bool,
4368
- tagListGetPopupContainer: PropTypes.func,
4369
- tagListPopoverOverlayStyle: PropTypes.object,
4370
- tagListPopoverOverlayClassName: PropTypes.string,
4371
4476
  };
4372
4477
 
4373
4478
  const mapStateToProps = createStructuredSelector({
@@ -537,21 +537,20 @@
537
537
  .unicode-disabled{
538
538
  font-size: 16px;
539
539
  }
540
- position: absolute;
541
- overflow: auto;
542
- top: 0;
543
- left: 17%;
544
- white-space: pre-wrap;
545
- word-break: break-word;
546
- max-height: 100%;
547
- line-height: 14px;
548
- font-size: 10px;
549
- font-family: 'open-sans';
550
-
551
540
  &.sms {
541
+ max-height: 100%;
542
+ position: absolute;
552
543
  // width: initial;
544
+ overflow: auto;
545
+ top: 0;
546
+ left: 17%;
547
+ white-space: pre-wrap;
548
+ word-break: break-word;
549
+ line-height: 14px;
553
550
  padding: 0 8px 8px 8px;
551
+ font-size: 10px;
554
552
  width: 100%;
553
+ font-family: 'open-sans';
555
554
  .rcs-image{
556
555
  width: 100%;
557
556
  height: 123px;
@@ -583,12 +582,22 @@
583
582
  &:not(.sms){
584
583
  padding: 4px;
585
584
  background: #3F51B5;
585
+ position: absolute;
586
586
  // width: initial;
587
+ overflow: auto;
588
+ top: 0;
589
+ left: 17%;
590
+ white-space: pre-wrap;
591
+ word-break: break-word;
587
592
  border-radius: 4px;
593
+ max-height: 100%;
588
594
  color: #FFFFFF;
589
595
  width: 70%;
590
596
  min-height: 26px;
597
+ line-height: 14px;
591
598
  padding: 8px;
599
+ font-size: 10px;
600
+ font-family: 'open-sans';
592
601
  }
593
602
  &.message-pop-carousel {
594
603
  position: relative;
@@ -854,32 +863,6 @@
854
863
  }
855
864
  }
856
865
 
857
- .shell-v2.rcs-preview {
858
- // Collapse the default 8px margin so the divider renders as a clean hairline, not a white gap.
859
- .whatsapp-divider {
860
- margin: 0;
861
- }
862
-
863
- // Override `.message-pop:not(.sms)` (blue background) for RCS carousel cards.
864
- .msg-container.sms {
865
- .message-pop.sms {
866
- .rcs-carousel-card {
867
- background: $CAP_WHITE;
868
- color: $CAP_G01;
869
- width: 10.4rem;
870
- left: 0;
871
- flex-shrink: 0;
872
- padding: $CAP_SPACE_04 0 $CAP_SPACE_08;
873
- border-radius: 0.428rem;
874
-
875
- .carousel-title {
876
- font-weight: 700 !important;
877
- }
878
- }
879
- }
880
- }
881
- }
882
-
883
866
  .align-center {
884
867
  text-align: center;
885
868
  }
@@ -1050,7 +1033,9 @@
1050
1033
  top: 0;
1051
1034
  }
1052
1035
  .video-icon {
1053
- position: sticky;
1036
+ position: absolute;
1037
+ right: -17px;
1038
+ bottom: -17px;
1054
1039
  }
1055
1040
 
1056
1041
  .zalo-preview-container {