@capillarytech/creatives-library 6.9.8 → 6.10.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 (33) hide show
  1. package/components/CapTagList/index.js +1 -1
  2. package/components/Edmeditor/index.js +1 -1
  3. package/components/FormBuilder/index.js +1 -0
  4. package/containers/TagList/index.js +3 -3
  5. package/index.html +0 -3
  6. package/package.json +1 -2
  7. package/services/api.js +1 -16
  8. package/v2Components/CapTagList/index.js +26 -55
  9. package/v2Components/CmsTemplatesComponent/index.js +4 -4
  10. package/v2Components/Edmeditor/index.js +1 -1
  11. package/v2Components/EmailPreview/_emailPreview.scss +2 -2
  12. package/v2Components/FormBuilder/index.js +43 -79
  13. package/v2Containers/App/constants.js +0 -1
  14. package/v2Containers/CreativesContainer/SlideBoxFooter.js +2 -2
  15. package/v2Containers/CreativesContainer/index.js +2 -7
  16. package/v2Containers/Email/constants.js +0 -1
  17. package/v2Containers/Email/index.js +116 -170
  18. package/v2Containers/Email/initialSchema.js +3 -18
  19. package/v2Containers/Email/sagas.js +2 -2
  20. package/v2Containers/Email/selectors.js +0 -5
  21. package/v2Containers/EmailWrapper/index.js +3 -19
  22. package/v2Containers/TagList/index.js +2 -9
  23. package/v2Containers/Templates/actions.js +3 -8
  24. package/v2Containers/Templates/constants.js +4 -6
  25. package/v2Containers/Templates/index.js +20 -36
  26. package/v2Containers/Templates/messages.js +0 -8
  27. package/v2Containers/Templates/reducer.js +5 -13
  28. package/v2Containers/Templates/sagas.js +7 -7
  29. package/v2Containers/Templates/selectors.js +1 -19
  30. package/v2Components/BeeEditor/index.js +0 -278
  31. package/v2Components/BeeEditor/index.scss +0 -11
  32. package/v2Components/BeeEditor/messages.js +0 -47
  33. package/v2Components/BeeEditor/tests/index.test.js +0 -10
@@ -1,278 +0,0 @@
1
- /**
2
- *
3
- * Beeeditor
4
- *
5
- */
6
- import React, { useEffect, useState, useRef, useCallback } from 'react';
7
- import PropTypes from 'prop-types';
8
- import { injectIntl, intlShape, FormattedMessage } from 'react-intl';
9
- import TagList from '../../v2Containers/TagList';
10
- import
11
- {
12
- CapModal,
13
- CapButton,
14
- CapInput,
15
- CapSelect,
16
- }
17
- from '@capillarytech/cap-ui-library';
18
- import messages from './messages';
19
- import './index.scss';
20
-
21
- function BeeEditor(props) {
22
- const {
23
- uid,
24
- beeJson,
25
- tokenData,
26
- id,
27
- location = {},
28
- moduleFilterEnabled,
29
- label,
30
- className,
31
- userLocale,
32
- selectedOfferDetails,
33
- tags,
34
- injectedTags,
35
- saveBeeInstance,
36
- saveBeeData,
37
- intl,
38
- onContextChange,
39
- } = props;
40
- const {formatMessage} = intl;
41
- const UNSUBSCRIBE = 'unsubscribe';
42
- let beePluginInstance = null;
43
- const categoryOptions = [];
44
- const [visibleTaglist, setVisibleTaglist] = useState(false);
45
- const [showRowMetaModal, setRowMetaModal] = useState(false);
46
- const [selectedTag, setSelectedTag] = useState({});
47
- const [rowMetaInfo, setRowMetaInfo] = useState({});
48
- const [rowName, setRowName] = useState('');
49
- const [rowTags, setRowTags] = useState('');
50
- const [rowCategory, setRowCategory] = useState('');
51
-
52
- const savedCallback = useRef();
53
- const filteredTags = (tags || []).filter((obj) => obj.definition.value !== UNSUBSCRIBE);
54
- let intervalTimer;
55
-
56
- useEffect(() => {
57
- savedCallback.current = Object.keys(selectedTag).length > 0 ? selectedTag : rowMetaInfo;
58
- }, [selectedTag, rowMetaInfo]);
59
-
60
- useEffect(() => {
61
- const beeConfig = {
62
- uid,
63
- container: 'bee-plugin-container',
64
- rowsConfiguration: {
65
- emptyRows: true,
66
- defaultRows: true,
67
- },
68
- contentDialog: {
69
- specialLinks: {
70
- label: UNSUBSCRIBE,
71
- handler(resolve) {
72
- resolve({
73
- type: 'custom',
74
- label: UNSUBSCRIBE,
75
- link: `{{${UNSUBSCRIBE}}}`,
76
- });
77
- },
78
- },
79
- mergeTags: {
80
- label: 'search',
81
- handler: async (resolve, reject) => {
82
- // this will open tag modal
83
- await setVisibleTaglist(true);
84
- // until tag modal will not open promise will not execute
85
- // once tag modal is opened it will start 2 sec interval to wait use has selected any tag or cancel the tag selection
86
- const promise = new Promise((resolveP) => {
87
- intervalTimer = setInterval(() => {
88
- // this will execute, if user cancel the tag selection
89
- if ((savedCallback.current || {}).close === true) {
90
- reject();
91
- clearInterval(intervalTimer);
92
- return;
93
- }
94
- // this block is checking use has selected any tag or not
95
- if (Object.keys(savedCallback.current || {}).length > 0) {
96
- resolveP(savedCallback.current);
97
- setSelectedTag({});
98
- clearInterval(intervalTimer);
99
- }
100
- }, 2000);
101
- });
102
- // once prmise will resolve , pass the resolve data to handler to show tags in bee edior
103
- const result = await promise;
104
- resolve(result);
105
- },
106
- },
107
- saveRow: {
108
- handler: async (resolve, reject, args) => {
109
- await setRowMetaModal(true);
110
- const promise = new Promise((resolveP) => {
111
- intervalTimer = setInterval(() => {
112
- if ((savedCallback.current || {}).close === true) {
113
- reject();
114
- clearInterval(intervalTimer);
115
- setRowMetaInfo({});
116
- setRowName('');
117
- setRowTags('');
118
- setRowCategory('');
119
- return;
120
- }
121
- if (Object.keys(savedCallback.current || {}).length > 0) {
122
- const data = {...args, ...savedCallback.current};
123
- resolveP(data);
124
- }
125
- }, 2000);
126
- });
127
- const result = await promise;
128
- resolve(result); // "done!"
129
- setRowMetaInfo({});
130
- setRowName('');
131
- setRowTags('');
132
- setRowCategory('');
133
- clearInterval(intervalTimer);
134
- },
135
- },
136
- },
137
- onSave: (jsonFile, htmlFile) => {
138
- saveBeeData(jsonFile, htmlFile);
139
- },
140
- // will use this function on save row feature
141
- onSaveRows: (jsonFile, htmlFile) => {
142
- console.log('bee-plugin-container onSaveRows', jsonFile, htmlFile);
143
- },
144
- };
145
- window.BeePlugin.create(tokenData, beeConfig, (instance) => {
146
- beePluginInstance = instance;
147
- const parseJson = JSON.parse(beeJson);
148
- beePluginInstance.start(parseJson);
149
- saveBeeInstance(beePluginInstance);
150
- });
151
- return () => clearInterval(intervalTimer);
152
- }, []);
153
-
154
- const onTagSelect = (result) => {
155
- const msg = {
156
- name: result,
157
- value: `{{${result}}}`,
158
- };
159
- setSelectedTag(msg);
160
- setVisibleTaglist(false);
161
- };
162
-
163
- const onCancelTagList = () => {
164
- setVisibleTaglist(false);
165
- setSelectedTag({close: true});
166
- };
167
-
168
- const handleCancel = () => {
169
- setRowMetaModal(false);
170
- setRowMetaInfo({close: true});
171
- };
172
-
173
- const handleOk = () => {
174
- const rowInfo = {};
175
- if (rowTags !== '') {
176
- rowInfo.tags = rowTags;
177
- }
178
- if (rowCategory !== '') {
179
- rowInfo.category = rowCategory;
180
- }
181
- setRowMetaInfo({
182
- name: rowName,
183
- ...rowInfo,
184
- });
185
- setRowMetaModal(false);
186
- };
187
- const isDisableSave = () => rowName === '';
188
-
189
- const onRowChange = useCallback((e) => {
190
- setRowName(e.target.value);
191
- });
192
- // will use this function on save row feature
193
- const onChangeCategoy = (e) => {
194
- console.log('onChangeCategoy', e);
195
- };
196
-
197
- const onTagChange = (e) => {
198
- setRowTags(e.target.value);
199
- };
200
-
201
- const contentSection = <>
202
- <CapInput
203
- label={<FormattedMessage {...messages.rowName} />}
204
- placeholder={formatMessage(messages.rowPlaceHolder)}
205
- onChange={onRowChange}
206
- value={rowName}
207
- maxLength={50}
208
- style={{ width: '324px', paddingBottom: '16px' }}
209
- />
210
- <CapSelect
211
- label="Category"
212
- style={{ width: 250, paddingBottom: '16px'}}
213
- options={categoryOptions}
214
- selectPlaceholder={formatMessage(messages.select)}
215
- placeholder={
216
- <FormattedMessage {...messages.selectCategoyPlaceholder} />
217
- }
218
- onChange={onChangeCategoy}
219
- />
220
- <CapInput
221
- label={<FormattedMessage {...messages.tags} />}
222
- placeholder={formatMessage(messages.tagPlaceHolder)}
223
- onChange={onTagChange}
224
- value={rowTags}
225
- maxLength={50}
226
- style={{ width: '324px', paddingBottom: '16px'}}
227
- />
228
- </>;
229
- return (
230
- <>
231
- <div id="bee-plugin-container" style={{ height: '500px'}}>
232
- </div>
233
- <TagList
234
- moduleFilterEnabled={moduleFilterEnabled}
235
- label={label}
236
- onTagSelect={onTagSelect}
237
- location={location}
238
- tags={filteredTags}
239
- injectedTags={injectedTags}
240
- className={className}
241
- id={id}
242
- userLocale={userLocale}
243
- selectedOfferDetails={selectedOfferDetails}
244
- visibleTaglist={visibleTaglist}
245
- hidePopover
246
- modalProps={{
247
- onCancel: onCancelTagList,
248
- style: { left: 135, top: 250 },
249
- className: "bee-editor-tag-list",
250
- }}
251
- onContextChange={onContextChange}
252
- />
253
- <CapModal
254
- visible={showRowMetaModal}
255
- onCancel={handleCancel}
256
- title={formatMessage(messages.customRows)}
257
- footer={[
258
- <CapButton key="back" onClick={handleCancel}>{formatMessage(messages.cancel)}</CapButton>,
259
- <CapButton key="submit" type="primary" id="delete-version" onClick={handleOk} disabled={isDisableSave()}>
260
- {formatMessage(messages.save)}
261
- </CapButton>,
262
- ]}
263
- >
264
- {contentSection}
265
- </CapModal>
266
- </>
267
- );
268
- }
269
-
270
- BeeEditor.propTypes = {
271
- beeJson: PropTypes.object.isRequired,
272
- tokenData: PropTypes.object.isRequired,
273
- uid: PropTypes.string.isRequired,
274
- showTagsPopover: PropTypes.func.isRequired,
275
- intl: intlShape.isRequired,
276
- };
277
-
278
- export default injectIntl(BeeEditor);
@@ -1,11 +0,0 @@
1
- .cap-modal-v2.bee-editor-tag-list {
2
- .ant-modal-content {
3
- .ant-modal-body {
4
- padding-top: 20px;
5
- padding-bottom: 10px;
6
- }
7
- .ant-modal-footer {
8
- display: none;
9
- }
10
- }
11
- }
@@ -1,47 +0,0 @@
1
- /*
2
- * BeeEditor Messages
3
- *
4
- * This contains all the text for the BeeEditor component.
5
- */
6
- import { defineMessages } from 'react-intl';
7
-
8
- const prefix = 'creatives.componentsV2.BeeEditor';
9
-
10
- export default defineMessages({
11
- cancel: {
12
- id: `${prefix}.cancel`,
13
- defaultMessage: 'Cancel',
14
- },
15
- save: {
16
- id: `${prefix}.save`,
17
- defaultMessage: 'Save',
18
- },
19
- rowPlaceHolder: {
20
- id: `${prefix}.rowPlaceHolder`,
21
- defaultMessage: 'Enter Row name',
22
- },
23
- rowName: {
24
- id: `${prefix}.rowName`,
25
- defaultMessage: 'Row name',
26
- },
27
- select: {
28
- id: `${prefix}.select`,
29
- defaultMessage: 'Select',
30
- },
31
- customRows: {
32
- id: `${prefix}.customRows`,
33
- defaultMessage: 'Custom rows',
34
- },
35
- selectCategoyPlaceholder: {
36
- id: `${prefix}.selectCategoyPlaceholder`,
37
- defaultMessage: 'Select category',
38
- },
39
- tags: {
40
- id: `${prefix}.tags`,
41
- defaultMessage: 'Tags (optional)',
42
- },
43
- tagPlaceHolder: {
44
- id: `${prefix}.tagPlaceHolder`,
45
- defaultMessage: 'Enter tags',
46
- },
47
- });
@@ -1,10 +0,0 @@
1
- // import React from 'react';
2
- // import { shallow } from 'enzyme';
3
-
4
- // import Beeeditor from '../index';
5
-
6
- describe('<Beeeditor />', () => {
7
- it('Expect to have unit tests specified', () => {
8
- expect(true).toEqual(false);
9
- });
10
- });