ecomlab-components-next 0.1.19 → 0.1.21

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 (30) hide show
  1. package/dist/components/Checkbox/Checkbox/Checkbox.js +82 -0
  2. package/dist/components/Checkbox/Checkbox/Checkbox.scss +136 -0
  3. package/dist/components/Checkbox/Checkbox/Checkbox.stories.js +46 -0
  4. package/dist/components/Checkbox/Checkbox/img/check.svg +3 -0
  5. package/dist/components/ConstructorComponents/FormWithBtn/FormWithBtn.js +140 -0
  6. package/dist/components/ConstructorComponents/FormWithBtn/FormWithBtn.scss +64 -0
  7. package/dist/components/ConstructorComponents/FormWithBtn/FormWithBtn.stories.js +16 -0
  8. package/dist/components/ConstructorComponents/ModalBitrixForm/ModalBitrixForm.js +423 -0
  9. package/dist/components/ConstructorComponents/ModalBitrixForm/ModalBitrixForm.scss +161 -0
  10. package/dist/components/ConstructorComponents/ModalBitrixForm/img/close_icon.svg +3 -0
  11. package/dist/components/ConstructorComponents/ModalBitrixForm/img/done_icon.svg +3 -0
  12. package/dist/components/ConstructorComponents/ModalBitrixForm/img/ozon.svg +9 -0
  13. package/dist/components/ConstructorComponents/ModalBitrixForm/img/ozon_bkg.svg +9 -0
  14. package/dist/components/Inputs/DropDownSelector/DownSelector.js +580 -0
  15. package/dist/components/Inputs/DropDownSelector/DownSelector.stories.js +279 -0
  16. package/dist/components/Inputs/DropDownSelector/DropdownSelector.scss +391 -0
  17. package/dist/components/Inputs/DropDownSelector/img/close_icon.svg +6 -0
  18. package/dist/components/Inputs/DropDownSelector/img/close_icon_disabled.svg +6 -0
  19. package/dist/components/Inputs/InputDinamycPlaceholder/InputDinamycPlaceholder.js +194 -0
  20. package/dist/components/Inputs/InputDinamycPlaceholder/InputDinamycPlaceholder.scss +497 -0
  21. package/dist/components/Inputs/InputDinamycPlaceholder/InputDinamycPlaceholder.stories.js +50 -0
  22. package/dist/components/Inputs/InputDinamycPlaceholder/img/close_grey.svg +5 -0
  23. package/dist/components/Inputs/InputDinamycPlaceholder/img/close_red.svg +5 -0
  24. package/dist/components/Inputs/InputDinamycPlaceholder/img/hide.svg +12 -0
  25. package/dist/components/Inputs/InputDinamycPlaceholder/img/info_tooltip.svg +12 -0
  26. package/dist/components/Inputs/InputDinamycPlaceholder/img/show.svg +3 -0
  27. package/dist/components/Inputs/TextareaDynamicPlaceholder/TextareaDynamicPlaceholder.js +95 -0
  28. package/dist/components/Inputs/TextareaDynamicPlaceholder/TextareaDynamicPlaceholder.scss +121 -0
  29. package/dist/index.js +7 -0
  30. package/package.json +8 -4
@@ -0,0 +1,423 @@
1
+ "use strict";
2
+ 'use client';
3
+
4
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _done_icon = _interopRequireDefault(require("./img/done_icon.svg"));
11
+ var _close_icon = _interopRequireDefault(require("./img/close_icon.svg"));
12
+ var _DownSelector = _interopRequireDefault(require("../../Inputs/DropDownSelector/DownSelector"));
13
+ var _InputDinamycPlaceholder = _interopRequireDefault(require("../../Inputs/InputDinamycPlaceholder/InputDinamycPlaceholder"));
14
+ var _TextareaDynamicPlaceholder = _interopRequireDefault(require("../../Inputs/TextareaDynamicPlaceholder/TextareaDynamicPlaceholder"));
15
+ var _ButtonBasic = _interopRequireDefault(require("../../Buttons/ButtonBasic/ButtonBasic"));
16
+ var _utils = require("../../../common/utils");
17
+ require("./ModalBitrixForm.scss");
18
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
19
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
20
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
21
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
22
+ function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
23
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
24
+ function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
25
+ function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
26
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
27
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
28
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
29
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
30
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
31
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
32
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
33
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
34
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
35
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
36
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
37
+ var communication_method = [{
38
+ label: 'Звонок'
39
+ }, {
40
+ label: 'Telegram'
41
+ }, {
42
+ label: 'WhatsApp'
43
+ }];
44
+ var ModalBitrixForm = function ModalBitrixForm(_ref) {
45
+ var setIsModal = _ref.setIsModal,
46
+ inputArr = _ref.inputArr,
47
+ formTitle = _ref.formTitle,
48
+ subTitle = _ref.subTitle,
49
+ bitrixToken = _ref.bitrixToken,
50
+ _ref$modal = _ref.modal,
51
+ modal = _ref$modal === void 0 ? true : _ref$modal,
52
+ _ref$colorBtn = _ref.colorBtn,
53
+ colorBtn = _ref$colorBtn === void 0 ? 'green' : _ref$colorBtn,
54
+ _ref$btnName = _ref.btnName,
55
+ btnName = _ref$btnName === void 0 ? false : _ref$btnName,
56
+ _ref$communicationMet = _ref.communicationMethod,
57
+ communicationMethod = _ref$communicationMet === void 0 ? false : _ref$communicationMet;
58
+ var _useState = (0, _react.useState)({}),
59
+ _useState2 = _slicedToArray(_useState, 2),
60
+ inputValue = _useState2[0],
61
+ setInputValue = _useState2[1];
62
+ var _useState3 = (0, _react.useState)([]),
63
+ _useState4 = _slicedToArray(_useState3, 2),
64
+ selectedValue = _useState4[0],
65
+ setSelectedValue = _useState4[1];
66
+ var _useState5 = (0, _react.useState)({}),
67
+ _useState6 = _slicedToArray(_useState5, 2),
68
+ err = _useState6[0],
69
+ setErr = _useState6[1];
70
+ var _useState7 = (0, _react.useState)([]),
71
+ _useState8 = _slicedToArray(_useState7, 2),
72
+ inputs = _useState8[0],
73
+ setInputs = _useState8[1];
74
+ var _useState9 = (0, _react.useState)(false),
75
+ _useState10 = _slicedToArray(_useState9, 2),
76
+ successfulResponse = _useState10[0],
77
+ setsuccessfulResponse = _useState10[1];
78
+ var _useState11 = (0, _react.useState)(false),
79
+ _useState12 = _slicedToArray(_useState11, 2),
80
+ isSubmitting = _useState12[0],
81
+ setIsSunmitting = _useState12[1];
82
+ var _useState13 = (0, _react.useState)(false),
83
+ _useState14 = _slicedToArray(_useState13, 2),
84
+ isFormValid = _useState14[0],
85
+ setIsFormValid = _useState14[1];
86
+ var _useState15 = (0, _react.useState)('Звонок'),
87
+ _useState16 = _slicedToArray(_useState15, 2),
88
+ currentCommunication = _useState16[0],
89
+ setCurrentCommunication = _useState16[1];
90
+ var _useState17 = (0, _react.useState)(false),
91
+ _useState18 = _slicedToArray(_useState17, 2),
92
+ allFieldsValid = _useState18[0],
93
+ setAllFieldsValid = _useState18[1];
94
+ var formInputs = inputs.filter(function (el) {
95
+ return el !== undefined;
96
+ });
97
+ var requiredKeys = formInputs.filter(function (el) {
98
+ return el.props.required;
99
+ }).map(function (el) {
100
+ return el.key;
101
+ });
102
+ if (typeof localStorage !== 'undefined') {
103
+ localStorage.setItem('required-keys', JSON.stringify(requiredKeys));
104
+ }
105
+ var fetchTest = function fetchTest() {
106
+ var _Object$entries;
107
+ setIsSunmitting(true);
108
+ var queries = (_Object$entries = Object.entries(inputValue)) === null || _Object$entries === void 0 || (_Object$entries = _Object$entries.map(function (_ref2) {
109
+ var _ref3 = _slicedToArray(_ref2, 2),
110
+ key = _ref3[0],
111
+ value = _ref3[1];
112
+ if (key == 'FIELDS[TITLE]') {
113
+ return "".concat(key, "=").concat(value + ' // ' + inputValue['FIELDS[NAME]']);
114
+ }
115
+ if (key == 'FIELDS[COMMENTS]') {
116
+ return selectedValue !== null && selectedValue !== void 0 && selectedValue.label ? "".concat(key, "=\u0422\u0438\u043F \u043F\u0430\u0440\u0442\u043D\u0435\u0440\u0430: ").concat(selectedValue === null || selectedValue === void 0 ? void 0 : selectedValue.label, " // ").concat(value) : "".concat(key, "=").concat(value);
117
+ } else return "".concat(key, "=").concat(value);
118
+ })) === null || _Object$entries === void 0 ? void 0 : _Object$entries.join('&');
119
+ var testUrl = "https://ecs.bitrix24.ru/rest/1/".concat(bitrixToken, "/crm.lead.add.json?").concat(queries);
120
+ fetch(testUrl).then(function (res) {
121
+ return res.json();
122
+ }).then(function (json) {
123
+ if (json !== null && json !== void 0 && json.result) {
124
+ setsuccessfulResponse(true);
125
+ }
126
+ })["catch"](function (err) {
127
+ console.error(err);
128
+ setIsSunmitting(false);
129
+ });
130
+ };
131
+ var handleChange = function handleChange(e, id) {
132
+ setInputValue(function (prev) {
133
+ return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, id, e === null || e === void 0 ? void 0 : e.value));
134
+ });
135
+ setSelectedValue(e);
136
+ };
137
+ var validateField = function validateField(id, inputType, value) {
138
+ var error = {};
139
+ var isValid = true;
140
+ if (inputType === 'email') {
141
+ if (!(0, _utils.validationEmail)(value)) {
142
+ error[id] = 'Неверный email';
143
+ isValid = false;
144
+ }
145
+ } else if (inputType === 'tel') {
146
+ var regex = /^\+7 \(\d{3}\) \d{3}-\d{2}-\d{2}$/;
147
+ if (!regex.test(value)) {
148
+ error[id] = 'Неверный телефон';
149
+ isValid = false;
150
+ }
151
+ } else if (inputType === 'dropdown') {
152
+ if (!(selectedValue !== null && selectedValue !== void 0 && selectedValue.label)) {
153
+ error[id] = 'Выберите значение';
154
+ isValid = false;
155
+ }
156
+ } else if (inputType === 'text') {
157
+ if (value.length < 1) {
158
+ error[id] = 'Поле не заполнено';
159
+ isValid = false;
160
+ }
161
+ } else if (inputType === 'name') {
162
+ var _name$split;
163
+ var name = value;
164
+ if (name.length <= 2) {
165
+ error[id] = 'Минимальная длина 3 символов';
166
+ isValid = false;
167
+ }
168
+ if (name.length > 100) {
169
+ error[id] = 'Максимальная длина 100 символов';
170
+ isValid = false;
171
+ }
172
+ if (((_name$split = name.split(' ')) === null || _name$split === void 0 ? void 0 : _name$split.length) > 3) {
173
+ error[id] = 'Максимальное количество пробелов 3';
174
+ isValid = false;
175
+ }
176
+ var nameRegex = /^[a-zA-Zа-яА-ЯёЁ]+([ '-][a-zA-Zа-яА-ЯёЁ]+)*$/;
177
+ if (!nameRegex.test(name)) {
178
+ error[id] = 'Имя может состоять только из букв';
179
+ isValid = false;
180
+ }
181
+ } else if (inputType === 'description') {
182
+ if (value.length > 1000) {
183
+ error[id] = 'Максимальная длина 1000 символов';
184
+ isValid = false;
185
+ }
186
+ }
187
+ setErr(function (prev) {
188
+ var newErrors = _objectSpread(_objectSpread({}, prev), error);
189
+ if (!error[id]) {
190
+ delete newErrors[id];
191
+ }
192
+ return newErrors;
193
+ });
194
+ var storedStatus;
195
+ if (typeof localStorage !== 'undefined') {
196
+ storedStatus = localStorage.getItem('form-validation-status');
197
+ }
198
+ var validationStatus = storedStatus ? JSON.parse(storedStatus) : {};
199
+ validationStatus[id] = isValid;
200
+ if (typeof localStorage !== 'undefined') {
201
+ localStorage.setItem('form-validation-status', JSON.stringify(validationStatus));
202
+ }
203
+ var storedRequiredKeys;
204
+ if (typeof localStorage !== 'undefined') {
205
+ storedRequiredKeys = localStorage.getItem('required-keys');
206
+ }
207
+ var requiredKeys = storedRequiredKeys ? JSON.parse(storedRequiredKeys) : [];
208
+ var allRequiredValid = requiredKeys.every(function (key) {
209
+ return validationStatus[key] === true;
210
+ });
211
+ setIsFormValid(allRequiredValid);
212
+ };
213
+ (0, _react.useEffect)(function () {
214
+ if (typeof localStorage !== 'undefined') {
215
+ localStorage.removeItem('form-validation-status');
216
+ return function () {
217
+ localStorage.removeItem('form-validation-status');
218
+ };
219
+ }
220
+ }, []);
221
+ var handleBlur = function handleBlur(id, inputType, value) {
222
+ validateField(id, inputType, value);
223
+ };
224
+ var validateFieldWithoutErrors = function validateFieldWithoutErrors(id, inputType, value) {
225
+ var isValid = true;
226
+ if (inputType === 'email') {
227
+ if (!(0, _utils.validationEmail)(value)) {
228
+ isValid = false;
229
+ }
230
+ } else if (inputType === 'tel') {
231
+ var regex = /^\+7 \(\d{3}\) \d{3}-\d{2}-\d{2}$/;
232
+ if (!regex.test(value)) {
233
+ isValid = false;
234
+ }
235
+ } else if (inputType === 'dropdown') {
236
+ if (!(selectedValue !== null && selectedValue !== void 0 && selectedValue.label)) {
237
+ isValid = false;
238
+ }
239
+ } else if (inputType === 'text') {
240
+ if ((value === null || value === void 0 ? void 0 : value.length) < 1) {
241
+ isValid = false;
242
+ }
243
+ } else if (inputType === 'name') {
244
+ var _name$split2;
245
+ var name = value;
246
+ if ((name === null || name === void 0 ? void 0 : name.length) <= 2 || (name === null || name === void 0 ? void 0 : name.length) > 100 || (name === null || name === void 0 || (_name$split2 = name.split(' ')) === null || _name$split2 === void 0 ? void 0 : _name$split2.length) > 3) {
247
+ isValid = false;
248
+ }
249
+ var nameRegex = /^[a-zA-Zа-яА-ЯёЁ]+([ '-][a-zA-Zа-яА-ЯёЁ]+)*$/;
250
+ if (!nameRegex.test(name)) {
251
+ isValid = false;
252
+ }
253
+ } else if (inputType === 'description') {
254
+ if ((value === null || value === void 0 ? void 0 : value.length) > 1000) {
255
+ isValid = false;
256
+ }
257
+ }
258
+ setInputValue(function (prevInputValue) {
259
+ if (prevInputValue[id] !== value) {
260
+ return _objectSpread(_objectSpread({}, prevInputValue), {}, _defineProperty({}, id, value));
261
+ }
262
+ return prevInputValue;
263
+ });
264
+ return isValid;
265
+ };
266
+ (0, _react.useEffect)(function () {
267
+ var allRequiredValid = inputArr.filter(function (field) {
268
+ return field.required;
269
+ }).every(function (_ref4) {
270
+ var id = _ref4.id,
271
+ inputType = _ref4.inputType;
272
+ return validateFieldWithoutErrors(id, inputType, inputValue[id]);
273
+ });
274
+ setAllFieldsValid(allRequiredValid);
275
+ }, [inputValue, selectedValue, inputArr]);
276
+ (0, _react.useEffect)(function () {
277
+ setInputs(_toConsumableArray(inputArr === null || inputArr === void 0 ? void 0 : inputArr.map(function (_ref5, ind) {
278
+ var id = _ref5.id,
279
+ placeholder = _ref5.placeholder,
280
+ hidden = _ref5.hidden,
281
+ value = _ref5.value,
282
+ inputType = _ref5.inputType,
283
+ options_prop = _ref5.options_prop,
284
+ type = _ref5.type,
285
+ required = _ref5.required;
286
+ if (hidden) {
287
+ setInputValue(function (prev) {
288
+ return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, id, value));
289
+ });
290
+ return;
291
+ }
292
+ if (type == 'textarea') {
293
+ return /*#__PURE__*/_react["default"].createElement(_TextareaDynamicPlaceholder["default"], {
294
+ key: id,
295
+ width: "100%",
296
+ changeValue: inputValue === null || inputValue === void 0 ? void 0 : inputValue[id],
297
+ onChange: function onChange(e) {
298
+ return setInputValue(function (prev) {
299
+ return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, id, e));
300
+ });
301
+ },
302
+ required: required,
303
+ placeholder: placeholder
304
+ });
305
+ }
306
+ if (type == 'dropdown') {
307
+ return /*#__PURE__*/_react["default"].createElement(_DownSelector["default"], {
308
+ key: id,
309
+ options_prop: options_prop,
310
+ type: inputType,
311
+ state: selectedValue,
312
+ setState: function setState(e) {
313
+ handleChange(e, id);
314
+ },
315
+ err: err === null || err === void 0 ? void 0 : err[id],
316
+ required: required,
317
+ placeholder: placeholder,
318
+ size: "l",
319
+ width: "100%",
320
+ onBlur: function onBlur(value) {
321
+ return handleBlur(id, inputType, value);
322
+ }
323
+ });
324
+ }
325
+ if (type == 'input') {
326
+ return /*#__PURE__*/_react["default"].createElement(_InputDinamycPlaceholder["default"], {
327
+ key: id,
328
+ type: inputType ? inputType : 'text',
329
+ placeholder: placeholder,
330
+ changeValue: inputValue === null || inputValue === void 0 ? void 0 : inputValue[id],
331
+ onChange: function onChange(e) {
332
+ return setInputValue(function (prev) {
333
+ return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, id, e));
334
+ });
335
+ },
336
+ autoComplete: false,
337
+ err: err === null || err === void 0 ? void 0 : err[id],
338
+ required: required,
339
+ textErr: err === null || err === void 0 ? void 0 : err[id],
340
+ onBlur: function onBlur(value) {
341
+ return handleBlur(id, inputType, value);
342
+ },
343
+ mask: inputType === 'tel' ? '+{7} (000) 000-00-00' : ''
344
+ });
345
+ }
346
+ })));
347
+ }, [inputArr, err, selectedValue]);
348
+ return /*#__PURE__*/_react["default"].createElement("div", {
349
+ className: modal ? 'blackout' : '',
350
+ style: {
351
+ maxWidth: !modal ? '560px' : '',
352
+ width: !modal ? '100%' : ''
353
+ },
354
+ onClick: function onClick(e) {
355
+ if (modal) {
356
+ var el = e.target;
357
+ if (el.classList.contains('blackout')) {
358
+ setIsModal(false);
359
+ }
360
+ }
361
+ }
362
+ }, /*#__PURE__*/_react["default"].createElement("div", {
363
+ className: "modal-bitrix-form",
364
+ style: {
365
+ zIndex: !modal ? 'inherit' : '',
366
+ boxShadow: !modal ? 'none' : ''
367
+ }
368
+ }, successfulResponse && /*#__PURE__*/_react["default"].createElement("div", {
369
+ className: "modal-bitrix-form__successful"
370
+ }, /*#__PURE__*/_react["default"].createElement("img", _extends({
371
+ className: "modal-bitrix-form__icon-done",
372
+ alt: "icon"
373
+ }, _done_icon["default"])), /*#__PURE__*/_react["default"].createElement("p", {
374
+ className: "modal-bitrix-form__text-green"
375
+ }, "\u0417\u0430\u044F\u0432\u043A\u0443 \u043F\u0440\u0438\u043D\u044F\u043B\u0438!"), /*#__PURE__*/_react["default"].createElement("p", {
376
+ className: "modal-bitrix-form__text"
377
+ }, "\u0412 \u0431\u043B\u0438\u0436\u0430\u0439\u0448\u0435\u0435 \u0432\u0440\u0435\u043C\u044F \u0441\u0432\u044F\u0436\u0435\u043C\u0441\u044F \u0441 \u0432\u0430\u043C\u0438!")), /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, (formTitle || subTitle) && /*#__PURE__*/_react["default"].createElement("header", {
378
+ className: "modal-bitrix-form__header"
379
+ }, /*#__PURE__*/_react["default"].createElement("h1", {
380
+ className: "modal-bitrix-form__title"
381
+ }, formTitle), /*#__PURE__*/_react["default"].createElement("p", {
382
+ className: "modal-bitrix-form__description"
383
+ }, subTitle), communicationMethod && /*#__PURE__*/_react["default"].createElement("div", {
384
+ className: "modal-bitrix-form__radio-group"
385
+ }, communication_method.map(function (_ref6) {
386
+ var label = _ref6.label;
387
+ return /*#__PURE__*/_react["default"].createElement("div", {
388
+ className: "modal-bitrix-form__radio-item",
389
+ key: label
390
+ }, /*#__PURE__*/_react["default"].createElement("input", {
391
+ id: "header",
392
+ checked: currentCommunication == label,
393
+ onChange: function onChange(e) {
394
+ return setCurrentCommunication(label);
395
+ },
396
+ className: "radio",
397
+ type: "radio",
398
+ radioGroup: "communication"
399
+ }), /*#__PURE__*/_react["default"].createElement("label", {
400
+ htmlFor: "header",
401
+ className: "modal-bitrix-form__radio-label"
402
+ }, label));
403
+ })), modal && /*#__PURE__*/_react["default"].createElement("button", {
404
+ className: "modal-bitrix-form__btn-close",
405
+ onClick: function onClick(e) {
406
+ return setIsModal(false);
407
+ }
408
+ }, /*#__PURE__*/_react["default"].createElement("img", _close_icon["default"]))), /*#__PURE__*/_react["default"].createElement("div", {
409
+ className: "modal-bitrix-form__content"
410
+ }, inputs), /*#__PURE__*/_react["default"].createElement(_ButtonBasic["default"], {
411
+ text: btnName ? btnName : 'Отправить',
412
+ disabled: !allFieldsValid,
413
+ green: colorBtn == 'green',
414
+ darkViolet: colorBtn == 'darkViolet',
415
+ size: "56px",
416
+ width: "100%",
417
+ maxWidth: "100%",
418
+ onClick: function onClick(e) {
419
+ fetchTest();
420
+ }
421
+ }))));
422
+ };
423
+ var _default = exports["default"] = ModalBitrixForm;
@@ -0,0 +1,161 @@
1
+ .modal-bitrix-form {
2
+ display: flex;
3
+ flex-direction: column;
4
+ align-items: start;
5
+ gap: 32px;
6
+ position: relative;
7
+ z-index: 1000;
8
+ display: flex;
9
+ max-width: 560px;
10
+ width: 100%;
11
+ min-width: 340px;
12
+ margin-left: auto;
13
+ margin-right: auto;
14
+ flex-direction: column;
15
+ border-radius: 8px;
16
+ background: #FFF;
17
+ padding: 24px;
18
+ max-height: calc(100vh - 40px);
19
+ box-shadow: 0px 12px 32px 0px rgba(0, 0, 0, 0.12);
20
+
21
+ &__header {
22
+ display: flex;
23
+ flex-direction: column;
24
+ width: calc(100% - 24px - 16px);
25
+ gap: 12px;
26
+ }
27
+
28
+ &__title {
29
+ color: #333;
30
+ font-family: Inter;
31
+ font-size: 28px;
32
+ font-style: normal;
33
+ font-weight: 600;
34
+ line-height: 32px;
35
+ }
36
+
37
+ &__description {
38
+ color: #333;
39
+ font-family: Inter;
40
+ font-size: 16px;
41
+ font-style: normal;
42
+ font-weight: 400;
43
+ line-height: 24px;
44
+ }
45
+
46
+ &__content {
47
+ display: flex;
48
+ flex-direction: column;
49
+ gap: 28px;
50
+ width: 100%;
51
+ height: auto;
52
+ overflow-y: auto;
53
+ overflow-x: hidden;
54
+ padding-top: 10px;
55
+
56
+ &::-webkit-scrollbar {
57
+ display: none;
58
+ }
59
+ }
60
+
61
+ &__btn-close {
62
+ position: absolute;
63
+ top: 24px;
64
+ right: 24px;
65
+ background-color: inherit;
66
+ border: none;
67
+ cursor: pointer;
68
+ z-index: 11;
69
+ }
70
+
71
+ &__successful {
72
+ display: flex;
73
+ flex-direction: column;
74
+ width: 100%;
75
+ gap: 12px;
76
+ justify-content: center;
77
+ align-items: center;
78
+ margin-left: auto;
79
+ margin-right: auto;
80
+ position: absolute;
81
+ top: 0;
82
+ left: 0;
83
+ bottom: 0;
84
+ right: 0;
85
+ z-index: 10;
86
+ background-color: #fff;
87
+ border-radius: 8px;
88
+ }
89
+
90
+ &__icon-done {
91
+ max-width: 135px;
92
+ width: 100%;
93
+ height: auto;
94
+ }
95
+
96
+ &__text-green {
97
+ color: #00B45E;
98
+ text-align: center;
99
+ font-family: Inter;
100
+ font-size: 28px;
101
+ font-style: normal;
102
+ font-weight: 600;
103
+ line-height: 32px;
104
+ text-align: center;
105
+ }
106
+
107
+ &__text {
108
+ color: #333;
109
+ font-family: Inter;
110
+ font-size: 20px;
111
+ font-style: normal;
112
+ font-weight: 400;
113
+ line-height: 24px;
114
+ text-align: center;
115
+ }
116
+
117
+ &__radio-group {
118
+ display: flex;
119
+ gap: 40px;
120
+ align-items: center;
121
+ }
122
+
123
+ &__radio-item {
124
+ display: flex;
125
+ gap: 8px;
126
+ align-items: center;
127
+ }
128
+
129
+ &__radio-label {
130
+ color: #333;
131
+ font-family: "Golos Text";
132
+ font-size: 18px;
133
+ font-style: normal;
134
+ font-weight: 400;
135
+ line-height: 24px;
136
+ }
137
+
138
+ .selector_wrapper {
139
+ max-width: 100%;
140
+ }
141
+ }
142
+
143
+ @media (max-width: 430px) {
144
+ .modal-bitrix-form {
145
+ gap: 14px;
146
+
147
+ &__title {
148
+ font-size: 19px;
149
+ line-height: 32px;
150
+ }
151
+
152
+ &__header {
153
+ gap: 8px;
154
+ }
155
+
156
+ &__text {
157
+ font-size: 14px;
158
+ line-height: 24px;
159
+ }
160
+ }
161
+ }
@@ -0,0 +1,3 @@
1
+ <svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M11.8906 0.398438L6.94046 5.34744L1.99146 0.398438L0.341797 2.0481L5.2908 6.9971L0.341797 11.9461L1.99146 13.5958L6.94046 8.64677L11.8906 13.5958L13.5403 11.9461L8.5913 6.9971L13.5403 2.0481L11.8906 0.398438Z" fill="#333333"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="135" height="135" viewBox="0 0 135 135" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path opacity="0.996" fill-rule="evenodd" clip-rule="evenodd" d="M61.3037 -0.132812C65.3466 -0.132812 69.3897 -0.132812 73.4326 -0.132812C97.0692 2.73802 114.867 14.4275 126.826 34.9355C131.228 43.2336 133.909 52.0225 134.868 61.3027C134.868 65.3456 134.868 69.3888 134.868 73.4316C131.997 97.0682 120.308 114.866 99.7998 126.825C91.5018 131.227 82.7128 133.908 73.4326 134.867C69.3897 134.867 65.3466 134.867 61.3037 134.867C37.6671 131.996 19.8693 120.307 7.91016 99.7988C3.50823 91.5008 0.827561 82.7118 -0.131836 73.4316C-0.131836 69.3888 -0.131836 65.3456 -0.131836 61.3027C2.73889 37.6664 14.4283 19.8686 34.9365 7.90918C43.2345 3.50726 52.0235 0.826584 61.3037 -0.132812ZM100.327 37.8359C101.358 37.7734 102.325 37.9931 103.228 38.4951C104.941 40.209 106.655 41.9229 108.369 43.6367C108.777 44.3502 109.085 45.0975 109.292 45.8779C109.085 46.6584 108.777 47.4056 108.369 48.1191C92.3292 64.1591 76.289 80.1993 60.249 96.2393C58.8429 97.1181 57.4364 97.1181 56.0303 96.2393C45.8715 86.1686 35.808 76.0172 25.8398 65.7852C25.3836 64.7194 25.4715 63.6647 26.1035 62.6211C27.9933 60.7314 29.8827 58.8419 31.7725 56.9521C32.8066 56.3386 33.8613 56.2508 34.9365 56.6885C42.5756 64.0639 50.1343 71.5345 57.6123 79.1006C57.876 79.2765 58.1396 79.2765 58.4033 79.1006C71.8506 65.6533 85.2979 52.2061 98.7451 38.7588C99.2545 38.3741 99.7819 38.0667 100.327 37.8359Z" fill="#00B45E"/>
3
+ </svg>