kitchen-simulator 5.0.0-test.17 → 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 (206) hide show
  1. package/package.json +8 -18
  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 -91
  7. package/src/components/atoms/Snackbar/index.jsx +43 -0
  8. package/src/components/atoms/radio-button/index.jsx +20 -0
  9. package/src/components/atoms/radio-button/styles.js +56 -0
  10. package/src/components/button/MainButton.jsx +157 -0
  11. package/src/components/button/ToggleMeasureButton.jsx +65 -0
  12. package/src/components/catalog-view/catalog-breadcrumb.jsx +53 -0
  13. package/src/components/catalog-view/catalog-item.jsx +229 -0
  14. package/src/components/catalog-view/catalog-list.jsx +173 -0
  15. package/src/components/catalog-view/catalog-page-item.jsx +110 -0
  16. package/src/components/catalog-view/catalog-turn-back-page-item.jsx +80 -0
  17. package/src/components/configurator/custom-configurator.jsx +77 -0
  18. package/src/components/configurator/project-configurator.jsx +120 -0
  19. package/src/components/content.jsx +136 -0
  20. package/src/components/export.js +36 -0
  21. package/src/components/firstsetting/button/styles.js +223 -0
  22. package/src/components/firstsetting/export.js +9 -0
  23. package/src/components/firstsetting/firstsetting-content-button.jsx +198 -0
  24. package/src/components/firstsetting/firstsetting-toggle-button.jsx +101 -0
  25. package/src/components/firstsetting/firstsetting.jsx +814 -0
  26. package/src/components/footerbar/button/ControlButton.jsx +43 -0
  27. package/src/components/footerbar/button/DirectionButton.jsx +54 -0
  28. package/src/components/footerbar/button/DirectionPanSpinButton.jsx +36 -0
  29. package/src/components/footerbar/button/ToggleButton.jsx +58 -0
  30. package/src/components/footerbar/button/ToggleConvertButton.jsx +48 -0
  31. package/src/components/footerbar/button/ToggleMeasureButton.jsx +33 -0
  32. package/src/components/footerbar/button/styles.js +217 -0
  33. package/src/components/footerbar/export.js +9 -0
  34. package/src/components/footerbar/footer-content-button.jsx +198 -0
  35. package/src/components/footerbar/footer-toggle-button.jsx +101 -0
  36. package/src/components/footerbar/footerbar.jsx +1103 -0
  37. package/src/components/footerbar/styles.js +263 -0
  38. package/src/components/header/button/MenuButton.jsx +46 -0
  39. package/src/components/header/button/SaveButton.jsx +54 -0
  40. package/src/components/header/button/styles.js +181 -0
  41. package/src/components/header/export.js +5 -0
  42. package/src/components/header/header.jsx +631 -0
  43. package/src/components/header/header.style.css +47 -0
  44. package/src/components/header/styles.js +320 -0
  45. package/src/components/login/Login.js +77 -0
  46. package/src/components/login/LoginForm/index.js +108 -0
  47. package/src/components/login/Register.js +82 -0
  48. package/src/components/login/RegisterForm/index.js +171 -0
  49. package/src/components/login/jwtService.js +201 -0
  50. package/src/components/login/style.css +158 -0
  51. package/src/components/login/style.scss +260 -0
  52. package/src/components/molecules/slider/index.jsx +15 -0
  53. package/src/components/molecules/slider/styles.js +0 -0
  54. package/src/components/molecules/slider/styles.scss +3 -0
  55. package/src/components/myprojects/export.js +5 -0
  56. package/src/components/myprojects/index.jsx +445 -0
  57. package/src/components/myprojects/styles.js +241 -0
  58. package/src/components/sidebar/custom-accordion.jsx +48 -0
  59. package/src/components/sidebar/export.js +15 -0
  60. package/src/components/sidebar/panel-element-editor/attributes-editor/attributes-editor.jsx +73 -0
  61. package/src/components/sidebar/panel-element-editor/attributes-editor/confirm-popup.jsx +101 -0
  62. package/src/components/sidebar/panel-element-editor/attributes-editor/hole-attributes-editor.jsx +149 -0
  63. package/src/components/sidebar/panel-element-editor/attributes-editor/item-attributes-editor.jsx +316 -0
  64. package/src/components/sidebar/panel-element-editor/attributes-editor/line-attributes-editor.jsx +108 -0
  65. package/src/components/sidebar/panel-element-editor/element-editor.jsx +1070 -0
  66. package/src/components/sidebar/panel-element-editor/multi-elements-editor.jsx +0 -0
  67. package/src/components/sidebar/panel-element-editor/panel-element-editor.jsx +104 -0
  68. package/src/components/sidebar/panel-element-editor/panel-multi-elements-editor.jsx +155 -0
  69. package/src/components/sidebar/panel-group-editor.jsx +272 -0
  70. package/src/components/sidebar/panel-groups.jsx +310 -0
  71. package/src/components/sidebar/panel-guides.jsx +192 -0
  72. package/src/components/sidebar/panel-layer-elements.jsx +298 -0
  73. package/src/components/sidebar/panel-layers.jsx +381 -0
  74. package/src/components/sidebar/panel.jsx +71 -0
  75. package/src/components/sidebar/sidebar.jsx +106 -0
  76. package/src/components/sidebar/toolbar-panel.jsx +139 -0
  77. package/src/components/sign/export.js +7 -0
  78. package/src/components/sign/main/index.jsx +523 -0
  79. package/src/components/sign/main/styles.js +163 -0
  80. package/src/components/style/button.jsx +95 -0
  81. package/src/components/style/cancel-button.jsx +20 -0
  82. package/src/components/style/content-container.jsx +29 -0
  83. package/src/components/style/content-title.jsx +20 -0
  84. package/src/components/style/delete-button.jsx +23 -0
  85. package/src/components/style/export.jsx +48 -0
  86. package/src/components/style/form-block.jsx +13 -0
  87. package/src/components/style/form-color-input.jsx +27 -0
  88. package/src/components/style/form-label.jsx +15 -0
  89. package/src/components/style/form-number-input.jsx +196 -0
  90. package/src/components/style/form-number-input_2.jsx +191 -0
  91. package/src/components/style/form-select.jsx +38 -0
  92. package/src/components/style/form-slider.jsx +36 -0
  93. package/src/components/style/form-submit-button.jsx +23 -0
  94. package/src/components/style/form-text-input.jsx +65 -0
  95. package/src/components/toolbar/button/ControlButton.jsx +41 -0
  96. package/src/components/toolbar/button/DirectionButton.jsx +34 -0
  97. package/src/components/toolbar/button/RightButton.jsx +103 -0
  98. package/src/components/toolbar/button/ToggleButton.jsx +41 -0
  99. package/src/components/toolbar/button/index.jsx +55 -0
  100. package/src/components/toolbar/button/styles.js +127 -0
  101. package/src/components/toolbar/components/DoorStyleMenu.jsx +103 -0
  102. package/src/components/toolbar/components/Pricing.jsx +126 -0
  103. package/src/components/toolbar/components/ReviewForQuote.jsx +635 -0
  104. package/src/components/toolbar/export.js +21 -0
  105. package/src/components/toolbar/main/Alert.js +122 -0
  106. package/src/components/toolbar/main/TakePictureModal.jsx +104 -0
  107. package/src/components/toolbar/main/confirm-popup.jsx +99 -0
  108. package/src/components/toolbar/main/index.jsx +5627 -0
  109. package/src/components/toolbar/main/lShaped.json +311 -0
  110. package/src/components/toolbar/main/longNarrow.json +238 -0
  111. package/src/components/toolbar/main/myComponents.js +123 -0
  112. package/src/components/toolbar/main/oRectangle.json +220 -0
  113. package/src/components/toolbar/main/rectangle.json +238 -0
  114. package/src/components/toolbar/main/style.css +107 -0
  115. package/src/components/toolbar/main/styles.js +696 -0
  116. package/src/components/toolbar/plugin-item.jsx +123 -0
  117. package/src/components/toolbar/popup/appliance/appliance-category/index.jsx +73 -0
  118. package/src/components/toolbar/popup/appliance/choose-appliance/index.jsx +102 -0
  119. package/src/components/toolbar/popup/appliance/index.jsx +83 -0
  120. package/src/components/toolbar/popup/autosaveprompt/index.jsx +150 -0
  121. package/src/components/toolbar/popup/autosaveprompt/styles.css +64 -0
  122. package/src/components/toolbar/popup/autosaveprompt/styles.js +40 -0
  123. package/src/components/toolbar/popup/cabinet/cabinet-category/index.jsx +73 -0
  124. package/src/components/toolbar/popup/cabinet/choose-product/index.jsx +119 -0
  125. package/src/components/toolbar/popup/cabinet/index.jsx +85 -0
  126. package/src/components/toolbar/popup/doorStyle/choose-style/index.jsx +63 -0
  127. package/src/components/toolbar/popup/doorStyle/index.jsx +71 -0
  128. package/src/components/toolbar/popup/doorStyle/style-category/index.jsx +139 -0
  129. package/src/components/toolbar/popup/downloadsummary/downloadSummaryContext.js +2 -0
  130. package/src/components/toolbar/popup/downloadsummary/downloadSummaryTemp.jsx +157 -0
  131. package/src/components/toolbar/popup/downloadsummary/index.jsx +643 -0
  132. package/src/components/toolbar/popup/downloadsummary/show2D/show2DView.jsx +51 -0
  133. package/src/components/toolbar/popup/downloadsummary/show2D/viewer2DDownLoad.jsx +175 -0
  134. package/src/components/toolbar/popup/downloadsummary/show3D/show3DView.jsx +283 -0
  135. package/src/components/toolbar/popup/downloadsummary/show3D/viewer3DDownLoad.jsx +2257 -0
  136. package/src/components/toolbar/popup/downloadsummary/showCabinetInfo.js +93 -0
  137. package/src/components/toolbar/popup/downloadsummary/showElevation/showElevationView.jsx +132 -0
  138. package/src/components/toolbar/popup/downloadsummary/showElevation/viewer3DElevationDownload.jsx +2198 -0
  139. package/src/components/toolbar/popup/downloadsummary/showElevation/viewerElevationDownload.jsx +152 -0
  140. package/src/components/toolbar/popup/downloadsummary/showWarranty.jsx +149 -0
  141. package/src/components/toolbar/popup/downloadsummary/styles.css +177 -0
  142. package/src/components/toolbar/popup/downloadsummary/styles.js +453 -0
  143. package/src/components/toolbar/popup/finishingtouch/category/index.jsx +34 -0
  144. package/src/components/toolbar/popup/finishingtouch/index.jsx +58 -0
  145. package/src/components/toolbar/popup/finishingtouch/material-edit.jsx +112 -0
  146. package/src/components/toolbar/popup/finishingtouch/product/index.jsx +116 -0
  147. package/src/components/toolbar/popup/floorplan/choose-floor/confirm-popup.jsx +101 -0
  148. package/src/components/toolbar/popup/floorplan/choose-floor/index.jsx +254 -0
  149. package/src/components/toolbar/popup/floorplan/choose-floor/lShaped.json +311 -0
  150. package/src/components/toolbar/popup/floorplan/choose-floor/longNarrow.json +238 -0
  151. package/src/components/toolbar/popup/floorplan/choose-floor/oRectangle.json +220 -0
  152. package/src/components/toolbar/popup/floorplan/choose-floor/rectangle.json +238 -0
  153. package/src/components/toolbar/popup/floorplan/choose-floor/styles.js +86 -0
  154. package/src/components/toolbar/popup/floorplan/floor-category/index.jsx +109 -0
  155. package/src/components/toolbar/popup/floorplan/index.jsx +60 -0
  156. package/src/components/toolbar/popup/index.jsx +241 -0
  157. package/src/components/toolbar/popup/newproject/index.jsx +59 -0
  158. package/src/components/toolbar/popup/newproject/styles.css +64 -0
  159. package/src/components/toolbar/popup/newproject/styles.js +41 -0
  160. package/src/components/toolbar/popup/product/appliance.jsx +54 -0
  161. package/src/components/toolbar/popup/product/cabinetproduct.jsx +15 -0
  162. package/src/components/toolbar/popup/product/doorstyle.jsx +58 -0
  163. package/src/components/toolbar/popup/product/doorstyleproduct.jsx +47 -0
  164. package/src/components/toolbar/popup/product/floor.jsx +36 -0
  165. package/src/components/toolbar/popup/product/floorproduct.jsx +42 -0
  166. package/src/components/toolbar/popup/product/index.jsx +36 -0
  167. package/src/components/toolbar/popup/product/primary.jsx +77 -0
  168. package/src/components/toolbar/popup/product/productline.jsx +93 -0
  169. package/src/components/toolbar/popup/product/reviewItem.jsx +427 -0
  170. package/src/components/toolbar/popup/product/reviewMolding.jsx +310 -0
  171. package/src/components/toolbar/popup/product/style.css +54 -0
  172. package/src/components/toolbar/popup/product/styles.js +260 -0
  173. package/src/components/toolbar/popup/savedesign/FullPictureForm.jsx +146 -0
  174. package/src/components/toolbar/popup/savedesign/index.jsx +495 -0
  175. package/src/components/toolbar/popup/savedesign/savedesign.style.css +16 -0
  176. package/src/components/toolbar/popup/savedesign/styles.js +151 -0
  177. package/src/components/toolbar/popup/setDoorStyleOption/index.jsx +87 -0
  178. package/src/components/toolbar/popup/styles.js +909 -0
  179. package/src/components/toolbar/popup/submitforquote/AddToCartOptions.jsx +192 -0
  180. package/src/components/toolbar/popup/submitforquote/CustomerRequestsForm.jsx +96 -0
  181. package/src/components/toolbar/popup/submitforquote/SkipDesignerReview.jsx +54 -0
  182. package/src/components/toolbar/popup/submitforquote/StepDots.jsx +25 -0
  183. package/src/components/toolbar/popup/submitforquote/cart-choice.jsx +116 -0
  184. package/src/components/toolbar/popup/submitforquote/doorstyle-menus.js +38 -0
  185. package/src/components/toolbar/popup/submitforquote/index.jsx +698 -0
  186. package/src/components/toolbar/popup/submitforquote/styles.css +105 -0
  187. package/src/components/toolbar/popup/submitforquote/styles.js +294 -0
  188. package/src/components/toolbar/popup/submitprompt/index.jsx +89 -0
  189. package/src/components/toolbar/popup/submitprompt/styles.css +64 -0
  190. package/src/components/toolbar/popup/submitprompt/styles.js +42 -0
  191. package/src/components/toolbar/toolbar-button.jsx +90 -0
  192. package/src/components/toolbar/toolbar-load-button.jsx +36 -0
  193. package/src/components/toolbar/toolbar-save-button.jsx +32 -0
  194. package/src/components/tutorial-view/Modal.jsx +584 -0
  195. package/src/components/tutorial-view/style.css +111 -0
  196. package/src/components/tutorial-view/styles.js +65 -0
  197. package/src/components/wizardstep/button/styles.js +677 -0
  198. package/src/components/wizardstep/export.js +5 -0
  199. package/src/components/wizardstep/index.jsx +1372 -0
  200. package/src/components/wizardstep/styles.js +688 -0
  201. package/src/components/wizardstep/wizardstep-content-button.jsx +198 -0
  202. package/src/components/wizardstep/wizardstep-toggle-button.jsx +101 -0
  203. package/src/{_index.js → index.js} +4 -4
  204. package/src/renderer.jsx +466 -0
  205. package/src/actions/_export.js +0 -35
  206. 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
+ };