@openlettermarketing/olc-react-sdk 2.1.7 → 2.1.8

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 (230) hide show
  1. package/build/index.js +1 -1
  2. package/build/index.js.map +1 -1
  3. package/build/types/version.d.ts +1 -1
  4. package/package.json +7 -6
  5. package/.eslintignore +0 -1
  6. package/.eslintrc.cjs +0 -18
  7. package/.eslintrc.yml +0 -47
  8. package/.github/workflows/publish-beta.yml +0 -154
  9. package/.github/workflows/publish-production.yml +0 -143
  10. package/.prettierignore +0 -3
  11. package/.prettierrc.yml +0 -5
  12. package/CHANGELOG.md +0 -4
  13. package/babel.config.json +0 -10
  14. package/examples/.eslintrc.yml +0 -4
  15. package/index.html +0 -18
  16. package/public/vite.svg +0 -1
  17. package/src/App.tsx +0 -209
  18. package/src/assets/Fonts/Lexi-Regular.ttf +0 -0
  19. package/src/assets/images/create-template/prebuilt.svg +0 -13
  20. package/src/assets/images/create-template/scratch.svg +0 -4
  21. package/src/assets/images/input/cancel.tsx +0 -20
  22. package/src/assets/images/input/search.tsx +0 -20
  23. package/src/assets/images/input/select-cancel.tsx +0 -17
  24. package/src/assets/images/modal-icons/add.tsx +0 -36
  25. package/src/assets/images/modal-icons/cancel-file.tsx +0 -12
  26. package/src/assets/images/modal-icons/cancel-input.tsx +0 -13
  27. package/src/assets/images/modal-icons/cancel.tsx +0 -35
  28. package/src/assets/images/modal-icons/close-new.svg +0 -3
  29. package/src/assets/images/modal-icons/confirm-close-icon.tsx +0 -14
  30. package/src/assets/images/modal-icons/confirm-new.tsx +0 -22
  31. package/src/assets/images/modal-icons/confirm.svg +0 -12
  32. package/src/assets/images/modal-icons/cross.tsx +0 -23
  33. package/src/assets/images/modal-icons/del.tsx +0 -19
  34. package/src/assets/images/modal-icons/design-icon.tsx +0 -22
  35. package/src/assets/images/modal-icons/doc.tsx +0 -43
  36. package/src/assets/images/modal-icons/docx.tsx +0 -43
  37. package/src/assets/images/modal-icons/envelope-icon.tsx +0 -26
  38. package/src/assets/images/modal-icons/info.tsx +0 -19
  39. package/src/assets/images/modal-icons/jpeg.tsx +0 -43
  40. package/src/assets/images/modal-icons/jpg.tsx +0 -43
  41. package/src/assets/images/modal-icons/modal-cros.svg +0 -4
  42. package/src/assets/images/modal-icons/modal-cross.tsx +0 -37
  43. package/src/assets/images/modal-icons/new-cancel.tsx +0 -11
  44. package/src/assets/images/modal-icons/order-download.tsx +0 -42
  45. package/src/assets/images/modal-icons/pdf.tsx +0 -51
  46. package/src/assets/images/modal-icons/png.tsx +0 -43
  47. package/src/assets/images/modal-icons/save.tsx +0 -23
  48. package/src/assets/images/modal-icons/template-copy.tsx +0 -25
  49. package/src/assets/images/modal-icons/tool-cancel.tsx +0 -25
  50. package/src/assets/images/products/bi-new.svg +0 -23
  51. package/src/assets/images/products/left-arrow.svg +0 -17
  52. package/src/assets/images/products/personal-new.tsx +0 -31
  53. package/src/assets/images/products/postcard-new.tsx +0 -27
  54. package/src/assets/images/products/professional-new.tsx +0 -24
  55. package/src/assets/images/products/real-new.tsx +0 -30
  56. package/src/assets/images/products/right-arrow.svg +0 -17
  57. package/src/assets/images/products/snap-new.svg +0 -31
  58. package/src/assets/images/templates/actions.svg +0 -3
  59. package/src/assets/images/templates/address-block-icon.tsx +0 -62
  60. package/src/assets/images/templates/archive.svg +0 -3
  61. package/src/assets/images/templates/arrow-down.tsx +0 -27
  62. package/src/assets/images/templates/back-arrow.tsx +0 -19
  63. package/src/assets/images/templates/bi-fold-self-mailers.tsx +0 -28
  64. package/src/assets/images/templates/check.svg +0 -3
  65. package/src/assets/images/templates/code.svg +0 -10
  66. package/src/assets/images/templates/content-copy-icon.tsx +0 -24
  67. package/src/assets/images/templates/custom-add-on-icon.tsx +0 -18
  68. package/src/assets/images/templates/custom-qr-section-icon.tsx +0 -9
  69. package/src/assets/images/templates/custom-template.tsx +0 -23
  70. package/src/assets/images/templates/designer.tsx +0 -43
  71. package/src/assets/images/templates/dot.tsx +0 -22
  72. package/src/assets/images/templates/download-v2.svg +0 -4
  73. package/src/assets/images/templates/download.svg +0 -4
  74. package/src/assets/images/templates/dummy-template.tsx +0 -76
  75. package/src/assets/images/templates/dynamic-field.tsx +0 -119
  76. package/src/assets/images/templates/edit-pencil-icon.tsx +0 -21
  77. package/src/assets/images/templates/edit.svg +0 -3
  78. package/src/assets/images/templates/epo-icon.tsx +0 -16
  79. package/src/assets/images/templates/field.tsx +0 -29
  80. package/src/assets/images/templates/gsv-icon.tsx +0 -31
  81. package/src/assets/images/templates/info-icon.tsx +0 -37
  82. package/src/assets/images/templates/left-arrow.svg +0 -17
  83. package/src/assets/images/templates/pencil.svg +0 -3
  84. package/src/assets/images/templates/personal-letter.tsx +0 -53
  85. package/src/assets/images/templates/postcard.tsx +0 -32
  86. package/src/assets/images/templates/professional-letter.tsx +0 -53
  87. package/src/assets/images/templates/qr-code.tsx +0 -13
  88. package/src/assets/images/templates/real-penned-letters.tsx +0 -57
  89. package/src/assets/images/templates/right-arrow.svg +0 -17
  90. package/src/assets/images/templates/size-image-lg.tsx +0 -20
  91. package/src/assets/images/templates/size-image-mid.tsx +0 -20
  92. package/src/assets/images/templates/size-image-xl.tsx +0 -20
  93. package/src/assets/images/templates/size-image.tsx +0 -20
  94. package/src/assets/images/templates/snap-pack.tsx +0 -67
  95. package/src/assets/images/templates/template-default-design.tsx +0 -21
  96. package/src/assets/images/templates/trash-upload.svg +0 -3
  97. package/src/assets/images/templates/trash.svg +0 -3
  98. package/src/assets/images/templates/tri-fold-self-mailers.tsx +0 -93
  99. package/src/assets/images/templates/upload-image.svg +0 -10
  100. package/src/assets/images/templates/x.svg +0 -3
  101. package/src/assets/images/thumbnails/one.svg +0 -9
  102. package/src/assets/images/tooltip/tool-arrow.tsx +0 -25
  103. package/src/components/CreateTemplate/V2/index.tsx +0 -527
  104. package/src/components/CreateTemplate/V2/styles.scss +0 -372
  105. package/src/components/CreateTemplate/index.tsx +0 -508
  106. package/src/components/CreateTemplate/styles.scss +0 -404
  107. package/src/components/GenericUIBlocks/Button/index.tsx +0 -54
  108. package/src/components/GenericUIBlocks/Button/styles.scss +0 -43
  109. package/src/components/GenericUIBlocks/CircularProgress/index.tsx +0 -18
  110. package/src/components/GenericUIBlocks/CircularProgress/styles.scss +0 -93
  111. package/src/components/GenericUIBlocks/CustomTooltip/index.tsx +0 -88
  112. package/src/components/GenericUIBlocks/CustomTooltip/styles.scss +0 -19
  113. package/src/components/GenericUIBlocks/Dialog/V2/index.tsx +0 -227
  114. package/src/components/GenericUIBlocks/Dialog/V2/styles.scss +0 -289
  115. package/src/components/GenericUIBlocks/Dialog/index.tsx +0 -185
  116. package/src/components/GenericUIBlocks/Dialog/styles.scss +0 -227
  117. package/src/components/GenericUIBlocks/Divider/index.tsx +0 -12
  118. package/src/components/GenericUIBlocks/Divider/styles.scss +0 -7
  119. package/src/components/GenericUIBlocks/GeneralSelect/index.tsx +0 -114
  120. package/src/components/GenericUIBlocks/GeneralSelect/styles.scss +0 -406
  121. package/src/components/GenericUIBlocks/GeneralTooltip/index.tsx +0 -25
  122. package/src/components/GenericUIBlocks/GeneralTooltip/styles.scss +0 -20
  123. package/src/components/GenericUIBlocks/GenericSnackbar/Toast/index.tsx +0 -91
  124. package/src/components/GenericUIBlocks/GenericSnackbar/Toast/styles.scss +0 -92
  125. package/src/components/GenericUIBlocks/Grid/index.tsx +0 -82
  126. package/src/components/GenericUIBlocks/Input/index.tsx +0 -269
  127. package/src/components/GenericUIBlocks/Input/styles.scss +0 -332
  128. package/src/components/GenericUIBlocks/Tabs/index.tsx +0 -71
  129. package/src/components/GenericUIBlocks/Tabs/styles.scss +0 -42
  130. package/src/components/GenericUIBlocks/Typography/index.tsx +0 -18
  131. package/src/components/GenericUIBlocks/Typography/styles.scss +0 -27
  132. package/src/components/SidePanel/CustomAddOns/index.tsx +0 -342
  133. package/src/components/SidePanel/CustomAddOns/styles.scss +0 -86
  134. package/src/components/SidePanel/CustomBlockColors/index.tsx +0 -211
  135. package/src/components/SidePanel/CustomBlockColors/styles.scss +0 -80
  136. package/src/components/SidePanel/CustomFields/customFieldSection.tsx +0 -547
  137. package/src/components/SidePanel/CustomFields/styles.scss +0 -64
  138. package/src/components/SidePanel/CustomQRCode/V2/QRCodeModal/index.tsx +0 -172
  139. package/src/components/SidePanel/CustomQRCode/V2/QRCodeModal/styles.scss +0 -46
  140. package/src/components/SidePanel/CustomQRCode/index.tsx +0 -1070
  141. package/src/components/SidePanel/CustomQRCode/styles.scss +0 -149
  142. package/src/components/SidePanel/CustomUploads/V2/index.tsx +0 -542
  143. package/src/components/SidePanel/CustomUploads/V2/styles.scss +0 -267
  144. package/src/components/SidePanel/CustomUploads/index.tsx +0 -301
  145. package/src/components/SidePanel/Templates/ModalGallery/HireDesigner/index.tsx +0 -424
  146. package/src/components/SidePanel/Templates/ModalGallery/HireDesigner/styles.scss +0 -180
  147. package/src/components/SidePanel/Templates/ModalGallery/V2/index.tsx +0 -235
  148. package/src/components/SidePanel/Templates/ModalGallery/V2/styles.scss +0 -244
  149. package/src/components/SidePanel/Templates/ModalGallery/index.tsx +0 -231
  150. package/src/components/SidePanel/Templates/SideBarGallery/index.tsx +0 -233
  151. package/src/components/SidePanel/Templates/SideBarGallery/styles.scss +0 -152
  152. package/src/components/SidePanel/Templates/TemplatesCard/V2/index.tsx +0 -149
  153. package/src/components/SidePanel/Templates/TemplatesCard/V2/styles.scss +0 -156
  154. package/src/components/SidePanel/Templates/TemplatesCard/index.tsx +0 -160
  155. package/src/components/SidePanel/Templates/TemplatesCard/styles.scss +0 -98
  156. package/src/components/SidePanel/Templates/customTemplateSection.tsx +0 -793
  157. package/src/components/SidePanel/Templates/styles.scss +0 -244
  158. package/src/components/SidePanel/index.tsx +0 -160
  159. package/src/components/TemplateBuilder/index.tsx +0 -585
  160. package/src/components/TemplateBuilder/styles.scss +0 -100
  161. package/src/components/TemplateTypes/index.tsx +0 -96
  162. package/src/components/TemplateTypes/styles.scss +0 -91
  163. package/src/components/TopNavigation/ConfirmNavigateDialog/index.tsx +0 -81
  164. package/src/components/TopNavigation/ConfirmNavigateDialog/styles.scss +0 -123
  165. package/src/components/TopNavigation/DuplicateTemplateModal.tsx +0 -103
  166. package/src/components/TopNavigation/EditTemplateNameModel/index.tsx +0 -71
  167. package/src/components/TopNavigation/EditTemplateNameModel/styles.scss +0 -88
  168. package/src/components/TopNavigation/SaveTemplateModel/index.tsx +0 -201
  169. package/src/components/TopNavigation/SaveTemplateModel/styles.scss +0 -128
  170. package/src/components/TopNavigation/index.tsx +0 -938
  171. package/src/components/TopNavigation/styles.scss +0 -303
  172. package/src/importMeta.d.ts +0 -31
  173. package/src/index.scss +0 -131
  174. package/src/index.tsx +0 -238
  175. package/src/libs/test.ts +0 -7
  176. package/src/redux/actions/action-types.ts +0 -52
  177. package/src/redux/actions/customQRCodeActions.ts +0 -54
  178. package/src/redux/actions/snackbarActions.ts +0 -16
  179. package/src/redux/actions/templateActions.ts +0 -236
  180. package/src/redux/reducers/customFieldReducer.ts +0 -99
  181. package/src/redux/reducers/customQRCodeReducer.ts +0 -58
  182. package/src/redux/reducers/index.ts +0 -15
  183. package/src/redux/reducers/snackbarReducer.ts +0 -40
  184. package/src/redux/reducers/templateReducer.ts +0 -485
  185. package/src/redux/store.ts +0 -18
  186. package/src/styles/colors.scss +0 -61
  187. package/src/test/mocks.js +0 -89
  188. package/src/test/setupJest.js +0 -1
  189. package/src/utils/api.ts +0 -36
  190. package/src/utils/constants.ts +0 -182
  191. package/src/utils/customStyles.ts +0 -45
  192. package/src/utils/fetchWrapper.ts +0 -73
  193. package/src/utils/fonts.json +0 -1597
  194. package/src/utils/helper.ts +0 -205
  195. package/src/utils/local-storage.ts +0 -15
  196. package/src/utils/message.ts +0 -162
  197. package/src/utils/products.ts +0 -186
  198. package/src/utils/template-builder.ts +0 -328
  199. package/src/utils/templateIdentifierArea/biFold.ts +0 -107
  200. package/src/utils/templateIdentifierArea/index.ts +0 -35
  201. package/src/utils/templateIdentifierArea/personal.ts +0 -107
  202. package/src/utils/templateIdentifierArea/postCards.ts +0 -163
  203. package/src/utils/templateIdentifierArea/professional.ts +0 -125
  204. package/src/utils/templateIdentifierArea/snapPack.ts +0 -107
  205. package/src/utils/templateIdentifierArea/triFold.ts +0 -107
  206. package/src/utils/templateRestrictedArea/biFold.ts +0 -329
  207. package/src/utils/templateRestrictedArea/nonWindowProfessional.ts +0 -90
  208. package/src/utils/templateRestrictedArea/personal.ts +0 -90
  209. package/src/utils/templateRestrictedArea/postCard.ts +0 -334
  210. package/src/utils/templateRestrictedArea/postCardJumbo.tsx +0 -408
  211. package/src/utils/templateRestrictedArea/professional.ts +0 -318
  212. package/src/utils/templateRestrictedArea/realPenned.ts +0 -233
  213. package/src/utils/templateRestrictedArea/snapPack.ts +0 -1009
  214. package/src/utils/templateRestrictedArea/triFold.ts +0 -330
  215. package/src/utils/templateSafetyBorders/biFold.ts +0 -91
  216. package/src/utils/templateSafetyBorders/index.ts +0 -43
  217. package/src/utils/templateSafetyBorders/personal.ts +0 -41
  218. package/src/utils/templateSafetyBorders/postCards.ts +0 -259
  219. package/src/utils/templateSafetyBorders/professional.ts +0 -78
  220. package/src/utils/templateSafetyBorders/snapPack.ts +0 -165
  221. package/src/utils/templateSafetyBorders/triFold.ts +0 -114
  222. package/src/utils/templateSafetyBorders/types.d.ts +0 -68
  223. package/src/utils/types.ts +0 -12
  224. package/src/v2Theme.scss +0 -142
  225. package/tsconfig.json +0 -29
  226. package/tsconfig.node.json +0 -12
  227. package/update-version.js +0 -23
  228. package/version.js +0 -1
  229. package/vite.config.ts +0 -8
  230. package/webpack.config.js +0 -80
@@ -1,508 +0,0 @@
1
- import React, { ReactElement, useEffect, useState } from 'react';
2
-
3
- //hooks
4
- import { NavLink, useNavigate } from 'react-router-dom';
5
- import { useDispatch, useSelector } from 'react-redux';
6
- import { AppDispatch, RootState } from '../../redux/store';
7
-
8
- //actions
9
- import {
10
- clearTemplateFields,
11
- searchAndAdvanceChange,
12
- selectPostCard,
13
- selectProduct,
14
- } from '../../redux/actions/templateActions';
15
- import { CLEAR_TEMPLATE } from '../../redux/actions/action-types';
16
- import { clearQrFields } from '../../redux/actions/customQRCodeActions';
17
-
18
- //utils
19
- import { PRODUCT_LEARN_URL, sortOrderForTemplates } from '../../utils/constants';
20
- import { removeItem } from '../../utils/local-storage';
21
- import { MESSAGES } from '../../utils/message';
22
- import { envelopeTypes } from '../../utils/template-builder';
23
-
24
- // UI Components
25
- import { GridContainer, GridItem } from '../GenericUIBlocks/Grid';
26
- import Typography from '../GenericUIBlocks/Typography';
27
- import Button from '../GenericUIBlocks/Button';
28
- import GeneralSelect from '../GenericUIBlocks/GeneralSelect';
29
- import GenericSnackbar from '../GenericUIBlocks/GenericSnackbar/Toast';
30
- import GeneralTooltip from '../GenericUIBlocks/GeneralTooltip';
31
-
32
- // Images
33
- //@ts-ignore
34
- import Postcard from '../../assets/images/templates/postcard.tsx';
35
- //@ts-ignore
36
- import PersonalLetter from '../../assets/images/templates/personal-letter.tsx';
37
- //@ts-ignore
38
- import ProfessionalLetter from '../../assets/images/templates/professional-letter.tsx';
39
- //@ts-ignore
40
- import RealPennedLetter from '../../assets/images/templates/real-penned-letters.tsx';
41
- //@ts-ignore
42
- import TriFoldSelfMailers from '../../assets/images/templates/tri-fold-self-mailers.tsx';
43
- //@ts-ignore
44
- import BiFoldSelfMailers from '../../assets/images/templates/bi-fold-self-mailers.tsx';
45
- //@ts-ignore
46
- import SnapPackMailers from '../../assets/images/templates/snap-pack.tsx';
47
- //@ts-ignore
48
- import InfoIcon from '../../assets/images/templates/info-icon';
49
-
50
-
51
- import SizeImage from '../../assets/images/templates/size-image';
52
- import SizeImageMid from '../../assets/images/templates/size-image-mid';
53
- import SizeImageLarge from '../../assets/images/templates/size-image-lg';
54
- import SizeImageXLarge from '../../assets/images/templates/size-image-xl';
55
-
56
- import Input from '../GenericUIBlocks/Input';
57
- import Divider from '../GenericUIBlocks/Divider';
58
-
59
- // styles
60
- import './styles.scss';
61
-
62
- const templateHeadingStyles: React.CSSProperties = {
63
- color: `var(--primary-color)`,
64
- fontSize: `24px`,
65
- fontStyle: `normal`,
66
- fontWeight: `600`,
67
- lineHeight: `normal`,
68
- marginBottom: `20px`,
69
- };
70
-
71
- const templateTextStyles: React.CSSProperties = {
72
- color: `var(--text-color)`,
73
- fontSize: `14px`,
74
- fontStyle: `normal`,
75
- fontWeight: `400`,
76
- lineHeight: `normal`,
77
- marginBottom: `16px`,
78
- };
79
-
80
- const footerButtonStyles: React.CSSProperties = {
81
- width: '100%',
82
- maxWidth: '100px',
83
- height: '100%',
84
- minHeight: '40px',
85
- textTransform: 'capitalize',
86
- borderRadius: '3px',
87
- backgroundColor: 'transparent',
88
- color: `var(--text-color)`,
89
- fontSize: `14px`,
90
- fontWeight: `500`,
91
- };
92
-
93
- const Images: Record<string, ReactElement> = {
94
- Postcards: <Postcard fill="var(--svg-color)" />,
95
- 'Professional Letters': <ProfessionalLetter fill="var(--svg-color)" />,
96
- 'Personal Letters': <PersonalLetter fill="var(--svg-color)" />,
97
- 'Real Penned Letter': <RealPennedLetter fill="var(--svg-color)" />,
98
- 'Tri-Fold Self-Mailers': <TriFoldSelfMailers fill="var(--svg-color)" />,
99
- 'Bi-Fold Self-Mailers': <BiFoldSelfMailers fill="var(--svg-color)" />,
100
- 'Snap Pack Mailers': <SnapPackMailers fill="var(--svg-color)" />
101
- };
102
-
103
- interface CreateTemplateProps {
104
- onReturnAndNavigate?: () => void;
105
- createTemplateRoute?: string | null;
106
- templateBuilderRoute?: string | null;
107
- restrictedProducts?: any;
108
- disallowedProducts?: string[] | null | undefined;
109
- currentTheme?: string | null | undefined;
110
- }
111
-
112
- const CreateTemplate: React.FC<CreateTemplateProps> = ({
113
- onReturnAndNavigate,
114
- createTemplateRoute,
115
- templateBuilderRoute,
116
- restrictedProducts,
117
- disallowedProducts,
118
- currentTheme
119
- }) => {
120
- const [isError, setIsError] = useState<boolean>(false);
121
- const [envelopeType, setEnvelopeType] = useState<[]>([]);
122
- const [inputValue, setInputValue] = useState('');
123
-
124
- const title = useSelector((state: RootState) => state.templates.title) || '';
125
- const product = useSelector(
126
- (state: RootState) => state.templates.product
127
- ) as Record<string, any>;
128
- const products = useSelector((state: RootState) => state.templates.products);
129
- const templateType = useSelector(
130
- (state: RootState) => state.templates.templateType
131
- );
132
-
133
- const dispatch: AppDispatch = useDispatch();
134
- const navigate = useNavigate();
135
-
136
- const restrictedSet = new Set(
137
- (restrictedProducts ?? []).map((id: any) => String(id))
138
- );
139
-
140
- const disallowedSet = new Set(disallowedProducts ?? []);
141
- const sortedProducts = products
142
- ?.sort((a, b) => {
143
- const indexA = sortOrderForTemplates.indexOf(a.productType);
144
- const indexB = sortOrderForTemplates.indexOf(b.productType);
145
- return indexA - indexB;
146
- })
147
- .filter((product) => {
148
- return (
149
- !restrictedSet.has(String(product.id)) &&
150
- !disallowedSet.has(product.productType.toLowerCase().replace(/\s+/g, '_'))
151
- );
152
- });
153
-
154
- const filteredEnvelopeTypes = envelopeTypes.filter((type) => {
155
- return !restrictedProducts?.includes(type.productId);
156
- });
157
-
158
- const handleNext = () => {
159
- const trimedTitle = title.trim();
160
- if (
161
- !trimedTitle ||
162
- trimedTitle?.length > 50 ||
163
- !templateType ||
164
- !product ||
165
- (product &&
166
- product.productType === 'Postcards' &&
167
- !product?.selectedSize) ||
168
- (product &&
169
- product.productType === 'Professional Letters' &&
170
- !Object.keys(envelopeType).length)
171
- ) {
172
- setIsError(true);
173
- } else {
174
- let envelope: string | string[] = '';
175
- if (product.productType === 'Professional Letters') {
176
- //@ts-ignore
177
- envelope = envelopeTypes.find(
178
- //@ts-ignore
179
- (envelope) => envelope?.label === envelopeType.label
180
- )?.type;
181
- }
182
- dispatch(searchAndAdvanceChange('title', trimedTitle));
183
- dispatch(searchAndAdvanceChange('envelopeType', envelope));
184
- navigate(
185
- templateBuilderRoute ? templateBuilderRoute : '/template-builder'
186
- );
187
- }
188
- };
189
-
190
- const ProductTooltipContent = ({ product }: { product: any }) => (
191
- <div className="productTooltipContent">
192
- <Typography className='heading'>{product?.productType}</Typography>
193
- <div className='contentWrapper'>
194
- {product?.size && product?.size.map((size: any, idx: any) => (
195
- <Typography key={idx}><span>Size:</span> {size.size}</Typography>
196
- ))}
197
- {product?.paper && <Typography><span>Paper: </span> {product?.paper} </Typography>}
198
- {+product?.id !== 2 && product?.envelope && <Typography><span>Envelope: </span> {product?.envelope} </Typography>}
199
- {+product?.id === 2 && product?.envelope && <Typography><span>Windowed Envelope: </span> {product?.envelope} </Typography>}
200
- {+product?.id === 2 && product?.nonEnvelope && <Typography><span>Non-Windowed Envelope: </span> {product?.nonEnvelope} </Typography>}
201
- {/* {product?.ink && <Typography><span>Ink: </span> {product?.ink} </Typography>} */}
202
- </div>
203
- </div>
204
- );
205
-
206
- useEffect(() => {
207
- dispatch(clearTemplateFields());
208
- dispatch(clearQrFields());
209
- removeItem('formData');
210
- dispatch({ type: CLEAR_TEMPLATE });
211
- }, []);
212
-
213
- useEffect(() => {
214
- if (sortedProducts?.length) {
215
- dispatch(selectProduct(sortedProducts[0]));
216
- }
217
- }, [products]);
218
-
219
- useEffect(() => {
220
- if (product && product?.productType === 'Professional Letters') {
221
- if (Object.keys(envelopeType).length) {
222
- setIsError(false);
223
- }
224
- //@ts-ignore
225
- if (envelopeType?.label === 'Non-Windowed Envelope') {
226
- dispatch(
227
- selectProduct(sortedProducts.find((item) => item.windowed === false))
228
- );
229
- //@ts-ignore
230
- } else if (envelopeType?.label === 'Windowed Envelope') {
231
- dispatch(
232
- selectProduct(sortedProducts.find((item) => item.windowed === true))
233
- );
234
- }
235
- }
236
- }, [envelopeType]);
237
-
238
- return (
239
- <>
240
- <Typography className="hideTemplateBuilder">
241
- {MESSAGES.TEMPLATE_MESSAGE_ON_SMALL_SCREEN}
242
- </Typography>
243
- <div className="createTemplateMaindiv">
244
- <div>
245
- <GridContainer>
246
- <GridItem lg={6} md={6} sm={12} xs={12}>
247
- <div className="createTemplateHeader">
248
- <Typography style={templateHeadingStyles}>
249
- {MESSAGES.TEMPLATE.CREATE.TITLE}
250
- </Typography>
251
- <div className="templateInputWrapper">
252
- <Input
253
- type="text"
254
- value={inputValue}
255
- onChange={(e: any) => {
256
- setInputValue(e.target.value);
257
- dispatch(searchAndAdvanceChange('title', e.target.value));
258
- }}
259
- placeholder="Template Name"
260
- inputIcon={false}
261
- error={
262
- !title.trim() && isError
263
- ? MESSAGES.TEMPLATE.NAME_REQUIRED
264
- : title.length > 50 && isError
265
- ? MESSAGES.TEMPLATE.NAME_LESS_50
266
- : ''
267
- }
268
- label={MESSAGES.TEMPLATE.CREATE.TEMPLATE_LABEL}
269
- />
270
- </div>
271
- </div>
272
- </GridItem>
273
- </GridContainer>
274
- <Divider />
275
- <GridContainer>
276
- <GridItem lg={12} md={12} sm={12} xs={12}>
277
- <div className="productTypeWrapper">
278
- <div className="productHeading">
279
- <Typography
280
- style={{ ...templateTextStyles, marginBottom: '0px' }}
281
- >
282
- {MESSAGES.TEMPLATE.CREATE.PRODUCT_LABEL}
283
- </Typography>
284
- <NavLink to={PRODUCT_LEARN_URL} target="_blank">
285
- <Typography>
286
- {' '}
287
- {MESSAGES.TEMPLATE.CREATE.LEARN_TEXT}
288
- </Typography>
289
- </NavLink>
290
- </div>
291
- <div
292
- className="productsWrapper"
293
- style={{
294
- marginBottom:
295
- product &&
296
- (product.productType.includes('Postcards') || product.productType.includes('Professional Letters') || product.productType.includes('Real Penned Letter'))
297
- ? undefined
298
- : '100px',
299
- }}
300
- >
301
- {sortedProducts &&
302
- sortedProducts
303
- ?.filter((prod) => {
304
- if (restrictedSet.has('2') || restrictedSet.has('4')) {
305
- return true;
306
- } else {
307
- return prod.windowed !== false;
308
- }
309
- })
310
- .map((prod, index) => {
311
- return (
312
- <div
313
- className={`productCard ${prod.productType ===
314
- (product && product.productType)
315
- ? 'active'
316
- : ''
317
- } ${isError && !product ? 'error' : ''} `}
318
- key={index}
319
- onClick={() => dispatch(selectProduct(prod))}
320
- >
321
- {Images[prod.productType]}
322
- <Typography>{prod.productType}</Typography>
323
- <div className={`productTooltip productTooltip-${index}`}>
324
- <InfoIcon fill="var(--primary-color)" className={`productTooltipIcon-${index}`} />
325
- <GeneralTooltip
326
- anchorSelect={`.productTooltipIcon-${index}`}
327
- place="right"
328
- className='customTooltipClass'
329
- title={<ProductTooltipContent product={prod} />}
330
- />
331
- </div>
332
- </div>
333
- );
334
- })}
335
- </div>
336
- {isError && !product && (
337
- <Typography className="error-field">
338
- *{MESSAGES.TEMPLATE.PRODUCT_TYPE_REQUIRED}
339
- </Typography>
340
- )}
341
- </div>
342
- </GridItem>
343
- </GridContainer>
344
- {product?.productType?.includes('Postcards') ||
345
- product?.productType?.includes('Professional Letters') || product?.productType?.includes('Real Penned Letter') ? (
346
- <Divider />
347
- ) : null}
348
- {product && product.productType === 'Professional Letters' && (
349
- <GridContainer>
350
- <GridItem lg={6} md={6} sm={12} xs={12}>
351
- <div className="templateSelectWrapper">
352
- <GeneralSelect
353
- className={isError && ![envelopeType].length ? 'error' : ''}
354
- //@ts-ignore
355
- selectedValue={envelopeType}
356
- //@ts-ignore
357
- setSelectedValue={setEnvelopeType}
358
- //@ts-ignore
359
- options={filteredEnvelopeTypes}
360
- placeholder="Envelope Type"
361
- error={MESSAGES.TEMPLATE.ENVELOPE_TYPE_REQUIRED}
362
- isError={isError && !Object.keys(envelopeType).length}
363
- label="Envelope Type*"
364
- />
365
- </div>
366
- </GridItem>
367
- </GridContainer>
368
- )}
369
- {product && (product?.productType === 'Postcards' || product?.productType === 'Real Penned Letter') && product?.size && (
370
- <GridContainer>
371
- <GridItem lg={12} md={12} sm={12} xs={12}>
372
- <div className="postCardSizeWrapper">
373
- <div className="postCardHeading">
374
- <Typography style={templateTextStyles}>
375
- {product?.productType === 'Real Penned Letter' ? 'Real Penned Letter Size*' : 'Postcard Size*'}
376
- </Typography>
377
- </div>
378
- <div className="postCardWrapper">
379
- {product?.size
380
- .sort((a: any, b: any) => a.id.localeCompare(b.id))
381
- .map((type: any, index: any) => {
382
- const size = type?.label?.split('x') || type?.size?.split('x');
383
- return (
384
- <div
385
- onClick={() => {
386
- if (product?.productType === 'Real Penned Letter') {
387
- dispatch(selectPostCard({
388
- ...product,
389
- id: type.id,
390
- size: product.size,
391
- selectedSize: type.size,
392
- }, 'Real Penned Letter'));
393
- } else {
394
- dispatch(selectPostCard({
395
- ...type,
396
- size: product.size,
397
- selectedSize: type.size,
398
- },
399
- 'Postcards'
400
- ));
401
- }
402
- }}
403
- className={
404
- product?.productType === 'Real Penned Letter' ?
405
- `postCard ${product.selectedSize === type.size
406
- ? 'active'
407
- : ''
408
- }` :
409
- index === 0
410
- ? `postCard postCard-small ${product.selectedSize === type.size
411
- ? 'active'
412
- : ''
413
- }`
414
- : index === 1
415
- ? `postCard postCard-mid ${product.selectedSize === type.size
416
- ? 'active'
417
- : ''
418
- }`
419
- : index === 2
420
- ? `postCard postCard-large ${product.selectedSize === type.size
421
- ? 'active'
422
- : ''
423
- }`
424
- : `postCard ${product.selectedSize === type.size
425
- ? 'active'
426
- : ''
427
- }`
428
- }
429
- key={index}
430
- >
431
- <Typography>
432
- {product?.productType === 'Real Penned Letter'
433
- ? type?.title
434
- : `${size[0]}" x ${size[1]}"`}
435
- </Typography>
436
- {product?.productType === 'Real Penned Letter' ?
437
- <>
438
- {index === 0 &&
439
- <div className='rplSubCards'>
440
- <PersonalLetter fill="var(--svg-color)" />
441
- </div>
442
- }
443
-
444
- {index === 1 &&
445
- <div className='rplSubCards'>
446
- <ProfessionalLetter fill="var(--svg-color)" />
447
- </div>
448
- }
449
- </> :
450
- index === 0 ? (
451
- <SizeImage />
452
- ) : index === 1 ? (
453
- <SizeImageMid />
454
- ) : index === 2 ? (
455
- <SizeImageLarge />
456
- ) : <SizeImageXLarge />
457
- }
458
- </div>
459
- );
460
- })}
461
- </div>
462
- {isError &&
463
- product &&
464
- product.productType === 'Postcards' &&
465
- !product.selectedSize && (
466
- <Typography className="error-field">
467
- *{MESSAGES.TEMPLATE.POSTCARD_SIZE_REQUIRED}
468
- </Typography>
469
- )}
470
- </div>
471
- </GridItem>
472
- </GridContainer>
473
- )}
474
- </div>
475
- <div className="footerBtns">
476
- <div className="createTemplateBtns">
477
- <Button
478
- style={{
479
- ...footerButtonStyles,
480
- border: '0.5px solid var(--border-color)',
481
- }}
482
- onClick={() =>
483
- onReturnAndNavigate
484
- ? onReturnAndNavigate()
485
- : navigate(createTemplateRoute || '/create-template')
486
- }
487
- >
488
- {MESSAGES.TEMPLATE.CREATE.CANCEL_BUTTON}
489
- </Button>
490
- <Button
491
- style={{
492
- ...footerButtonStyles,
493
- color: '#ffffff',
494
- backgroundColor: 'var(--primary-color)',
495
- }}
496
- onClick={handleNext}
497
- >
498
- {MESSAGES.TEMPLATE.CREATE.SUBMIT_BUTTON}
499
- </Button>
500
- </div>
501
- </div>
502
- <GenericSnackbar />
503
- </div>
504
- </>
505
- );
506
- };
507
-
508
- export default CreateTemplate;