kitchen-simulator 5.0.0-test.18 → 5.0.0-test.19

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 (179) hide show
  1. package/package.json +8 -26
  2. package/src/@history.js +3 -0
  3. package/src/CrossSignOn.jsx +94 -0
  4. package/src/KitchenConfigurator.jsx +1526 -0
  5. package/src/KitchenConfiguratorApp.jsx +1 -1
  6. package/src/_KitchenConfigurator.jsx +3 -3
  7. package/src/components/catalog-view/catalog-breadcrumb.jsx +53 -0
  8. package/src/components/catalog-view/catalog-item.jsx +229 -0
  9. package/src/components/catalog-view/catalog-list.jsx +173 -0
  10. package/src/components/catalog-view/catalog-page-item.jsx +110 -0
  11. package/src/components/catalog-view/catalog-turn-back-page-item.jsx +80 -0
  12. package/src/components/configurator/custom-configurator.jsx +77 -0
  13. package/src/components/configurator/project-configurator.jsx +120 -0
  14. package/src/components/export.js +36 -0
  15. package/src/components/firstsetting/button/styles.js +223 -0
  16. package/src/components/firstsetting/export.js +9 -0
  17. package/src/components/firstsetting/firstsetting-content-button.jsx +198 -0
  18. package/src/components/firstsetting/firstsetting-toggle-button.jsx +101 -0
  19. package/src/components/firstsetting/firstsetting.jsx +814 -0
  20. package/src/components/footerbar/button/ControlButton.jsx +43 -0
  21. package/src/components/footerbar/button/DirectionButton.jsx +54 -0
  22. package/src/components/footerbar/button/DirectionPanSpinButton.jsx +36 -0
  23. package/src/components/footerbar/button/ToggleButton.jsx +58 -0
  24. package/src/components/footerbar/button/ToggleConvertButton.jsx +48 -0
  25. package/src/components/footerbar/button/ToggleMeasureButton.jsx +33 -0
  26. package/src/components/footerbar/button/styles.js +217 -0
  27. package/src/components/footerbar/export.js +9 -0
  28. package/src/components/footerbar/footer-content-button.jsx +198 -0
  29. package/src/components/footerbar/footer-toggle-button.jsx +101 -0
  30. package/src/components/footerbar/footerbar.jsx +1103 -0
  31. package/src/components/footerbar/styles.js +263 -0
  32. package/src/components/header/button/MenuButton.jsx +46 -0
  33. package/src/components/header/button/SaveButton.jsx +54 -0
  34. package/src/components/header/button/styles.js +181 -0
  35. package/src/components/header/export.js +5 -0
  36. package/src/components/header/header.jsx +631 -0
  37. package/src/components/header/header.style.css +47 -0
  38. package/src/components/header/styles.js +320 -0
  39. package/src/components/login/Login.js +77 -0
  40. package/src/components/login/LoginForm/index.js +108 -0
  41. package/src/components/login/Register.js +82 -0
  42. package/src/components/login/RegisterForm/index.js +171 -0
  43. package/src/components/login/jwtService.js +201 -0
  44. package/src/components/login/style.css +158 -0
  45. package/src/components/login/style.scss +260 -0
  46. package/src/components/myprojects/export.js +5 -0
  47. package/src/components/myprojects/index.jsx +445 -0
  48. package/src/components/myprojects/styles.js +241 -0
  49. package/src/components/sidebar/custom-accordion.jsx +48 -0
  50. package/src/components/sidebar/export.js +15 -0
  51. package/src/components/sidebar/panel-element-editor/attributes-editor/attributes-editor.jsx +73 -0
  52. package/src/components/sidebar/panel-element-editor/attributes-editor/confirm-popup.jsx +101 -0
  53. package/src/components/sidebar/panel-element-editor/attributes-editor/hole-attributes-editor.jsx +149 -0
  54. package/src/components/sidebar/panel-element-editor/attributes-editor/item-attributes-editor.jsx +316 -0
  55. package/src/components/sidebar/panel-element-editor/attributes-editor/line-attributes-editor.jsx +108 -0
  56. package/src/components/sidebar/panel-element-editor/element-editor.jsx +1070 -0
  57. package/src/components/sidebar/panel-element-editor/multi-elements-editor.jsx +0 -0
  58. package/src/components/sidebar/panel-element-editor/panel-element-editor.jsx +104 -0
  59. package/src/components/sidebar/panel-element-editor/panel-multi-elements-editor.jsx +155 -0
  60. package/src/components/sidebar/panel-group-editor.jsx +272 -0
  61. package/src/components/sidebar/panel-groups.jsx +310 -0
  62. package/src/components/sidebar/panel-guides.jsx +192 -0
  63. package/src/components/sidebar/panel-layer-elements.jsx +298 -0
  64. package/src/components/sidebar/panel-layers.jsx +381 -0
  65. package/src/components/sidebar/panel.jsx +71 -0
  66. package/src/components/sidebar/sidebar.jsx +106 -0
  67. package/src/components/sidebar/toolbar-panel.jsx +139 -0
  68. package/src/components/sign/export.js +7 -0
  69. package/src/components/sign/main/index.jsx +523 -0
  70. package/src/components/sign/main/styles.js +163 -0
  71. package/src/components/toolbar/button/ControlButton.jsx +41 -0
  72. package/src/components/toolbar/button/DirectionButton.jsx +34 -0
  73. package/src/components/toolbar/button/RightButton.jsx +103 -0
  74. package/src/components/toolbar/button/ToggleButton.jsx +41 -0
  75. package/src/components/toolbar/button/index.jsx +55 -0
  76. package/src/components/toolbar/button/styles.js +127 -0
  77. package/src/components/toolbar/components/DoorStyleMenu.jsx +103 -0
  78. package/src/components/toolbar/components/Pricing.jsx +126 -0
  79. package/src/components/toolbar/components/ReviewForQuote.jsx +635 -0
  80. package/src/components/toolbar/export.js +21 -0
  81. package/src/components/toolbar/main/Alert.js +122 -0
  82. package/src/components/toolbar/main/TakePictureModal.jsx +104 -0
  83. package/src/components/toolbar/main/confirm-popup.jsx +99 -0
  84. package/src/components/toolbar/main/index.jsx +5627 -0
  85. package/src/components/toolbar/main/lShaped.json +311 -0
  86. package/src/components/toolbar/main/longNarrow.json +238 -0
  87. package/src/components/toolbar/main/myComponents.js +123 -0
  88. package/src/components/toolbar/main/oRectangle.json +220 -0
  89. package/src/components/toolbar/main/rectangle.json +238 -0
  90. package/src/components/toolbar/main/style.css +107 -0
  91. package/src/components/toolbar/main/styles.js +696 -0
  92. package/src/components/toolbar/plugin-item.jsx +123 -0
  93. package/src/components/toolbar/popup/appliance/appliance-category/index.jsx +73 -0
  94. package/src/components/toolbar/popup/appliance/choose-appliance/index.jsx +102 -0
  95. package/src/components/toolbar/popup/appliance/index.jsx +83 -0
  96. package/src/components/toolbar/popup/autosaveprompt/index.jsx +150 -0
  97. package/src/components/toolbar/popup/autosaveprompt/styles.css +64 -0
  98. package/src/components/toolbar/popup/autosaveprompt/styles.js +40 -0
  99. package/src/components/toolbar/popup/cabinet/cabinet-category/index.jsx +73 -0
  100. package/src/components/toolbar/popup/cabinet/choose-product/index.jsx +119 -0
  101. package/src/components/toolbar/popup/cabinet/index.jsx +85 -0
  102. package/src/components/toolbar/popup/doorStyle/choose-style/index.jsx +63 -0
  103. package/src/components/toolbar/popup/doorStyle/index.jsx +71 -0
  104. package/src/components/toolbar/popup/doorStyle/style-category/index.jsx +139 -0
  105. package/src/components/toolbar/popup/downloadsummary/downloadSummaryContext.js +2 -0
  106. package/src/components/toolbar/popup/downloadsummary/downloadSummaryTemp.jsx +157 -0
  107. package/src/components/toolbar/popup/downloadsummary/index.jsx +643 -0
  108. package/src/components/toolbar/popup/downloadsummary/show2D/show2DView.jsx +51 -0
  109. package/src/components/toolbar/popup/downloadsummary/show2D/viewer2DDownLoad.jsx +175 -0
  110. package/src/components/toolbar/popup/downloadsummary/show3D/show3DView.jsx +283 -0
  111. package/src/components/toolbar/popup/downloadsummary/show3D/viewer3DDownLoad.jsx +2257 -0
  112. package/src/components/toolbar/popup/downloadsummary/showCabinetInfo.js +93 -0
  113. package/src/components/toolbar/popup/downloadsummary/showElevation/showElevationView.jsx +132 -0
  114. package/src/components/toolbar/popup/downloadsummary/showElevation/viewer3DElevationDownload.jsx +2198 -0
  115. package/src/components/toolbar/popup/downloadsummary/showElevation/viewerElevationDownload.jsx +152 -0
  116. package/src/components/toolbar/popup/downloadsummary/showWarranty.jsx +149 -0
  117. package/src/components/toolbar/popup/downloadsummary/styles.css +177 -0
  118. package/src/components/toolbar/popup/downloadsummary/styles.js +453 -0
  119. package/src/components/toolbar/popup/finishingtouch/category/index.jsx +34 -0
  120. package/src/components/toolbar/popup/finishingtouch/index.jsx +58 -0
  121. package/src/components/toolbar/popup/finishingtouch/material-edit.jsx +112 -0
  122. package/src/components/toolbar/popup/finishingtouch/product/index.jsx +116 -0
  123. package/src/components/toolbar/popup/floorplan/choose-floor/confirm-popup.jsx +101 -0
  124. package/src/components/toolbar/popup/floorplan/choose-floor/index.jsx +254 -0
  125. package/src/components/toolbar/popup/floorplan/choose-floor/lShaped.json +311 -0
  126. package/src/components/toolbar/popup/floorplan/choose-floor/longNarrow.json +238 -0
  127. package/src/components/toolbar/popup/floorplan/choose-floor/oRectangle.json +220 -0
  128. package/src/components/toolbar/popup/floorplan/choose-floor/rectangle.json +238 -0
  129. package/src/components/toolbar/popup/floorplan/choose-floor/styles.js +86 -0
  130. package/src/components/toolbar/popup/floorplan/floor-category/index.jsx +109 -0
  131. package/src/components/toolbar/popup/floorplan/index.jsx +60 -0
  132. package/src/components/toolbar/popup/index.jsx +241 -0
  133. package/src/components/toolbar/popup/newproject/index.jsx +59 -0
  134. package/src/components/toolbar/popup/newproject/styles.css +64 -0
  135. package/src/components/toolbar/popup/newproject/styles.js +41 -0
  136. package/src/components/toolbar/popup/product/appliance.jsx +54 -0
  137. package/src/components/toolbar/popup/product/cabinetproduct.jsx +15 -0
  138. package/src/components/toolbar/popup/product/doorstyle.jsx +58 -0
  139. package/src/components/toolbar/popup/product/doorstyleproduct.jsx +47 -0
  140. package/src/components/toolbar/popup/product/floor.jsx +36 -0
  141. package/src/components/toolbar/popup/product/floorproduct.jsx +42 -0
  142. package/src/components/toolbar/popup/product/index.jsx +36 -0
  143. package/src/components/toolbar/popup/product/primary.jsx +77 -0
  144. package/src/components/toolbar/popup/product/productline.jsx +93 -0
  145. package/src/components/toolbar/popup/product/reviewItem.jsx +427 -0
  146. package/src/components/toolbar/popup/product/reviewMolding.jsx +310 -0
  147. package/src/components/toolbar/popup/product/style.css +54 -0
  148. package/src/components/toolbar/popup/product/styles.js +260 -0
  149. package/src/components/toolbar/popup/savedesign/FullPictureForm.jsx +146 -0
  150. package/src/components/toolbar/popup/savedesign/index.jsx +495 -0
  151. package/src/components/toolbar/popup/savedesign/savedesign.style.css +16 -0
  152. package/src/components/toolbar/popup/savedesign/styles.js +151 -0
  153. package/src/components/toolbar/popup/setDoorStyleOption/index.jsx +87 -0
  154. package/src/components/toolbar/popup/styles.js +909 -0
  155. package/src/components/toolbar/popup/submitforquote/AddToCartOptions.jsx +192 -0
  156. package/src/components/toolbar/popup/submitforquote/CustomerRequestsForm.jsx +96 -0
  157. package/src/components/toolbar/popup/submitforquote/SkipDesignerReview.jsx +54 -0
  158. package/src/components/toolbar/popup/submitforquote/StepDots.jsx +25 -0
  159. package/src/components/toolbar/popup/submitforquote/cart-choice.jsx +116 -0
  160. package/src/components/toolbar/popup/submitforquote/doorstyle-menus.js +38 -0
  161. package/src/components/toolbar/popup/submitforquote/index.jsx +698 -0
  162. package/src/components/toolbar/popup/submitforquote/styles.css +105 -0
  163. package/src/components/toolbar/popup/submitforquote/styles.js +294 -0
  164. package/src/components/toolbar/popup/submitprompt/index.jsx +89 -0
  165. package/src/components/toolbar/popup/submitprompt/styles.css +64 -0
  166. package/src/components/toolbar/popup/submitprompt/styles.js +42 -0
  167. package/src/components/toolbar/toolbar-button.jsx +90 -0
  168. package/src/components/toolbar/toolbar-load-button.jsx +36 -0
  169. package/src/components/toolbar/toolbar-save-button.jsx +32 -0
  170. package/src/components/wizardstep/button/styles.js +677 -0
  171. package/src/components/wizardstep/export.js +5 -0
  172. package/src/components/wizardstep/index.jsx +1372 -0
  173. package/src/components/wizardstep/styles.js +688 -0
  174. package/src/components/wizardstep/wizardstep-content-button.jsx +198 -0
  175. package/src/components/wizardstep/wizardstep-toggle-button.jsx +101 -0
  176. package/src/{_index.js → index.js} +4 -4
  177. package/src/renderer.jsx +466 -0
  178. package/src/actions/_export.js +0 -35
  179. package/src/components/_export.js +0 -11
@@ -0,0 +1,635 @@
1
+ import React, { useCallback, useEffect, useState } from 'react';
2
+ import * as S from '../../../../src/components/toolbar/main/styles';
3
+ import {
4
+ DECIMAL_PLACES_2,
5
+ LOCAL_STORAGE_TOKEN_VALUE,
6
+ STATUS_POSITIVE_COLOR,
7
+ SUBMIT_ADD_CART,
8
+ SUBMIT_REQUEST_ASSIST,
9
+ TEXT_COLOR_NEUTRAL_2,
10
+ TOE_KICK_MOLDING
11
+ } from '../../../../src/constants';
12
+ import {
13
+ getToeKickMoldingThumbnail,
14
+ makeSKUForMagento
15
+ } from '../../../../src/components/viewer2d/utils';
16
+ import ReviewItem from '../../../../src/components/toolbar/popup/product/reviewItem';
17
+ import ReviewMolding from '../../../../src/components/toolbar/popup/product/reviewMolding';
18
+ import { formatNumber } from '../../../../src/utils/math';
19
+ import {
20
+ refineMoldingForSummaryPdf,
21
+ refineProductForSummaryPdf
22
+ } from '../../../utils/helper';
23
+ import { useGetPricesBySku } from '../../../../src/hooks/useGetPricesBySku';
24
+ import Skeleton from '@material-ui/lab/Skeleton';
25
+ import ls from 'localstorage-slim';
26
+ import InfoIcon from '@material-ui/icons/Info';
27
+ import Tooltip from '@material-ui/core/Tooltip';
28
+ import { useValidateToken } from '../../../../src/hooks/useValidateToken';
29
+
30
+ export const ReviewForQuote = ({
31
+ accessToken,
32
+ currentTexture,
33
+ userInfo,
34
+ doorStyles,
35
+ catalog,
36
+ categoryData,
37
+ handleSubmitPrompt,
38
+ handleSubmitForQuote,
39
+ setDownloadPopupVisible,
40
+ moldingData,
41
+ items,
42
+ measurementUnit,
43
+ isTokenPresent
44
+ }) => {
45
+ const getSkus = useCallback(
46
+ data => {
47
+ if (data && typeof data.entrySeq === 'function') {
48
+ return data
49
+ .entrySeq()
50
+ .map(([itemID, item]) =>
51
+ makeSKUForMagento(item, catalog, categoryData)
52
+ )
53
+ .filter(sku => sku && !sku.startsWith('#'))
54
+ .filter(Boolean)
55
+ .toJS();
56
+ }
57
+ if (Array.isArray(data)) {
58
+ return data
59
+ .map(item => makeSKUForMagento(item, catalog, categoryData))
60
+ .filter(sku => sku && !sku.startsWith('#'))
61
+ .filter(Boolean);
62
+ }
63
+ return [];
64
+ },
65
+ [catalog]
66
+ );
67
+
68
+ const { data } = useValidateToken(accessToken);
69
+
70
+ const {
71
+ data: { prices = [] },
72
+ isFetching
73
+ } = useGetPricesBySku(
74
+ data?.source === 'none' ? [] : [...getSkus(items), ...getSkus(moldingData)]
75
+ );
76
+
77
+ const products = React.useMemo(() => {
78
+ const _products = {};
79
+
80
+ if (!prices || isFetching || data?.source === 'none') return _products;
81
+
82
+ prices.forEach(data => {
83
+ _products[data.sku] = {
84
+ description: data.description,
85
+ discounted_price: data.discounted_price,
86
+ name: data.name,
87
+ qty: parseInt(data.qty),
88
+ regular_price: data.regular_price,
89
+ tier: data.tier
90
+ };
91
+ });
92
+
93
+ return _products;
94
+ }, [prices, isFetching, data]);
95
+
96
+ const downloadToFile = useCallback(
97
+ event => {
98
+ event.preventDefault();
99
+ event.stopPropagation();
100
+
101
+ setDownloadPopupVisible(true);
102
+
103
+ const productsInReview = [];
104
+
105
+ const tmpProduct = [];
106
+ Object.keys(usedObjects).forEach(internalSKU => {
107
+ const item = items.find(
108
+ item => makeSKUForMagento(item, catalog, categoryData) === internalSKU
109
+ );
110
+ const molding = moldingData.find(
111
+ molding =>
112
+ makeSKUForMagento(molding, catalog, categoryData) === internalSKU
113
+ );
114
+
115
+ if (item) {
116
+ const prodCount = usedObjects[internalSKU]?.count ?? 1;
117
+ tmpProduct.push(
118
+ <ReviewItem
119
+ key={item.id}
120
+ downLoad={true}
121
+ catalog={catalog}
122
+ categoryData={categoryData}
123
+ internalSKU={internalSKU}
124
+ product={products[internalSKU]}
125
+ suffix={currentTexture?.install}
126
+ item={item}
127
+ measurementUnit={measurementUnit}
128
+ count={prodCount}
129
+ loading={isFetching || data?.source === 'none'}
130
+ />
131
+ );
132
+ refineProductForSummaryPdf(
133
+ productsInReview,
134
+ catalog,
135
+ categoryData,
136
+ internalSKU,
137
+ currentTexture?.install,
138
+ item,
139
+ products[internalSKU],
140
+ measurementUnit,
141
+ prodCount
142
+ );
143
+ } else if (molding) {
144
+ tmpProduct.push(
145
+ <ReviewMolding
146
+ key={molding.id}
147
+ downLoad={true}
148
+ molding={molding}
149
+ internalSKU={internalSKU}
150
+ product={products[internalSKU]}
151
+ loading={isFetching || data?.source === 'none'}
152
+ />
153
+ );
154
+ refineMoldingForSummaryPdf(
155
+ productsInReview,
156
+ molding,
157
+ products[internalSKU],
158
+ internalSKU
159
+ );
160
+ }
161
+ });
162
+
163
+ window.productData = tmpProduct;
164
+ window.totalPrice = formatNumber(allDiscountedPrices, DECIMAL_PLACES_2);
165
+ window.productsInReview = productsInReview;
166
+ },
167
+ [
168
+ currentTexture,
169
+ moldingData,
170
+ products,
171
+ catalog,
172
+ categoryData,
173
+ measurementUnit,
174
+ isFetching,
175
+ data
176
+ ]
177
+ );
178
+
179
+ const {
180
+ allCount,
181
+ usedObjects,
182
+ allDiscountedPrices,
183
+ allRegularPrices,
184
+ allPrices
185
+ } = React.useMemo(() => {
186
+ let allCount = 0,
187
+ usedObjects = {},
188
+ allDiscountedPrices = 0,
189
+ allRegularPrices = 0,
190
+ allPrices = 0;
191
+
192
+ function processData(data, getSKU, getCount) {
193
+ data.forEach(element => {
194
+ const sku = getSKU(element);
195
+ if (!sku || sku.startsWith('#')) return;
196
+ const count = getCount(element);
197
+ const currentProduct = products[sku];
198
+
199
+ if (!usedObjects[sku]) {
200
+ usedObjects[sku] = {
201
+ count,
202
+ regularPrice: currentProduct
203
+ ? currentProduct.regular_price * count
204
+ : 0,
205
+ disCountPrice: currentProduct
206
+ ? currentProduct.discounted_price * count
207
+ : 0
208
+ };
209
+ } else {
210
+ usedObjects[sku].count += count;
211
+ if (currentProduct) {
212
+ usedObjects[sku].regularPrice +=
213
+ currentProduct.regular_price * count;
214
+ usedObjects[sku].disCountPrice +=
215
+ currentProduct.discounted_price * count;
216
+ }
217
+ }
218
+ if (currentProduct) {
219
+ allRegularPrices += currentProduct.regular_price * count;
220
+ allDiscountedPrices += currentProduct.discounted_price * count;
221
+ allPrices +=
222
+ (currentProduct.discounted_price || currentProduct.regular_price) *
223
+ count;
224
+ }
225
+ allCount += count;
226
+ if (currentTexture) {
227
+ usedObjects[sku].installation_type = currentTexture.install;
228
+ }
229
+ });
230
+ }
231
+
232
+ // Process cabinet items
233
+ processData(
234
+ items.filter(e => e.itemID !== undefined),
235
+ element => makeSKUForMagento(element, catalog, categoryData),
236
+ () => 1
237
+ );
238
+
239
+ // Process molding data
240
+ processData(
241
+ moldingData,
242
+ molding => makeSKUForMagento(molding, catalog, categoryData),
243
+ molding => molding.count
244
+ );
245
+
246
+ return {
247
+ allCount,
248
+ usedObjects,
249
+ allDiscountedPrices: parseFloat(allDiscountedPrices.toFixed(2)),
250
+ allRegularPrices: parseFloat(allRegularPrices.toFixed(2)),
251
+ allPrices: parseFloat(allPrices.toFixed(2))
252
+ };
253
+ }, [prices, catalog, moldingData, products]);
254
+
255
+ useEffect(() => {
256
+ if (!isFetching && data?.source !== 'none') {
257
+ sessionStorage.setItem('usedObjects', JSON.stringify(usedObjects));
258
+ }
259
+ }, [usedObjects, isFetching, data]);
260
+
261
+ const discountType = () => {
262
+ switch (ls.get('DISCOUNT_TYPE')?.toUpperCase()) {
263
+ case 'CUSTOM':
264
+ return 'Account';
265
+ case 'GENERAL':
266
+ return 'Active Sale';
267
+ default:
268
+ return 'Tier';
269
+ }
270
+ };
271
+
272
+ return (
273
+ <div style={{ display: 'flex', flexDirection: 'column' }}>
274
+ <div
275
+ style={{
276
+ display: 'flex',
277
+ flexDirection: 'row',
278
+ justifyContent: 'space-between',
279
+ alignItems: 'center'
280
+ }}
281
+ >
282
+ <S.SubCategoryTitle style={{ margin: '0 0 10px 15px' }}>
283
+ Review & Quote
284
+ </S.SubCategoryTitle>
285
+ <div
286
+ style={{
287
+ display: 'flex',
288
+ gap: '1rem',
289
+ alignItems: 'center'
290
+ }}
291
+ >
292
+ <div
293
+ style={{
294
+ background: '#FAFAFF',
295
+ padding: '5px 10px',
296
+ borderRadius: 5,
297
+ display: 'flex',
298
+ justifyContent: 'center',
299
+ alignItems: 'center',
300
+ height: 'fit-content'
301
+ }}
302
+ >
303
+ <img
304
+ src={
305
+ doorStyles &&
306
+ currentTexture &&
307
+ doorStyles.filter(
308
+ item =>
309
+ item.name.toLowerCase() ===
310
+ currentTexture.install?.toLowerCase()
311
+ )[0]?.thumbnail
312
+ }
313
+ style={{ height: 24 }}
314
+ />
315
+ <S.ReviewQuoteItemLabel
316
+ style={{
317
+ fontWeight: 'bold'
318
+ }}
319
+ >
320
+ {currentTexture && currentTexture.install}
321
+ </S.ReviewQuoteItemLabel>
322
+ </div>
323
+ <div
324
+ style={{
325
+ background: '#FAFAFF',
326
+ padding: '5px 10px',
327
+ borderRadius: 5,
328
+ display: 'flex',
329
+ justifyContent: 'center',
330
+ alignItems: 'center',
331
+ height: 'fit-content'
332
+ }}
333
+ >
334
+ <img
335
+ src={
336
+ doorStyles &&
337
+ currentTexture &&
338
+ doorStyles
339
+ .filter(item => item.name === currentTexture.install)[0]
340
+ ?.items.filter(
341
+ i => i.name === currentTexture.door_style_name
342
+ )[0]?.thumbnail
343
+ }
344
+ style={{ height: 24 }}
345
+ />
346
+ <S.ReviewQuoteItemLabel
347
+ style={{
348
+ fontWeight: 'bold'
349
+ }}
350
+ >
351
+ {currentTexture && currentTexture.name}
352
+ </S.ReviewQuoteItemLabel>
353
+ </div>
354
+ </div>
355
+ </div>
356
+ <S.ReviewQuoteTable>
357
+ <S.ReviewQuoteThead style={{ backgroundColor: '#FAFAFF' }}>
358
+ <S.ReviewQuoteTh
359
+ style={{
360
+ width: 310,
361
+ textAlign: 'left',
362
+ marginLeft: 15,
363
+ color: '#565F77'
364
+ }}
365
+ >
366
+ Product
367
+ </S.ReviewQuoteTh>
368
+ <S.ReviewQuoteTh style={{ width: 80, color: '#565F77' }}>
369
+ Door
370
+ </S.ReviewQuoteTh>
371
+ <S.ReviewQuoteTh style={{ width: 50, color: '#565F77' }}>
372
+ Qty
373
+ </S.ReviewQuoteTh>
374
+ <S.ReviewQuoteTh style={{ width: 100, color: '#565F77' }}>
375
+ Retail Price
376
+ </S.ReviewQuoteTh>
377
+ <S.ReviewQuoteTh style={{ width: 100, color: '#565F77' }}>
378
+ Discounted Price
379
+ </S.ReviewQuoteTh>
380
+ <S.ReviewQuoteTh
381
+ style={{
382
+ width: 80,
383
+ marginRight: 15,
384
+ color: '#565F77'
385
+ }}
386
+ >
387
+ Subtotal
388
+ </S.ReviewQuoteTh>
389
+ </S.ReviewQuoteThead>
390
+ <div
391
+ style={{
392
+ overflowY: 'scroll',
393
+ maxHeight: 'calc(100vh - 420px)',
394
+ minHeight: 100
395
+ }}
396
+ >
397
+ {Object.keys(usedObjects).map(internalSKU => {
398
+ const item = items.find(
399
+ item =>
400
+ makeSKUForMagento(item, catalog, categoryData) === internalSKU
401
+ );
402
+
403
+ const molding = moldingData.find(
404
+ molding =>
405
+ makeSKUForMagento(molding, catalog, categoryData) ===
406
+ internalSKU
407
+ );
408
+
409
+ if (item) {
410
+ return (
411
+ <ReviewItem
412
+ key={internalSKU}
413
+ downLoad={false}
414
+ catalog={catalog}
415
+ categoryData={categoryData}
416
+ internalSKU={internalSKU}
417
+ suffix={currentTexture?.install}
418
+ item={item}
419
+ measurementUnit={measurementUnit}
420
+ count={
421
+ usedObjects[internalSKU] !== undefined
422
+ ? usedObjects[internalSKU].count
423
+ : 1
424
+ }
425
+ product={products[internalSKU]}
426
+ loading={isFetching || data?.source === 'none'}
427
+ />
428
+ );
429
+ }
430
+ if (molding) {
431
+ return (
432
+ <ReviewMolding
433
+ key={internalSKU}
434
+ downLoad={false}
435
+ molding={molding}
436
+ internalSKU={internalSKU}
437
+ product={products[internalSKU]}
438
+ loading={isFetching || data?.source === 'none'}
439
+ />
440
+ );
441
+ }
442
+
443
+ return <></>;
444
+ })}
445
+ </div>
446
+ <S.ReviewQuoteThead
447
+ style={{ backgroundColor: '#FAFAFF', marginBottom: 15 }}
448
+ >
449
+ <S.ReviewQuoteTh2
450
+ style={{
451
+ width: 310,
452
+ textAlign: 'left',
453
+ marginLeft: 15
454
+ }}
455
+ >
456
+ Grand Total
457
+ {ls.get('DISCOUNT_TYPE') &&
458
+ ls.get('DISCOUNT_TYPE') !== 'retail' && (
459
+ <span
460
+ style={{
461
+ marginLeft: '0.5rem',
462
+ fontSize: '12px'
463
+ }}
464
+ >
465
+ *Discounts based on your {discountType()}
466
+ </span>
467
+ )}
468
+ </S.ReviewQuoteTh2>
469
+ <S.ReviewQuoteTh2 style={{ width: 80 }} />
470
+ <S.ReviewQuoteTh2 style={{ width: 50 }}>
471
+ {isFetching || data?.source === 'none' ? (
472
+ <Skeleton variant="text" width={30} height={18} />
473
+ ) : (
474
+ allCount
475
+ )}
476
+ </S.ReviewQuoteTh2>
477
+ <S.ReviewQuoteTh2 style={{ width: 100 }}>
478
+ {isFetching || data?.source === 'none' ? (
479
+ <Skeleton variant="text" width={50} height={18} />
480
+ ) : (
481
+ `$${formatNumber(allRegularPrices, DECIMAL_PLACES_2)}`
482
+ )}
483
+ </S.ReviewQuoteTh2>
484
+ <S.ReviewQuoteTh2
485
+ style={{
486
+ width: 100,
487
+ color:
488
+ allDiscountedPrices !== allRegularPrices
489
+ ? STATUS_POSITIVE_COLOR
490
+ : TEXT_COLOR_NEUTRAL_2
491
+ }}
492
+ >
493
+ {isFetching || data?.source === 'none' ? (
494
+ <Skeleton variant="text" width={50} height={18} />
495
+ ) : allDiscountedPrices !== allRegularPrices ? (
496
+ `$${formatNumber(allDiscountedPrices, DECIMAL_PLACES_2)}`
497
+ ) : (
498
+ `-`
499
+ )}
500
+ </S.ReviewQuoteTh2>
501
+ <S.ReviewQuoteTh2
502
+ style={{
503
+ width: 80,
504
+ marginRight: 15,
505
+ color: '#4C12A1'
506
+ }}
507
+ >
508
+ {isFetching || data?.source === 'none' ? (
509
+ <Skeleton variant="text" width={50} height={18} />
510
+ ) : (
511
+ `$${formatNumber(allDiscountedPrices, DECIMAL_PLACES_2)}`
512
+ )}
513
+ </S.ReviewQuoteTh2>
514
+ </S.ReviewQuoteThead>
515
+ </S.ReviewQuoteTable>
516
+
517
+ <div
518
+ style={{
519
+ display: 'flex',
520
+ marginTop: 15,
521
+ justifyContent: 'flex-start'
522
+ }}
523
+ >
524
+ <Tooltip
525
+ title={
526
+ !isTokenPresent ? (
527
+ <span
528
+ style={{
529
+ fontSize: 14
530
+ }}
531
+ >
532
+ You need to <b>save the project</b> before requesting Designer
533
+ Assistance.
534
+ </span>
535
+ ) : (
536
+ ''
537
+ )
538
+ }
539
+ >
540
+ <S.Button
541
+ style={{ fontSize: 16 }}
542
+ onClick={() => {
543
+ if (userInfo.pid === undefined)
544
+ handleSubmitPrompt(SUBMIT_REQUEST_ASSIST);
545
+ else handleSubmitForQuote(true, SUBMIT_REQUEST_ASSIST);
546
+ }}
547
+ >
548
+ <img
549
+ style={{ marginRight: 10 }}
550
+ src="\assets\img\svg\headerbar\assist.svg"
551
+ />
552
+ Designer Assistance
553
+ {!isTokenPresent && (
554
+ <div
555
+ style={{
556
+ width: '5px',
557
+ height: '5px',
558
+ position: 'relative'
559
+ }}
560
+ >
561
+ <InfoIcon
562
+ style={{
563
+ position: 'absolute',
564
+ width: '15px',
565
+ height: '15px',
566
+ bottom: '8px',
567
+ right: '-20px'
568
+ }}
569
+ />
570
+ </div>
571
+ )}
572
+ </S.Button>
573
+ </Tooltip>
574
+
575
+ <Tooltip
576
+ key="test"
577
+ title={
578
+ !isTokenPresent ? (
579
+ <span
580
+ style={{
581
+ fontSize: 14
582
+ }}
583
+ >
584
+ You need to <b>save the project</b> before Adding to Cart
585
+ </span>
586
+ ) : (
587
+ ''
588
+ )
589
+ }
590
+ >
591
+ <S.Button
592
+ onClick={() => {
593
+ if (userInfo.pid === undefined)
594
+ handleSubmitPrompt(SUBMIT_ADD_CART);
595
+ else handleSubmitForQuote(true, SUBMIT_ADD_CART);
596
+ }}
597
+ >
598
+ <img
599
+ style={{ marginRight: 10 }}
600
+ src="\assets\img\svg\toolbar\shopping-cart.svg"
601
+ />
602
+ Add to Cart
603
+ {!isTokenPresent && (
604
+ <div
605
+ style={{
606
+ width: '5px',
607
+ height: '5px',
608
+ position: 'relative'
609
+ }}
610
+ >
611
+ <InfoIcon
612
+ style={{
613
+ position: 'absolute',
614
+ width: '15px',
615
+ height: '15px',
616
+ bottom: '8px',
617
+ right: '-20px'
618
+ }}
619
+ />
620
+ </div>
621
+ )}
622
+ </S.Button>
623
+ </Tooltip>
624
+
625
+ {/*<S.Button onClick={downloadToFile}>*/}
626
+ {/* <img*/}
627
+ {/* style={{ marginRight: 10 }}*/}
628
+ {/* src="\assets\img\svg\toolbar\download.svg"*/}
629
+ {/* />*/}
630
+ {/* Download Summary*/}
631
+ {/*</S.Button>*/}
632
+ </div>
633
+ </div>
634
+ );
635
+ };
@@ -0,0 +1,21 @@
1
+ import ToolbarButton from './button/ToggleButton';
2
+ import RightButton from './button/RightButton';
3
+ import ToolbarSaveButton from './toolbar-save-button';
4
+ import ToolbarLoadButton from './toolbar-load-button';
5
+ import Toolbar from './main';
6
+
7
+ export {
8
+ ToolbarButton,
9
+ RightButton,
10
+ ToolbarSaveButton,
11
+ ToolbarLoadButton,
12
+ Toolbar
13
+ };
14
+
15
+ export default {
16
+ ToolbarButton,
17
+ RightButton,
18
+ ToolbarSaveButton,
19
+ ToolbarLoadButton,
20
+ Toolbar
21
+ };