@sb1/ffe-feedback-react 1.1.0

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/es/i18n/en.js ADDED
@@ -0,0 +1,16 @@
1
+ export default {
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
+ };
@@ -0,0 +1,8 @@
1
+ import en from './en';
2
+ import nn from './nn';
3
+ import nb from './nb';
4
+ export default {
5
+ nb: nb,
6
+ nn: nn,
7
+ en: en
8
+ };
package/es/i18n/nb.js ADDED
@@ -0,0 +1,16 @@
1
+ export default {
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 ADDED
@@ -0,0 +1,16 @@
1
+ export default {
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/index.js ADDED
@@ -0,0 +1,4 @@
1
+ import Feedback from './feedback';
2
+ import { Thumbs } from './feedback-thumbs';
3
+ export { Thumbs };
4
+ export default Feedback;
@@ -0,0 +1,32 @@
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.Animation = void 0;
8
+ var _lottieWeb = _interopRequireDefault(require("lottie-web"));
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _highFiveAnimation = _interopRequireDefault(require("./high-five-animation.js"));
11
+ 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); }
12
+ 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 && Object.prototype.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; }
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+ var Animation = exports.Animation = function Animation() {
15
+ var containerRef = (0, _react.useRef)();
16
+ (0, _react.useEffect)(function () {
17
+ _lottieWeb.default.loadAnimation({
18
+ container: containerRef.current,
19
+ renderer: 'svg',
20
+ loop: false,
21
+ autoplay: true,
22
+ animationData: _highFiveAnimation.default
23
+ });
24
+ }, []);
25
+ return /*#__PURE__*/_react.default.createElement("div", {
26
+ ref: containerRef,
27
+ style: {
28
+ width: '180px',
29
+ height: '180px'
30
+ }
31
+ });
32
+ };
@@ -0,0 +1,94 @@
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 = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _ffeCoreReact = require("@sb1/ffe-core-react");
10
+ var _i18n = _interopRequireDefault(require("./i18n/i18n"));
11
+ var _ffeFormReact = require("@sb1/ffe-form-react");
12
+ var _ffeButtonsReact = require("@sb1/ffe-buttons-react");
13
+ var _propTypes = require("prop-types");
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+ 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); }
16
+ 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 && Object.prototype.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; }
17
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
18
+ 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."); }
19
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
20
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
21
+ 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; } }
22
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
23
+ var FeedbackExpanded = function FeedbackExpanded(_ref) {
24
+ var language = _ref.language,
25
+ onSend = _ref.onSend,
26
+ onCancel = _ref.onCancel,
27
+ contactLink = _ref.contactLink;
28
+ var _useState = (0, _react.useState)(''),
29
+ _useState2 = _slicedToArray(_useState, 2),
30
+ feedbackText = _useState2[0],
31
+ setFeedbackText = _useState2[1];
32
+ var _useState3 = (0, _react.useState)(undefined),
33
+ _useState4 = _slicedToArray(_useState3, 2),
34
+ fieldMessage = _useState4[0],
35
+ setFieldMessage = _useState4[1];
36
+ var validateMessage = function validateMessage() {
37
+ if (feedbackText.length < 3) {
38
+ setFieldMessage(_i18n.default[language].FEEDBACK_SHORT);
39
+ return false;
40
+ }
41
+ setFieldMessage(undefined);
42
+ return true;
43
+ };
44
+ var isValidContactLink = contactLink && (contactLink.url || contactLink.onClick);
45
+ var getLinkButton = function getLinkButton() {
46
+ var _contactLink$linkText;
47
+ return /*#__PURE__*/_react.default.createElement(_ffeButtonsReact.TertiaryButton, {
48
+ element: 'a',
49
+ href: contactLink.url,
50
+ className: "ffe-feedback__link-button",
51
+ onClick: contactLink.onClick
52
+ }, (_contactLink$linkText = contactLink.linkText) !== null && _contactLink$linkText !== void 0 ? _contactLink$linkText : _i18n.default[language].FEEDBACK_LINKTEXT);
53
+ };
54
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_ffeCoreReact.Paragraph, null, _i18n.default[language].FEEDBACK_ANSWER, isValidContactLink && _i18n.default[language].QUESTIONS, isValidContactLink && getLinkButton()), /*#__PURE__*/_react.default.createElement(_ffeCoreReact.Paragraph, null, _i18n.default[language].FEEDBACK_SENSITIVE), /*#__PURE__*/_react.default.createElement(_ffeFormReact.InputGroup, {
55
+ className: "ffe-feedback__textarea-container",
56
+ fieldMessage: fieldMessage
57
+ }, /*#__PURE__*/_react.default.createElement(_ffeFormReact.TextArea, {
58
+ "data-testid": "feedbackTextArea",
59
+ onChange: function onChange(event) {
60
+ return setFeedbackText(event.target.value);
61
+ },
62
+ value: feedbackText,
63
+ rows: 6,
64
+ maxLength: 1000,
65
+ id: "textarea-feedback",
66
+ onBlur: validateMessage,
67
+ title: _i18n.default[language].FEEDBACK_IMPROVE
68
+ })), /*#__PURE__*/_react.default.createElement(_ffeButtonsReact.ButtonGroup, {
69
+ className: "ffe-feedback__button-group"
70
+ }, /*#__PURE__*/_react.default.createElement(_ffeButtonsReact.ActionButton, {
71
+ onClick: function onClick() {
72
+ if (validateMessage()) {
73
+ onSend(feedbackText);
74
+ }
75
+ }
76
+ }, _i18n.default[language].FEEDBACK_BUTTON_SEND), /*#__PURE__*/_react.default.createElement(_ffeButtonsReact.TertiaryButton, {
77
+ onClick: onCancel
78
+ }, _i18n.default[language].FEEDBACK_BUTTON_CANCEL)));
79
+ };
80
+ var _default = exports.default = FeedbackExpanded;
81
+ FeedbackExpanded.propTypes = {
82
+ language: (0, _propTypes.oneOf)(['nb', 'nn', 'en']),
83
+ onSend: _propTypes.func.isRequired,
84
+ onCancel: _propTypes.func.isRequired,
85
+ contactLink: (0, _propTypes.shape)({
86
+ url: _propTypes.string,
87
+ linkText: _propTypes.string,
88
+ onClick: _propTypes.func
89
+ })
90
+ };
91
+ FeedbackExpanded.defaultProps = {
92
+ language: 'nb',
93
+ contactLink: null
94
+ };
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.Thumbs = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _ffeSymbolsReact = _interopRequireDefault(require("@sb1/ffe-symbols-react"));
9
+ var _i18n = _interopRequireDefault(require("./i18n/i18n"));
10
+ var _propTypes = require("prop-types");
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ var Thumbs = exports.Thumbs = {
13
+ UP: 'THUMB_UP',
14
+ DOWN: 'THUMB_DOWN'
15
+ };
16
+ var THUMB_SIZE = '2xl';
17
+ var FeedbackThumbs = function FeedbackThumbs(_ref) {
18
+ var language = _ref.language,
19
+ _onClick = _ref.onClick;
20
+ var handleMouseEnter = function handleMouseEnter(event) {
21
+ // eslint-disable-next-line no-param-reassign
22
+ event.target.className = "ffe-symbol ffe-symbol--filled-400 ffe-symbol--".concat(THUMB_SIZE);
23
+ };
24
+ var handleMouseLeave = function handleMouseLeave(event) {
25
+ // eslint-disable-next-line no-param-reassign
26
+ event.target.className = "ffe-symbol ffe-symbol--400 ffe-symbol--".concat(THUMB_SIZE);
27
+ };
28
+ return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("button", {
29
+ "aria-label": _i18n.default[language].ARIA_LABEL_THUMB_UP,
30
+ "aria-describedby": "feedback-heading",
31
+ className: "ffe-feedback__thumb",
32
+ onClick: function onClick() {
33
+ return _onClick(Thumbs.UP);
34
+ }
35
+ }, /*#__PURE__*/_react.default.createElement(_ffeSymbolsReact.default, {
36
+ onMouseEnter: handleMouseEnter,
37
+ onMouseLeave: handleMouseLeave,
38
+ size: THUMB_SIZE,
39
+ icon: "thumb_up"
40
+ })), /*#__PURE__*/_react.default.createElement("button", {
41
+ "aria-label": _i18n.default[language].ARIA_LABEL_THUMB_DOWN,
42
+ "aria-describedby": "feedback-heading",
43
+ className: "ffe-feedback__thumb",
44
+ onClick: function onClick() {
45
+ return _onClick(Thumbs.DOWN);
46
+ }
47
+ }, /*#__PURE__*/_react.default.createElement(_ffeSymbolsReact.default, {
48
+ onMouseEnter: handleMouseEnter,
49
+ onMouseLeave: handleMouseLeave,
50
+ size: THUMB_SIZE,
51
+ icon: "thumb_down"
52
+ })));
53
+ };
54
+ var _default = exports.default = FeedbackThumbs;
55
+ FeedbackThumbs.propTypes = {
56
+ language: (0, _propTypes.oneOf)(['nb', 'nn', 'en']),
57
+ onClick: _propTypes.func.isRequired
58
+ };
59
+ FeedbackThumbs.defaultProps = {
60
+ language: 'nb'
61
+ };
@@ -0,0 +1,114 @@
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.Feedback = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _ffeCoreReact = require("@sb1/ffe-core-react");
10
+ var _animation = require("./animation");
11
+ var _propTypes = require("prop-types");
12
+ var _i18n = _interopRequireDefault(require("./i18n/i18n"));
13
+ var _feedbackThumbs = _interopRequireWildcard(require("./feedback-thumbs"));
14
+ var _classnames = _interopRequireDefault(require("classnames"));
15
+ var _feedbackExpanded = _interopRequireDefault(require("./feedback-expanded"));
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+ 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); }
18
+ 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 && Object.prototype.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; }
19
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
20
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
21
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
22
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
23
+ 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."); }
24
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
25
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
26
+ 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; } }
27
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
28
+ var Feedback = exports.Feedback = function Feedback(_ref) {
29
+ var language = _ref.language,
30
+ onThumbClick = _ref.onThumbClick,
31
+ onFeedbackSend = _ref.onFeedbackSend,
32
+ bgColor = _ref.bgColor,
33
+ bgDarkmodeColor = _ref.bgDarkmodeColor,
34
+ contactLink = _ref.contactLink;
35
+ var _useState = (0, _react.useState)(),
36
+ _useState2 = _slicedToArray(_useState, 2),
37
+ feedbackThumbClicked = _useState2[0],
38
+ setFeedbackThumbClicked = _useState2[1];
39
+ var _useState3 = (0, _react.useState)(false),
40
+ _useState4 = _slicedToArray(_useState3, 2),
41
+ expanded = _useState4[0],
42
+ setExpanded = _useState4[1];
43
+ var _useState5 = (0, _react.useState)(false),
44
+ _useState6 = _slicedToArray(_useState5, 2),
45
+ feedbackSent = _useState6[0],
46
+ setFeedbackSent = _useState6[1];
47
+ var feedbackClassnames = (0, _classnames.default)('ffe-feedback', _defineProperty(_defineProperty({}, "ffe-feedback--bg-".concat(bgColor), bgColor), "ffe-feedback--dm-bg-".concat(bgDarkmodeColor), bgDarkmodeColor));
48
+ var handleThumbClicked = function handleThumbClicked(thumb) {
49
+ setFeedbackThumbClicked(thumb);
50
+ setExpanded(!expanded);
51
+ onThumbClick(thumb);
52
+ };
53
+ var handleFeedbackSent = function handleFeedbackSent(feedbackText) {
54
+ setFeedbackSent(true);
55
+ onFeedbackSend(feedbackText);
56
+ };
57
+ if (feedbackSent) {
58
+ return /*#__PURE__*/_react.default.createElement("div", {
59
+ className: feedbackClassnames
60
+ }, /*#__PURE__*/_react.default.createElement("div", {
61
+ className: "ffe-feedback__content"
62
+ }, /*#__PURE__*/_react.default.createElement(_ffeCoreReact.Heading2, {
63
+ lookLike: 4
64
+ }, _i18n.default[language].FEEDBACK_SENT_HEADING), /*#__PURE__*/_react.default.createElement(_animation.Animation, null)));
65
+ }
66
+ if (expanded) {
67
+ return /*#__PURE__*/_react.default.createElement("div", {
68
+ className: feedbackClassnames
69
+ }, /*#__PURE__*/_react.default.createElement("div", {
70
+ className: "ffe-feedback__content"
71
+ }, feedbackThumbClicked === _feedbackThumbs.Thumbs.UP ? /*#__PURE__*/_react.default.createElement(_ffeCoreReact.Heading2, {
72
+ lookLike: 5
73
+ }, _i18n.default[language].FEEDBACK_GOOD) : /*#__PURE__*/_react.default.createElement(_ffeCoreReact.Heading2, {
74
+ lookLike: 5
75
+ }, _i18n.default[language].FEEDBACK_IMPROVE), /*#__PURE__*/_react.default.createElement(_feedbackExpanded.default, {
76
+ language: language,
77
+ onSend: handleFeedbackSent,
78
+ onCancel: function onCancel() {
79
+ return setExpanded(false);
80
+ },
81
+ contactLink: contactLink
82
+ })));
83
+ }
84
+ return /*#__PURE__*/_react.default.createElement("div", {
85
+ className: feedbackClassnames
86
+ }, /*#__PURE__*/_react.default.createElement("div", {
87
+ className: "ffe-feedback__content"
88
+ }, /*#__PURE__*/_react.default.createElement(_ffeCoreReact.Heading2, {
89
+ id: "feedback-heading",
90
+ lookLike: 4
91
+ }, _i18n.default[language].FEEDBACK_NOT_SENT_HEADING), /*#__PURE__*/_react.default.createElement(_feedbackThumbs.default, {
92
+ onClick: handleThumbClicked,
93
+ language: language
94
+ })));
95
+ };
96
+ var _default = exports.default = Feedback;
97
+ Feedback.propTypes = {
98
+ language: (0, _propTypes.oneOf)(['nb', 'nn', 'en']),
99
+ onThumbClick: _propTypes.func.isRequired,
100
+ onFeedbackSend: _propTypes.func.isRequired,
101
+ /** Set the background color of the feedback container. Accepts ffe-color variables without the "ffe-farge-" bit of the name. */
102
+ bgColor: (0, _propTypes.oneOf)(['hvit', 'frost-30', 'sand-30', 'syrin-30', 'vann-30']),
103
+ /** Set the background color of the feedback container in darkmode */
104
+ bgDarkmodeColor: (0, _propTypes.oneOf)(['svart', 'natt']),
105
+ contactLink: (0, _propTypes.shape)({
106
+ url: _propTypes.string,
107
+ linkText: _propTypes.string,
108
+ onClick: _propTypes.func
109
+ })
110
+ };
111
+ Feedback.defaultProps = {
112
+ language: 'nb',
113
+ contactLink: null
114
+ };