@sb1/ffe-feedback-react 6.0.30 → 6.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/Feedback.js CHANGED
@@ -8,10 +8,9 @@ import { HighFive } from './HighFive';
8
8
  export var Feedback = function (_a) {
9
9
  var _b;
10
10
  var _c;
11
- var _d = _a.headingLevel, headingLevel = _d === void 0 ? 5 : _d, _e = _a.locale, locale = _e === void 0 ? 'nb' : _e, onThumbClick = _a.onThumbClick, onFeedbackSend = _a.onFeedbackSend, bgColor = _a.bgColor, contactLink = _a.contactLink, texts = _a.texts, className = _a.className;
11
+ var _d = _a.headingLevel, headingLevel = _d === void 0 ? 4 : _d, _e = _a.locale, locale = _e === void 0 ? 'nb' : _e, onThumbClick = _a.onThumbClick, onFeedbackSend = _a.onFeedbackSend, bgColor = _a.bgColor, contactLink = _a.contactLink, texts = _a.texts, className = _a.className, _f = _a.includeConsent, includeConsent = _f === void 0 ? false : _f;
12
12
  var feedbackSentRef = useRef(null);
13
13
  var expandedRef = useRef(null);
14
- var _f = useState(), feedbackThumbClicked = _f[0], setFeedbackThumbClicked = _f[1];
15
14
  var _g = useState(false), expanded = _g[0], setExpanded = _g[1];
16
15
  var _h = useState(false), feedbackSent = _h[0], setFeedbackSent = _h[1];
17
16
  var headingId = useId();
@@ -20,20 +19,21 @@ export var Feedback = function (_a) {
20
19
  _b), className);
21
20
  var handleThumbClicked = function (thumb) {
22
21
  var _a;
23
- setFeedbackThumbClicked(thumb);
24
22
  flushSync(function () {
25
23
  setExpanded(true);
26
24
  });
27
25
  (_a = expandedRef.current) === null || _a === void 0 ? void 0 : _a.focus();
28
26
  onThumbClick(thumb);
29
27
  };
30
- var handleFeedbackSent = function (feedbackText) {
28
+ var handleFeedbackSent = function (feedbackText, consentGiven) {
31
29
  var _a;
32
30
  flushSync(function () {
33
31
  setFeedbackSent(true);
34
32
  });
35
33
  (_a = feedbackSentRef.current) === null || _a === void 0 ? void 0 : _a.focus();
36
- onFeedbackSend(feedbackText);
34
+ if (feedbackText && feedbackText.length > 0) {
35
+ onFeedbackSend(feedbackText, consentGiven);
36
+ }
37
37
  };
38
38
  var renderHeading = function (level, text, options) {
39
39
  var _a;
@@ -54,11 +54,9 @@ export var Feedback = function (_a) {
54
54
  }
55
55
  if (expanded) {
56
56
  return (React.createElement("div", { className: feedbackClassnames },
57
- React.createElement("div", { className: "ffe-feedback__content" },
58
- renderHeading(headingLevel, feedbackThumbClicked === 'THUMB_UP'
59
- ? txt[locale].FEEDBACK_GOOD
60
- : txt[locale].FEEDBACK_IMPROVE, { ref: expandedRef, tabIndex: -1 }),
61
- React.createElement(FeedbackExpanded, { locale: locale, onSend: handleFeedbackSent, onCancel: function () { return setExpanded(false); }, contactLink: contactLink }))));
57
+ React.createElement("div", { className: "ffe-feedback__expanded" },
58
+ renderHeading(headingLevel, txt[locale].FEEDBACK_SENT_HEADING, { ref: expandedRef, tabIndex: -1 }),
59
+ React.createElement(FeedbackExpanded, { locale: locale, handleFeedback: handleFeedbackSent, contactLink: contactLink, includeConsent: includeConsent }))));
62
60
  }
63
61
  return (React.createElement("div", { className: feedbackClassnames },
64
62
  React.createElement("div", { className: "ffe-feedback__content" },
@@ -1,38 +1,30 @@
1
1
  import React, { useState } from 'react';
2
- import { Paragraph } from '@sb1/ffe-core-react';
2
+ import { LinkText, Paragraph } from '@sb1/ffe-core-react';
3
3
  import { txt } from './i18n/texts';
4
- import { InputGroup, TextArea } from '@sb1/ffe-form-react';
4
+ import { InputGroup, TextArea, Checkbox } from '@sb1/ffe-form-react';
5
5
  import { ActionButton, ButtonGroup, TertiaryButton, } from '@sb1/ffe-buttons-react';
6
6
  export var FeedbackExpanded = function (_a) {
7
7
  var _b;
8
- var locale = _a.locale, onSend = _a.onSend, onCancel = _a.onCancel, contactLink = _a.contactLink;
9
- var _c = useState(), feedbackText = _c[0], setFeedbackText = _c[1];
10
- var _d = useState(), fieldMessage = _d[0], setFieldMessage = _d[1];
11
- var validateMessage = function () {
12
- if (feedbackText && (feedbackText === null || feedbackText === void 0 ? void 0 : feedbackText.length) >= 3) {
13
- setFieldMessage(undefined);
14
- return true;
15
- }
16
- setFieldMessage(txt[locale].FEEDBACK_SHORT);
17
- return false;
18
- };
19
- var contactLinkElement = contactLink ? (React.createElement(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 : txt[locale].FEEDBACK_LINK_TEXT)) : null;
8
+ var locale = _a.locale, handleFeedback = _a.handleFeedback, contactLink = _a.contactLink, _c = _a.includeConsent, includeConsent = _c === void 0 ? false : _c;
9
+ var _d = useState(), feedbackText = _d[0], setFeedbackText = _d[1];
10
+ var _e = useState(false), consentGiven = _e[0], setConsentGiven = _e[1];
11
+ var contactLinkElement = contactLink ? (React.createElement(LinkText, { 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 : txt[locale].FEEDBACK_LINK_TEXT)) : null;
20
12
  return (React.createElement(React.Fragment, null,
21
13
  React.createElement(Paragraph, null,
22
14
  txt[locale].FEEDBACK_ANSWER,
23
15
  contactLinkElement && txt[locale].QUESTIONS,
24
16
  contactLinkElement),
25
- React.createElement(Paragraph, null, txt[locale].FEEDBACK_SENSITIVE),
26
- React.createElement(InputGroup, { className: "ffe-feedback__textarea-container", fieldMessage: fieldMessage, label:
27
- // htmlFor kommer fra InputGroup
28
- // eslint-disable-next-line jsx-a11y/label-has-for
29
- React.createElement("label", { className: "ffe-screenreader-only" }, txt[locale].FEEDBACK_IMPROVE) },
30
- React.createElement(TextArea, { "data-testid": "feedbackTextArea", onChange: function (event) { return setFeedbackText(event.target.value); }, value: feedbackText, rows: 6, maxLength: 1000, onBlur: validateMessage })),
31
- React.createElement(ButtonGroup, { className: "ffe-feedback__button-group", ariaLabel: txt[locale].FEEDBACK_BUTTON_GROUP },
17
+ React.createElement(InputGroup, { className: "ffe-feedback__textarea-container", label: txt[locale].FEEDBACK_IMPROVE, description: txt[locale].FEEDBACK_SENSITIVE },
18
+ React.createElement(TextArea, { "data-testid": "feedbackTextArea", onChange: function (event) { return setFeedbackText(event.target.value); }, value: feedbackText, rows: 6, maxLength: 1000, className: "ffe-feedback__textarea" })),
19
+ includeConsent && (React.createElement("div", { className: "ffe-feedback__consent" },
20
+ React.createElement(Checkbox, { checked: consentGiven, onChange: function (event) {
21
+ return setConsentGiven(event.target.checked);
22
+ } }, txt[locale].FEEDBACK_CONSENT))),
23
+ React.createElement(ButtonGroup, { className: "ffe-feedback__button-group", ariaLabel: txt[locale].FEEDBACK_BUTTON_GROUP, thin: true },
32
24
  React.createElement(ActionButton, { onClick: function () {
33
- if (validateMessage() && feedbackText) {
34
- onSend(feedbackText);
25
+ if (feedbackText) {
26
+ handleFeedback(feedbackText, includeConsent ? consentGiven : undefined);
35
27
  }
36
28
  } }, txt[locale].FEEDBACK_BUTTON_SEND),
37
- React.createElement(TertiaryButton, { onClick: onCancel }, txt[locale].FEEDBACK_BUTTON_CANCEL))));
29
+ React.createElement(TertiaryButton, { onClick: function () { return handleFeedback(); } }, txt[locale].FEEDBACK_BUTTON_CANCEL))));
38
30
  };
@@ -1,10 +1,14 @@
1
1
  import React from 'react';
2
2
  import { txt } from './i18n/texts';
3
+ import { SecondaryButton } from '@sb1/ffe-buttons-react';
4
+ import { Icon } from '@sb1/ffe-icons-react';
5
+ var thumbUpIconLg = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgLTk2MCA5NjAgOTYwIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjxwYXRoIGQ9Ik04MzUuMTMtNjE2LjJxMjQuNjQgMCA0My42IDE4Ljk2dDE4Ljk2IDQzLjZ2NjUuNnEwIDYuMzktLjA1IDEzLjM4LS4wNSA2Ljk5LTIuNDYgMTMuMjJMNzc3LjgzLTE4Ny4xM3EtOC42MSAxOS44LTI4Ljg2IDMzLjQ2UTcyOC43MS0xNDAgNzA3LjE5LTE0MEgyODQuNjd2LTQ3Ni4ybDIyNS4yNS0yMzAuN3ExMC45OS0xMS4yNSAyNS45Mi0xMy41NiAxNC45My0yLjMxIDI4LjM5IDUuMjYgMTMuMzEgNy41NiAxOS43OSAyMS41MSA2LjQ5IDEzLjk1IDIuOTggMjkuMUw1NDYuOTctNjE2LjJoMjg4LjE2Wm0tNTAwLjIxIDIxLjMzdjQwNC42MWgzNzguNzdxMy45OCAwIDguNTMtMi4zIDQuNTUtMi4zMSA2Ljg2LTcuN2wxMTguMzYtMjc5LjMzdi03NC4wNXEwLTUuMTMtMy41OS04LjcyLTMuNTktMy41OS04LjcyLTMuNTlINDg0LjkybDQ5LjQ5LTIzMy4xOC0xOTkuNDkgMjA0LjI2Wk0xNjIuMTUtMTQwcS0yNS44IDAtNDQuMTgtMTguNDh0LTE4LjM4LTQ0LjA5di0zNTEuMDdxMC0yNS42MSAxOC4zOC00NC4wOSAxOC4zOC0xOC40NyA0NC4xOC0xOC40N2gxMjIuNTJ2NTAuMjVIMTYyLjE1cS01LjM4IDAtOC44NCAzLjU5dC0zLjQ2IDguNzJ2MzUxLjA3cTAgNS4zOSAzLjQ2IDguODV0OC44NCAzLjQ2aDEyMi41MlYtMTQwSDE2Mi4xNVptMTcyLjc3LTUwLjI2di00MDQuNjEgNDA0LjYxWiIvPjwvc3ZnPg==';
6
+ var thumbDownIconLg = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgLTk2MCA5NjAgOTYwIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjxwYXRoIGQ9Ik0xMjUuMTMtMzQzLjhxLTI1IDAtNDMuNzgtMTguOTZ0LTE4Ljc4LTQzLjZ2LTY1LjZxMC02LjM5LS4wOC0xMy4zOC0uMDgtNi45OSAyLjMzLTEzLjIybDExNy42MS0yNzQuMzFxOC4yNi0xOS43NiAyOC41Ni0zMy40NFEyMzEuMjktODIwIDI1Mi44MS04MjBoNDIyLjUydjQ3Ni4yTDQ1MC4wOC0xMTMuMXEtMTAuOTkgMTEuMjUtMjUuOTIgMTMuNTYtMTQuOTMgMi4zMS0yOC4zOS01LjI2LTEzLjMxLTcuNTYtMTkuNzktMjEuNTEtNi40OS0xMy45NS0yLjk4LTI5LjFsNDAuMDMtMTg4LjM5aC0yODcuOVptNDk5Ljk1LTIxLjMzdi00MDQuNjFIMjQ2LjMxcS0zLjk4IDAtOC41MyAyLjMtNC41NSAyLjMxLTYuODYgNy43bC0xMTguMSAyNzkuMzN2NzQuMDVxMCA1LjEzIDMuNDYgOC43MiAzLjQ2IDMuNTkgOC44NSAzLjU5aDM0OS45NWwtNDkuNDkgMjMzLjE4IDE5OS40OS0yMDQuMjZaTTc5Ny44NS04MjBxMjUuOCAwIDQ0LjE4IDE4LjQ4dDE4LjM4IDQ0LjA5djM1MS4wN3EwIDI1LjYxLTE4LjM4IDQ0LjA5LTE4LjM4IDE4LjQ3LTQ0LjE4IDE4LjQ3SDY3NS4zM3YtNTAuMjVoMTIyLjUycTUuMzggMCA4Ljg0LTMuNTl0My40Ni04Ljcydi0zNTEuMDdxMC01LjM5LTMuNDYtOC44NXQtOC44NC0zLjQ2SDY3NS4zM1YtODIwaDEyMi41MlptLTE3Mi43NyA1MC4yNnY0MDQuNjEtNDA0LjYxWiIvPjwvc3ZnPg==';
3
7
  export var FeedbackThumbs = function (_a) {
4
8
  var locale = _a.locale, onClick = _a.onClick, headingId = _a.headingId;
5
- return (React.createElement("div", null,
6
- React.createElement("button", { "aria-label": txt[locale].ARIA_LABEL_THUMB_UP, "aria-describedby": headingId, className: "ffe-feedback__thumb", onClick: function () { return onClick('THUMB_UP'); }, type: "button" },
7
- React.createElement("span", { className: "ffe-icons ffe-icons--xl" })),
8
- React.createElement("button", { "aria-label": txt[locale].ARIA_LABEL_THUMB_DOWN, "aria-describedby": headingId, className: "ffe-feedback__thumb ffe-feedback__thumb--down", onClick: function () { return onClick('THUMB_DOWN'); }, type: "button" },
9
- React.createElement("span", { className: "ffe-icons ffe-icons--xl" }))));
9
+ return (React.createElement("div", { className: "ffe-feedback__thumbs" },
10
+ React.createElement(SecondaryButton, { "aria-label": txt[locale].ARIA_LABEL_THUMB_UP, "aria-describedby": headingId, onClick: function () { return onClick('THUMB_UP'); }, iconOnly: true, size: 'lg' },
11
+ React.createElement(Icon, { size: "lg", fileUrl: thumbUpIconLg })),
12
+ React.createElement(SecondaryButton, { "aria-label": txt[locale].ARIA_LABEL_THUMB_DOWN, "aria-describedby": headingId, onClick: function () { return onClick('THUMB_DOWN'); }, iconOnly: true, size: 'lg' },
13
+ React.createElement(Icon, { size: "lg", fileUrl: thumbDownIconLg }))));
10
14
  };
package/es/i18n/en.js CHANGED
@@ -4,14 +4,12 @@ export var en = {
4
4
  FEEDBACK_NOT_SENT_HEADING: 'What do you think of this page? ',
5
5
  FEEDBACK_SENT_HEADING: 'Thank you!',
6
6
  FEEDBACK_BUTTON_SEND: 'Send feedback',
7
- FEEDBACK_BUTTON_CANCEL: 'Cancel',
7
+ FEEDBACK_BUTTON_CANCEL: 'Finish',
8
8
  FEEDBACK_BUTTON_GROUP: 'Button group',
9
- FEEDBACK_GOOD: 'What was good?',
10
- FEEDBACK_IMPROVE: 'How can we improve?',
9
+ FEEDBACK_IMPROVE: 'Do you have anything else on your mind?',
11
10
  FEEDBACK_ANSWER: 'Your feedback will be used to improve this site and will not be replied.',
11
+ FEEDBACK_CONSENT: 'I consent to be contacted regarding my feedback.',
12
12
  QUESTIONS: ' If you have questions, ',
13
13
  FEEDBACK_LINK_TEXT: 'contact customer services.',
14
- FEEDBACK_SENSITIVE: 'Please do not send sensitive or personal information, for example: Health information, political affiliation, social security number, name, email or telephone number.',
15
- FEEDBACK_SHORT: 'Feedback must be at least three characters.',
16
- NATIVE_VIEW_HEADING: 'Customer service',
14
+ FEEDBACK_SENSITIVE: 'Please do not send sensitive or personal information, for example: Health information, personal identification number, name or contact information.',
17
15
  };
package/es/i18n/nb.js CHANGED
@@ -4,14 +4,12 @@ export var nb = {
4
4
  FEEDBACK_NOT_SENT_HEADING: 'Hva synes du om denne siden? ',
5
5
  FEEDBACK_SENT_HEADING: 'Takk for tilbakemeldingen!',
6
6
  FEEDBACK_BUTTON_SEND: 'Send tilbakemelding',
7
- FEEDBACK_BUTTON_CANCEL: 'Avbryt',
7
+ FEEDBACK_BUTTON_CANCEL: 'Avslutt',
8
8
  FEEDBACK_BUTTON_GROUP: 'Knappegruppe',
9
- FEEDBACK_GOOD: 'Hva var bra?',
10
- FEEDBACK_IMPROVE: 'Hva kan vi gjøre bedre?',
9
+ FEEDBACK_IMPROVE: 'Har du noe mer på hjertet? (valgfritt)',
11
10
  FEEDBACK_ANSWER: 'Svaret ditt blir brukt til å forbedre denne siden og blir ikke besvart.',
11
+ FEEDBACK_CONSENT: 'Jeg samtykker til at jeg kan bli kontaktet angående tilbakemeldingen min.',
12
12
  QUESTIONS: ' Har du spørsmål, ',
13
13
  FEEDBACK_LINK_TEXT: 'kontakt kundeservice.',
14
- FEEDBACK_SENSITIVE: 'Unngå å oppgi sensitiv eller personlig informasjon, for eksempel helseopplysninger, politisk tilhørighet, personnummer, navn, e-post eller telefonnummer.',
15
- FEEDBACK_SHORT: 'Tilbakemeldingen må være på minst tre tegn.',
16
- NATIVE_VIEW_HEADING: 'Kundeservice',
14
+ FEEDBACK_SENSITIVE: 'Unngå å oppgi sensitiv eller personlig informasjon, for eksempel helseopplysninger, personnummer, navn eller kontaktinfo.',
17
15
  };
package/es/i18n/nn.js CHANGED
@@ -4,14 +4,12 @@ export var nn = {
4
4
  FEEDBACK_NOT_SENT_HEADING: 'Kva synest du om denne sida? ',
5
5
  FEEDBACK_SENT_HEADING: 'Takk for tilbakemeldinga!',
6
6
  FEEDBACK_BUTTON_SEND: 'Send tilbakemelding',
7
- FEEDBACK_BUTTON_CANCEL: 'Avbryt',
7
+ FEEDBACK_BUTTON_CANCEL: 'Avslutt',
8
8
  FEEDBACK_BUTTON_GROUP: 'Knappegruppe',
9
- FEEDBACK_GOOD: 'Kva var bra?',
10
- FEEDBACK_IMPROVE: 'Kva kan vi gjere betre?',
9
+ FEEDBACK_IMPROVE: 'Har du noko meir på hjartet? (valfritt)',
11
10
  FEEDBACK_ANSWER: 'Svaret ditt vert brukt til å betre denne sida og vert ikkje svart på.',
11
+ FEEDBACK_CONSENT: 'Eg samtykkjer til at eg kan bli kontakta angåande tilbakemeldinga mi.',
12
12
  QUESTIONS: ' Har du spørsmål, ',
13
13
  FEEDBACK_LINK_TEXT: 'kontakt kundetenesta.',
14
- FEEDBACK_SENSITIVE: 'Unngå å oppgje sensitiv eller personleg informasjon, til dømes helseopplysingar, politisk tilhøyrsel, personnummer, namn, e-post eller telefonnummer.',
15
- FEEDBACK_SHORT: 'Tilbakemeldinga må vere minst tre teikn.',
16
- NATIVE_VIEW_HEADING: 'Kundetenest',
14
+ FEEDBACK_SENSITIVE: 'Unngå å oppgje sensitiv eller personleg informasjon, til dømes helseopplysingar, personnummer, namn eller kontaktinfo.',
17
15
  };
package/lib/Feedback.js CHANGED
@@ -47,10 +47,9 @@ var HighFive_1 = require("./HighFive");
47
47
  var Feedback = function (_a) {
48
48
  var _b;
49
49
  var _c;
50
- var _d = _a.headingLevel, headingLevel = _d === void 0 ? 5 : _d, _e = _a.locale, locale = _e === void 0 ? 'nb' : _e, onThumbClick = _a.onThumbClick, onFeedbackSend = _a.onFeedbackSend, bgColor = _a.bgColor, contactLink = _a.contactLink, texts = _a.texts, className = _a.className;
50
+ var _d = _a.headingLevel, headingLevel = _d === void 0 ? 4 : _d, _e = _a.locale, locale = _e === void 0 ? 'nb' : _e, onThumbClick = _a.onThumbClick, onFeedbackSend = _a.onFeedbackSend, bgColor = _a.bgColor, contactLink = _a.contactLink, texts = _a.texts, className = _a.className, _f = _a.includeConsent, includeConsent = _f === void 0 ? false : _f;
51
51
  var feedbackSentRef = (0, react_1.useRef)(null);
52
52
  var expandedRef = (0, react_1.useRef)(null);
53
- var _f = (0, react_1.useState)(), feedbackThumbClicked = _f[0], setFeedbackThumbClicked = _f[1];
54
53
  var _g = (0, react_1.useState)(false), expanded = _g[0], setExpanded = _g[1];
55
54
  var _h = (0, react_1.useState)(false), feedbackSent = _h[0], setFeedbackSent = _h[1];
56
55
  var headingId = (0, react_1.useId)();
@@ -59,20 +58,21 @@ var Feedback = function (_a) {
59
58
  _b), className);
60
59
  var handleThumbClicked = function (thumb) {
61
60
  var _a;
62
- setFeedbackThumbClicked(thumb);
63
61
  (0, react_dom_1.flushSync)(function () {
64
62
  setExpanded(true);
65
63
  });
66
64
  (_a = expandedRef.current) === null || _a === void 0 ? void 0 : _a.focus();
67
65
  onThumbClick(thumb);
68
66
  };
69
- var handleFeedbackSent = function (feedbackText) {
67
+ var handleFeedbackSent = function (feedbackText, consentGiven) {
70
68
  var _a;
71
69
  (0, react_dom_1.flushSync)(function () {
72
70
  setFeedbackSent(true);
73
71
  });
74
72
  (_a = feedbackSentRef.current) === null || _a === void 0 ? void 0 : _a.focus();
75
- onFeedbackSend(feedbackText);
73
+ if (feedbackText && feedbackText.length > 0) {
74
+ onFeedbackSend(feedbackText, consentGiven);
75
+ }
76
76
  };
77
77
  var renderHeading = function (level, text, options) {
78
78
  var _a;
@@ -93,11 +93,9 @@ var Feedback = function (_a) {
93
93
  }
94
94
  if (expanded) {
95
95
  return (react_1.default.createElement("div", { className: feedbackClassnames },
96
- react_1.default.createElement("div", { className: "ffe-feedback__content" },
97
- renderHeading(headingLevel, feedbackThumbClicked === 'THUMB_UP'
98
- ? texts_1.txt[locale].FEEDBACK_GOOD
99
- : texts_1.txt[locale].FEEDBACK_IMPROVE, { ref: expandedRef, tabIndex: -1 }),
100
- react_1.default.createElement(FeedbackExpanded_1.FeedbackExpanded, { locale: locale, onSend: handleFeedbackSent, onCancel: function () { return setExpanded(false); }, contactLink: contactLink }))));
96
+ react_1.default.createElement("div", { className: "ffe-feedback__expanded" },
97
+ renderHeading(headingLevel, texts_1.txt[locale].FEEDBACK_SENT_HEADING, { ref: expandedRef, tabIndex: -1 }),
98
+ react_1.default.createElement(FeedbackExpanded_1.FeedbackExpanded, { locale: locale, handleFeedback: handleFeedbackSent, contactLink: contactLink, includeConsent: includeConsent }))));
101
99
  }
102
100
  return (react_1.default.createElement("div", { className: feedbackClassnames },
103
101
  react_1.default.createElement("div", { className: "ffe-feedback__content" },
@@ -41,35 +41,27 @@ var ffe_form_react_1 = require("@sb1/ffe-form-react");
41
41
  var ffe_buttons_react_1 = require("@sb1/ffe-buttons-react");
42
42
  var FeedbackExpanded = function (_a) {
43
43
  var _b;
44
- var locale = _a.locale, onSend = _a.onSend, onCancel = _a.onCancel, contactLink = _a.contactLink;
45
- var _c = (0, react_1.useState)(), feedbackText = _c[0], setFeedbackText = _c[1];
46
- var _d = (0, react_1.useState)(), fieldMessage = _d[0], setFieldMessage = _d[1];
47
- var validateMessage = function () {
48
- if (feedbackText && (feedbackText === null || feedbackText === void 0 ? void 0 : feedbackText.length) >= 3) {
49
- setFieldMessage(undefined);
50
- return true;
51
- }
52
- setFieldMessage(texts_1.txt[locale].FEEDBACK_SHORT);
53
- return false;
54
- };
55
- 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.txt[locale].FEEDBACK_LINK_TEXT)) : null;
44
+ var locale = _a.locale, handleFeedback = _a.handleFeedback, contactLink = _a.contactLink, _c = _a.includeConsent, includeConsent = _c === void 0 ? false : _c;
45
+ var _d = (0, react_1.useState)(), feedbackText = _d[0], setFeedbackText = _d[1];
46
+ var _e = (0, react_1.useState)(false), consentGiven = _e[0], setConsentGiven = _e[1];
47
+ var contactLinkElement = contactLink ? (react_1.default.createElement(ffe_core_react_1.LinkText, { 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.txt[locale].FEEDBACK_LINK_TEXT)) : null;
56
48
  return (react_1.default.createElement(react_1.default.Fragment, null,
57
49
  react_1.default.createElement(ffe_core_react_1.Paragraph, null,
58
50
  texts_1.txt[locale].FEEDBACK_ANSWER,
59
51
  contactLinkElement && texts_1.txt[locale].QUESTIONS,
60
52
  contactLinkElement),
61
- react_1.default.createElement(ffe_core_react_1.Paragraph, null, texts_1.txt[locale].FEEDBACK_SENSITIVE),
62
- react_1.default.createElement(ffe_form_react_1.InputGroup, { className: "ffe-feedback__textarea-container", fieldMessage: fieldMessage, label:
63
- // htmlFor kommer fra InputGroup
64
- // eslint-disable-next-line jsx-a11y/label-has-for
65
- react_1.default.createElement("label", { className: "ffe-screenreader-only" }, texts_1.txt[locale].FEEDBACK_IMPROVE) },
66
- 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, onBlur: validateMessage })),
67
- react_1.default.createElement(ffe_buttons_react_1.ButtonGroup, { className: "ffe-feedback__button-group", ariaLabel: texts_1.txt[locale].FEEDBACK_BUTTON_GROUP },
53
+ react_1.default.createElement(ffe_form_react_1.InputGroup, { className: "ffe-feedback__textarea-container", label: texts_1.txt[locale].FEEDBACK_IMPROVE, description: texts_1.txt[locale].FEEDBACK_SENSITIVE },
54
+ 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, className: "ffe-feedback__textarea" })),
55
+ includeConsent && (react_1.default.createElement("div", { className: "ffe-feedback__consent" },
56
+ react_1.default.createElement(ffe_form_react_1.Checkbox, { checked: consentGiven, onChange: function (event) {
57
+ return setConsentGiven(event.target.checked);
58
+ } }, texts_1.txt[locale].FEEDBACK_CONSENT))),
59
+ react_1.default.createElement(ffe_buttons_react_1.ButtonGroup, { className: "ffe-feedback__button-group", ariaLabel: texts_1.txt[locale].FEEDBACK_BUTTON_GROUP, thin: true },
68
60
  react_1.default.createElement(ffe_buttons_react_1.ActionButton, { onClick: function () {
69
- if (validateMessage() && feedbackText) {
70
- onSend(feedbackText);
61
+ if (feedbackText) {
62
+ handleFeedback(feedbackText, includeConsent ? consentGiven : undefined);
71
63
  }
72
64
  } }, texts_1.txt[locale].FEEDBACK_BUTTON_SEND),
73
- react_1.default.createElement(ffe_buttons_react_1.TertiaryButton, { onClick: onCancel }, texts_1.txt[locale].FEEDBACK_BUTTON_CANCEL))));
65
+ react_1.default.createElement(ffe_buttons_react_1.TertiaryButton, { onClick: function () { return handleFeedback(); } }, texts_1.txt[locale].FEEDBACK_BUTTON_CANCEL))));
74
66
  };
75
67
  exports.FeedbackExpanded = FeedbackExpanded;
@@ -6,12 +6,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.FeedbackThumbs = void 0;
7
7
  var react_1 = __importDefault(require("react"));
8
8
  var texts_1 = require("./i18n/texts");
9
+ var ffe_buttons_react_1 = require("@sb1/ffe-buttons-react");
10
+ var ffe_icons_react_1 = require("@sb1/ffe-icons-react");
11
+ var thumbUpIconLg = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgLTk2MCA5NjAgOTYwIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjxwYXRoIGQ9Ik04MzUuMTMtNjE2LjJxMjQuNjQgMCA0My42IDE4Ljk2dDE4Ljk2IDQzLjZ2NjUuNnEwIDYuMzktLjA1IDEzLjM4LS4wNSA2Ljk5LTIuNDYgMTMuMjJMNzc3LjgzLTE4Ny4xM3EtOC42MSAxOS44LTI4Ljg2IDMzLjQ2UTcyOC43MS0xNDAgNzA3LjE5LTE0MEgyODQuNjd2LTQ3Ni4ybDIyNS4yNS0yMzAuN3ExMC45OS0xMS4yNSAyNS45Mi0xMy41NiAxNC45My0yLjMxIDI4LjM5IDUuMjYgMTMuMzEgNy41NiAxOS43OSAyMS41MSA2LjQ5IDEzLjk1IDIuOTggMjkuMUw1NDYuOTctNjE2LjJoMjg4LjE2Wm0tNTAwLjIxIDIxLjMzdjQwNC42MWgzNzguNzdxMy45OCAwIDguNTMtMi4zIDQuNTUtMi4zMSA2Ljg2LTcuN2wxMTguMzYtMjc5LjMzdi03NC4wNXEwLTUuMTMtMy41OS04LjcyLTMuNTktMy41OS04LjcyLTMuNTlINDg0LjkybDQ5LjQ5LTIzMy4xOC0xOTkuNDkgMjA0LjI2Wk0xNjIuMTUtMTQwcS0yNS44IDAtNDQuMTgtMTguNDh0LTE4LjM4LTQ0LjA5di0zNTEuMDdxMC0yNS42MSAxOC4zOC00NC4wOSAxOC4zOC0xOC40NyA0NC4xOC0xOC40N2gxMjIuNTJ2NTAuMjVIMTYyLjE1cS01LjM4IDAtOC44NCAzLjU5dC0zLjQ2IDguNzJ2MzUxLjA3cTAgNS4zOSAzLjQ2IDguODV0OC44NCAzLjQ2aDEyMi41MlYtMTQwSDE2Mi4xNVptMTcyLjc3LTUwLjI2di00MDQuNjEgNDA0LjYxWiIvPjwvc3ZnPg==';
12
+ var thumbDownIconLg = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgLTk2MCA5NjAgOTYwIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPjxwYXRoIGQ9Ik0xMjUuMTMtMzQzLjhxLTI1IDAtNDMuNzgtMTguOTZ0LTE4Ljc4LTQzLjZ2LTY1LjZxMC02LjM5LS4wOC0xMy4zOC0uMDgtNi45OSAyLjMzLTEzLjIybDExNy42MS0yNzQuMzFxOC4yNi0xOS43NiAyOC41Ni0zMy40NFEyMzEuMjktODIwIDI1Mi44MS04MjBoNDIyLjUydjQ3Ni4yTDQ1MC4wOC0xMTMuMXEtMTAuOTkgMTEuMjUtMjUuOTIgMTMuNTYtMTQuOTMgMi4zMS0yOC4zOS01LjI2LTEzLjMxLTcuNTYtMTkuNzktMjEuNTEtNi40OS0xMy45NS0yLjk4LTI5LjFsNDAuMDMtMTg4LjM5aC0yODcuOVptNDk5Ljk1LTIxLjMzdi00MDQuNjFIMjQ2LjMxcS0zLjk4IDAtOC41MyAyLjMtNC41NSAyLjMxLTYuODYgNy43bC0xMTguMSAyNzkuMzN2NzQuMDVxMCA1LjEzIDMuNDYgOC43MiAzLjQ2IDMuNTkgOC44NSAzLjU5aDM0OS45NWwtNDkuNDkgMjMzLjE4IDE5OS40OS0yMDQuMjZaTTc5Ny44NS04MjBxMjUuOCAwIDQ0LjE4IDE4LjQ4dDE4LjM4IDQ0LjA5djM1MS4wN3EwIDI1LjYxLTE4LjM4IDQ0LjA5LTE4LjM4IDE4LjQ3LTQ0LjE4IDE4LjQ3SDY3NS4zM3YtNTAuMjVoMTIyLjUycTUuMzggMCA4Ljg0LTMuNTl0My40Ni04Ljcydi0zNTEuMDdxMC01LjM5LTMuNDYtOC44NXQtOC44NC0zLjQ2SDY3NS4zM1YtODIwaDEyMi41MlptLTE3Mi43NyA1MC4yNnY0MDQuNjEtNDA0LjYxWiIvPjwvc3ZnPg==';
9
13
  var FeedbackThumbs = function (_a) {
10
14
  var locale = _a.locale, onClick = _a.onClick, headingId = _a.headingId;
11
- return (react_1.default.createElement("div", null,
12
- react_1.default.createElement("button", { "aria-label": texts_1.txt[locale].ARIA_LABEL_THUMB_UP, "aria-describedby": headingId, className: "ffe-feedback__thumb", onClick: function () { return onClick('THUMB_UP'); }, type: "button" },
13
- react_1.default.createElement("span", { className: "ffe-icons ffe-icons--xl" })),
14
- react_1.default.createElement("button", { "aria-label": texts_1.txt[locale].ARIA_LABEL_THUMB_DOWN, "aria-describedby": headingId, className: "ffe-feedback__thumb ffe-feedback__thumb--down", onClick: function () { return onClick('THUMB_DOWN'); }, type: "button" },
15
- react_1.default.createElement("span", { className: "ffe-icons ffe-icons--xl" }))));
15
+ return (react_1.default.createElement("div", { className: "ffe-feedback__thumbs" },
16
+ react_1.default.createElement(ffe_buttons_react_1.SecondaryButton, { "aria-label": texts_1.txt[locale].ARIA_LABEL_THUMB_UP, "aria-describedby": headingId, onClick: function () { return onClick('THUMB_UP'); }, iconOnly: true, size: 'lg' },
17
+ react_1.default.createElement(ffe_icons_react_1.Icon, { size: "lg", fileUrl: thumbUpIconLg })),
18
+ react_1.default.createElement(ffe_buttons_react_1.SecondaryButton, { "aria-label": texts_1.txt[locale].ARIA_LABEL_THUMB_DOWN, "aria-describedby": headingId, onClick: function () { return onClick('THUMB_DOWN'); }, iconOnly: true, size: 'lg' },
19
+ react_1.default.createElement(ffe_icons_react_1.Icon, { size: "lg", fileUrl: thumbDownIconLg }))));
16
20
  };
17
21
  exports.FeedbackThumbs = FeedbackThumbs;
package/lib/i18n/en.js CHANGED
@@ -7,14 +7,12 @@ exports.en = {
7
7
  FEEDBACK_NOT_SENT_HEADING: 'What do you think of this page? ',
8
8
  FEEDBACK_SENT_HEADING: 'Thank you!',
9
9
  FEEDBACK_BUTTON_SEND: 'Send feedback',
10
- FEEDBACK_BUTTON_CANCEL: 'Cancel',
10
+ FEEDBACK_BUTTON_CANCEL: 'Finish',
11
11
  FEEDBACK_BUTTON_GROUP: 'Button group',
12
- FEEDBACK_GOOD: 'What was good?',
13
- FEEDBACK_IMPROVE: 'How can we improve?',
12
+ FEEDBACK_IMPROVE: 'Do you have anything else on your mind?',
14
13
  FEEDBACK_ANSWER: 'Your feedback will be used to improve this site and will not be replied.',
14
+ FEEDBACK_CONSENT: 'I consent to be contacted regarding my feedback.',
15
15
  QUESTIONS: ' If you have questions, ',
16
16
  FEEDBACK_LINK_TEXT: 'contact customer services.',
17
- FEEDBACK_SENSITIVE: 'Please do not send sensitive or personal information, for example: Health information, political affiliation, social security number, name, email or telephone number.',
18
- FEEDBACK_SHORT: 'Feedback must be at least three characters.',
19
- NATIVE_VIEW_HEADING: 'Customer service',
17
+ FEEDBACK_SENSITIVE: 'Please do not send sensitive or personal information, for example: Health information, personal identification number, name or contact information.',
20
18
  };
package/lib/i18n/nb.js CHANGED
@@ -7,14 +7,12 @@ exports.nb = {
7
7
  FEEDBACK_NOT_SENT_HEADING: 'Hva synes du om denne siden? ',
8
8
  FEEDBACK_SENT_HEADING: 'Takk for tilbakemeldingen!',
9
9
  FEEDBACK_BUTTON_SEND: 'Send tilbakemelding',
10
- FEEDBACK_BUTTON_CANCEL: 'Avbryt',
10
+ FEEDBACK_BUTTON_CANCEL: 'Avslutt',
11
11
  FEEDBACK_BUTTON_GROUP: 'Knappegruppe',
12
- FEEDBACK_GOOD: 'Hva var bra?',
13
- FEEDBACK_IMPROVE: 'Hva kan vi gjøre bedre?',
12
+ FEEDBACK_IMPROVE: 'Har du noe mer på hjertet? (valgfritt)',
14
13
  FEEDBACK_ANSWER: 'Svaret ditt blir brukt til å forbedre denne siden og blir ikke besvart.',
14
+ FEEDBACK_CONSENT: 'Jeg samtykker til at jeg kan bli kontaktet angående tilbakemeldingen min.',
15
15
  QUESTIONS: ' Har du spørsmål, ',
16
16
  FEEDBACK_LINK_TEXT: 'kontakt kundeservice.',
17
- FEEDBACK_SENSITIVE: 'Unngå å oppgi sensitiv eller personlig informasjon, for eksempel helseopplysninger, politisk tilhørighet, personnummer, navn, e-post eller telefonnummer.',
18
- FEEDBACK_SHORT: 'Tilbakemeldingen må være på minst tre tegn.',
19
- NATIVE_VIEW_HEADING: 'Kundeservice',
17
+ FEEDBACK_SENSITIVE: 'Unngå å oppgi sensitiv eller personlig informasjon, for eksempel helseopplysninger, personnummer, navn eller kontaktinfo.',
20
18
  };
package/lib/i18n/nn.js CHANGED
@@ -7,14 +7,12 @@ exports.nn = {
7
7
  FEEDBACK_NOT_SENT_HEADING: 'Kva synest du om denne sida? ',
8
8
  FEEDBACK_SENT_HEADING: 'Takk for tilbakemeldinga!',
9
9
  FEEDBACK_BUTTON_SEND: 'Send tilbakemelding',
10
- FEEDBACK_BUTTON_CANCEL: 'Avbryt',
10
+ FEEDBACK_BUTTON_CANCEL: 'Avslutt',
11
11
  FEEDBACK_BUTTON_GROUP: 'Knappegruppe',
12
- FEEDBACK_GOOD: 'Kva var bra?',
13
- FEEDBACK_IMPROVE: 'Kva kan vi gjere betre?',
12
+ FEEDBACK_IMPROVE: 'Har du noko meir på hjartet? (valfritt)',
14
13
  FEEDBACK_ANSWER: 'Svaret ditt vert brukt til å betre denne sida og vert ikkje svart på.',
14
+ FEEDBACK_CONSENT: 'Eg samtykkjer til at eg kan bli kontakta angåande tilbakemeldinga mi.',
15
15
  QUESTIONS: ' Har du spørsmål, ',
16
16
  FEEDBACK_LINK_TEXT: 'kontakt kundetenesta.',
17
- FEEDBACK_SENSITIVE: 'Unngå å oppgje sensitiv eller personleg informasjon, til dømes helseopplysingar, politisk tilhøyrsel, personnummer, namn, e-post eller telefonnummer.',
18
- FEEDBACK_SHORT: 'Tilbakemeldinga må vere minst tre teikn.',
19
- NATIVE_VIEW_HEADING: 'Kundetenest',
17
+ FEEDBACK_SENSITIVE: 'Unngå å oppgje sensitiv eller personleg informasjon, til dømes helseopplysingar, personnummer, namn eller kontaktinfo.',
20
18
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sb1/ffe-feedback-react",
3
- "version": "6.0.30",
3
+ "version": "6.1.0",
4
4
  "description": "React component for ffe-feedback",
5
5
  "license": "MIT",
6
6
  "author": "SpareBank 1",
@@ -20,21 +20,21 @@
20
20
  "scripts": {
21
21
  "build": "ffe-buildtool tsc",
22
22
  "build:es": "ffe-buildtool tsc --es",
23
- "lint": "eslint src --ext ts,tsx",
24
- "lint:fix": "eslint src --fix --ext ts,tsx",
23
+ "lint": "eslint \"src/**/*.{ts,tsx}\"",
24
+ "lint:fix": "eslint \"src/**/*.{ts,tsx}\" --fix",
25
25
  "test": "ffe-buildtool jest",
26
26
  "test:watch": "ffe-buildtool jest --watch"
27
27
  },
28
28
  "dependencies": {
29
- "@sb1/ffe-buttons-react": "^24.3.3",
30
- "@sb1/ffe-core-react": "^10.1.0",
31
- "@sb1/ffe-feedback": "^4.0.17",
32
- "@sb1/ffe-form-react": "^23.2.18",
29
+ "@sb1/ffe-buttons-react": "^24.3.4",
30
+ "@sb1/ffe-core-react": "^10.1.1",
31
+ "@sb1/ffe-feedback": "^4.1.0",
32
+ "@sb1/ffe-form-react": "^23.2.20",
33
33
  "classnames": "^2.3.1"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@sb1/ffe-buildtool": "^0.10.0",
37
- "eslint": "^8.57.0",
37
+ "eslint": "^9.22.0",
38
38
  "react": "^18.2.0",
39
39
  "react-dom": "^18.2.0"
40
40
  },
@@ -44,5 +44,6 @@
44
44
  "publishConfig": {
45
45
  "access": "public"
46
46
  },
47
- "gitHead": "65737648422859ff0dd683e9f423794f0e595a64"
47
+ "type": "module",
48
+ "gitHead": "61e0e1ffb823447811627196398c7818d0e8cea3"
48
49
  }
@@ -8,13 +8,15 @@ export interface FeedbackProps {
8
8
  headingLevel?: HeadingLevel;
9
9
  locale?: Locale;
10
10
  onThumbClick: (thumb: Thumb) => void;
11
- onFeedbackSend: (feedbackText: string) => void;
11
+ onFeedbackSend: (feedbackText: string, consent?: boolean) => void;
12
12
  bgColor?: BgColor;
13
13
  contactLink?: FeedbackExpandedProps['contactLink'];
14
14
  texts?: {
15
15
  feedbackNotSentHeading?: string;
16
+ consentText?: string;
16
17
  };
17
18
  className?: string;
19
+ includeConsent?: boolean;
18
20
  }
19
- export declare const Feedback: ({ headingLevel, locale, onThumbClick, onFeedbackSend, bgColor, contactLink, texts, className, }: FeedbackProps) => React.JSX.Element;
21
+ export declare const Feedback: ({ headingLevel, locale, onThumbClick, onFeedbackSend, bgColor, contactLink, texts, className, includeConsent, }: FeedbackProps) => React.JSX.Element;
20
22
  export {};
@@ -1,12 +1,12 @@
1
1
  import React from 'react';
2
2
  export interface FeedbackExpandedProps {
3
3
  locale: 'nb' | 'nn' | 'en';
4
- onSend: (feedbackText: string) => void;
5
- onCancel: () => void;
4
+ handleFeedback: (feedbackText?: string, consentGiven?: boolean) => void;
6
5
  contactLink?: {
7
6
  url: string;
8
7
  onClick?: React.MouseEventHandler<HTMLAnchorElement>;
9
8
  linkText?: string;
10
9
  };
10
+ includeConsent?: boolean;
11
11
  }
12
12
  export declare const FeedbackExpanded: React.FC<FeedbackExpandedProps>;
@@ -4,14 +4,12 @@ export declare const en: {
4
4
  readonly FEEDBACK_NOT_SENT_HEADING: "What do you think of this page? ";
5
5
  readonly FEEDBACK_SENT_HEADING: "Thank you!";
6
6
  readonly FEEDBACK_BUTTON_SEND: "Send feedback";
7
- readonly FEEDBACK_BUTTON_CANCEL: "Cancel";
7
+ readonly FEEDBACK_BUTTON_CANCEL: "Finish";
8
8
  readonly FEEDBACK_BUTTON_GROUP: "Button group";
9
- readonly FEEDBACK_GOOD: "What was good?";
10
- readonly FEEDBACK_IMPROVE: "How can we improve?";
9
+ readonly FEEDBACK_IMPROVE: "Do you have anything else on your mind?";
11
10
  readonly FEEDBACK_ANSWER: "Your feedback will be used to improve this site and will not be replied.";
11
+ readonly FEEDBACK_CONSENT: "I consent to be contacted regarding my feedback.";
12
12
  readonly QUESTIONS: " If you have questions, ";
13
13
  readonly FEEDBACK_LINK_TEXT: "contact customer services.";
14
- readonly FEEDBACK_SENSITIVE: "Please do not send sensitive or personal information, for example: Health information, political affiliation, social security number, name, email or telephone number.";
15
- readonly FEEDBACK_SHORT: "Feedback must be at least three characters.";
16
- readonly NATIVE_VIEW_HEADING: "Customer service";
14
+ readonly FEEDBACK_SENSITIVE: "Please do not send sensitive or personal information, for example: Health information, personal identification number, name or contact information.";
17
15
  };
@@ -4,14 +4,12 @@ export declare const nb: {
4
4
  readonly FEEDBACK_NOT_SENT_HEADING: "Hva synes du om denne siden? ";
5
5
  readonly FEEDBACK_SENT_HEADING: "Takk for tilbakemeldingen!";
6
6
  readonly FEEDBACK_BUTTON_SEND: "Send tilbakemelding";
7
- readonly FEEDBACK_BUTTON_CANCEL: "Avbryt";
7
+ readonly FEEDBACK_BUTTON_CANCEL: "Avslutt";
8
8
  readonly FEEDBACK_BUTTON_GROUP: "Knappegruppe";
9
- readonly FEEDBACK_GOOD: "Hva var bra?";
10
- readonly FEEDBACK_IMPROVE: "Hva kan vi gjøre bedre?";
9
+ readonly FEEDBACK_IMPROVE: "Har du noe mer på hjertet? (valgfritt)";
11
10
  readonly FEEDBACK_ANSWER: "Svaret ditt blir brukt til å forbedre denne siden og blir ikke besvart.";
11
+ readonly FEEDBACK_CONSENT: "Jeg samtykker til at jeg kan bli kontaktet angående tilbakemeldingen min.";
12
12
  readonly QUESTIONS: " Har du spørsmål, ";
13
13
  readonly FEEDBACK_LINK_TEXT: "kontakt kundeservice.";
14
- readonly FEEDBACK_SENSITIVE: "Unngå å oppgi sensitiv eller personlig informasjon, for eksempel helseopplysninger, politisk tilhørighet, personnummer, navn, e-post eller telefonnummer.";
15
- readonly FEEDBACK_SHORT: "Tilbakemeldingen må være på minst tre tegn.";
16
- readonly NATIVE_VIEW_HEADING: "Kundeservice";
14
+ readonly FEEDBACK_SENSITIVE: "Unngå å oppgi sensitiv eller personlig informasjon, for eksempel helseopplysninger, personnummer, navn eller kontaktinfo.";
17
15
  };
@@ -4,14 +4,12 @@ export declare const nn: {
4
4
  readonly FEEDBACK_NOT_SENT_HEADING: "Kva synest du om denne sida? ";
5
5
  readonly FEEDBACK_SENT_HEADING: "Takk for tilbakemeldinga!";
6
6
  readonly FEEDBACK_BUTTON_SEND: "Send tilbakemelding";
7
- readonly FEEDBACK_BUTTON_CANCEL: "Avbryt";
7
+ readonly FEEDBACK_BUTTON_CANCEL: "Avslutt";
8
8
  readonly FEEDBACK_BUTTON_GROUP: "Knappegruppe";
9
- readonly FEEDBACK_GOOD: "Kva var bra?";
10
- readonly FEEDBACK_IMPROVE: "Kva kan vi gjere betre?";
9
+ readonly FEEDBACK_IMPROVE: "Har du noko meir på hjartet? (valfritt)";
11
10
  readonly FEEDBACK_ANSWER: "Svaret ditt vert brukt til å betre denne sida og vert ikkje svart på.";
11
+ readonly FEEDBACK_CONSENT: "Eg samtykkjer til at eg kan bli kontakta angåande tilbakemeldinga mi.";
12
12
  readonly QUESTIONS: " Har du spørsmål, ";
13
13
  readonly FEEDBACK_LINK_TEXT: "kontakt kundetenesta.";
14
- readonly FEEDBACK_SENSITIVE: "Unngå å oppgje sensitiv eller personleg informasjon, til dømes helseopplysingar, politisk tilhøyrsel, personnummer, namn, e-post eller telefonnummer.";
15
- readonly FEEDBACK_SHORT: "Tilbakemeldinga må vere minst tre teikn.";
16
- readonly NATIVE_VIEW_HEADING: "Kundetenest";
14
+ readonly FEEDBACK_SENSITIVE: "Unngå å oppgje sensitiv eller personleg informasjon, til dømes helseopplysingar, personnummer, namn eller kontaktinfo.";
17
15
  };
@@ -5,16 +5,14 @@ export declare const txt: {
5
5
  readonly FEEDBACK_NOT_SENT_HEADING: "Hva synes du om denne siden? ";
6
6
  readonly FEEDBACK_SENT_HEADING: "Takk for tilbakemeldingen!";
7
7
  readonly FEEDBACK_BUTTON_SEND: "Send tilbakemelding";
8
- readonly FEEDBACK_BUTTON_CANCEL: "Avbryt";
8
+ readonly FEEDBACK_BUTTON_CANCEL: "Avslutt";
9
9
  readonly FEEDBACK_BUTTON_GROUP: "Knappegruppe";
10
- readonly FEEDBACK_GOOD: "Hva var bra?";
11
- readonly FEEDBACK_IMPROVE: "Hva kan vi gjøre bedre?";
10
+ readonly FEEDBACK_IMPROVE: "Har du noe mer på hjertet? (valgfritt)";
12
11
  readonly FEEDBACK_ANSWER: "Svaret ditt blir brukt til å forbedre denne siden og blir ikke besvart.";
12
+ readonly FEEDBACK_CONSENT: "Jeg samtykker til at jeg kan bli kontaktet angående tilbakemeldingen min.";
13
13
  readonly QUESTIONS: " Har du spørsmål, ";
14
14
  readonly FEEDBACK_LINK_TEXT: "kontakt kundeservice.";
15
- readonly FEEDBACK_SENSITIVE: "Unngå å oppgi sensitiv eller personlig informasjon, for eksempel helseopplysninger, politisk tilhørighet, personnummer, navn, e-post eller telefonnummer.";
16
- readonly FEEDBACK_SHORT: "Tilbakemeldingen må være på minst tre tegn.";
17
- readonly NATIVE_VIEW_HEADING: "Kundeservice";
15
+ readonly FEEDBACK_SENSITIVE: "Unngå å oppgi sensitiv eller personlig informasjon, for eksempel helseopplysninger, personnummer, navn eller kontaktinfo.";
18
16
  };
19
17
  nn: {
20
18
  readonly ARIA_LABEL_THUMB_UP: "Gje tommel opp";
@@ -22,16 +20,14 @@ export declare const txt: {
22
20
  readonly FEEDBACK_NOT_SENT_HEADING: "Kva synest du om denne sida? ";
23
21
  readonly FEEDBACK_SENT_HEADING: "Takk for tilbakemeldinga!";
24
22
  readonly FEEDBACK_BUTTON_SEND: "Send tilbakemelding";
25
- readonly FEEDBACK_BUTTON_CANCEL: "Avbryt";
23
+ readonly FEEDBACK_BUTTON_CANCEL: "Avslutt";
26
24
  readonly FEEDBACK_BUTTON_GROUP: "Knappegruppe";
27
- readonly FEEDBACK_GOOD: "Kva var bra?";
28
- readonly FEEDBACK_IMPROVE: "Kva kan vi gjere betre?";
25
+ readonly FEEDBACK_IMPROVE: "Har du noko meir på hjartet? (valfritt)";
29
26
  readonly FEEDBACK_ANSWER: "Svaret ditt vert brukt til å betre denne sida og vert ikkje svart på.";
27
+ readonly FEEDBACK_CONSENT: "Eg samtykkjer til at eg kan bli kontakta angåande tilbakemeldinga mi.";
30
28
  readonly QUESTIONS: " Har du spørsmål, ";
31
29
  readonly FEEDBACK_LINK_TEXT: "kontakt kundetenesta.";
32
- readonly FEEDBACK_SENSITIVE: "Unngå å oppgje sensitiv eller personleg informasjon, til dømes helseopplysingar, politisk tilhøyrsel, personnummer, namn, e-post eller telefonnummer.";
33
- readonly FEEDBACK_SHORT: "Tilbakemeldinga må vere minst tre teikn.";
34
- readonly NATIVE_VIEW_HEADING: "Kundetenest";
30
+ readonly FEEDBACK_SENSITIVE: "Unngå å oppgje sensitiv eller personleg informasjon, til dømes helseopplysingar, personnummer, namn eller kontaktinfo.";
35
31
  };
36
32
  en: {
37
33
  readonly ARIA_LABEL_THUMB_UP: "Give thumbs up";
@@ -39,15 +35,13 @@ export declare const txt: {
39
35
  readonly FEEDBACK_NOT_SENT_HEADING: "What do you think of this page? ";
40
36
  readonly FEEDBACK_SENT_HEADING: "Thank you!";
41
37
  readonly FEEDBACK_BUTTON_SEND: "Send feedback";
42
- readonly FEEDBACK_BUTTON_CANCEL: "Cancel";
38
+ readonly FEEDBACK_BUTTON_CANCEL: "Finish";
43
39
  readonly FEEDBACK_BUTTON_GROUP: "Button group";
44
- readonly FEEDBACK_GOOD: "What was good?";
45
- readonly FEEDBACK_IMPROVE: "How can we improve?";
40
+ readonly FEEDBACK_IMPROVE: "Do you have anything else on your mind?";
46
41
  readonly FEEDBACK_ANSWER: "Your feedback will be used to improve this site and will not be replied.";
42
+ readonly FEEDBACK_CONSENT: "I consent to be contacted regarding my feedback.";
47
43
  readonly QUESTIONS: " If you have questions, ";
48
44
  readonly FEEDBACK_LINK_TEXT: "contact customer services.";
49
- readonly FEEDBACK_SENSITIVE: "Please do not send sensitive or personal information, for example: Health information, political affiliation, social security number, name, email or telephone number.";
50
- readonly FEEDBACK_SHORT: "Feedback must be at least three characters.";
51
- readonly NATIVE_VIEW_HEADING: "Customer service";
45
+ readonly FEEDBACK_SENSITIVE: "Please do not send sensitive or personal information, for example: Health information, personal identification number, name or contact information.";
52
46
  };
53
47
  };