ecomlab-components-next 0.1.18 → 0.1.20

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 (35) hide show
  1. package/dist/common/fetchUrls.js +71 -0
  2. package/dist/common/headers.js +16 -0
  3. package/dist/common/highlightWord .js +30 -0
  4. package/dist/common/utils.js +231 -0
  5. package/dist/components/ArticleElements/ShortTileArticleBox/ShortTileArticleBox.js +2 -2
  6. package/dist/components/Checkbox/Checkbox/Checkbox.js +82 -0
  7. package/dist/components/Checkbox/Checkbox/Checkbox.scss +136 -0
  8. package/dist/components/Checkbox/Checkbox/Checkbox.stories.js +46 -0
  9. package/dist/components/Checkbox/Checkbox/img/check.svg +3 -0
  10. package/dist/components/ConstructorComponents/ArticlesBlock/ArticlesBlock.js +1 -1
  11. package/dist/components/ConstructorComponents/FormWithBtn/FormWithBtn.js +140 -0
  12. package/dist/components/ConstructorComponents/FormWithBtn/FormWithBtn.scss +64 -0
  13. package/dist/components/ConstructorComponents/FormWithBtn/FormWithBtn.stories.js +16 -0
  14. package/dist/components/ConstructorComponents/ModalBitrixForm/ModalBitrixForm.js +423 -0
  15. package/dist/components/ConstructorComponents/ModalBitrixForm/ModalBitrixForm.scss +161 -0
  16. package/dist/components/ConstructorComponents/ModalBitrixForm/img/close_icon.svg +3 -0
  17. package/dist/components/ConstructorComponents/ModalBitrixForm/img/done_icon.svg +3 -0
  18. package/dist/components/ConstructorComponents/ModalBitrixForm/img/ozon.svg +9 -0
  19. package/dist/components/ConstructorComponents/ModalBitrixForm/img/ozon_bkg.svg +9 -0
  20. package/dist/components/Inputs/DropDownSelector/DownSelector.js +580 -0
  21. package/dist/components/Inputs/DropDownSelector/DownSelector.stories.js +279 -0
  22. package/dist/components/Inputs/DropDownSelector/DropdownSelector.scss +391 -0
  23. package/dist/components/Inputs/DropDownSelector/img/close_icon.svg +6 -0
  24. package/dist/components/Inputs/DropDownSelector/img/close_icon_disabled.svg +6 -0
  25. package/dist/components/Inputs/InputDinamycPlaceholder/InputDinamycPlaceholder.js +194 -0
  26. package/dist/components/Inputs/InputDinamycPlaceholder/InputDinamycPlaceholder.scss +497 -0
  27. package/dist/components/Inputs/InputDinamycPlaceholder/InputDinamycPlaceholder.stories.js +50 -0
  28. package/dist/components/Inputs/InputDinamycPlaceholder/img/close_grey.svg +5 -0
  29. package/dist/components/Inputs/InputDinamycPlaceholder/img/close_red.svg +5 -0
  30. package/dist/components/Inputs/InputDinamycPlaceholder/img/hide.svg +12 -0
  31. package/dist/components/Inputs/InputDinamycPlaceholder/img/info_tooltip.svg +12 -0
  32. package/dist/components/Inputs/InputDinamycPlaceholder/img/show.svg +3 -0
  33. package/dist/components/Inputs/TextareaDynamicPlaceholder/TextareaDynamicPlaceholder.js +95 -0
  34. package/dist/components/Inputs/TextareaDynamicPlaceholder/TextareaDynamicPlaceholder.scss +121 -0
  35. package/package.json +8 -4
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.getArticleBoxData = exports["default"] = void 0;
9
9
  var _image = _interopRequireDefault(require("next/image"));
10
10
  var _react = _interopRequireWildcard(require("react"));
11
- var _utils = require("../../../../common/utils");
11
+ var _utils = require("../../../common/utils");
12
12
  var _ArticlesBlockModule = _interopRequireDefault(require("./ArticlesBlock.module.scss"));
13
13
  var _ShortTileArticleBox = _interopRequireDefault(require("../../ArticleElements/ShortTileArticleBox/ShortTileArticleBox"));
14
14
  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); }
@@ -0,0 +1,140 @@
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 _ButtonBasic = _interopRequireDefault(require("../../Buttons/ButtonBasic/ButtonBasic"));
11
+ var _ModalBitrixForm = _interopRequireDefault(require("../ModalBitrixForm/ModalBitrixForm"));
12
+ require("./FormWithBtn.scss");
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
14
+ 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); }
15
+ 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; }
16
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
17
+ 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."); }
18
+ 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; } }
19
+ 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; }
20
+ 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; } }
21
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
22
+ var formStubBitrixToken = 'hxdxe0cpclw65c0j';
23
+ var formStubData = [{
24
+ id: 'FIELDS[TITLE]',
25
+ placeholder: 'Название лида',
26
+ hidden: true,
27
+ value: 'Лид клиент ',
28
+ inputType: 'text',
29
+ type: 'input'
30
+ }, {
31
+ id: 'FIELDS[NAME]',
32
+ placeholder: 'Имя',
33
+ inputType: 'name',
34
+ type: 'input',
35
+ required: true
36
+ }, {
37
+ id: 'FIELDS[EMAIL][0][VALUE]',
38
+ placeholder: 'Email',
39
+ inputType: 'email',
40
+ type: 'input',
41
+ required: true
42
+ }, {
43
+ id: 'FIELDS[PHONE][0][VALUE]',
44
+ placeholder: 'Номер телефона',
45
+ inputType: 'tel',
46
+ type: 'input',
47
+ required: true
48
+ }, {
49
+ id: 'FIELDS[COMMENTS]',
50
+ placeholder: 'Комментарии',
51
+ inputType: 'description',
52
+ type: 'description'
53
+ }, {
54
+ id: 'FIELDS[SOURCE_ID]',
55
+ placeholder: 'выбирается из справочника источников в CRM',
56
+ hidden: true,
57
+ value: 4,
58
+ type: 'input'
59
+ }, {
60
+ id: 'FIELDS[SOURCE_DESCRIPTION]',
61
+ placeholder: 'URL страницы',
62
+ value: 'https://new.ecomru.ru',
63
+ hidden: true,
64
+ type: 'input'
65
+ }, {
66
+ id: 'FIELDS[ASSIGNED_BY_ID]',
67
+ placeholder: 'ФИО ответственного',
68
+ value: 11,
69
+ hidden: true,
70
+ type: 'input'
71
+ }, {
72
+ id: 'FIELDS[UTM_CAMPAIGN]',
73
+ placeholder: 'Обозначение рекламной кампании',
74
+ value: '',
75
+ hidden: true,
76
+ type: 'input'
77
+ }, {
78
+ id: 'FIELDS[UTM_CONTENT]',
79
+ placeholder: 'Содержание кампании',
80
+ value: '',
81
+ hidden: true,
82
+ type: 'input'
83
+ }, {
84
+ id: 'FIELDS[UTM_MEDIUM]',
85
+ placeholder: 'Тип трафика',
86
+ value: '',
87
+ hidden: true,
88
+ type: 'input'
89
+ }, {
90
+ id: 'FIELDS[UTM_SOURCE]',
91
+ placeholder: 'Рекламная система',
92
+ value: '',
93
+ hidden: true,
94
+ type: 'input'
95
+ }, {
96
+ id: 'FIELDS[UTM_TERM]',
97
+ placeholder: 'Условие поиска кампании',
98
+ value: '',
99
+ hidden: true,
100
+ type: 'input'
101
+ }];
102
+ var FormWithBtn = function FormWithBtn(_ref) {
103
+ var title = _ref.title,
104
+ description = _ref.description;
105
+ var _useState = (0, _react.useState)(false),
106
+ _useState2 = _slicedToArray(_useState, 2),
107
+ isModal = _useState2[0],
108
+ _setIsModal = _useState2[1];
109
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, isModal && /*#__PURE__*/_react["default"].createElement(_ModalBitrixForm["default"]
110
+ // modal={false}
111
+ , {
112
+ inputArr: formStubData,
113
+ bitrixToken: formStubBitrixToken,
114
+ setIsModal: function setIsModal(e) {
115
+ return _setIsModal(e);
116
+ },
117
+ formTitle: 'Желаемый способ связи',
118
+ communicationMethod: true
119
+ }), /*#__PURE__*/_react["default"].createElement("section", {
120
+ className: "form-with-btn"
121
+ }, title && /*#__PURE__*/_react["default"].createElement("h2", {
122
+ className: "form-with-btn__title"
123
+ }, "\u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439 \u0431\u0435\u0441\u043F\u043B\u0430\u0442\u043D\u043E\xA0"), description && /*#__PURE__*/_react["default"].createElement("p", {
124
+ className: "form-with-btn__description"
125
+ }, "\u0417\u0430\u043F\u0438\u0448\u0438\u0441\u044C \u043D\u0430 \u043A\u043E\u043D\u0441\u0443\u043B\u044C\u0442\u0430\u0446\u0438\u044E \u0441 \u043D\u0430\u0448\u0438\u043C \u0441\u043F\u0435\u0446\u0438\u0430\u043B\u0438\u0441\u0442\u043E\u043C, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u0431\u0435\u0441\u043F\u043B\u0430\u0442\u043D\u044B\u0439 \u0434\u043E\u0441\u0442\u0443\u043F \u043A \u043F\u043B\u0430\u0442\u0444\u043E\u0440\u043C\u0435 \u043D\u0430 \u043C\u0435\u0441\u044F\u0446"), /*#__PURE__*/_react["default"].createElement(_ButtonBasic["default"], {
126
+ green: true,
127
+ text: "\u041F\u043E\u043F\u0440\u043E\u0431\u043E\u0432\u0430\u0442\u044C \u0431\u0435\u0441\u043F\u043B\u0430\u0442\u043D\u043E",
128
+ maxWidth: '472px',
129
+ width: '100%',
130
+ size: '54px',
131
+ style: {
132
+ fontSize: '20px',
133
+ marginTop: '12px'
134
+ },
135
+ onClick: function onClick(e) {
136
+ _setIsModal(true);
137
+ }
138
+ })));
139
+ };
140
+ var _default = exports["default"] = FormWithBtn;
@@ -0,0 +1,64 @@
1
+ .form-with-btn {
2
+ display: flex;
3
+ padding: 32px;
4
+ flex-direction: column;
5
+ justify-content: center;
6
+ align-items: center;
7
+ gap: 20px;
8
+ align-self: stretch;
9
+ border-radius: 20px;
10
+ background: #EEE;
11
+
12
+ &__title {
13
+ text-align: center;
14
+ color: #333;
15
+ font-family: "Golos Text";
16
+ font-size: 42px;
17
+ font-style: normal;
18
+ font-weight: 600;
19
+ line-height: 50px
20
+ }
21
+
22
+ &__description {
23
+ color: #333;
24
+ text-align: center;
25
+ font-family: "Golos Text";
26
+ font-size: 24px;
27
+ font-style: normal;
28
+ font-weight: 400;
29
+ line-height: 32px;
30
+ max-width: 840px;
31
+ }
32
+ }
33
+
34
+ @media (max-width: 1100px) {
35
+ .form-with-btn {
36
+
37
+ &__title {
38
+ font-size: 28px;
39
+ line-height: 32px
40
+ }
41
+
42
+ &__description {
43
+ font-size: 20px;
44
+ line-height: 30px
45
+ }
46
+ }
47
+ }
48
+
49
+ @media (max-width: 430px) {
50
+ .form-with-btn {
51
+ padding: 20px;
52
+ gap: 16px;
53
+
54
+ &__title {
55
+ font-size: 20px;
56
+ line-height: 24px;
57
+ }
58
+
59
+ &__description {
60
+ font-size: 14px;
61
+ line-height: 20px;
62
+ }
63
+ }
64
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = exports.FormWithBtnTest = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _FormWithBtn = _interopRequireDefault(require("./FormWithBtn"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
10
+ var _default = exports["default"] = {
11
+ title: 'FormWithBtn',
12
+ component: _FormWithBtn["default"]
13
+ };
14
+ var FormWithBtnTest = exports.FormWithBtnTest = function FormWithBtnTest() {
15
+ return /*#__PURE__*/_react["default"].createElement(_FormWithBtn["default"], null);
16
+ };
@@ -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;