@sb1/ffe-feedback-react 2.0.45 → 3.0.1
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/README.md +0 -5
- package/es/Animation.js +18 -0
- package/es/Feedback.js +61 -0
- package/es/FeedbackExpanded.js +35 -0
- package/es/FeedbackThumbs.js +13 -0
- package/es/highFiveAnimation.js +24158 -0
- package/es/i18n/en.js +16 -16
- package/es/i18n/nb.js +16 -16
- package/es/i18n/nn.js +16 -16
- package/es/i18n/texts.js +8 -0
- package/es/icons/ThumbDown.js +14 -0
- package/es/icons/ThumbDownFill.js +14 -0
- package/es/icons/ThumbUp.js +14 -0
- package/es/icons/index.js +4 -4
- package/es/icons/thumbUpFill.js +14 -0
- package/es/index.js +1 -4
- package/lib/Animation.js +48 -0
- package/lib/Feedback.js +91 -0
- package/lib/FeedbackExpanded.js +62 -0
- package/lib/FeedbackThumbs.js +20 -0
- package/lib/highFiveAnimation.js +24160 -0
- package/lib/i18n/en.js +18 -21
- package/lib/i18n/nb.js +18 -21
- package/lib/i18n/nn.js +18 -21
- package/lib/i18n/texts.js +11 -0
- package/lib/icons/ThumbDown.js +21 -0
- package/lib/icons/ThumbDownFill.js +21 -0
- package/lib/icons/ThumbUp.js +21 -0
- package/lib/icons/index.js +10 -33
- package/lib/icons/thumbUpFill.js +21 -0
- package/lib/index.js +4 -15
- package/package.json +7 -9
- package/types/Animation.d.ts +2 -0
- package/types/Feedback.d.ts +15 -0
- package/types/FeedbackExpanded.d.ts +12 -0
- package/types/FeedbackThumbs.d.ts +9 -0
- package/types/highFiveAnimation.d.ts +4085 -0
- package/types/i18n/en.d.ts +16 -0
- package/types/i18n/nb.d.ts +16 -0
- package/types/i18n/nn.d.ts +16 -0
- package/types/i18n/texts.d.ts +50 -0
- package/types/icons/ThumbDown.d.ts +2 -0
- package/types/icons/ThumbDownFill.d.ts +2 -0
- package/types/icons/ThumbUp.d.ts +2 -0
- package/types/icons/index.d.ts +4 -0
- package/types/icons/thumbUpFill.d.ts +2 -0
- package/types/index.d.ts +2 -29
- package/es/animation.js +0 -22
- package/es/feedback-expanded.js +0 -82
- package/es/feedback-thumbs.js +0 -45
- package/es/feedback.js +0 -120
- package/es/high-five-animation.js +0 -1
- package/es/i18n/i18n.js +0 -8
- package/es/icons/thumb-down-fill.js +0 -14
- package/es/icons/thumb-down.js +0 -14
- package/es/icons/thumb-up-fill.js +0 -14
- package/es/icons/thumb-up.js +0 -14
- package/es/index.d.js +0 -3
- package/lib/animation.js +0 -32
- package/lib/feedback-expanded.js +0 -92
- package/lib/feedback-thumbs.js +0 -52
- package/lib/feedback.js +0 -129
- package/lib/high-five-animation.js +0 -1
- package/lib/i18n/i18n.js +0 -15
- package/lib/icons/thumb-down-fill.js +0 -23
- package/lib/icons/thumb-down.js +0 -23
- package/lib/icons/thumb-up-fill.js +0 -23
- package/lib/icons/thumb-up.js +0 -23
- package/lib/index.d.js +0 -16
package/es/i18n/en.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
};
|
|
1
|
+
export var en = {
|
|
2
|
+
ARIA_LABEL_THUMB_UP: 'Give thumbs up',
|
|
3
|
+
ARIA_LABEL_THUMB_DOWN: 'Give thumbs down',
|
|
4
|
+
FEEDBACK_NOT_SENT_HEADING: 'What do you think of this page? ',
|
|
5
|
+
FEEDBACK_SENT_HEADING: 'Thank you!',
|
|
6
|
+
FEEDBACK_BUTTON_SEND: 'Send feedback',
|
|
7
|
+
FEEDBACK_BUTTON_CANCEL: 'Cancel',
|
|
8
|
+
FEEDBACK_GOOD: 'What was good?',
|
|
9
|
+
FEEDBACK_IMPROVE: 'How can we improve?',
|
|
10
|
+
FEEDBACK_ANSWER: 'Your feedback will be used to improve this site and will not be replied.',
|
|
11
|
+
QUESTIONS: ' If you have questions, ',
|
|
12
|
+
FEEDBACK_LINKTEXT: 'contact customer services.',
|
|
13
|
+
FEEDBACK_SENSITIVE: 'Please do not send sensitive or personal information, for example: Health information, political affiliation, social security number, name, email or telephone number.',
|
|
14
|
+
FEEDBACK_SHORT: 'Feedback must be at least three characters.',
|
|
15
|
+
NATIVE_VIEW_HEADING: 'Customer service',
|
|
16
|
+
};
|
package/es/i18n/nb.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
};
|
|
1
|
+
export var nb = {
|
|
2
|
+
ARIA_LABEL_THUMB_UP: 'Gi tommel opp',
|
|
3
|
+
ARIA_LABEL_THUMB_DOWN: 'Gi tommel ned',
|
|
4
|
+
FEEDBACK_NOT_SENT_HEADING: 'Hva synes du om denne siden? ',
|
|
5
|
+
FEEDBACK_SENT_HEADING: 'Takk for tilbakemeldingen!',
|
|
6
|
+
FEEDBACK_BUTTON_SEND: 'Send tilbakemelding',
|
|
7
|
+
FEEDBACK_BUTTON_CANCEL: 'Avbryt',
|
|
8
|
+
FEEDBACK_GOOD: 'Hva var bra?',
|
|
9
|
+
FEEDBACK_IMPROVE: 'Hva kan vi gjøre bedre?',
|
|
10
|
+
FEEDBACK_ANSWER: 'Svaret ditt blir brukt til å forbedre denne siden og blir ikke besvart.',
|
|
11
|
+
QUESTIONS: ' Har du spørsmål, ',
|
|
12
|
+
FEEDBACK_LINKTEXT: 'kontakt kundeservice.',
|
|
13
|
+
FEEDBACK_SENSITIVE: 'Unngå å oppgi sensitiv eller personlig informasjon, for eksempel helseopplysninger, politisk tilhørighet, personnummer, navn, e-post eller telefonnummer.',
|
|
14
|
+
FEEDBACK_SHORT: 'Tilbakemeldingen må være på minst tre tegn.',
|
|
15
|
+
NATIVE_VIEW_HEADING: 'Kundeservice',
|
|
16
|
+
};
|
package/es/i18n/nn.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
};
|
|
1
|
+
export var nn = {
|
|
2
|
+
ARIA_LABEL_THUMB_UP: 'Gje tommel opp',
|
|
3
|
+
ARIA_LABEL_THUMB_DOWN: 'Gje tommel ned',
|
|
4
|
+
FEEDBACK_NOT_SENT_HEADING: 'Kva synest du om denne sida? ',
|
|
5
|
+
FEEDBACK_SENT_HEADING: 'Takk for tilbakemeldinga!',
|
|
6
|
+
FEEDBACK_BUTTON_SEND: 'Send tilbakemelding',
|
|
7
|
+
FEEDBACK_BUTTON_CANCEL: 'Avbryt',
|
|
8
|
+
FEEDBACK_GOOD: 'Kva var bra?',
|
|
9
|
+
FEEDBACK_IMPROVE: 'Kva kan vi gjere betre?',
|
|
10
|
+
FEEDBACK_ANSWER: 'Svaret ditt vert brukt til å betre denne sida og vert ikkje svart på.',
|
|
11
|
+
QUESTIONS: ' Har du spørsmål, ',
|
|
12
|
+
FEEDBACK_LINKTEXT: 'kontakt kundetenesta.',
|
|
13
|
+
FEEDBACK_SENSITIVE: 'Unngå å oppgje sensitiv eller personleg informasjon, til dømes helseopplysingar, politisk tilhøyrsel, personnummer, namn, e-post eller telefonnummer.',
|
|
14
|
+
FEEDBACK_SHORT: 'Tilbakemeldinga må vere minst tre teikn.',
|
|
15
|
+
NATIVE_VIEW_HEADING: 'Kundetenest',
|
|
16
|
+
};
|
package/es/i18n/texts.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
import React from 'react';
|
|
13
|
+
export var ThumbDown = function (props) { return (React.createElement("svg", __assign({ "aria-hidden": true, xmlns: "http://www.w3.org/2000/svg", width: 48, height: 48, viewBox: "0 -960 960 960" }, props),
|
|
14
|
+
React.createElement("path", { d: "M105-328q-24 0-42-18t-18-42v-81.839Q45-477 43.5-484.5T45-499l126-290q8.878-21.25 29.595-36.125T244-840h444v512L463-90q-13.6 14-32.187 16.5T395-81q-17-10-25.5-27.5t-4.2-36.5L404-328zm523-25v-427H231L105-481v93h373l-53 249zm193-487q24.75 0 42.375 17.625T881-780v392q0 24.75-17.625 42.375T821-328H688v-60h133v-392H688v-60zm-193 60v427z" }))); };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
import React from 'react';
|
|
13
|
+
export var ThumbDownFill = function (props) { return (React.createElement("svg", __assign({ "aria-hidden": true, xmlns: "http://www.w3.org/2000/svg", width: 48, height: 48, viewBox: "0 -960 960 960" }, props),
|
|
14
|
+
React.createElement("path", { d: "M239-840h467v512L428-40l-33-26q-11-8-14.5-18t-3.5-23v-10l45-211H100q-23 0-41.5-18.5T40-388v-82q0-11 2.5-25.5T50-521l116-268q9-21 29.5-36t43.5-15m527 512v-512h114v512z" }))); };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
import React from 'react';
|
|
13
|
+
export var ThumbUp = function (props) { return (React.createElement("svg", __assign({ "aria-hidden": true, xmlns: "http://www.w3.org/2000/svg", width: 48, height: 48, viewBox: "0 -960 960 960" }, props),
|
|
14
|
+
React.createElement("path", { d: "M855-632q24 0 42 18t18 42v81.839q0 7.161 1.5 14.661T915-461L789-171q-8.878 21.25-29.595 36.125T716-120H272v-512l225-238q13.6-14 32.187-16.5T565-879q17 10 25.5 27.5t4.2 36.5L556-632zm-523 25v427h397l126-299v-93H482l53-249zM139-120q-24.75 0-42.375-17.625T79-180v-392q0-24.75 17.625-42.375T139-632h133v60H139v392h133v60zm193-60v-427z" }))); };
|
package/es/icons/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
1
|
+
export { ThumbUp } from './ThumbUp';
|
|
2
|
+
export { ThumbUpFill } from './thumbUpFill';
|
|
3
|
+
export { ThumbDown } from './ThumbDown';
|
|
4
|
+
export { ThumbDownFill } from './ThumbDownFill';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
import React from 'react';
|
|
13
|
+
export var ThumbUpFill = function (props) { return (React.createElement("svg", __assign({ "aria-hidden": true, xmlns: "http://www.w3.org/2000/svg", width: 48, height: 48, viewBox: "0 -960 960 960" }, props),
|
|
14
|
+
React.createElement("path", { d: "M860-632q23 0 41.5 18.5T920-572v82q0 11-2.5 25.5T910-439L794-171q-9 21-29.5 36T721-120H314q-25 0-42.5-17.5T254-180v-428q0-11 4.5-22t12.5-19l207-218q14-14 33.5-17t36.5 7 25.5 28 4.5 37l-38 180zM137-120q-23 0-40-17t-17-40v-398q0-23 17-40t40-17 40 17 17 40v398q0 23-17 40t-40 17" }))); };
|
package/es/index.js
CHANGED
package/lib/Animation.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.Animation = void 0;
|
|
30
|
+
var lottie_web_1 = __importDefault(require("lottie-web"));
|
|
31
|
+
var react_1 = __importStar(require("react"));
|
|
32
|
+
var highFiveAnimation_1 = __importDefault(require("./highFiveAnimation"));
|
|
33
|
+
var Animation = function () {
|
|
34
|
+
var containerRef = (0, react_1.useRef)(null);
|
|
35
|
+
(0, react_1.useEffect)(function () {
|
|
36
|
+
if (containerRef.current) {
|
|
37
|
+
lottie_web_1.default.loadAnimation({
|
|
38
|
+
container: containerRef.current,
|
|
39
|
+
renderer: 'svg',
|
|
40
|
+
loop: false,
|
|
41
|
+
autoplay: true,
|
|
42
|
+
animationData: highFiveAnimation_1.default,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}, []);
|
|
46
|
+
return (react_1.default.createElement("div", { ref: containerRef, style: { width: '180px', height: '180px' } }));
|
|
47
|
+
};
|
|
48
|
+
exports.Animation = Animation;
|
package/lib/Feedback.js
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.Feedback = void 0;
|
|
30
|
+
var react_1 = __importStar(require("react"));
|
|
31
|
+
var react_dom_1 = require("react-dom");
|
|
32
|
+
var Animation_1 = require("./Animation");
|
|
33
|
+
var texts_1 = require("./i18n/texts");
|
|
34
|
+
var FeedbackThumbs_1 = require("./FeedbackThumbs");
|
|
35
|
+
var classnames_1 = __importDefault(require("classnames"));
|
|
36
|
+
var FeedbackExpanded_1 = require("./FeedbackExpanded");
|
|
37
|
+
var uuid_1 = require("uuid");
|
|
38
|
+
var Feedback = function (_a) {
|
|
39
|
+
var _b;
|
|
40
|
+
var headingLevel = _a.headingLevel, _c = _a.locale, locale = _c === void 0 ? 'nb' : _c, onThumbClick = _a.onThumbClick, onFeedbackSend = _a.onFeedbackSend, bgColor = _a.bgColor, bgDarkmodeColor = _a.bgDarkmodeColor, contactLink = _a.contactLink;
|
|
41
|
+
var feedbackSentRef = (0, react_1.useRef)();
|
|
42
|
+
var expandedRef = (0, react_1.useRef)();
|
|
43
|
+
var _d = (0, react_1.useState)(), feedbackThumbClicked = _d[0], setFeedbackThumbClicked = _d[1];
|
|
44
|
+
var _e = (0, react_1.useState)(false), expanded = _e[0], setExpanded = _e[1];
|
|
45
|
+
var _f = (0, react_1.useState)(false), feedbackSent = _f[0], setFeedbackSent = _f[1];
|
|
46
|
+
var headingId = (0, react_1.useRef)((0, uuid_1.v4)()).current;
|
|
47
|
+
var feedbackClassnames = (0, classnames_1.default)('ffe-feedback', (_b = {},
|
|
48
|
+
_b["ffe-feedback--bg-".concat(bgColor)] = bgColor,
|
|
49
|
+
_b["ffe-feedback--dm-bg-".concat(bgDarkmodeColor)] = bgDarkmodeColor,
|
|
50
|
+
_b));
|
|
51
|
+
var handleThumbClicked = function (thumb) {
|
|
52
|
+
var _a;
|
|
53
|
+
setFeedbackThumbClicked(thumb);
|
|
54
|
+
(0, react_dom_1.flushSync)(function () {
|
|
55
|
+
setExpanded(function (prevState) { return !prevState; });
|
|
56
|
+
});
|
|
57
|
+
(_a = expandedRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
58
|
+
onThumbClick(thumb);
|
|
59
|
+
};
|
|
60
|
+
var handleFeedbackSent = function (feedbackText) {
|
|
61
|
+
var _a;
|
|
62
|
+
(0, react_dom_1.flushSync)(function () {
|
|
63
|
+
setFeedbackSent(true);
|
|
64
|
+
});
|
|
65
|
+
(_a = feedbackSentRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
66
|
+
onFeedbackSend(feedbackText);
|
|
67
|
+
};
|
|
68
|
+
if (feedbackSent) {
|
|
69
|
+
return (react_1.default.createElement("div", { className: feedbackClassnames },
|
|
70
|
+
react_1.default.createElement("div", { className: "ffe-feedback__content" },
|
|
71
|
+
react_1.default.createElement("h".concat(headingLevel), {
|
|
72
|
+
ref: feedbackSentRef,
|
|
73
|
+
tabIndex: -1,
|
|
74
|
+
className: 'ffe-h4',
|
|
75
|
+
}, texts_1.texts[locale].FEEDBACK_SENT_HEADING),
|
|
76
|
+
react_1.default.createElement(Animation_1.Animation, null))));
|
|
77
|
+
}
|
|
78
|
+
if (expanded) {
|
|
79
|
+
return (react_1.default.createElement("div", { className: feedbackClassnames },
|
|
80
|
+
react_1.default.createElement("div", { className: "ffe-feedback__content" },
|
|
81
|
+
react_1.default.createElement("h".concat(headingLevel), { ref: expandedRef, tabIndex: -1, className: 'ffe-h5' }, feedbackThumbClicked === 'THUMB_UP'
|
|
82
|
+
? texts_1.texts[locale].FEEDBACK_GOOD
|
|
83
|
+
: texts_1.texts[locale].FEEDBACK_IMPROVE),
|
|
84
|
+
react_1.default.createElement(FeedbackExpanded_1.FeedbackExpanded, { locale: locale, onSend: handleFeedbackSent, onCancel: function () { return setExpanded(false); }, contactLink: contactLink }))));
|
|
85
|
+
}
|
|
86
|
+
return (react_1.default.createElement("div", { className: feedbackClassnames },
|
|
87
|
+
react_1.default.createElement("div", { className: "ffe-feedback__content" },
|
|
88
|
+
react_1.default.createElement("h".concat(headingLevel), { id: headingId, className: 'ffe-h4' }, texts_1.texts[locale].FEEDBACK_NOT_SENT_HEADING),
|
|
89
|
+
react_1.default.createElement(FeedbackThumbs_1.FeedbackThumbs, { onClick: handleThumbClicked, locale: locale, headingId: headingId }))));
|
|
90
|
+
};
|
|
91
|
+
exports.Feedback = Feedback;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.FeedbackExpanded = void 0;
|
|
27
|
+
var react_1 = __importStar(require("react"));
|
|
28
|
+
var ffe_core_react_1 = require("@sb1/ffe-core-react");
|
|
29
|
+
var texts_1 = require("./i18n/texts");
|
|
30
|
+
var ffe_form_react_1 = require("@sb1/ffe-form-react");
|
|
31
|
+
var ffe_buttons_react_1 = require("@sb1/ffe-buttons-react");
|
|
32
|
+
var FeedbackExpanded = function (_a) {
|
|
33
|
+
var _b;
|
|
34
|
+
var locale = _a.locale, onSend = _a.onSend, onCancel = _a.onCancel, contactLink = _a.contactLink;
|
|
35
|
+
var _c = (0, react_1.useState)(), feedbackText = _c[0], setFeedbackText = _c[1];
|
|
36
|
+
var _d = (0, react_1.useState)(), fieldMessage = _d[0], setFieldMessage = _d[1];
|
|
37
|
+
var validateMessage = function () {
|
|
38
|
+
if (feedbackText && (feedbackText === null || feedbackText === void 0 ? void 0 : feedbackText.length) >= 3) {
|
|
39
|
+
setFieldMessage(undefined);
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
setFieldMessage(texts_1.texts[locale].FEEDBACK_SHORT);
|
|
43
|
+
return false;
|
|
44
|
+
};
|
|
45
|
+
var contactLinkElement = contactLink ? (react_1.default.createElement(ffe_buttons_react_1.TertiaryButton, { as: "a", href: contactLink.url, className: "ffe-feedback__link-button", onClick: contactLink === null || contactLink === void 0 ? void 0 : contactLink.onClick }, (_b = contactLink.linkText) !== null && _b !== void 0 ? _b : texts_1.texts[locale].FEEDBACK_LINKTEXT)) : null;
|
|
46
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
47
|
+
react_1.default.createElement(ffe_core_react_1.Paragraph, null,
|
|
48
|
+
texts_1.texts[locale].FEEDBACK_ANSWER,
|
|
49
|
+
contactLinkElement && texts_1.texts[locale].QUESTIONS,
|
|
50
|
+
contactLinkElement),
|
|
51
|
+
react_1.default.createElement(ffe_core_react_1.Paragraph, null, texts_1.texts[locale].FEEDBACK_SENSITIVE),
|
|
52
|
+
react_1.default.createElement(ffe_form_react_1.InputGroup, { className: "ffe-feedback__textarea-container", fieldMessage: fieldMessage },
|
|
53
|
+
react_1.default.createElement(ffe_form_react_1.TextArea, { "data-testid": "feedbackTextArea", onChange: function (event) { return setFeedbackText(event.target.value); }, value: feedbackText, rows: 6, maxLength: 1000, id: "textarea-feedback", onBlur: validateMessage, title: texts_1.texts[locale].FEEDBACK_IMPROVE })),
|
|
54
|
+
react_1.default.createElement(ffe_buttons_react_1.ButtonGroup, { className: "ffe-feedback__button-group" },
|
|
55
|
+
react_1.default.createElement(ffe_buttons_react_1.ActionButton, { onClick: function () {
|
|
56
|
+
if (validateMessage() && feedbackText) {
|
|
57
|
+
onSend(feedbackText);
|
|
58
|
+
}
|
|
59
|
+
} }, texts_1.texts[locale].FEEDBACK_BUTTON_SEND),
|
|
60
|
+
react_1.default.createElement(ffe_buttons_react_1.TertiaryButton, { onClick: onCancel }, texts_1.texts[locale].FEEDBACK_BUTTON_CANCEL))));
|
|
61
|
+
};
|
|
62
|
+
exports.FeedbackExpanded = FeedbackExpanded;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.FeedbackThumbs = void 0;
|
|
7
|
+
var react_1 = __importDefault(require("react"));
|
|
8
|
+
var texts_1 = require("./i18n/texts");
|
|
9
|
+
var icons_1 = require("./icons");
|
|
10
|
+
var FeedbackThumbs = function (_a) {
|
|
11
|
+
var locale = _a.locale, onClick = _a.onClick, headingId = _a.headingId;
|
|
12
|
+
return (react_1.default.createElement("div", null,
|
|
13
|
+
react_1.default.createElement("button", { "aria-label": texts_1.texts[locale].ARIA_LABEL_THUMB_UP, "aria-describedby": headingId, className: "ffe-feedback__thumb", onClick: function () { return onClick('THUMB_UP'); }, type: "button" },
|
|
14
|
+
react_1.default.createElement(icons_1.ThumbUp, { className: "ffe-feedback__thumb-icon" }),
|
|
15
|
+
react_1.default.createElement(icons_1.ThumbUpFill, { className: "ffe-feedback__thumb-icon--fill" })),
|
|
16
|
+
react_1.default.createElement("button", { "aria-label": texts_1.texts[locale].ARIA_LABEL_THUMB_DOWN, "aria-describedby": headingId, className: "ffe-feedback__thumb", onClick: function () { return onClick('THUMB_DOWN'); }, type: "button" },
|
|
17
|
+
react_1.default.createElement(icons_1.ThumbDown, { className: "ffe-feedback__thumb-icon" }),
|
|
18
|
+
react_1.default.createElement(icons_1.ThumbDownFill, { className: "ffe-feedback__thumb-icon--fill" }))));
|
|
19
|
+
};
|
|
20
|
+
exports.FeedbackThumbs = FeedbackThumbs;
|