@invoicebox/ui 0.1.0-alpha.326 → 0.1.0-alpha.328
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.
- package/dist/components/common/AdaptiveModalDrawer/index.d.ts +11 -0
- package/dist/components/common/AdaptiveModalDrawer/index.js +31 -0
- package/dist/components/common/AdaptiveModalDrawer/index.stories.d.ts +5 -0
- package/dist/components/common/AdaptiveModalDrawer/index.stories.js +44 -0
- package/dist/components/common/Modal/assets/CollapseIcon.d.ts +1 -0
- package/dist/components/common/Modal/assets/CollapseIcon.js +42 -0
- package/dist/components/common/Modal/assets/ExpandIcon.d.ts +1 -0
- package/dist/components/common/Modal/assets/ExpandIcon.js +42 -0
- package/dist/components/common/Modal/context.d.ts +9 -0
- package/dist/components/common/Modal/context.js +14 -0
- package/dist/components/common/Modal/index.d.ts +15 -0
- package/dist/components/common/Modal/index.js +165 -0
- package/dist/components/common/Modal/index.stories.d.ts +6 -0
- package/dist/components/common/Modal/index.stories.js +76 -0
- package/dist/components/common/Modal/palette.d.ts +9 -0
- package/dist/components/common/Modal/palette.js +23 -0
- package/dist/components/common/Modal/styles.d.ts +25 -0
- package/dist/components/common/Modal/styles.js +69 -0
- package/dist/components/common/Skeleton/index.d.ts +16 -2
- package/dist/components/common/Skeleton/index.js +19 -2
- package/dist/components/common/Skeleton/index.stories.d.ts +4 -0
- package/dist/components/common/Skeleton/index.stories.js +42 -1
- package/dist/components/common/Skeleton/styles.d.ts +2 -0
- package/dist/components/common/Skeleton/styles.js +18 -9
- package/dist/components/common/WentWrongModal/assets/icons.d.ts +3 -0
- package/dist/components/common/WentWrongModal/assets/icons.js +84 -0
- package/dist/components/common/WentWrongModal/assets/racoonImage.d.ts +1 -0
- package/dist/components/common/WentWrongModal/assets/racoonImage.js +9 -0
- package/dist/components/common/WentWrongModal/index.d.ts +23 -0
- package/dist/components/common/WentWrongModal/index.js +193 -0
- package/dist/components/common/WentWrongModal/index.stories.d.ts +6 -0
- package/dist/components/common/WentWrongModal/index.stories.js +60 -0
- package/dist/components/common/WentWrongModal/index.test.d.ts +1 -0
- package/dist/components/common/WentWrongModal/index.test.js +209 -0
- package/dist/components/common/WentWrongModal/palette.d.ts +11 -0
- package/dist/components/common/WentWrongModal/palette.js +22 -0
- package/dist/components/common/WentWrongModal/styles.d.ts +24 -0
- package/dist/components/common/WentWrongModal/styles.js +88 -0
- package/dist/components/form/Select/index.js +11 -3
- package/dist/esm/components/common/AdaptiveModalDrawer/index.js +24 -0
- package/dist/esm/components/common/AdaptiveModalDrawer/index.stories.js +37 -0
- package/dist/esm/components/common/Modal/assets/CollapseIcon.js +35 -0
- package/dist/esm/components/common/Modal/assets/ExpandIcon.js +35 -0
- package/dist/esm/components/common/Modal/context.js +8 -0
- package/dist/esm/components/common/Modal/index.js +147 -0
- package/dist/esm/components/common/Modal/index.stories.js +69 -0
- package/dist/esm/components/common/Modal/palette.js +16 -0
- package/dist/esm/components/common/Modal/styles.js +61 -0
- package/dist/esm/components/common/Skeleton/index.js +19 -2
- package/dist/esm/components/common/Skeleton/index.stories.js +41 -0
- package/dist/esm/components/common/Skeleton/styles.js +19 -10
- package/dist/esm/components/common/WentWrongModal/assets/icons.js +77 -0
- package/dist/esm/components/common/WentWrongModal/assets/racoonImage.js +3 -0
- package/dist/esm/components/common/WentWrongModal/index.js +186 -0
- package/dist/esm/components/common/WentWrongModal/index.stories.js +53 -0
- package/dist/esm/components/common/WentWrongModal/index.test.js +208 -0
- package/dist/esm/components/common/WentWrongModal/palette.js +15 -0
- package/dist/esm/components/common/WentWrongModal/styles.js +81 -0
- package/dist/esm/components/form/Select/index.js +11 -2
- package/dist/esm/index.js +3 -1
- package/dist/esm/palette/context.js +5 -1
- package/dist/esm/palette/provider.js +5 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.js +39 -0
- package/dist/palette/context.d.ts +4 -0
- package/dist/palette/context.js +5 -1
- package/dist/palette/provider.js +5 -1
- package/dist/palette/usePalette.d.ts +2 -0
- package/package.json +1 -1
- package/dist/components/form/Select/components/Loader/index.d.ts +0 -2
- package/dist/components/form/Select/components/Loader/index.js +0 -25
- package/dist/components/form/Select/components/Loader/styles.d.ts +0 -4
- package/dist/components/form/Select/components/Loader/styles.js +0 -20
- package/dist/esm/components/form/Select/components/Loader/index.js +0 -16
- package/dist/esm/components/form/Select/components/Loader/styles.js +0 -13
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
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); }
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.WentWrongModal = exports.WENT_WRONG_MODAL_DEFAULT_CONTACTS = void 0;
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _useMedia = require("../../../hooks/useMedia");
|
|
10
|
+
var _palette = require("../../../palette");
|
|
11
|
+
var _AdaptiveModalDrawer = require("../AdaptiveModalDrawer");
|
|
12
|
+
var _SecondaryButton = require("../SecondaryButton");
|
|
13
|
+
var _Toast = require("../Toast");
|
|
14
|
+
var _Tooltip = require("../Tooltip");
|
|
15
|
+
var _Typography = require("../Typography");
|
|
16
|
+
var _icons = require("./assets/icons");
|
|
17
|
+
var _racoonImage = require("./assets/racoonImage");
|
|
18
|
+
var S = _interopRequireWildcard(require("./styles"));
|
|
19
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t2 in e) "default" !== _t2 && {}.hasOwnProperty.call(e, _t2) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t2)) && (i.get || i.set) ? o(f, _t2, i) : f[_t2] = e[_t2]); return f; })(e, t); }
|
|
20
|
+
function _regeneratorRuntime() { "use strict"; var r = _regenerator(), e = r.m(_regeneratorRuntime), t = (Object.getPrototypeOf ? Object.getPrototypeOf(e) : e.__proto__).constructor; function n(r) { var e = "function" == typeof r && r.constructor; return !!e && (e === t || "GeneratorFunction" === (e.displayName || e.name)); } var o = { "throw": 1, "return": 2, "break": 3, "continue": 3 }; function a(r) { var e, t; return function (n) { e || (e = { stop: function stop() { return t(n.a, 2); }, "catch": function _catch() { return n.v; }, abrupt: function abrupt(r, e) { return t(n.a, o[r], e); }, delegateYield: function delegateYield(r, o, a) { return e.resultName = o, t(n.d, _regeneratorValues(r), a); }, finish: function finish(r) { return t(n.f, r); } }, t = function t(r, _t, o) { n.p = e.prev, n.n = e.next; try { return r(_t, o); } finally { e.next = n.n; } }), e.resultName && (e[e.resultName] = n.v, e.resultName = void 0), e.sent = n.v, e.next = n.n; try { return r.call(this, e); } finally { n.p = e.prev, n.n = e.next; } }; } return (_regeneratorRuntime = function _regeneratorRuntime() { return { wrap: function wrap(e, t, n, o) { return r.w(a(e), t, n, o && o.reverse()); }, isGeneratorFunction: n, mark: r.m, awrap: function awrap(r, e) { return new _OverloadYield(r, e); }, AsyncIterator: _regeneratorAsyncIterator, async: function async(r, e, t, o, u) { return (n(e) ? _regeneratorAsyncGen : _regeneratorAsync)(a(r), e, t, o, u); }, keys: _regeneratorKeys, values: _regeneratorValues }; })(); }
|
|
21
|
+
function _regeneratorValues(e) { if (null != e) { var t = e["function" == typeof Symbol && Symbol.iterator || "@@iterator"], r = 0; if (t) return t.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) return { next: function next() { return e && r >= e.length && (e = void 0), { value: e && e[r++], done: !e }; } }; } throw new TypeError(_typeof(e) + " is not iterable"); }
|
|
22
|
+
function _regeneratorKeys(e) { var n = Object(e), r = []; for (var t in n) r.unshift(t); return function e() { for (; r.length;) if ((t = r.pop()) in n) return e.value = t, e.done = !1, e; return e.done = !0, e; }; }
|
|
23
|
+
function _regeneratorAsync(n, e, r, t, o) { var a = _regeneratorAsyncGen(n, e, r, t, o); return a.next().then(function (n) { return n.done ? n.value : a.next(); }); }
|
|
24
|
+
function _regeneratorAsyncGen(r, e, t, o, n) { return new _regeneratorAsyncIterator(_regenerator().w(r, e, t, o), n || Promise); }
|
|
25
|
+
function _regeneratorAsyncIterator(t, e) { function n(r, o, i, f) { try { var c = t[r](o), u = c.value; return u instanceof _OverloadYield ? e.resolve(u.v).then(function (t) { n("next", t, i, f); }, function (t) { n("throw", t, i, f); }) : e.resolve(u).then(function (t) { c.value = t, i(c); }, function (t) { return n("throw", t, i, f); }); } catch (t) { f(t); } } var r; this.next || (_regeneratorDefine2(_regeneratorAsyncIterator.prototype), _regeneratorDefine2(_regeneratorAsyncIterator.prototype, "function" == typeof Symbol && Symbol.asyncIterator || "@asyncIterator", function () { return this; })), _regeneratorDefine2(this, "_invoke", function (t, o, i) { function f() { return new e(function (e, r) { n(t, i, e, r); }); } return r = r ? r.then(f, f) : f(); }, !0); }
|
|
26
|
+
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
27
|
+
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
28
|
+
function _OverloadYield(e, d) { this.v = e, this.k = d; }
|
|
29
|
+
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
30
|
+
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
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
|
+
/** сколько держим подтверждение «Скопировано» после копирования ID */
|
|
38
|
+
var COPIED_FEEDBACK_MS = 2000;
|
|
39
|
+
var SUPPORT_PHONE_LABEL = '8 (800) 100-76-20';
|
|
40
|
+
var SUPPORT_PHONE = '+78001007620';
|
|
41
|
+
var SUPPORT_MAIL = 'c-support@invoicebox.ru';
|
|
42
|
+
var WENT_WRONG_MODAL_DEFAULT_CONTACTS = exports.WENT_WRONG_MODAL_DEFAULT_CONTACTS = [{
|
|
43
|
+
label: SUPPORT_PHONE_LABEL,
|
|
44
|
+
href: "tel:".concat(SUPPORT_PHONE),
|
|
45
|
+
icon: /*#__PURE__*/_react["default"].createElement(_icons.PhoneIcon, null)
|
|
46
|
+
}, {
|
|
47
|
+
label: SUPPORT_MAIL,
|
|
48
|
+
href: "mailto:".concat(SUPPORT_MAIL),
|
|
49
|
+
icon: /*#__PURE__*/_react["default"].createElement(_icons.MailIcon, null)
|
|
50
|
+
}];
|
|
51
|
+
var WentWrongModal = exports.WentWrongModal = function WentWrongModal(_ref) {
|
|
52
|
+
var isOpen = _ref.isOpen,
|
|
53
|
+
onClose = _ref.onClose,
|
|
54
|
+
title = _ref.title,
|
|
55
|
+
description = _ref.description,
|
|
56
|
+
requestErrorId = _ref.requestErrorId,
|
|
57
|
+
_ref$contacts = _ref.contacts,
|
|
58
|
+
contacts = _ref$contacts === void 0 ? WENT_WRONG_MODAL_DEFAULT_CONTACTS : _ref$contacts,
|
|
59
|
+
_ref$headerImage = _ref.headerImage,
|
|
60
|
+
headerImage = _ref$headerImage === void 0 ? _racoonImage.racoonImage : _ref$headerImage,
|
|
61
|
+
_ref$closeButtonText = _ref.closeButtonText,
|
|
62
|
+
closeButtonText = _ref$closeButtonText === void 0 ? 'Закрыть' : _ref$closeButtonText,
|
|
63
|
+
palette = _ref.palette;
|
|
64
|
+
var mergedPalette = (0, _palette.useComponentPalette)('wentWrongModal', palette);
|
|
65
|
+
var isMobile = (0, _useMedia.useMobile)();
|
|
66
|
+
var _useState = (0, _react.useState)(false),
|
|
67
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
68
|
+
isCopied = _useState2[0],
|
|
69
|
+
setIsCopied = _useState2[1];
|
|
70
|
+
var copiedTimerRef = (0, _react.useRef)();
|
|
71
|
+
|
|
72
|
+
// При закрытии окна и смене ID подтверждение сбрасываем, таймер не переживает размонтирование
|
|
73
|
+
(0, _react.useEffect)(function () {
|
|
74
|
+
setIsCopied(false);
|
|
75
|
+
clearTimeout(copiedTimerRef.current);
|
|
76
|
+
}, [isOpen, requestErrorId]);
|
|
77
|
+
(0, _react.useEffect)(function () {
|
|
78
|
+
return function () {
|
|
79
|
+
return clearTimeout(copiedTimerRef.current);
|
|
80
|
+
};
|
|
81
|
+
}, []);
|
|
82
|
+
var copyRequestId = /*#__PURE__*/function () {
|
|
83
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
84
|
+
var _navigator$clipboard;
|
|
85
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
86
|
+
while (1) switch (_context.prev = _context.next) {
|
|
87
|
+
case 0:
|
|
88
|
+
if (!(!requestErrorId || !((_navigator$clipboard = navigator.clipboard) !== null && _navigator$clipboard !== void 0 && _navigator$clipboard.writeText))) {
|
|
89
|
+
_context.next = 2;
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
return _context.abrupt("return");
|
|
93
|
+
case 2:
|
|
94
|
+
_context.prev = 2;
|
|
95
|
+
_context.next = 5;
|
|
96
|
+
return navigator.clipboard.writeText(requestErrorId);
|
|
97
|
+
case 5:
|
|
98
|
+
setIsCopied(true);
|
|
99
|
+
clearTimeout(copiedTimerRef.current);
|
|
100
|
+
copiedTimerRef.current = setTimeout(function () {
|
|
101
|
+
return setIsCopied(false);
|
|
102
|
+
}, COPIED_FEEDBACK_MS);
|
|
103
|
+
_context.next = 13;
|
|
104
|
+
break;
|
|
105
|
+
case 10:
|
|
106
|
+
_context.prev = 10;
|
|
107
|
+
_context.t0 = _context["catch"](2);
|
|
108
|
+
_Toast.toast.error('Не удалось скопировать');
|
|
109
|
+
case 13:
|
|
110
|
+
case "end":
|
|
111
|
+
return _context.stop();
|
|
112
|
+
}
|
|
113
|
+
}, _callee, null, [[2, 10]]);
|
|
114
|
+
}));
|
|
115
|
+
return function copyRequestId() {
|
|
116
|
+
return _ref2.apply(this, arguments);
|
|
117
|
+
};
|
|
118
|
+
}();
|
|
119
|
+
|
|
120
|
+
// Уводим курсор/фокус с ID — подтверждение гасим, при возврате тултип снова подсказывает про копирование
|
|
121
|
+
var resetCopied = function resetCopied() {
|
|
122
|
+
clearTimeout(copiedTimerRef.current);
|
|
123
|
+
setIsCopied(false);
|
|
124
|
+
};
|
|
125
|
+
var handleCopy = function handleCopy() {
|
|
126
|
+
void copyRequestId();
|
|
127
|
+
};
|
|
128
|
+
return /*#__PURE__*/_react["default"].createElement(_AdaptiveModalDrawer.AdaptiveModalDrawer, {
|
|
129
|
+
onClose: onClose,
|
|
130
|
+
isOpen: isOpen,
|
|
131
|
+
drawerProps: {
|
|
132
|
+
isPadding: false
|
|
133
|
+
}
|
|
134
|
+
}, /*#__PURE__*/_react["default"].createElement(S.ModalInner, {
|
|
135
|
+
$palette: mergedPalette
|
|
136
|
+
}, /*#__PURE__*/_react["default"].createElement(S.Header, {
|
|
137
|
+
$palette: mergedPalette,
|
|
138
|
+
$image: headerImage
|
|
139
|
+
}), /*#__PURE__*/_react["default"].createElement(S.Content, null, /*#__PURE__*/_react["default"].createElement(S.Title, {
|
|
140
|
+
variant: "headline3"
|
|
141
|
+
}, title), /*#__PURE__*/_react["default"].createElement(S.Description, {
|
|
142
|
+
variant: "bodyMRegular",
|
|
143
|
+
$palette: mergedPalette
|
|
144
|
+
}, description), contacts.length > 0 && /*#__PURE__*/_react["default"].createElement(S.Contacts, {
|
|
145
|
+
$marginBottom: requestErrorId ? '0' : '24px'
|
|
146
|
+
}, contacts.map(function (contact) {
|
|
147
|
+
return /*#__PURE__*/_react["default"].createElement(S.ContactItem, {
|
|
148
|
+
key: contact.href,
|
|
149
|
+
href: contact.href
|
|
150
|
+
}, contact.icon, /*#__PURE__*/_react["default"].createElement(_Typography.Typography, {
|
|
151
|
+
variant: "buttonM",
|
|
152
|
+
element: "span"
|
|
153
|
+
}, contact.label));
|
|
154
|
+
})), requestErrorId && /*#__PURE__*/_react["default"].createElement(S.RequestIdWrapper, {
|
|
155
|
+
$palette: mergedPalette
|
|
156
|
+
}, /*#__PURE__*/_react["default"].createElement(_Typography.Typography, {
|
|
157
|
+
variant: "bodyMRegular",
|
|
158
|
+
element: "span"
|
|
159
|
+
}, "ID \u0437\u0430\u043F\u0440\u043E\u0441\u0430:"), isMobile ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(S.RequestIdValue, {
|
|
160
|
+
variant: "bodyMRegular",
|
|
161
|
+
element: "span",
|
|
162
|
+
$palette: mergedPalette
|
|
163
|
+
}, requestErrorId), /*#__PURE__*/_react["default"].createElement(S.ButtonCopyCode, {
|
|
164
|
+
type: "button",
|
|
165
|
+
onClick: handleCopy,
|
|
166
|
+
"aria-label": "\u0421\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C ID \u0437\u0430\u043F\u0440\u043E\u0441\u0430",
|
|
167
|
+
$palette: mergedPalette
|
|
168
|
+
}, /*#__PURE__*/_react["default"].createElement(_icons.CopyIcon, null))) : /*#__PURE__*/_react["default"].createElement(_Tooltip.Tooltip, {
|
|
169
|
+
overlay: /*#__PURE__*/_react["default"].createElement(S.CopyText, null, /*#__PURE__*/_react["default"].createElement(_Typography.Typography, {
|
|
170
|
+
variant: "captionRegular"
|
|
171
|
+
}, isCopied ? 'Скопировано' : 'Нажмите, чтобы скопировать')),
|
|
172
|
+
placement: "top"
|
|
173
|
+
}, /*#__PURE__*/_react["default"].createElement(S.RequestIdValue, {
|
|
174
|
+
variant: "bodyMRegular",
|
|
175
|
+
element: "button",
|
|
176
|
+
type: "button",
|
|
177
|
+
onClick: handleCopy,
|
|
178
|
+
onMouseLeave: resetCopied,
|
|
179
|
+
onBlur: resetCopied,
|
|
180
|
+
$palette: mergedPalette
|
|
181
|
+
}, requestErrorId)), /*#__PURE__*/_react["default"].createElement(S.CopiedStatus, {
|
|
182
|
+
role: "status",
|
|
183
|
+
$isVisuallyHidden: !isMobile
|
|
184
|
+
}, isCopied && /*#__PURE__*/_react["default"].createElement(_Typography.Typography, {
|
|
185
|
+
variant: "bodyMRegular",
|
|
186
|
+
element: "span"
|
|
187
|
+
}, "\u0421\u043A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u043D\u043E"))), /*#__PURE__*/_react["default"].createElement(_SecondaryButton.SecondaryButton, {
|
|
188
|
+
onClick: onClose,
|
|
189
|
+
borderRadius: "50px",
|
|
190
|
+
padding: isMobile ? '16px 40px' : '8px 16px',
|
|
191
|
+
fullWidth: isMobile
|
|
192
|
+
}, closeButtonText))));
|
|
193
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
+
import { WentWrongModal, TProps } from '.';
|
|
3
|
+
declare const meta: Meta<typeof WentWrongModal>;
|
|
4
|
+
export default meta;
|
|
5
|
+
export declare const Default: StoryObj<TProps>;
|
|
6
|
+
export declare const WithRequestId: StoryObj<TProps>;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
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); }
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports["default"] = exports.WithRequestId = exports.Default = void 0;
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _useModal3 = require("../../../hooks/useModal");
|
|
10
|
+
var _Toast = require("../Toast");
|
|
11
|
+
var _ = require(".");
|
|
12
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
13
|
+
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; }
|
|
14
|
+
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; }
|
|
15
|
+
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; }
|
|
16
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
17
|
+
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); }
|
|
18
|
+
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); }
|
|
19
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
20
|
+
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."); }
|
|
21
|
+
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; } }
|
|
22
|
+
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; }
|
|
23
|
+
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; } }
|
|
24
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
25
|
+
var meta = {
|
|
26
|
+
title: 'common/WentWrongModal',
|
|
27
|
+
component: _.WentWrongModal,
|
|
28
|
+
tags: ['autodocs']
|
|
29
|
+
};
|
|
30
|
+
var _default = exports["default"] = meta;
|
|
31
|
+
var Render = function Render(args) {
|
|
32
|
+
var _useModal = (0, _useModal3.useModal)(false),
|
|
33
|
+
_useModal2 = _slicedToArray(_useModal, 3),
|
|
34
|
+
isOpen = _useModal2[0],
|
|
35
|
+
open = _useModal2[1],
|
|
36
|
+
close = _useModal2[2];
|
|
37
|
+
return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("button", {
|
|
38
|
+
type: "button",
|
|
39
|
+
onClick: open
|
|
40
|
+
}, "Open"), /*#__PURE__*/_react["default"].createElement(_.WentWrongModal, _extends({}, args, {
|
|
41
|
+
isOpen: isOpen,
|
|
42
|
+
onClose: close
|
|
43
|
+
})), /*#__PURE__*/_react["default"].createElement(_Toast.ToastContainer, null));
|
|
44
|
+
};
|
|
45
|
+
var commonArgs = {
|
|
46
|
+
title: 'Что-то пошло не так...',
|
|
47
|
+
description: 'К сожалению, произошла ошибка при обработке вашего запроса. Пожалуйста, попробуйте ещё раз или обратитесь в службу поддержки'
|
|
48
|
+
};
|
|
49
|
+
var Default = exports.Default = {
|
|
50
|
+
args: commonArgs,
|
|
51
|
+
render: Render
|
|
52
|
+
};
|
|
53
|
+
var WithRequestId = exports.WithRequestId = {
|
|
54
|
+
args: _objectSpread(_objectSpread({}, commonArgs), {}, {
|
|
55
|
+
title: 'Доступ заблокирован',
|
|
56
|
+
description: 'Вы исчерпали количество попыток входа на сегодня. Пожалуйста, повторите попытку позже или обратитесь в службу поддержки',
|
|
57
|
+
requestErrorId: '7f3c2a9e-41b8-4d0e-9a51-2c6f8e1b0d47'
|
|
58
|
+
}),
|
|
59
|
+
render: Render
|
|
60
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
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); }
|
|
4
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
5
|
+
var _client = require("react-dom/client");
|
|
6
|
+
var _ = require(".");
|
|
7
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t2 in e) "default" !== _t2 && {}.hasOwnProperty.call(e, _t2) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t2)) && (i.get || i.set) ? o(f, _t2, i) : f[_t2] = e[_t2]); return f; })(e, t); }
|
|
8
|
+
function _regeneratorRuntime() { "use strict"; var r = _regenerator(), e = r.m(_regeneratorRuntime), t = (Object.getPrototypeOf ? Object.getPrototypeOf(e) : e.__proto__).constructor; function n(r) { var e = "function" == typeof r && r.constructor; return !!e && (e === t || "GeneratorFunction" === (e.displayName || e.name)); } var o = { "throw": 1, "return": 2, "break": 3, "continue": 3 }; function a(r) { var e, t; return function (n) { e || (e = { stop: function stop() { return t(n.a, 2); }, "catch": function _catch() { return n.v; }, abrupt: function abrupt(r, e) { return t(n.a, o[r], e); }, delegateYield: function delegateYield(r, o, a) { return e.resultName = o, t(n.d, _regeneratorValues(r), a); }, finish: function finish(r) { return t(n.f, r); } }, t = function t(r, _t, o) { n.p = e.prev, n.n = e.next; try { return r(_t, o); } finally { e.next = n.n; } }), e.resultName && (e[e.resultName] = n.v, e.resultName = void 0), e.sent = n.v, e.next = n.n; try { return r.call(this, e); } finally { n.p = e.prev, n.n = e.next; } }; } return (_regeneratorRuntime = function _regeneratorRuntime() { return { wrap: function wrap(e, t, n, o) { return r.w(a(e), t, n, o && o.reverse()); }, isGeneratorFunction: n, mark: r.m, awrap: function awrap(r, e) { return new _OverloadYield(r, e); }, AsyncIterator: _regeneratorAsyncIterator, async: function async(r, e, t, o, u) { return (n(e) ? _regeneratorAsyncGen : _regeneratorAsync)(a(r), e, t, o, u); }, keys: _regeneratorKeys, values: _regeneratorValues }; })(); }
|
|
9
|
+
function _regeneratorValues(e) { if (null != e) { var t = e["function" == typeof Symbol && Symbol.iterator || "@@iterator"], r = 0; if (t) return t.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) return { next: function next() { return e && r >= e.length && (e = void 0), { value: e && e[r++], done: !e }; } }; } throw new TypeError(_typeof(e) + " is not iterable"); }
|
|
10
|
+
function _regeneratorKeys(e) { var n = Object(e), r = []; for (var t in n) r.unshift(t); return function e() { for (; r.length;) if ((t = r.pop()) in n) return e.value = t, e.done = !1, e; return e.done = !0, e; }; }
|
|
11
|
+
function _regeneratorAsync(n, e, r, t, o) { var a = _regeneratorAsyncGen(n, e, r, t, o); return a.next().then(function (n) { return n.done ? n.value : a.next(); }); }
|
|
12
|
+
function _regeneratorAsyncGen(r, e, t, o, n) { return new _regeneratorAsyncIterator(_regenerator().w(r, e, t, o), n || Promise); }
|
|
13
|
+
function _regeneratorAsyncIterator(t, e) { function n(r, o, i, f) { try { var c = t[r](o), u = c.value; return u instanceof _OverloadYield ? e.resolve(u.v).then(function (t) { n("next", t, i, f); }, function (t) { n("throw", t, i, f); }) : e.resolve(u).then(function (t) { c.value = t, i(c); }, function (t) { return n("throw", t, i, f); }); } catch (t) { f(t); } } var r; this.next || (_regeneratorDefine2(_regeneratorAsyncIterator.prototype), _regeneratorDefine2(_regeneratorAsyncIterator.prototype, "function" == typeof Symbol && Symbol.asyncIterator || "@asyncIterator", function () { return this; })), _regeneratorDefine2(this, "_invoke", function (t, o, i) { function f() { return new e(function (e, r) { n(t, i, e, r); }); } return r = r ? r.then(f, f) : f(); }, !0); }
|
|
14
|
+
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
15
|
+
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
16
|
+
function _OverloadYield(e, d) { this.v = e, this.k = d; }
|
|
17
|
+
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
18
|
+
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
19
|
+
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); } /**
|
|
20
|
+
* @jest-environment jsdom
|
|
21
|
+
*/
|
|
22
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
23
|
+
globalThis.IS_REACT_ACT_ENVIRONMENT = true;
|
|
24
|
+
var container;
|
|
25
|
+
var root;
|
|
26
|
+
beforeEach(function () {
|
|
27
|
+
window.matchMedia = jest.fn().mockReturnValue({
|
|
28
|
+
matches: false,
|
|
29
|
+
addEventListener: jest.fn(),
|
|
30
|
+
removeEventListener: jest.fn()
|
|
31
|
+
});
|
|
32
|
+
container = document.createElement('div');
|
|
33
|
+
document.body.appendChild(container);
|
|
34
|
+
root = (0, _client.createRoot)(container);
|
|
35
|
+
});
|
|
36
|
+
afterEach(function () {
|
|
37
|
+
(0, _react.act)(function () {
|
|
38
|
+
return root.unmount();
|
|
39
|
+
});
|
|
40
|
+
container.remove();
|
|
41
|
+
});
|
|
42
|
+
var render = function render() {
|
|
43
|
+
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
44
|
+
return (0, _react.act)(function () {
|
|
45
|
+
root.render(/*#__PURE__*/_react["default"].createElement(_.WentWrongModal, _extends({
|
|
46
|
+
isOpen: true,
|
|
47
|
+
onClose: jest.fn(),
|
|
48
|
+
title: "\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A",
|
|
49
|
+
description: "\u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435"
|
|
50
|
+
}, props)));
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
describe('WentWrongModal', function () {
|
|
54
|
+
test('рендерит заголовок, описание и контакты поддержки по умолчанию', function () {
|
|
55
|
+
render();
|
|
56
|
+
var dialog = document.querySelector('[role="dialog"]');
|
|
57
|
+
expect(dialog === null || dialog === void 0 ? void 0 : dialog.textContent).toContain('Заголовок');
|
|
58
|
+
expect(dialog === null || dialog === void 0 ? void 0 : dialog.textContent).toContain('Описание');
|
|
59
|
+
var hrefs = Array.from(document.querySelectorAll('a')).map(function (a) {
|
|
60
|
+
return a.getAttribute('href');
|
|
61
|
+
});
|
|
62
|
+
expect(hrefs).toEqual(['tel:+78001007620', 'mailto:c-support@invoicebox.ru']);
|
|
63
|
+
});
|
|
64
|
+
test('показывает ID запроса только когда он передан', function () {
|
|
65
|
+
render();
|
|
66
|
+
expect(document.body.textContent).not.toContain('ID запроса');
|
|
67
|
+
render({
|
|
68
|
+
requestErrorId: 'req-123'
|
|
69
|
+
});
|
|
70
|
+
expect(document.body.textContent).toContain('ID запроса');
|
|
71
|
+
expect(document.body.textContent).toContain('req-123');
|
|
72
|
+
});
|
|
73
|
+
test('контакты и текст кнопки задаются пропами', function () {
|
|
74
|
+
render({
|
|
75
|
+
contacts: [{
|
|
76
|
+
label: 'help@example.com',
|
|
77
|
+
href: 'mailto:help@example.com'
|
|
78
|
+
}],
|
|
79
|
+
closeButtonText: 'Ок'
|
|
80
|
+
});
|
|
81
|
+
var hrefs = Array.from(document.querySelectorAll('a')).map(function (a) {
|
|
82
|
+
return a.getAttribute('href');
|
|
83
|
+
});
|
|
84
|
+
expect(hrefs).toEqual(['mailto:help@example.com']);
|
|
85
|
+
expect(document.body.textContent).toContain('Ок');
|
|
86
|
+
});
|
|
87
|
+
test('Escape и кнопка закрытия вызывают onClose', function () {
|
|
88
|
+
var onClose = jest.fn();
|
|
89
|
+
render({
|
|
90
|
+
onClose: onClose
|
|
91
|
+
});
|
|
92
|
+
(0, _react.act)(function () {
|
|
93
|
+
document.dispatchEvent(new KeyboardEvent('keydown', {
|
|
94
|
+
key: 'Escape'
|
|
95
|
+
}));
|
|
96
|
+
});
|
|
97
|
+
expect(onClose).toHaveBeenCalledTimes(1);
|
|
98
|
+
var closeButton = Array.from(document.querySelectorAll('button')).find(function (button) {
|
|
99
|
+
return button.textContent === 'Закрыть';
|
|
100
|
+
});
|
|
101
|
+
(0, _react.act)(function () {
|
|
102
|
+
return closeButton === null || closeButton === void 0 ? void 0 : closeButton.click();
|
|
103
|
+
});
|
|
104
|
+
expect(onClose).toHaveBeenCalledTimes(2);
|
|
105
|
+
});
|
|
106
|
+
test('после копирования ID показывает «Скопировано» и через 2 секунды убирает', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
|
|
107
|
+
var writeText, status, idButton;
|
|
108
|
+
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
109
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
110
|
+
case 0:
|
|
111
|
+
jest.useFakeTimers();
|
|
112
|
+
writeText = jest.fn().mockResolvedValue(undefined);
|
|
113
|
+
Object.assign(navigator, {
|
|
114
|
+
clipboard: {
|
|
115
|
+
writeText: writeText
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
render({
|
|
119
|
+
requestErrorId: 'req-123'
|
|
120
|
+
});
|
|
121
|
+
status = function status() {
|
|
122
|
+
var _document$querySelect;
|
|
123
|
+
return (_document$querySelect = document.querySelector('[role="status"]')) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.textContent;
|
|
124
|
+
};
|
|
125
|
+
expect(status()).toBe('');
|
|
126
|
+
idButton = Array.from(document.querySelectorAll('button')).find(function (button) {
|
|
127
|
+
return button.textContent === 'req-123';
|
|
128
|
+
});
|
|
129
|
+
_context2.next = 9;
|
|
130
|
+
return (0, _react.act)(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
131
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
132
|
+
while (1) switch (_context.prev = _context.next) {
|
|
133
|
+
case 0:
|
|
134
|
+
idButton === null || idButton === void 0 || idButton.click();
|
|
135
|
+
case 1:
|
|
136
|
+
case "end":
|
|
137
|
+
return _context.stop();
|
|
138
|
+
}
|
|
139
|
+
}, _callee);
|
|
140
|
+
})));
|
|
141
|
+
case 9:
|
|
142
|
+
expect(writeText).toHaveBeenCalledWith('req-123');
|
|
143
|
+
expect(status()).toBe('Скопировано');
|
|
144
|
+
(0, _react.act)(function () {
|
|
145
|
+
jest.advanceTimersByTime(2000);
|
|
146
|
+
});
|
|
147
|
+
expect(status()).toBe('');
|
|
148
|
+
jest.useRealTimers();
|
|
149
|
+
case 14:
|
|
150
|
+
case "end":
|
|
151
|
+
return _context2.stop();
|
|
152
|
+
}
|
|
153
|
+
}, _callee2);
|
|
154
|
+
})));
|
|
155
|
+
test('уход курсора с ID сбрасывает «Скопировано»', /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
|
|
156
|
+
var status, idButton;
|
|
157
|
+
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
158
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
159
|
+
case 0:
|
|
160
|
+
Object.assign(navigator, {
|
|
161
|
+
clipboard: {
|
|
162
|
+
writeText: jest.fn().mockResolvedValue(undefined)
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
render({
|
|
166
|
+
requestErrorId: 'req-123'
|
|
167
|
+
});
|
|
168
|
+
status = function status() {
|
|
169
|
+
var _document$querySelect2;
|
|
170
|
+
return (_document$querySelect2 = document.querySelector('[role="status"]')) === null || _document$querySelect2 === void 0 ? void 0 : _document$querySelect2.textContent;
|
|
171
|
+
};
|
|
172
|
+
idButton = Array.from(document.querySelectorAll('button')).find(function (button) {
|
|
173
|
+
return button.textContent === 'req-123';
|
|
174
|
+
});
|
|
175
|
+
_context4.next = 6;
|
|
176
|
+
return (0, _react.act)(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
|
|
177
|
+
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
178
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
179
|
+
case 0:
|
|
180
|
+
idButton === null || idButton === void 0 || idButton.click();
|
|
181
|
+
case 1:
|
|
182
|
+
case "end":
|
|
183
|
+
return _context3.stop();
|
|
184
|
+
}
|
|
185
|
+
}, _callee3);
|
|
186
|
+
})));
|
|
187
|
+
case 6:
|
|
188
|
+
expect(status()).toBe('Скопировано');
|
|
189
|
+
(0, _react.act)(function () {
|
|
190
|
+
idButton === null || idButton === void 0 || idButton.dispatchEvent(new MouseEvent('mouseout', {
|
|
191
|
+
bubbles: true,
|
|
192
|
+
relatedTarget: document.body
|
|
193
|
+
}));
|
|
194
|
+
});
|
|
195
|
+
expect(status()).toBe('');
|
|
196
|
+
case 9:
|
|
197
|
+
case "end":
|
|
198
|
+
return _context4.stop();
|
|
199
|
+
}
|
|
200
|
+
}, _callee4);
|
|
201
|
+
})));
|
|
202
|
+
test('закрытое окно ничего не рендерит и не блокирует скролл', function () {
|
|
203
|
+
render({
|
|
204
|
+
isOpen: false
|
|
205
|
+
});
|
|
206
|
+
expect(document.querySelector('[role="dialog"]')).toBeNull();
|
|
207
|
+
expect(document.body.style.overflow).toBe('');
|
|
208
|
+
});
|
|
209
|
+
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { TAbstractPalette } from '../../../palette';
|
|
2
|
+
export type TWentWrongModalPalette = {
|
|
3
|
+
text: string;
|
|
4
|
+
description: string;
|
|
5
|
+
requestId: string;
|
|
6
|
+
headerBg: string;
|
|
7
|
+
copyIcon: string;
|
|
8
|
+
copyButtonBg: string;
|
|
9
|
+
copyValueHoverBg: string;
|
|
10
|
+
};
|
|
11
|
+
export declare const generateWentWrongModalPalette: (abstractPalette: TAbstractPalette) => TWentWrongModalPalette;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.generateWentWrongModalPalette = void 0;
|
|
7
|
+
var _hexToRgba = _interopRequireDefault(require("../../../utils/hexToRgba"));
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
9
|
+
var generateWentWrongModalPalette = exports.generateWentWrongModalPalette = function generateWentWrongModalPalette(abstractPalette) {
|
|
10
|
+
return {
|
|
11
|
+
text: abstractPalette.primary,
|
|
12
|
+
// на белом фоне совпадает с grey800 (#868C91) из макета
|
|
13
|
+
description: (0, _hexToRgba["default"])(abstractPalette.primary, 0.6),
|
|
14
|
+
// на белом фоне ≈ text.secondary (#72777B)
|
|
15
|
+
requestId: (0, _hexToRgba["default"])(abstractPalette.primary, 0.7),
|
|
16
|
+
headerBg: '#EDF5F8',
|
|
17
|
+
// на белом фоне совпадает с grey700 (#9A9FA3)
|
|
18
|
+
copyIcon: (0, _hexToRgba["default"])(abstractPalette.primary, 0.5),
|
|
19
|
+
copyButtonBg: abstractPalette.neutralUsual,
|
|
20
|
+
copyValueHoverBg: abstractPalette.neutralHeavy
|
|
21
|
+
};
|
|
22
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { TWentWrongModalPalette } from './palette';
|
|
3
|
+
type TPaletteProps = {
|
|
4
|
+
$palette: TWentWrongModalPalette;
|
|
5
|
+
};
|
|
6
|
+
export declare const ModalInner: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, TPaletteProps>> & string;
|
|
7
|
+
export declare const Header: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, TPaletteProps & {
|
|
8
|
+
$image: string;
|
|
9
|
+
}>> & string;
|
|
10
|
+
export declare const Content: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
|
|
11
|
+
export declare const Title: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("../Typography").TTypographyProps & import("styled-components/dist/types").BaseObject, import("styled-components/dist/types").BaseObject>> & string & Omit<import("react").FC<import("../Typography").TTypographyProps>, keyof import("react").Component<any, {}, any>>;
|
|
12
|
+
export declare const Description: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("../Typography").TTypographyProps & import("styled-components/dist/types").BaseObject, TPaletteProps>> & string & Omit<import("react").FC<import("../Typography").TTypographyProps>, keyof import("react").Component<any, {}, any>>;
|
|
13
|
+
export declare const Contacts: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
|
|
14
|
+
$marginBottom: string;
|
|
15
|
+
}>> & string;
|
|
16
|
+
export declare const ContactItem: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, never>> & string;
|
|
17
|
+
export declare const RequestIdWrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, TPaletteProps>> & string;
|
|
18
|
+
export declare const CopyText: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
|
|
19
|
+
export declare const RequestIdValue: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("../Typography").TTypographyProps & import("styled-components/dist/types").BaseObject, TPaletteProps>> & string & Omit<import("react").FC<import("../Typography").TTypographyProps>, keyof import("react").Component<any, {}, any>>;
|
|
20
|
+
export declare const ButtonCopyCode: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, TPaletteProps>> & string;
|
|
21
|
+
export declare const CopiedStatus: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {
|
|
22
|
+
$isVisuallyHidden: boolean;
|
|
23
|
+
}>> & string;
|
|
24
|
+
export {};
|