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,1372 @@
1
+ import React, { Component } from 'react';
2
+ import PropTypes, { element, elementType } from 'prop-types';
3
+ import convert from 'convert-units';
4
+ import * as S from './styles';
5
+ import * as rectangleData from '../toolbar/main/rectangle.json';
6
+ import * as lShaped from '../toolbar/main/lShaped.json';
7
+ import * as oRectangle from '../toolbar/main/oRectangle.json';
8
+ import * as longNarrow from '../toolbar/main/longNarrow.json';
9
+ import {
10
+ TEXT_COLOR_NEUTRAL_5,
11
+ TEXT_COLOR_NEUTRAL_0,
12
+ TEXT_COLOR_NEUTRAL_2,
13
+ STATUS_NEGATIVE_COLOR,
14
+ BG_COLOR_HOVER,
15
+ BG_COLOR_1,
16
+ TEXT_COLOR_NEUTRAL_3,
17
+ SECONDARY_PURPLE_COLOR,
18
+ DEFAULT_FONT_FAMILY,
19
+ SHADE_LIGHT_PURPLE_COLOR,
20
+ TEXT_COLOR_NEUTRAL_1,
21
+ TEXT_COLOR_NEUTRAL_4,
22
+ DECIMAL_PLACES_2
23
+ } from '../../constants';
24
+ import Dialog from '@material-ui/core/Dialog';
25
+ import styled from 'styled-components';
26
+ import { formatNumber, toFixedFloat } from '../../utils/math';
27
+
28
+ const StyledDialog = styled(Dialog)`
29
+ .MuiDialog-paperWidthSm {
30
+ border-radius: 10px;
31
+ }
32
+ `;
33
+
34
+ let roomShapeData = [
35
+ {
36
+ type: 'square',
37
+ name: 'Square',
38
+ url: '/assets/img/svg/wizardstep/Square.svg',
39
+ data: rectangleData,
40
+ key: 1
41
+ },
42
+ {
43
+ type: 'l-shape',
44
+ name: 'L-Shaped',
45
+ url: '/assets/img/svg/wizardstep/L.svg',
46
+ data: lShaped,
47
+ key: 2
48
+ },
49
+ {
50
+ type: 'irregular',
51
+ name: 'Irregular',
52
+ url: '/assets/img/svg/wizardstep/L2.svg',
53
+ data: longNarrow,
54
+ key: 3
55
+ },
56
+ {
57
+ type: 'open',
58
+ name: 'Open',
59
+ url: '/assets/img/svg/wizardstep/Open.svg',
60
+ data: oRectangle,
61
+ key: 4
62
+ }
63
+ ];
64
+
65
+ let unitData = [
66
+ {
67
+ _name: 'inch',
68
+ _unit: 'in'
69
+ },
70
+ {
71
+ _name: 'centimeter',
72
+ _unit: 'cm'
73
+ },
74
+ {
75
+ _name: 'millimeter',
76
+ _unit: 'mm'
77
+ },
78
+ {
79
+ _name: 'meter',
80
+ _unit: 'm'
81
+ },
82
+ {
83
+ _name: 'feet',
84
+ _unit: 'ft'
85
+ }
86
+ ];
87
+
88
+ export default class WizardStep extends Component {
89
+ constructor(props, context) {
90
+ super(props, context);
91
+
92
+ const getDoorStyle = items => {
93
+ if (!items || items.length === 0) return undefined;
94
+
95
+ const brilliantWhiteShaker = items.find(
96
+ item => item.name === 'Brilliant White Shaker'
97
+ );
98
+
99
+ if (brilliantWhiteShaker) {
100
+ return brilliantWhiteShaker;
101
+ }
102
+
103
+ return items[0];
104
+ };
105
+
106
+ this.state = {
107
+ type: 1, //1: wizard, 2: retrieve
108
+ step: 0,
109
+ measurementUnit: {
110
+ _name: 'inch',
111
+ _unit: 'in'
112
+ },
113
+ ceilingHeight: 96,
114
+ roomShape: {
115
+ type: '',
116
+ data: {}
117
+ },
118
+ colorFamily: {},
119
+ installation: this.props.categoryData.data.doorStyles.items.filter(
120
+ item =>
121
+ item.items.filter(item1 => item1.items.length !== 0).length !== 0
122
+ )[0],
123
+ doorCategory: this.props.categoryData.data.doorStyles.items
124
+ .filter(
125
+ item =>
126
+ item.items.filter(item1 => item1.items.length !== 0).length !== 0
127
+ )[0]
128
+ .items.filter(item => item.items.length !== 0)[0],
129
+ doorStyle: getDoorStyle(
130
+ this.props.categoryData.data.doorStyles.items
131
+ .filter(
132
+ item =>
133
+ item.items.filter(item1 => item1.items.length !== 0).length !== 0
134
+ )[0]
135
+ .items.filter(item => item.items.length !== 0)[0].items
136
+ ),
137
+ cancelDialogVisible: false,
138
+ hover: 0
139
+ };
140
+ }
141
+
142
+ loadProject(data) {
143
+ this.context.projectActions.loadProject(data, this.props.categoryData);
144
+ }
145
+
146
+ _confirm(type) {
147
+ this.props.close();
148
+ if (this.state.roomShape.type === 'custom')
149
+ this.context.linesActions.selectToolDrawingLine('wall');
150
+ else if (this.state.roomShape.type === '') {
151
+ } else this.loadProject(this.state.roomShape.data, this.props.categoryData);
152
+ this.context.viewer2DActions.updateCeilHeight(
153
+ toFixedFloat(this.state.ceilingHeight)
154
+ );
155
+ this.context.viewer2DActions.updateCeilHeightUnit(
156
+ this.state.measurementUnit._unit
157
+ );
158
+ this.context.viewer3DActions.update3DCeilHeight(
159
+ toFixedFloat(this.state.ceilingHeight)
160
+ );
161
+ this.context.viewer3DActions.update3DCeilHeightUnit(
162
+ this.state.measurementUnit._unit
163
+ );
164
+ let doorStyle = {
165
+ ...this.state.doorStyle,
166
+ install: this.state.installation.name
167
+ };
168
+ !!type && this.context.itemsActions.setDoorStyle(doorStyle);
169
+ }
170
+
171
+ _ok() {
172
+ if (this.state.step === 1 && this.state.roomShape.type === '') {
173
+ roomShapeData.map(item => {
174
+ document.getElementById(
175
+ `roomshape&${item.type}`
176
+ ).style.backgroundColor = STATUS_NEGATIVE_COLOR;
177
+ document.getElementById(`roomlabel&${item.type}`).style.color =
178
+ TEXT_COLOR_NEUTRAL_0;
179
+ });
180
+ document.getElementById('roomshape&custom').style.backgroundColor =
181
+ STATUS_NEGATIVE_COLOR;
182
+ document.getElementById('roomshape&pencil').style.backgroundColor =
183
+ STATUS_NEGATIVE_COLOR;
184
+ document.getElementById('roomlabel&custom').style.color =
185
+ TEXT_COLOR_NEUTRAL_0;
186
+ document.getElementById('description').style.color =
187
+ STATUS_NEGATIVE_COLOR;
188
+ } else this.setState({ step: this.state.step + 1 });
189
+ }
190
+
191
+ onStepChange(e) {
192
+ if (this.state.step === 1 && this.state.roomShape.type === '') {
193
+ roomShapeData.map(item => {
194
+ document.getElementById(
195
+ `roomshape&${item.type}`
196
+ ).style.backgroundColor = STATUS_NEGATIVE_COLOR;
197
+ document.getElementById(`roomlabel&${item.type}`).style.color =
198
+ TEXT_COLOR_NEUTRAL_0;
199
+ });
200
+ document.getElementById('roomshape&custom').style.backgroundColor =
201
+ STATUS_NEGATIVE_COLOR;
202
+ document.getElementById('roomshape&pencil').style.backgroundColor =
203
+ STATUS_NEGATIVE_COLOR;
204
+ document.getElementById('roomlabel&custom').style.color =
205
+ TEXT_COLOR_NEUTRAL_0;
206
+ document.getElementById('description').style.color =
207
+ STATUS_NEGATIVE_COLOR;
208
+ } else {
209
+ this.setState({ step: e });
210
+ }
211
+ }
212
+
213
+ componentDidUpdate(prevProps, prevState, snapshot) {
214
+ const img = document.querySelector(
215
+ 'img[src="/assets/img/svg/wizardstep/check-active.svg"]'
216
+ );
217
+ if (img) {
218
+ img.scrollIntoView({ behavior: 'smooth', block: 'center' });
219
+ }
220
+ }
221
+
222
+ render() {
223
+ const {
224
+ step,
225
+ roomShape,
226
+ installation,
227
+ doorCategory,
228
+ doorStyle,
229
+ measurementUnit,
230
+ ceilingHeight,
231
+ cancelDialogVisible,
232
+ colorFamily,
233
+ hover,
234
+ type
235
+ } = this.state;
236
+ let regexp = new RegExp(`^-?([0-9]+)?\\.?([0-9]{0,2})?$`);
237
+
238
+ const stepBar = [
239
+ {
240
+ index: 1,
241
+ title: 'ROOM SHAPE',
242
+ description: (
243
+ <div>
244
+ Select units, add ceiling height and a predefined shape or draw your
245
+ own.
246
+ <br />
247
+ To get professional help, click on the Help button.
248
+ </div>
249
+ ),
250
+ content: (
251
+ <S.ContentWrapper>
252
+ <S.ContentWrapper1 style={{ marginBottom: 25 }}>
253
+ <div
254
+ style={{
255
+ position: 'relative',
256
+ display: 'flex',
257
+ alignItems: 'center'
258
+ }}
259
+ >
260
+ <S.MeasurementUnitLabel>
261
+ Measurement Unit
262
+ </S.MeasurementUnitLabel>
263
+ <S.MeasurementUnitSelect
264
+ id="measurement_select"
265
+ onClick={() => {
266
+ document.getElementById(
267
+ 'measurement_option'
268
+ ).style.display =
269
+ document.getElementById('measurement_option').style
270
+ .display === 'none'
271
+ ? 'block'
272
+ : 'none';
273
+ document.getElementById(
274
+ 'measurement_select'
275
+ ).style.borderColor = SECONDARY_PURPLE_COLOR;
276
+ document.getElementById('arrow-down').style.display =
277
+ document.getElementById('arrow-down').style.display ===
278
+ 'none'
279
+ ? 'block'
280
+ : 'none';
281
+ document.getElementById('arrow-up').style.display =
282
+ document.getElementById('arrow-up').style.display ===
283
+ 'block'
284
+ ? 'none'
285
+ : 'block';
286
+ }}
287
+ >
288
+ {`${measurementUnit._name}(${measurementUnit._unit})`}
289
+ </S.MeasurementUnitSelect>
290
+ <S.SelectArrow
291
+ id="arrow-down"
292
+ style={{ display: 'block' }}
293
+ maskImage="/assets/img/svg/bottombar/arrow-down.svg"
294
+ />
295
+ <S.SelectArrow
296
+ id="arrow-up"
297
+ style={{ display: 'none' }}
298
+ maskImage="/assets/img/svg/bottombar/arrow-up.svg"
299
+ />
300
+ <div
301
+ id="measurement_option"
302
+ style={{
303
+ display: 'none',
304
+ width: '100%',
305
+ zIndex: 3,
306
+ top: 55,
307
+ position: 'absolute',
308
+ borderRadius: 5,
309
+ backgroundColor: 'white',
310
+ boxShadow:
311
+ '0px 3px 5px -1px rgba(156, 154, 154, 0.2), 0px 6px 10px 0px rgba(156, 154, 154, 0.39), 0px 1px 18px 0px rgba(156, 154, 154, 0.12)'
312
+ }}
313
+ >
314
+ {unitData.map((unit, key) => {
315
+ return (
316
+ <S.MeasurementUnitOption
317
+ onClick={() => {
318
+ document.getElementById(
319
+ 'measurement_option'
320
+ ).style.display = 'none';
321
+ document.getElementById('arrow-down').style.display =
322
+ 'block';
323
+ document.getElementById('arrow-up').style.display =
324
+ 'none';
325
+ this.setState({
326
+ ceilingHeight: formatNumber(
327
+ convert(ceilingHeight)
328
+ .from(measurementUnit._unit)
329
+ .to(unit._unit),
330
+ DECIMAL_PLACES_2
331
+ ),
332
+ measurementUnit: unit
333
+ });
334
+ }}
335
+ key={key}
336
+ >
337
+ {`${unit._name}(${unit._unit})`}
338
+ </S.MeasurementUnitOption>
339
+ );
340
+ })}
341
+ </div>
342
+ </div>
343
+ <div
344
+ style={{
345
+ position: 'relative',
346
+ display: 'flex',
347
+ alignItems: 'center',
348
+ marginLeft: 40
349
+ }}
350
+ >
351
+ <S.MeasurementUnitLabel>Ceiling Height</S.MeasurementUnitLabel>
352
+ <input
353
+ style={{
354
+ width: 167,
355
+ textAlign: 'left',
356
+ padding: '15px 15px',
357
+ color: '#000f33',
358
+ fontSize: '13px',
359
+ lineHeight: '18px',
360
+ border: '2px solid #8791ab',
361
+ borderRadius: '5px',
362
+ outline: 0,
363
+ fontWeight: 600,
364
+ paddingRight: 90
365
+ }}
366
+ value={ceilingHeight}
367
+ onChange={evt => {
368
+ if (regexp.test(evt.target.value))
369
+ this.setState({
370
+ ceilingHeight: evt.target.value
371
+ });
372
+ else this.setState({ ceilingHeight: ceilingHeight });
373
+ }}
374
+ />
375
+ <span
376
+ style={{
377
+ position: 'absolute',
378
+ color: TEXT_COLOR_NEUTRAL_1,
379
+ fontSize: 16,
380
+ fontFamily: DEFAULT_FONT_FAMILY,
381
+ fontWeight: 400,
382
+ lineHeight: '22px',
383
+ textAlign: 'right',
384
+ right: 10
385
+ }}
386
+ >
387
+ {measurementUnit._unit === 'in'
388
+ ? `${measurementUnit._unit}(default)`
389
+ : measurementUnit._unit}
390
+ </span>
391
+ </div>
392
+ </S.ContentWrapper1>
393
+ <S.ContentWrapper1>
394
+ {roomShapeData.map((item, key) => {
395
+ return (
396
+ <S.ContentItem
397
+ onClick={() => {
398
+ this.setState({ roomShape: item });
399
+ document.getElementById('description').style.color =
400
+ TEXT_COLOR_NEUTRAL_0;
401
+ }}
402
+ key={item.key}
403
+ >
404
+ <S.MaskImageWrapper
405
+ style={{
406
+ backgroundColor:
407
+ roomShape.type === item.type && BG_COLOR_HOVER
408
+ }}
409
+ >
410
+ <S.RoomContentImage
411
+ id={`roomshape&${item.type}`}
412
+ maskImage={item.url}
413
+ style={{
414
+ backgroundColor:
415
+ roomShape.type === item.type
416
+ ? SECONDARY_PURPLE_COLOR
417
+ : roomShape.type
418
+ ? TEXT_COLOR_NEUTRAL_3
419
+ : TEXT_COLOR_NEUTRAL_0
420
+ }}
421
+ />
422
+ </S.MaskImageWrapper>
423
+ <S.ContentCheckImage
424
+ id="check"
425
+ src="/assets/img/svg/wizardstep/check-normal.svg"
426
+ />
427
+ {roomShape.type === item.type && (
428
+ <S.ContentCheckImage src="/assets/img/svg/wizardstep/check-active.svg" />
429
+ )}
430
+ <S.ContentItemLabel
431
+ id={`roomlabel&${item.type}`}
432
+ style={{
433
+ fontWeight: roomShape.type === item.type && 400,
434
+ color:
435
+ roomShape.type === item.type
436
+ ? SECONDARY_PURPLE_COLOR
437
+ : roomShape.type
438
+ ? TEXT_COLOR_NEUTRAL_3
439
+ : TEXT_COLOR_NEUTRAL_0
440
+ }}
441
+ >
442
+ {item.name}
443
+ </S.ContentItemLabel>
444
+ </S.ContentItem>
445
+ );
446
+ })}
447
+ </S.ContentWrapper1>
448
+ <S.ContentWrapper1>
449
+ <S.ContentItem
450
+ onClick={() => {
451
+ this.setState({ roomShape: { type: 'custom', data: {} } });
452
+ document.getElementById('description').style.color =
453
+ TEXT_COLOR_NEUTRAL_0;
454
+ }}
455
+ >
456
+ <S.MaskImageWrapper
457
+ style={{
458
+ backgroundColor:
459
+ roomShape.type === 'custom' && BG_COLOR_HOVER
460
+ }}
461
+ >
462
+ <S.RoomContentImage
463
+ id="roomshape&custom"
464
+ maskImage="/assets/img/svg/wizardstep/Custom.svg"
465
+ style={{
466
+ backgroundColor:
467
+ roomShape.type === 'custom'
468
+ ? SECONDARY_PURPLE_COLOR
469
+ : roomShape.type
470
+ ? TEXT_COLOR_NEUTRAL_3
471
+ : TEXT_COLOR_NEUTRAL_0
472
+ }}
473
+ />
474
+ <S.RoomContentImage
475
+ id="roomshape&pencil"
476
+ maskImage="/assets/img/svg/wizardstep/pencil.svg"
477
+ style={{
478
+ position: 'absolute',
479
+ top: 10,
480
+ right: 10,
481
+ height: 25,
482
+ width: 25,
483
+ backgroundColor:
484
+ roomShape.type === 'custom'
485
+ ? SECONDARY_PURPLE_COLOR
486
+ : roomShape.type
487
+ ? TEXT_COLOR_NEUTRAL_3
488
+ : TEXT_COLOR_NEUTRAL_0
489
+ }}
490
+ />
491
+ </S.MaskImageWrapper>
492
+ <S.ContentCheckImage
493
+ id="check"
494
+ src="/assets/img/svg/wizardstep/check-normal.svg"
495
+ />
496
+ {roomShape.type === 'custom' && (
497
+ <S.ContentCheckImage src="/assets/img/svg/wizardstep/check-active.svg" />
498
+ )}
499
+ <S.ContentItemLabel
500
+ id="roomlabel&custom"
501
+ style={{
502
+ fontWeight: roomShape.type === 'custom' && 600,
503
+ color:
504
+ roomShape.type === 'custom'
505
+ ? SECONDARY_PURPLE_COLOR
506
+ : roomShape.type
507
+ ? TEXT_COLOR_NEUTRAL_3
508
+ : TEXT_COLOR_NEUTRAL_0
509
+ }}
510
+ >
511
+ Draw Custom
512
+ </S.ContentItemLabel>
513
+ <span
514
+ id="hint"
515
+ style={{
516
+ position: 'absolute',
517
+ fontFamily: DEFAULT_FONT_FAMILY,
518
+ fontSize: 16,
519
+ lineHeight: '20px',
520
+ textAlign: 'left',
521
+ backgroundColor: TEXT_COLOR_NEUTRAL_1,
522
+ opacity: 0.8,
523
+ color: BG_COLOR_1,
524
+ borderRadius: 3,
525
+ zIndex: 3,
526
+ width: 'max-content',
527
+ top: -30,
528
+ left: -10,
529
+ padding: '3px 8px'
530
+ }}
531
+ >
532
+ You will be able to draw your own space
533
+ </span>
534
+ </S.ContentItem>
535
+ </S.ContentWrapper1>
536
+ </S.ContentWrapper>
537
+ )
538
+ },
539
+ {
540
+ index: 2,
541
+ title: 'COLOR & STYLE',
542
+ description:
543
+ 'Customize your door style. To get professional help, click on the Help button.',
544
+ content: (
545
+ <S.ContentWrapper>
546
+ <S.Title>Installation</S.Title>
547
+ <S.ContentWrapper1>
548
+ {this.props.categoryData.data.doorStyles.items.map(
549
+ (item, key) => {
550
+ return (
551
+ <S.DoorStyleContentItem
552
+ onClick={() =>
553
+ this.setState({
554
+ installation: item,
555
+ doorCategory: item.items[0]
556
+ })
557
+ }
558
+ key={key}
559
+ >
560
+ <S.DoorStyleContentImageWrapper
561
+ id="item"
562
+ style={{
563
+ backgroundColor:
564
+ installation.name === item.name &&
565
+ TEXT_COLOR_NEUTRAL_5,
566
+ borderColor:
567
+ installation.name === item.name &&
568
+ SECONDARY_PURPLE_COLOR
569
+ }}
570
+ >
571
+ <S.DoorStyleContentImage
572
+ id={`doorstyle&${item.name}&image`}
573
+ maskImage={item.thumbnail}
574
+ style={{
575
+ backgroundColor:
576
+ installation.name === item.name &&
577
+ SECONDARY_PURPLE_COLOR
578
+ }}
579
+ />
580
+ </S.DoorStyleContentImageWrapper>
581
+ <S.ContentItemLabel
582
+ style={{
583
+ color:
584
+ installation.name === item.name &&
585
+ SECONDARY_PURPLE_COLOR,
586
+ fontSize: 15,
587
+ fontWeight: installation.name === item.name && 700
588
+ }}
589
+ >
590
+ {item.name}
591
+ </S.ContentItemLabel>
592
+ </S.DoorStyleContentItem>
593
+ );
594
+ }
595
+ )}
596
+ </S.ContentWrapper1>
597
+ <S.Title style={{ marginTop: 20 }}>Door Style</S.Title>
598
+ <S.ContentWrapper1>
599
+ {this.props.categoryData.data.doorStyles.items
600
+ .filter(item => item.name === installation.name)[0]
601
+ .items.map((element, key) => {
602
+ return (
603
+ <S.DoorStyleContentItem
604
+ onClick={() => this.setState({ doorCategory: element })}
605
+ key={key}
606
+ >
607
+ <S.DoorStyleContentImageWrapper
608
+ id="item"
609
+ style={{
610
+ backgroundColor:
611
+ doorCategory.name === element.name &&
612
+ TEXT_COLOR_NEUTRAL_5,
613
+ borderColor:
614
+ doorCategory.name === element.name &&
615
+ SECONDARY_PURPLE_COLOR
616
+ }}
617
+ >
618
+ <S.DoorCategoryContentImage
619
+ style={{
620
+ margin:
621
+ doorCategory.name === element.name && 'unset',
622
+ backgroundColor:
623
+ doorCategory.name === element.name &&
624
+ SECONDARY_PURPLE_COLOR
625
+ }}
626
+ maskImage={element.thumbnail}
627
+ />
628
+ </S.DoorStyleContentImageWrapper>
629
+ <S.ContentItemLabel
630
+ id={`doorcategory&${element.name}&label`}
631
+ style={{
632
+ color:
633
+ doorCategory.name === element.name
634
+ ? SECONDARY_PURPLE_COLOR
635
+ : TEXT_COLOR_NEUTRAL_0,
636
+ fontSize: 15,
637
+ fontWeight: doorCategory.name === element.name && 700
638
+ }}
639
+ >
640
+ {element.name}
641
+ </S.ContentItemLabel>
642
+ </S.DoorStyleContentItem>
643
+ );
644
+ })}
645
+ </S.ContentWrapper1>
646
+ <div
647
+ style={{
648
+ display: 'flex',
649
+ gap: '1rem',
650
+ alignItems: 'center',
651
+ marginTop: 20,
652
+ height: 30
653
+ }}
654
+ >
655
+ <S.Title>Color family</S.Title>
656
+ {Object.keys(this.state.colorFamily).length !== 0 && (
657
+ <S.Button
658
+ style={{
659
+ fontSize: 12,
660
+ padding: '5px 10px',
661
+ border: '1px solid'
662
+ }}
663
+ onClick={() => this.setState({ colorFamily: {} })}
664
+ >
665
+ Clear filter
666
+ </S.Button>
667
+ )}
668
+ </div>
669
+ <S.ContentWrapper1>
670
+ <div
671
+ style={{
672
+ display: 'flex',
673
+ flexWrap: 'wrap',
674
+ gap: '0.5rem'
675
+ }}
676
+ >
677
+ {this.props.categoryData.data.doorColorFamily &&
678
+ this.props.categoryData.data.doorColorFamily.map(
679
+ (element, key) => {
680
+ return (
681
+ <S.ColorContentItem
682
+ onClick={() =>
683
+ this.setState({ colorFamily: element })
684
+ }
685
+ key={key}
686
+ >
687
+ <S.ColorContentImage src={element.thumbnail} />
688
+ <S.ContentCheckImage
689
+ id="check"
690
+ src="/assets/img/svg/wizardstep/check-normal.svg"
691
+ style={{
692
+ height: 70,
693
+ width: 70,
694
+ borderRadius: '50%',
695
+ backgroundColor: 'unset',
696
+ zIndex: 2,
697
+ padding: 16
698
+ }}
699
+ />
700
+ {colorFamily.id === element.id && (
701
+ <S.ContentCheckImage
702
+ src="/assets/img/svg/wizardstep/check-active.svg"
703
+ style={{
704
+ height: 70,
705
+ width: 70,
706
+ borderRadius: '50%',
707
+ backgroundColor: 'unset',
708
+ zIndex: 2,
709
+ padding: 16,
710
+ border: `2px solid ${SECONDARY_PURPLE_COLOR}`
711
+ }}
712
+ />
713
+ )}
714
+ </S.ColorContentItem>
715
+ );
716
+ }
717
+ )}
718
+ </div>
719
+ </S.ContentWrapper1>
720
+ </S.ContentWrapper>
721
+ )
722
+ },
723
+ {
724
+ index: 3,
725
+ title: 'SUMMARY',
726
+ description: (
727
+ <div>
728
+ <div>Select from the door collection for all cabinets.</div>
729
+ <div>To get professional help, click on the Help button.</div>
730
+ </div>
731
+ ),
732
+ content: (
733
+ <S.ContentWrapper>
734
+ <S.ContentWrapper1>
735
+ <S.ContentWrapper2>
736
+ <S.Title>Room Shape</S.Title>
737
+ {roomShapeData.map((item, key) => {
738
+ return (
739
+ roomShape.type === item.type && (
740
+ <S.ContentItem
741
+ style={{ margin: 'unset', marginTop: 20 }}
742
+ key={key}
743
+ >
744
+ <S.MaskImageWrapper>
745
+ <S.RoomContentImage
746
+ maskImage={item.url}
747
+ style={{ backgroundColor: SECONDARY_PURPLE_COLOR }}
748
+ />
749
+ </S.MaskImageWrapper>
750
+ <S.ContentCheckImage src="/assets/img/svg/wizardstep/check-active.svg" />
751
+ <S.ContentItemLabel
752
+ style={{ color: SECONDARY_PURPLE_COLOR }}
753
+ >
754
+ {item.name}
755
+ </S.ContentItemLabel>
756
+ </S.ContentItem>
757
+ )
758
+ );
759
+ })}
760
+ {roomShape.type === 'custom' && (
761
+ <S.ContentItem style={{ margin: 'unset', marginTop: 20 }}>
762
+ <S.MaskImageWrapper>
763
+ <S.RoomContentImage
764
+ maskImage="/assets/img/svg/wizardstep/Custom.svg"
765
+ style={{ backgroundColor: SECONDARY_PURPLE_COLOR }}
766
+ />
767
+ <S.RoomContentImage
768
+ maskImage="/assets/img/svg/wizardstep/pencil.svg"
769
+ style={{
770
+ position: 'absolute',
771
+ top: 10,
772
+ right: 25,
773
+ height: 25,
774
+ width: 25,
775
+ backgroundColor: SECONDARY_PURPLE_COLOR
776
+ }}
777
+ />
778
+ </S.MaskImageWrapper>
779
+ <S.ContentCheckImage src="/assets/img/svg/wizardstep/check-active.svg" />
780
+ <S.ContentItemLabel
781
+ style={{ color: SECONDARY_PURPLE_COLOR }}
782
+ >
783
+ Draw Custom
784
+ </S.ContentItemLabel>
785
+ <span
786
+ id="hint"
787
+ style={{
788
+ position: 'absolute',
789
+ fontFamily: DEFAULT_FONT_FAMILY,
790
+ fontSize: 16,
791
+ lineHeight: '20px',
792
+ textAlign: 'left',
793
+ backgroundColor: TEXT_COLOR_NEUTRAL_1,
794
+ opacity: 0.8,
795
+ color: BG_COLOR_1,
796
+ borderRadius: 3,
797
+ zIndex: 3,
798
+ width: 'max-content',
799
+ top: -30,
800
+ left: -10,
801
+ padding: '3px 8px'
802
+ }}
803
+ >
804
+ You will be able to draw your own space
805
+ </span>
806
+ </S.ContentItem>
807
+ )}
808
+ </S.ContentWrapper2>
809
+ <S.ContentWrapper2>
810
+ <S.Title>Installation</S.Title>
811
+ <S.DoorStyleContentItem
812
+ style={{ margin: 'unset', marginTop: 20 }}
813
+ >
814
+ <S.DoorStyleContentImageWrapper
815
+ style={{
816
+ borderColor: SECONDARY_PURPLE_COLOR,
817
+ backgroundColor: TEXT_COLOR_NEUTRAL_5
818
+ }}
819
+ >
820
+ <S.DoorStyleContentImage
821
+ maskImage={installation.thumbnail}
822
+ style={{ backgroundColor: SECONDARY_PURPLE_COLOR }}
823
+ />
824
+ </S.DoorStyleContentImageWrapper>
825
+ <S.ContentItemLabel style={{ color: SECONDARY_PURPLE_COLOR }}>
826
+ {installation.name}
827
+ </S.ContentItemLabel>
828
+ </S.DoorStyleContentItem>
829
+ </S.ContentWrapper2>
830
+ <S.ContentWrapper2>
831
+ <S.Title>Color Family</S.Title>
832
+ <S.ColorContentItem style={{ margin: 'unset', marginTop: 20 }}>
833
+ {colorFamily.thumbnail && (
834
+ <S.ColorContentImage
835
+ src={colorFamily.thumbnail}
836
+ style={{ height: 120, width: 120, borderRadius: '100%' }}
837
+ />
838
+ )}
839
+ <S.ContentCheckImage
840
+ src="/assets/img/svg/wizardstep/check-active.svg"
841
+ style={{
842
+ height: 120,
843
+ width: 120,
844
+ borderRadius: '50%',
845
+ backgroundColor: 'unset',
846
+ zIndex: 2,
847
+ padding: 41,
848
+ border: `2px solid ${SECONDARY_PURPLE_COLOR}`
849
+ }}
850
+ />
851
+ <S.ContentItemLabel style={{ color: SECONDARY_PURPLE_COLOR }}>
852
+ {colorFamily.name}
853
+ </S.ContentItemLabel>
854
+ </S.ColorContentItem>
855
+ </S.ContentWrapper2>
856
+ <S.ContentWrapper2>
857
+ <S.Title>Style</S.Title>
858
+ <S.DoorStyleContentItem
859
+ style={{ margin: 'unset', marginTop: 20 }}
860
+ >
861
+ <S.DoorStyleContentImageWrapper
862
+ style={{
863
+ backgroundColor: TEXT_COLOR_NEUTRAL_5,
864
+ borderColor: SECONDARY_PURPLE_COLOR
865
+ }}
866
+ >
867
+ <S.DoorCategoryContentImage
868
+ style={{
869
+ margin: 'unset',
870
+ backgroundColor: SECONDARY_PURPLE_COLOR
871
+ }}
872
+ maskImage={doorCategory.thumbnail}
873
+ />
874
+ </S.DoorStyleContentImageWrapper>
875
+ <S.ContentItemLabel style={{ color: SECONDARY_PURPLE_COLOR }}>
876
+ {doorCategory.name}
877
+ </S.ContentItemLabel>
878
+ </S.DoorStyleContentItem>
879
+ </S.ContentWrapper2>
880
+ <S.ContentWrapper2>
881
+ <S.Title>Finish</S.Title>
882
+ <S.DoorStyleContentItem
883
+ style={{ margin: 'unset', marginTop: 20 }}
884
+ >
885
+ <S.FinishContentImageWrapper
886
+ style={{
887
+ border: `2px solid ${SECONDARY_PURPLE_COLOR}`,
888
+ backgroundColor: 'unset',
889
+ minHeight: 120,
890
+ height: 120,
891
+ width: 120
892
+ }}
893
+ >
894
+ <S.FinishContentImage
895
+ src={doorStyle.thumbnail}
896
+ style={{
897
+ height: '70%',
898
+ width: '100%',
899
+ objectFit: 'contain'
900
+ }}
901
+ />
902
+ </S.FinishContentImageWrapper>
903
+ <S.ContentItemLabel
904
+ style={{
905
+ color: SECONDARY_PURPLE_COLOR,
906
+ marginBottom: 15,
907
+ width: 120
908
+ }}
909
+ >
910
+ {doorStyle.name}
911
+ </S.ContentItemLabel>
912
+ </S.DoorStyleContentItem>
913
+ </S.ContentWrapper2>
914
+ </S.ContentWrapper1>
915
+ </S.ContentWrapper>
916
+ )
917
+ }
918
+ ];
919
+
920
+ return (
921
+ <div>
922
+ {step === 0 ? (
923
+ <S.WizardIntro>
924
+ <S.IntroPlane>
925
+ <S.IntroMark>
926
+ <img src="/assets/img/loading/loading_1.svg" width={80} />
927
+ </S.IntroMark>
928
+ <S.IntroTitle>Welcome to DIY Design Space</S.IntroTitle>
929
+ <S.IntroDescription>
930
+ Let's start designing your kitchen. Select the type of project
931
+ you want to start.
932
+ </S.IntroDescription>
933
+ <S.IntroSelect>
934
+ <S.IntroItem
935
+ onClick={() => {
936
+ this.setState({ step: 1 });
937
+ }}
938
+ >
939
+ <img
940
+ src={`/assets/img/svg/intro/1-start-with-floorplan${
941
+ hover === 1 ? '-whole' : ''
942
+ }.svg`}
943
+ onMouseOut={() => {
944
+ this.setState({ hover: 0 });
945
+ }}
946
+ onMouseOver={() => {
947
+ this.setState({ hover: 1 });
948
+ }}
949
+ width={140}
950
+ />
951
+ <S.IntroItemText>Start with Floorplan</S.IntroItemText>
952
+ </S.IntroItem>
953
+ <S.IntroItem
954
+ onClick={() => {
955
+ this.props.close();
956
+ this.context.viewer2DActions.updateCeilHeight(96);
957
+ this.context.viewer2DActions.updateCeilHeightUnit('in');
958
+ this.context.viewer3DActions.update3DCeilHeight(96);
959
+ this.context.viewer3DActions.update3DCeilHeightUnit('in');
960
+ }}
961
+ >
962
+ <img
963
+ src={`/assets/img/svg/intro/2-start-from-scratch${
964
+ hover === 2 ? '-whole' : ''
965
+ }.svg`}
966
+ onMouseOut={() => {
967
+ this.setState({ hover: 0 });
968
+ }}
969
+ onMouseOver={() => {
970
+ this.setState({ hover: 2 });
971
+ }}
972
+ width={140}
973
+ />
974
+ <S.IntroItemText>Start from Scratch</S.IntroItemText>
975
+ </S.IntroItem>
976
+ {/* <S.IntroItem
977
+ style={{
978
+ position: 'relative'
979
+ }}
980
+ onClick={() => {
981
+ if (!this.props.match.params.token) {
982
+ this.props.setSignOpen(true);
983
+ this.props.setMyProjectsToLogin(true);
984
+ } else {
985
+ this.props.setMyProjectsOpen(true);
986
+ }
987
+ }}
988
+ >
989
+ <img
990
+ src={`/assets/img/svg/intro/3-retrieve-project${
991
+ hover === 3 ? '-whole' : ''
992
+ }.svg`}
993
+ onMouseOut={() => {
994
+ this.setState({ hover: 0 });
995
+ }}
996
+ onMouseOver={() => {
997
+ this.setState({ hover: 3 });
998
+ }}
999
+ width={140}
1000
+ />
1001
+ <S.IntroItemText>Retrieve a saved project</S.IntroItemText>
1002
+ <div
1003
+ id="scratch_hint"
1004
+ style={{
1005
+ position: 'absolute',
1006
+ display: this.state.hover === 3 ? 'block' : 'none',
1007
+ fontFamily: DEFAULT_FONT_FAMILY,
1008
+ fontSize: 16,
1009
+ lineHeight: '20px',
1010
+ textAlign: 'left',
1011
+ backgroundColor: TEXT_COLOR_NEUTRAL_1,
1012
+ opacity: 0.8,
1013
+ color: BG_COLOR_1,
1014
+ borderRadius: 3,
1015
+ zIndex: 3,
1016
+ width: 'max-content',
1017
+ top: -30,
1018
+ left: -10,
1019
+ padding: '3px 8px'
1020
+ }}
1021
+ >
1022
+ We need to log you in to retrieve your saved projects.
1023
+ </div>
1024
+ </S.IntroItem> */}
1025
+ </S.IntroSelect>
1026
+ </S.IntroPlane>
1027
+ </S.WizardIntro>
1028
+ ) : (
1029
+ <S.WizardStepWrapper>
1030
+ <S.TitleBarWrapper>
1031
+ <S.TitleBar>
1032
+ {step === 1
1033
+ ? 'Choose your room shape'
1034
+ : step === 3
1035
+ ? 'Summary'
1036
+ : 'Choose your door style'}
1037
+ </S.TitleBar>
1038
+ <S.TitleBarButtonWrapper>
1039
+ <S.TitleBarButton
1040
+ style={{
1041
+ border: `3px solid ${BG_COLOR_1}`,
1042
+ cursor: step === 1 && 'no-drop',
1043
+ backgroundColor: step === 1 && BG_COLOR_1,
1044
+ color: step === 1 && TEXT_COLOR_NEUTRAL_4
1045
+ }}
1046
+ onClick={() =>
1047
+ step !== 1 && this.setState({ cancelDialogVisible: true })
1048
+ }
1049
+ >
1050
+ Cancel
1051
+ </S.TitleBarButton>
1052
+ {step > 1 && (
1053
+ <S.TitleBarButton
1054
+ onClick={() => {
1055
+ this.setState({ step: step - 1 });
1056
+ // switch (step) {
1057
+ // case 5:
1058
+ // this.setState({ doorStyle: '' });
1059
+ // break;
1060
+ // case 4:
1061
+ // this.setState({ doorCategory: { name: '', url: '' }});
1062
+ // break;
1063
+ // case 3:
1064
+ // this.setState({ installation: '', doorCategory: { name: '', url: '' } });
1065
+ // break;
1066
+ // case 2:
1067
+ // this.setState({ installation: '' });
1068
+ // this.setState({ doorColor: { name: '', url: '', color: '' } });
1069
+ // default:
1070
+ // break;
1071
+ // }
1072
+ }}
1073
+ >
1074
+ <img
1075
+ style={{ paddingRight: 10 }}
1076
+ height="10px"
1077
+ src="/assets/img/svg/toolbar/undo_button.svg"
1078
+ />
1079
+ Back
1080
+ </S.TitleBarButton>
1081
+ )}
1082
+ <S.ConfirmButton
1083
+ style={{ minWidth: 89 }}
1084
+ onClick={() => (step < 3 ? this._ok() : this._confirm(1))}
1085
+ >
1086
+ <img
1087
+ style={{
1088
+ marginRight: 10,
1089
+ height: 18,
1090
+ width: 18,
1091
+ WebkitMaskImage:
1092
+ 'url(/assets/img/svg/headerbar/check.svg)',
1093
+ backgroundColor: BG_COLOR_1,
1094
+ WebkitMaskSize: '100%',
1095
+ WebkitMaskPosition: 'center'
1096
+ }}
1097
+ />
1098
+ {step > 2 ? 'Confirm' : 'OK'}
1099
+ </S.ConfirmButton>
1100
+ </S.TitleBarButtonWrapper>
1101
+ </S.TitleBarWrapper>
1102
+ <div
1103
+ style={{
1104
+ display: 'flex',
1105
+ gap: '2rem'
1106
+ }}
1107
+ >
1108
+ <div style={{ display: 'flex', flexDirection: 'column' }}>
1109
+ <S.StepBarWrapper>
1110
+ {stepBar.map((element, key) => {
1111
+ switch (element.index) {
1112
+ case 1:
1113
+ return (
1114
+ <S.StepBullet key={key}>
1115
+ <S.StepBulletLabel
1116
+ style={{
1117
+ color:
1118
+ step === element.index &&
1119
+ SHADE_LIGHT_PURPLE_COLOR,
1120
+ fontWeight: step >= element.index && 700
1121
+ }}
1122
+ >
1123
+ {element.title}
1124
+ </S.StepBulletLabel>
1125
+ <S.StepBulletIcon
1126
+ src={
1127
+ step === element.index
1128
+ ? '/assets/img/svg/wizardstep/bullet-current.svg'
1129
+ : '/assets/img/svg/wizardstep/bullet-done.svg'
1130
+ }
1131
+ onClick={() =>
1132
+ this.setState({ step: element.index })
1133
+ }
1134
+ />
1135
+ </S.StepBullet>
1136
+ );
1137
+ default:
1138
+ return (
1139
+ <S.StepBullet key={key}>
1140
+ <S.StepBulletLabel
1141
+ style={{
1142
+ color:
1143
+ step === element.index &&
1144
+ SHADE_LIGHT_PURPLE_COLOR,
1145
+ fontWeight: step >= element.index && 700
1146
+ }}
1147
+ >
1148
+ {element.title}
1149
+ </S.StepBulletLabel>
1150
+ <div
1151
+ style={{
1152
+ display: 'flex',
1153
+ position: 'relative',
1154
+ width: '100%',
1155
+ right: 'calc((100% - 10px) / 2)'
1156
+ }}
1157
+ >
1158
+ <S.StepBarIcon
1159
+ src={
1160
+ step >= element.index - 1
1161
+ ? '/assets/img/svg/wizardstep/bar-active.svg'
1162
+ : '/assets/img/svg/wizardstep/bar-normal.svg'
1163
+ }
1164
+ />
1165
+ <S.StepBulletIcon
1166
+ src={
1167
+ step === element.index
1168
+ ? '/assets/img/svg/wizardstep/bullet-current.svg'
1169
+ : step > element.index
1170
+ ? '/assets/img/svg/wizardstep/bullet-done.svg'
1171
+ : '/assets/img/svg/wizardstep/bullet-not-done.svg'
1172
+ }
1173
+ onClick={() => this.onStepChange(element.index)}
1174
+ />
1175
+ </div>
1176
+ </S.StepBullet>
1177
+ );
1178
+ }
1179
+ })}
1180
+ </S.StepBarWrapper>
1181
+ <div>
1182
+ <S.Description>
1183
+ <span id="description">
1184
+ {stepBar[step - 1].description}
1185
+ </span>
1186
+ </S.Description>
1187
+ </div>
1188
+ {stepBar[step - 1].content}
1189
+ </div>
1190
+ {step === 2 && (
1191
+ <div
1192
+ style={{
1193
+ display: 'flex',
1194
+ flexDirection: 'column',
1195
+ width: '100%'
1196
+ }}
1197
+ >
1198
+ <S.DoorStyleWrapper>
1199
+ {this.props.categoryData.data.doorStyles.items
1200
+ .filter(item => item.name === installation.name)[0]
1201
+ .items.filter(
1202
+ item1 => item1.name === doorCategory.name
1203
+ )[0].items.length === 0 ? (
1204
+ <span
1205
+ style={{
1206
+ fontFamily: DEFAULT_FONT_FAMILY,
1207
+ fontSize: 22,
1208
+ lineHeight: '28px',
1209
+ fontWeight: 700,
1210
+ margin: 'auto',
1211
+ marginTop: 50,
1212
+ color: STATUS_NEGATIVE_COLOR,
1213
+ padding: '2rem'
1214
+ }}
1215
+ >
1216
+ There is no door style with current dealer
1217
+ </span>
1218
+ ) : colorFamily.id &&
1219
+ this.props.categoryData.data.doorStyles.items
1220
+ .filter(item => item.name === installation.name)[0]
1221
+ .items.filter(
1222
+ item1 => item1.name === doorCategory.name
1223
+ )[0]
1224
+ .items.filter(
1225
+ element =>
1226
+ element.color_family.search(
1227
+ `,${colorFamily.id},`
1228
+ ) === 0
1229
+ ).length === 0 ? (
1230
+ <span
1231
+ style={{
1232
+ fontFamily: DEFAULT_FONT_FAMILY,
1233
+ fontSize: 22,
1234
+ lineHeight: '28px',
1235
+ fontWeight: 700,
1236
+ margin: 'auto',
1237
+ marginTop: 50,
1238
+ color: STATUS_NEGATIVE_COLOR,
1239
+ padding: '2rem'
1240
+ }}
1241
+ >
1242
+ There is no door style with current door color family
1243
+ </span>
1244
+ ) : (
1245
+ this.props.categoryData.data.doorStyles.items
1246
+ .filter(item => item.name === installation.name)[0]
1247
+ .items.filter(
1248
+ item1 => item1.name === doorCategory.name
1249
+ )[0]
1250
+ .items.map((element, key) => {
1251
+ return !colorFamily.id ||
1252
+ element.color_family.search(
1253
+ `,${colorFamily.id},`
1254
+ ) === 0 ? (
1255
+ <S.DoorStyleContentItem
1256
+ style={{
1257
+ margin: 0,
1258
+ height: 340,
1259
+ width: 160,
1260
+ backgroundColor:
1261
+ doorStyle.name === element.name && '#EDF1FB',
1262
+ borderRadius: 6
1263
+ }}
1264
+ onClick={() =>
1265
+ this.setState({ doorStyle: element })
1266
+ }
1267
+ key={key}
1268
+ >
1269
+ <S.FinishContentImageWrapper
1270
+ id={`door&${element.name}&item`}
1271
+ style={{
1272
+ marginTop: 15,
1273
+ border:
1274
+ doorStyle.name === element.name &&
1275
+ `2px solid ${SECONDARY_PURPLE_COLOR}`,
1276
+ backgroundColor:
1277
+ doorStyle.name === element.name &&
1278
+ TEXT_COLOR_NEUTRAL_5
1279
+ }}
1280
+ >
1281
+ <S.FinishContentImage
1282
+ src={element.thumbnail}
1283
+ style={{ width: '100%', height: '100%' }}
1284
+ />
1285
+ <S.ContentCheckImage
1286
+ id="check"
1287
+ src="/assets/img/svg/wizardstep/check-normal.svg"
1288
+ style={{
1289
+ height: 160,
1290
+ width: 120,
1291
+ borderRadius: 10,
1292
+ backgroundColor: 'unset',
1293
+ zIndex: 2
1294
+ }}
1295
+ />
1296
+ {doorStyle.name === element.name && (
1297
+ <S.ContentCheckImage
1298
+ src="/assets/img/svg/wizardstep/check-active.svg"
1299
+ style={{
1300
+ height: 160,
1301
+ width: 120,
1302
+ borderRadius: 10,
1303
+ backgroundColor: 'unset'
1304
+ }}
1305
+ />
1306
+ )}
1307
+ </S.FinishContentImageWrapper>
1308
+ <S.ContentItemLabel
1309
+ id={`door&${element.name}&label`}
1310
+ style={{
1311
+ fontWeight:
1312
+ doorStyle.name === element.name && 700,
1313
+ color:
1314
+ doorStyle.name === element.name
1315
+ ? SECONDARY_PURPLE_COLOR
1316
+ : TEXT_COLOR_NEUTRAL_0,
1317
+ maxWidth: '130px'
1318
+ }}
1319
+ >
1320
+ {element.name}
1321
+ </S.ContentItemLabel>
1322
+ </S.DoorStyleContentItem>
1323
+ ) : null;
1324
+ })
1325
+ )}
1326
+ </S.DoorStyleWrapper>
1327
+ </div>
1328
+ )}
1329
+ </div>
1330
+ <StyledDialog
1331
+ open={cancelDialogVisible}
1332
+ onClose={() => this.setState({ cancelDialogVisible: false })}
1333
+ >
1334
+ <S.DialogContent>
1335
+ Do you want to apply your current selections or start from
1336
+ scratch?
1337
+ </S.DialogContent>
1338
+ <S.DialogAction>
1339
+ <S.Button
1340
+ onClick={() => {
1341
+ this.props.close();
1342
+ this.context.viewer2DActions.updateCeilHeight(96);
1343
+ this.context.viewer2DActions.updateCeilHeightUnit('in');
1344
+ this.context.viewer3DActions.update3DCeilHeight(96);
1345
+ this.context.viewer3DActions.update3DCeilHeightUnit('in');
1346
+ }}
1347
+ >
1348
+ Discard
1349
+ </S.Button>
1350
+ <S.Button onClick={() => this._confirm(0)}>Apply</S.Button>
1351
+ </S.DialogAction>
1352
+ </StyledDialog>
1353
+ </S.WizardStepWrapper>
1354
+ )}
1355
+ </div>
1356
+ );
1357
+ }
1358
+ }
1359
+
1360
+ WizardStep.propTypes = {
1361
+ state: PropTypes.object.isRequired,
1362
+ content: PropTypes.number.isRequired
1363
+ };
1364
+
1365
+ WizardStep.contextTypes = {
1366
+ projectActions: PropTypes.object.isRequired,
1367
+ viewer2DActions: PropTypes.object.isRequired,
1368
+ viewer3DActions: PropTypes.object.isRequired,
1369
+ linesActions: PropTypes.object.isRequired,
1370
+ itemsActions: PropTypes.object.isRequired,
1371
+ catalog: PropTypes.object.isRequired
1372
+ };