@simplybusiness/mobius 3.4.0 → 3.4.2

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/CHANGELOG.md CHANGED
@@ -5,6 +5,19 @@ All notable changes to this project will be documented in this file, or link in
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [3.4.2] - 2023-03-27
9
+
10
+ ### Added
11
+
12
+ - Add onChange prop to `<Question>` for when help text is shown/hidden. This is to enable Snowplow analytics events to be attached
13
+
14
+ ## [3.4.1] - 2023-03-23
15
+
16
+ ## Fixed
17
+
18
+ - Fix an issue where disabled button ghost variant would change colour on click
19
+ - Replace 301 Moved Permanently with 307 Temporary Redirect for homepage
20
+
8
21
  ## [3.4.0] - 2023-03-06
9
22
 
10
23
  ### Added
@@ -188,6 +201,8 @@ Additionally, mobius and themes are available on the public NPM registry and can
188
201
 
189
202
  ## Github Links
190
203
 
204
+ [3.4.2]: https://github.com/simplybusiness/mobius/releases/tag/v3.4.2
205
+ [3.4.1]: https://github.com/simplybusiness/mobius/releases/tag/v3.4.1
191
206
  [3.4.0]: https://github.com/simplybusiness/mobius/releases/tag/v3.4.0
192
207
  [3.3.2]: https://github.com/simplybusiness/mobius/releases/tag/v3.3.2
193
208
  [3.3.1]: https://github.com/simplybusiness/mobius/releases/tag/v3.3.1
@@ -8,5 +8,6 @@ export interface QuestionProps {
8
8
  help?: ReactNode;
9
9
  className?: string;
10
10
  closeHelpOnOutsideClick?: boolean;
11
+ onChange?: () => void;
11
12
  }
12
- export declare function Question({ label, description, children, errorMessage, validationState, help, className, closeHelpOnOutsideClick, }: QuestionProps): import("@emotion/react/jsx-runtime").JSX.Element;
13
+ export declare function Question({ label, description, children, errorMessage, validationState, help, className, closeHelpOnOutsideClick, onChange, }: QuestionProps): import("@emotion/react/jsx-runtime").JSX.Element;
@@ -12,7 +12,7 @@ const hooks_1 = require("../../../hooks");
12
12
  const Label_1 = require("../../Label");
13
13
  const Text_1 = require("../../Text");
14
14
  const QuestionHelp_1 = require("../QuestionHelp/QuestionHelp");
15
- function Question({ label, description, children, errorMessage, validationState, help, className, closeHelpOnOutsideClick, }) {
15
+ function Question({ label, description, children, errorMessage, validationState, help, className, closeHelpOnOutsideClick, onChange, }) {
16
16
  const [isOpen, setIsOpen] = (0, react_1.useState)(false);
17
17
  const labelId = (0, utils_1.useId)();
18
18
  const descriptionId = (0, utils_1.useId)();
@@ -22,9 +22,12 @@ function Question({ label, description, children, errorMessage, validationState,
22
22
  const classes = (0, clsx_1.default)("chopin", "chopin/Question", {
23
23
  "--has-help-open": isOpen,
24
24
  }, isDesktop ? "--is-desktop" : "", className);
25
- const handleChange = (state) => {
25
+ const handleChange = (0, react_1.useCallback)((state) => {
26
26
  setIsOpen(state);
27
- };
27
+ if (onChange) {
28
+ onChange();
29
+ }
30
+ }, [onChange]);
28
31
  // Allow for rich html descriptions
29
32
  const DescriptionComponent = (0, react_1.isValidElement)(description) ? "div" : Text_1.Text;
30
33
  const labelClasses = (0, clsx_1.default)("chopin/QuestionLabel", {
@@ -1 +1 @@
1
- {"version":3,"file":"Question.js","sourceRoot":"","sources":["../../../../../src/components/Chopin/Question/Question.tsx"],"names":[],"mappings":";;;;;;;AAAA,iCAOe;AACf,gDAAwB;AACxB,6CAA0C;AAC1C,0CAA+C;AAC/C,uCAAoC;AACpC,qCAAkC;AAClC,+DAA4D;AAa5D,SAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,IAAI,EACJ,SAAS,EACT,uBAAuB,GACT;IACd,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAA,aAAK,GAAE,CAAC;IACxB,MAAM,aAAa,GAAG,IAAA,aAAK,GAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,IAAA,aAAK,GAAE,CAAC;IACxB,MAAM,EAAE,EAAE,EAAE,GAAG,IAAA,qBAAa,GAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAE3B,MAAM,OAAO,GAAG,IAAA,cAAI,EAClB,QAAQ,EACR,iBAAiB,EACjB;QACE,iBAAiB,EAAE,MAAM;KAC1B,EACD,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAC/B,SAAS,CACV,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,KAAc,EAAE,EAAE;QACtC,SAAS,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC,CAAC;IAEF,mCAAmC;IACnC,MAAM,oBAAoB,GAAG,IAAA,sBAAc,EAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAI,CAAC;IAExE,MAAM,YAAY,GAAG,IAAA,cAAI,EAAC,sBAAsB,EAAE;QAChD,YAAY,EAAE,eAAe,KAAK,OAAO;QACzC,cAAc,EAAE,eAAe,KAAK,SAAS;KAC9C,CAAC,CAAC;IAEH,OAAO,CACL,+CAAK,SAAS,EAAE,OAAO,iBACrB,uBAAC,aAAK,kBACJ,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EACxC,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE,OAAO,EACX,SAAS,EAAE,YAAY,gBAEtB,KAAK,IACA,EACP,IAAI,IAAI,CACP,uBAAC,2BAAY,kBACX,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,SAAS,EACpB,uBAAuB,EAAE,uBAAuB,gBAE/C,IAAI,IACQ,CAChB,EACA,WAAW,IAAI,CACd,uBAAC,oBAAoB,kBACnB,EAAE,EAAE,aAAa,EACjB,SAAS,EAAC,4BAA4B,gBAErC,WAAW,IACS,CACxB,EACA,gBAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAC9B,IAAA,sBAAc,EAAC,KAAK,CAAC;gBACnB,CAAC,CAAC,IAAA,oBAAY,EAAC,KAAK,EAAE;oBAClB,YAAY;oBACZ,eAAe;oBACf,EAAE,EAAE,OAAO;oBACX,iBAAiB,EAAE,OAAO;oBAC1B,kBAAkB,EAAE,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;iBACrD,CAAC;gBACX,CAAC,CAAC,KAAK,CACV,KACG,CACP,CAAC;AACJ,CAAC;AA/ED,4BA+EC"}
1
+ {"version":3,"file":"Question.js","sourceRoot":"","sources":["../../../../../src/components/Chopin/Question/Question.tsx"],"names":[],"mappings":";;;;;;;AAAA,iCAQe;AACf,gDAAwB;AACxB,6CAA0C;AAC1C,0CAA+C;AAC/C,uCAAoC;AACpC,qCAAkC;AAClC,+DAA4D;AAc5D,SAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,IAAI,EACJ,SAAS,EACT,uBAAuB,EACvB,QAAQ,GACM;IACd,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAA,aAAK,GAAE,CAAC;IACxB,MAAM,aAAa,GAAG,IAAA,aAAK,GAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,IAAA,aAAK,GAAE,CAAC;IACxB,MAAM,EAAE,EAAE,EAAE,GAAG,IAAA,qBAAa,GAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAE3B,MAAM,OAAO,GAAG,IAAA,cAAI,EAClB,QAAQ,EACR,iBAAiB,EACjB;QACE,iBAAiB,EAAE,MAAM;KAC1B,EACD,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAC/B,SAAS,CACV,CAAC;IAEF,MAAM,YAAY,GAAG,IAAA,mBAAW,EAC9B,CAAC,KAAc,EAAE,EAAE;QACjB,SAAS,CAAC,KAAK,CAAC,CAAC;QAEjB,IAAI,QAAQ,EAAE;YACZ,QAAQ,EAAE,CAAC;SACZ;IACH,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,mCAAmC;IACnC,MAAM,oBAAoB,GAAG,IAAA,sBAAc,EAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAI,CAAC;IAExE,MAAM,YAAY,GAAG,IAAA,cAAI,EAAC,sBAAsB,EAAE;QAChD,YAAY,EAAE,eAAe,KAAK,OAAO;QACzC,cAAc,EAAE,eAAe,KAAK,SAAS;KAC9C,CAAC,CAAC;IAEH,OAAO,CACL,+CAAK,SAAS,EAAE,OAAO,iBACrB,uBAAC,aAAK,kBACJ,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EACxC,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE,OAAO,EACX,SAAS,EAAE,YAAY,gBAEtB,KAAK,IACA,EACP,IAAI,IAAI,CACP,uBAAC,2BAAY,kBACX,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,SAAS,EACpB,uBAAuB,EAAE,uBAAuB,gBAE/C,IAAI,IACQ,CAChB,EACA,WAAW,IAAI,CACd,uBAAC,oBAAoB,kBACnB,EAAE,EAAE,aAAa,EACjB,SAAS,EAAC,4BAA4B,gBAErC,WAAW,IACS,CACxB,EACA,gBAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAC9B,IAAA,sBAAc,EAAC,KAAK,CAAC;gBACnB,CAAC,CAAC,IAAA,oBAAY,EAAC,KAAK,EAAE;oBAClB,YAAY;oBACZ,eAAe;oBACf,EAAE,EAAE,OAAO;oBACX,iBAAiB,EAAE,OAAO;oBAC1B,kBAAkB,EAAE,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;iBACrD,CAAC;gBACX,CAAC,CAAC,KAAK,CACV,KACG,CACP,CAAC;AACJ,CAAC;AAvFD,4BAuFC"}
@@ -64,35 +64,47 @@ describe("Question", () => {
64
64
  });
65
65
  describe("Help", () => {
66
66
  it("should be mouse accessible", async () => {
67
- (0, react_1.render)((0, jsx_runtime_1.jsx)(_1.Question, Object.assign({ label: "Question", help: "This is a help message" }, { children: (0, jsx_runtime_1.jsx)(TextField_1.TextField, {}) })));
67
+ const onChange = jest.fn();
68
+ (0, react_1.render)((0, jsx_runtime_1.jsx)(_1.Question, Object.assign({ label: "Question", help: "This is a help message", onChange: onChange }, { children: (0, jsx_runtime_1.jsx)(TextField_1.TextField, {}) })));
68
69
  await user_event_1.default.click(react_1.screen.getByRole("button", { name: "Open Help" }));
70
+ expect(onChange).toHaveBeenCalled();
69
71
  expect(react_1.screen.queryByRole("tooltip")).toBeInTheDocument();
70
72
  await user_event_1.default.click(react_1.screen.getByRole("button", { name: "Close Help" }));
73
+ expect(onChange).toHaveBeenCalled();
71
74
  expect(react_1.screen.queryByRole("tooltip")).not.toBeInTheDocument();
72
75
  });
73
76
  it("should be keyboard accessible", async () => {
74
- (0, react_1.render)((0, jsx_runtime_1.jsx)(_1.Question, Object.assign({ label: "Question", help: "This is a help message" }, { children: (0, jsx_runtime_1.jsx)(TextField_1.TextField, {}) })));
77
+ const onChange = jest.fn();
78
+ (0, react_1.render)((0, jsx_runtime_1.jsx)(_1.Question, Object.assign({ label: "Question", help: "This is a help message", onChange: onChange }, { children: (0, jsx_runtime_1.jsx)(TextField_1.TextField, {}) })));
75
79
  await user_event_1.default.tab();
76
80
  await user_event_1.default.keyboard("{enter}");
81
+ expect(onChange).toHaveBeenCalled();
77
82
  expect(react_1.screen.queryByRole("tooltip")).toBeInTheDocument();
78
83
  await user_event_1.default.keyboard("{enter}");
84
+ expect(onChange).toHaveBeenCalled();
79
85
  expect(react_1.screen.queryByRole("tooltip")).not.toBeInTheDocument();
80
86
  });
81
87
  it("should close on escape key", async () => {
82
- (0, react_1.render)((0, jsx_runtime_1.jsx)(_1.Question, Object.assign({ label: "Question", help: "This is a help message" }, { children: (0, jsx_runtime_1.jsx)(TextField_1.TextField, {}) })));
88
+ const onChange = jest.fn();
89
+ (0, react_1.render)((0, jsx_runtime_1.jsx)(_1.Question, Object.assign({ label: "Question", help: "This is a help message", onChange: onChange }, { children: (0, jsx_runtime_1.jsx)(TextField_1.TextField, {}) })));
83
90
  await user_event_1.default.tab();
84
91
  await user_event_1.default.keyboard("{enter}");
92
+ expect(onChange).toHaveBeenCalled();
85
93
  expect(react_1.screen.queryByRole("tooltip")).toBeInTheDocument();
86
94
  await user_event_1.default.keyboard("{escape}");
95
+ expect(onChange).toHaveBeenCalled();
87
96
  expect(react_1.screen.queryByRole("tooltip")).not.toBeInTheDocument();
88
97
  });
89
98
  describe("given closeHelpOnOutsideClick is set to true", () => {
90
99
  it("should close on outside click", async () => {
91
- const { container } = (0, react_1.render)((0, jsx_runtime_1.jsx)(_1.Question, Object.assign({ label: "Question", help: "This is a help message", closeHelpOnOutsideClick: true }, { children: (0, jsx_runtime_1.jsx)(TextField_1.TextField, {}) })));
100
+ const onChange = jest.fn();
101
+ const { container } = (0, react_1.render)((0, jsx_runtime_1.jsx)(_1.Question, Object.assign({ label: "Question", help: "This is a help message", closeHelpOnOutsideClick: true, onChange: onChange }, { children: (0, jsx_runtime_1.jsx)(TextField_1.TextField, {}) })));
92
102
  const toggle = react_1.screen.getByRole("button");
93
103
  await user_event_1.default.click(toggle);
104
+ expect(onChange).toHaveBeenCalled();
94
105
  expect(toggle.parentElement).toHaveClass(OPEN_CLASS_NAME);
95
106
  await user_event_1.default.click(container);
107
+ expect(onChange).toHaveBeenCalled();
96
108
  expect(toggle.parentElement).toHaveClass(CLOSED_CLASS_NAME);
97
109
  });
98
110
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Question.test.js","sourceRoot":"","sources":["../../../../../src/components/Chopin/Question/Question.test.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Question.test.js","sourceRoot":"","sources":["../../../../../src/components/Chopin/Question/Question.test.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAAmE;AACnE,6EAAoD;AACpD,wCAAyC;AACzC,wBAA6B;AAC7B,+CAA4C;AAE5C,MAAM,kBAAkB,GAAG,iBAAiB,CAAC;AAC7C,MAAM,eAAe,GAAG,WAAW,CAAC;AACpC,MAAM,iBAAiB,GAAG,aAAa,CAAC;AAExC,MAAM,CAAC,MAAM,CAAC,eAAQ,CAAC,CAAC;AAExB,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,SAAS,GAAG,IAAA,cAAM,EACtB,uBAAC,WAAQ,kBAAC,KAAK,EAAC,UAAU,gBACxB,uBAAC,qBAAS,KAAG,IACJ,CACZ,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,IAAA,cAAM,EACJ,uBAAC,WAAQ,kBAAC,KAAK,EAAC,UAAU,EAAC,WAAW,EAAC,oBAAoB,gBACzD,uBAAC,qBAAS,KAAG,IACJ,CACZ,CAAC;QACF,MAAM,CAAC,cAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,2BAA2B,CACnE,oBAAoB,CACrB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,IAAA,cAAM,EACJ,uBAAC,WAAQ,kBAAC,KAAK,EAAC,UAAU,EAAC,WAAW,EAAC,oBAAoB,gBACzD,uBAAC,qBAAS,KAAG,IACJ,CACZ,CAAC;QAEF,MAAM,KAAK,GAAG,cAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,cAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAE1C,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,IAAA,cAAM,EACJ,uBAAC,WAAQ,kBACP,KAAK,EAAC,UAAU,EAChB,WAAW,EAAC,oBAAoB,EAChC,YAAY,EAAC,cAAc,gBAE3B,uBAAC,qBAAS,KAAG,IACJ,CACZ,CAAC;QACF,MAAM,CAAC,cAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,2BAA2B,CACnE,iCAAiC,CAClC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;QACpD,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,IAAA,cAAM,EACJ,uBAAC,WAAQ,IACP,KAAK,EAAC,gBAAgB,EACtB,WAAW,EAAC,oBAAoB,EAChC,YAAY,EAAC,cAAc,GAC3B,CACH,CAAC;YACF,MAAM,CAAC,cAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAChD,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;YAC3B,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,cAAM,EAC1B,uBAAC,WAAQ,kBAAC,KAAK,EAAC,UAAU,gBACxB,uBAAC,qBAAS,KAAG,IACJ,CACZ,CAAC;YACF,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,IAAA,cAAM,EACJ,uBAAC,WAAQ,kBAAC,KAAK,EAAC,UAAU,EAAC,eAAe,EAAC,OAAO,gBAChD,uBAAC,qBAAS,KAAG,IACJ,CACZ,CAAC;YACF,MAAM,CAAC,cAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACrC,IAAA,cAAM,EACJ,uBAAC,WAAQ,kBACP,KAAK,EAAC,UAAU,EAChB,eAAe,EAAC,SAAS,EACzB,YAAY,EAAC,oBAAoB,gBAEjC,uBAAC,qBAAS,KAAG,IACJ,CACZ,CAAC;YACF,MAAM,CAAC,cAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,cAAM,EAC1B,uBAAC,WAAQ,kBACP,KAAK,EAAC,UAAU,EAChB,eAAe,EAAC,SAAS,EACzB,YAAY,EAAC,oBAAoB,EACjC,SAAS,EAAC,cAAc,gBAExB,uBAAC,qBAAS,KAAG,IACJ,CACZ,CAAC;YAEF,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,cAAM,EAC1B,uBAAC,WAAQ,kBAAC,KAAK,EAAC,UAAU,EAAC,IAAI,EAAC,WAAW,gBACzC,uBAAC,qBAAS,KAAG,IACJ,CACZ,CAAC;YAEF,MAAM,UAAU,GAAG,cAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAE9C,iBAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAE5B,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;QACpB,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;YAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;YAE3B,IAAA,cAAM,EACJ,uBAAC,WAAQ,kBACP,KAAK,EAAC,UAAU,EAChB,IAAI,EAAC,wBAAwB,EAC7B,QAAQ,EAAE,QAAQ,gBAElB,uBAAC,qBAAS,KAAG,IACJ,CACZ,CAAC;YACF,MAAM,oBAAS,CAAC,KAAK,CAAC,cAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;YACzE,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACpC,MAAM,CAAC,cAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;YAC1D,MAAM,oBAAS,CAAC,KAAK,CAAC,cAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;YAC1E,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACpC,MAAM,CAAC,cAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;YAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;YAE3B,IAAA,cAAM,EACJ,uBAAC,WAAQ,kBACP,KAAK,EAAC,UAAU,EAChB,IAAI,EAAC,wBAAwB,EAC7B,QAAQ,EAAE,QAAQ,gBAElB,uBAAC,qBAAS,KAAG,IACJ,CACZ,CAAC;YACF,MAAM,oBAAS,CAAC,GAAG,EAAE,CAAC;YACtB,MAAM,oBAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACpC,MAAM,CAAC,cAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;YAC1D,MAAM,oBAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACpC,MAAM,CAAC,cAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;YAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;YAE3B,IAAA,cAAM,EACJ,uBAAC,WAAQ,kBACP,KAAK,EAAC,UAAU,EAChB,IAAI,EAAC,wBAAwB,EAC7B,QAAQ,EAAE,QAAQ,gBAElB,uBAAC,qBAAS,KAAG,IACJ,CACZ,CAAC;YACF,MAAM,oBAAS,CAAC,GAAG,EAAE,CAAC;YACtB,MAAM,oBAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACpC,MAAM,CAAC,cAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;YAC1D,MAAM,oBAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACrC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACpC,MAAM,CAAC,cAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,8CAA8C,EAAE,GAAG,EAAE;YAC5D,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;gBAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;gBAE3B,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,cAAM,EAC1B,uBAAC,WAAQ,kBACP,KAAK,EAAC,UAAU,EAChB,IAAI,EAAC,wBAAwB,EAC7B,uBAAuB,QACvB,QAAQ,EAAE,QAAQ,gBAElB,uBAAC,qBAAS,KAAG,IACJ,CACZ,CAAC;gBAEF,MAAM,MAAM,GAAG,cAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBAE1C,MAAM,oBAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC9B,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBACpC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;gBAE1D,MAAM,oBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBACjC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBACpC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;YACxD,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;gBAC7C,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,cAAM,EAC1B,uBAAC,WAAQ,kBAAC,KAAK,EAAC,UAAU,EAAC,IAAI,EAAC,wBAAwB,gBACtD,uBAAC,qBAAS,KAAG,IACJ,CACZ,CAAC;gBAEF,MAAM,MAAM,GAAG,cAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBAE1C,MAAM,oBAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC9B,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;gBAE1D,MAAM,oBAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBACjC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,12 +1,12 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
2
- import { Children, cloneElement, isValidElement, useState, } from "react";
2
+ import { Children, cloneElement, isValidElement, useState, useCallback, } from "react";
3
3
  import clsx from "clsx";
4
4
  import { useId } from "@react-aria/utils";
5
5
  import { useBreakpoint } from "../../../hooks";
6
6
  import { Label } from "../../Label";
7
7
  import { Text } from "../../Text";
8
8
  import { QuestionHelp } from "../QuestionHelp/QuestionHelp";
9
- export function Question({ label, description, children, errorMessage, validationState, help, className, closeHelpOnOutsideClick, }) {
9
+ export function Question({ label, description, children, errorMessage, validationState, help, className, closeHelpOnOutsideClick, onChange, }) {
10
10
  const [isOpen, setIsOpen] = useState(false);
11
11
  const labelId = useId();
12
12
  const descriptionId = useId();
@@ -16,9 +16,12 @@ export function Question({ label, description, children, errorMessage, validatio
16
16
  const classes = clsx("chopin", "chopin/Question", {
17
17
  "--has-help-open": isOpen,
18
18
  }, isDesktop ? "--is-desktop" : "", className);
19
- const handleChange = (state) => {
19
+ const handleChange = useCallback((state) => {
20
20
  setIsOpen(state);
21
- };
21
+ if (onChange) {
22
+ onChange();
23
+ }
24
+ }, [onChange]);
22
25
  // Allow for rich html descriptions
23
26
  const DescriptionComponent = isValidElement(description) ? "div" : Text;
24
27
  const labelClasses = clsx("chopin/QuestionLabel", {
@@ -1 +1 @@
1
- {"version":3,"file":"Question.js","sourceRoot":"","sources":["../../../../../src/components/Chopin/Question/Question.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,cAAc,EAEd,QAAQ,GAET,MAAM,OAAO,CAAC;AACf,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAa5D,MAAM,UAAU,QAAQ,CAAC,EACvB,KAAK,EACL,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,IAAI,EACJ,SAAS,EACT,uBAAuB,GACT;IACd,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC;IACxB,MAAM,aAAa,GAAG,KAAK,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC;IACxB,MAAM,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAE3B,MAAM,OAAO,GAAG,IAAI,CAClB,QAAQ,EACR,iBAAiB,EACjB;QACE,iBAAiB,EAAE,MAAM;KAC1B,EACD,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAC/B,SAAS,CACV,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,KAAc,EAAE,EAAE;QACtC,SAAS,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC,CAAC;IAEF,mCAAmC;IACnC,MAAM,oBAAoB,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAExE,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,EAAE;QAChD,YAAY,EAAE,eAAe,KAAK,OAAO;QACzC,cAAc,EAAE,eAAe,KAAK,SAAS;KAC9C,CAAC,CAAC;IAEH,OAAO,CACL,6BAAK,SAAS,EAAE,OAAO,iBACrB,KAAC,KAAK,kBACJ,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EACxC,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE,OAAO,EACX,SAAS,EAAE,YAAY,gBAEtB,KAAK,IACA,EACP,IAAI,IAAI,CACP,KAAC,YAAY,kBACX,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,SAAS,EACpB,uBAAuB,EAAE,uBAAuB,gBAE/C,IAAI,IACQ,CAChB,EACA,WAAW,IAAI,CACd,KAAC,oBAAoB,kBACnB,EAAE,EAAE,aAAa,EACjB,SAAS,EAAC,4BAA4B,gBAErC,WAAW,IACS,CACxB,EACA,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAC9B,cAAc,CAAC,KAAK,CAAC;gBACnB,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE;oBAClB,YAAY;oBACZ,eAAe;oBACf,EAAE,EAAE,OAAO;oBACX,iBAAiB,EAAE,OAAO;oBAC1B,kBAAkB,EAAE,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;iBACrD,CAAC;gBACX,CAAC,CAAC,KAAK,CACV,KACG,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"Question.js","sourceRoot":"","sources":["../../../../../src/components/Chopin/Question/Question.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,cAAc,EAEd,QAAQ,EAER,WAAW,GACZ,MAAM,OAAO,CAAC;AACf,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAc5D,MAAM,UAAU,QAAQ,CAAC,EACvB,KAAK,EACL,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,IAAI,EACJ,SAAS,EACT,uBAAuB,EACvB,QAAQ,GACM;IACd,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC;IACxB,MAAM,aAAa,GAAG,KAAK,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC;IACxB,MAAM,EAAE,EAAE,EAAE,GAAG,aAAa,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAE3B,MAAM,OAAO,GAAG,IAAI,CAClB,QAAQ,EACR,iBAAiB,EACjB;QACE,iBAAiB,EAAE,MAAM;KAC1B,EACD,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAC/B,SAAS,CACV,CAAC;IAEF,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,KAAc,EAAE,EAAE;QACjB,SAAS,CAAC,KAAK,CAAC,CAAC;QAEjB,IAAI,QAAQ,EAAE;YACZ,QAAQ,EAAE,CAAC;SACZ;IACH,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,mCAAmC;IACnC,MAAM,oBAAoB,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAExE,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,EAAE;QAChD,YAAY,EAAE,eAAe,KAAK,OAAO;QACzC,cAAc,EAAE,eAAe,KAAK,SAAS;KAC9C,CAAC,CAAC;IAEH,OAAO,CACL,6BAAK,SAAS,EAAE,OAAO,iBACrB,KAAC,KAAK,kBACJ,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EACxC,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE,OAAO,EACX,SAAS,EAAE,YAAY,gBAEtB,KAAK,IACA,EACP,IAAI,IAAI,CACP,KAAC,YAAY,kBACX,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,SAAS,EACpB,uBAAuB,EAAE,uBAAuB,gBAE/C,IAAI,IACQ,CAChB,EACA,WAAW,IAAI,CACd,KAAC,oBAAoB,kBACnB,EAAE,EAAE,aAAa,EACjB,SAAS,EAAC,4BAA4B,gBAErC,WAAW,IACS,CACxB,EACA,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAC9B,cAAc,CAAC,KAAK,CAAC;gBACnB,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE;oBAClB,YAAY;oBACZ,eAAe;oBACf,EAAE,EAAE,OAAO;oBACX,iBAAiB,EAAE,OAAO;oBAC1B,kBAAkB,EAAE,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;iBACrD,CAAC;gBACX,CAAC,CAAC,KAAK,CACV,KACG,CACP,CAAC;AACJ,CAAC"}
@@ -59,35 +59,47 @@ describe("Question", () => {
59
59
  });
60
60
  describe("Help", () => {
61
61
  it("should be mouse accessible", async () => {
62
- render(_jsx(Question, Object.assign({ label: "Question", help: "This is a help message" }, { children: _jsx(TextField, {}) })));
62
+ const onChange = jest.fn();
63
+ render(_jsx(Question, Object.assign({ label: "Question", help: "This is a help message", onChange: onChange }, { children: _jsx(TextField, {}) })));
63
64
  await userEvent.click(screen.getByRole("button", { name: "Open Help" }));
65
+ expect(onChange).toHaveBeenCalled();
64
66
  expect(screen.queryByRole("tooltip")).toBeInTheDocument();
65
67
  await userEvent.click(screen.getByRole("button", { name: "Close Help" }));
68
+ expect(onChange).toHaveBeenCalled();
66
69
  expect(screen.queryByRole("tooltip")).not.toBeInTheDocument();
67
70
  });
68
71
  it("should be keyboard accessible", async () => {
69
- render(_jsx(Question, Object.assign({ label: "Question", help: "This is a help message" }, { children: _jsx(TextField, {}) })));
72
+ const onChange = jest.fn();
73
+ render(_jsx(Question, Object.assign({ label: "Question", help: "This is a help message", onChange: onChange }, { children: _jsx(TextField, {}) })));
70
74
  await userEvent.tab();
71
75
  await userEvent.keyboard("{enter}");
76
+ expect(onChange).toHaveBeenCalled();
72
77
  expect(screen.queryByRole("tooltip")).toBeInTheDocument();
73
78
  await userEvent.keyboard("{enter}");
79
+ expect(onChange).toHaveBeenCalled();
74
80
  expect(screen.queryByRole("tooltip")).not.toBeInTheDocument();
75
81
  });
76
82
  it("should close on escape key", async () => {
77
- render(_jsx(Question, Object.assign({ label: "Question", help: "This is a help message" }, { children: _jsx(TextField, {}) })));
83
+ const onChange = jest.fn();
84
+ render(_jsx(Question, Object.assign({ label: "Question", help: "This is a help message", onChange: onChange }, { children: _jsx(TextField, {}) })));
78
85
  await userEvent.tab();
79
86
  await userEvent.keyboard("{enter}");
87
+ expect(onChange).toHaveBeenCalled();
80
88
  expect(screen.queryByRole("tooltip")).toBeInTheDocument();
81
89
  await userEvent.keyboard("{escape}");
90
+ expect(onChange).toHaveBeenCalled();
82
91
  expect(screen.queryByRole("tooltip")).not.toBeInTheDocument();
83
92
  });
84
93
  describe("given closeHelpOnOutsideClick is set to true", () => {
85
94
  it("should close on outside click", async () => {
86
- const { container } = render(_jsx(Question, Object.assign({ label: "Question", help: "This is a help message", closeHelpOnOutsideClick: true }, { children: _jsx(TextField, {}) })));
95
+ const onChange = jest.fn();
96
+ const { container } = render(_jsx(Question, Object.assign({ label: "Question", help: "This is a help message", closeHelpOnOutsideClick: true, onChange: onChange }, { children: _jsx(TextField, {}) })));
87
97
  const toggle = screen.getByRole("button");
88
98
  await userEvent.click(toggle);
99
+ expect(onChange).toHaveBeenCalled();
89
100
  expect(toggle.parentElement).toHaveClass(OPEN_CLASS_NAME);
90
101
  await userEvent.click(container);
102
+ expect(onChange).toHaveBeenCalled();
91
103
  expect(toggle.parentElement).toHaveClass(CLOSED_CLASS_NAME);
92
104
  });
93
105
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Question.test.js","sourceRoot":"","sources":["../../../../../src/components/Chopin/Question/Question.test.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Question.test.js","sourceRoot":"","sources":["../../../../../src/components/Chopin/Question/Question.test.tsx"],"names":[],"mappings":"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"}
package/dist/mobius.d.ts CHANGED
@@ -795,7 +795,7 @@ export declare interface ProgressProps extends AriaProgressBarProps, DOMProps, R
795
795
 
796
796
  export declare type ProgressRef = Ref<ProgressElementType>;
797
797
 
798
- declare function Question({ label, description, children, errorMessage, validationState, help, className, closeHelpOnOutsideClick, }: QuestionProps): JSX_2.Element;
798
+ declare function Question({ label, description, children, errorMessage, validationState, help, className, closeHelpOnOutsideClick, onChange, }: QuestionProps): JSX_2.Element;
799
799
 
800
800
  declare const QuestionGroup: ForwardedRefComponent<QuestionGroupProps, QuestionGroupElementType>;
801
801
 
@@ -821,6 +821,7 @@ declare interface QuestionProps {
821
821
  help?: ReactNode;
822
822
  className?: string;
823
823
  closeHelpOnOutsideClick?: boolean;
824
+ onChange?: () => void;
824
825
  }
825
826
 
826
827
  export declare const Radio: ForwardedRefComponent<RadioProps, RadioElementType>;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@simplybusiness/mobius",
3
3
  "license": "UNLICENSED",
4
- "version": "3.4.0",
4
+ "version": "3.4.2",
5
5
  "description": "Core library of Mobius react components",
6
6
  "repository": {
7
7
  "type": "git",
@@ -136,50 +136,77 @@ describe("Question", () => {
136
136
 
137
137
  describe("Help", () => {
138
138
  it("should be mouse accessible", async () => {
139
+ const onChange = jest.fn();
140
+
139
141
  render(
140
- <Question label="Question" help="This is a help message">
142
+ <Question
143
+ label="Question"
144
+ help="This is a help message"
145
+ onChange={onChange}
146
+ >
141
147
  <TextField />
142
148
  </Question>,
143
149
  );
144
150
  await userEvent.click(screen.getByRole("button", { name: "Open Help" }));
151
+ expect(onChange).toHaveBeenCalled();
145
152
  expect(screen.queryByRole("tooltip")).toBeInTheDocument();
146
153
  await userEvent.click(screen.getByRole("button", { name: "Close Help" }));
154
+ expect(onChange).toHaveBeenCalled();
147
155
  expect(screen.queryByRole("tooltip")).not.toBeInTheDocument();
148
156
  });
149
157
 
150
158
  it("should be keyboard accessible", async () => {
159
+ const onChange = jest.fn();
160
+
151
161
  render(
152
- <Question label="Question" help="This is a help message">
162
+ <Question
163
+ label="Question"
164
+ help="This is a help message"
165
+ onChange={onChange}
166
+ >
153
167
  <TextField />
154
168
  </Question>,
155
169
  );
156
170
  await userEvent.tab();
157
171
  await userEvent.keyboard("{enter}");
172
+ expect(onChange).toHaveBeenCalled();
158
173
  expect(screen.queryByRole("tooltip")).toBeInTheDocument();
159
174
  await userEvent.keyboard("{enter}");
175
+ expect(onChange).toHaveBeenCalled();
160
176
  expect(screen.queryByRole("tooltip")).not.toBeInTheDocument();
161
177
  });
162
178
 
163
179
  it("should close on escape key", async () => {
180
+ const onChange = jest.fn();
181
+
164
182
  render(
165
- <Question label="Question" help="This is a help message">
183
+ <Question
184
+ label="Question"
185
+ help="This is a help message"
186
+ onChange={onChange}
187
+ >
166
188
  <TextField />
167
189
  </Question>,
168
190
  );
169
191
  await userEvent.tab();
170
192
  await userEvent.keyboard("{enter}");
193
+ expect(onChange).toHaveBeenCalled();
171
194
  expect(screen.queryByRole("tooltip")).toBeInTheDocument();
172
195
  await userEvent.keyboard("{escape}");
196
+ expect(onChange).toHaveBeenCalled();
173
197
  expect(screen.queryByRole("tooltip")).not.toBeInTheDocument();
174
198
  });
175
199
 
176
200
  describe("given closeHelpOnOutsideClick is set to true", () => {
177
201
  it("should close on outside click", async () => {
202
+ const onChange = jest.fn();
203
+
178
204
  const { container } = render(
179
205
  <Question
180
206
  label="Question"
181
207
  help="This is a help message"
182
208
  closeHelpOnOutsideClick
209
+ onChange={onChange}
183
210
  >
184
211
  <TextField />
185
212
  </Question>,
@@ -188,11 +215,11 @@ describe("Question", () => {
188
215
  const toggle = screen.getByRole("button");
189
216
 
190
217
  await userEvent.click(toggle);
191
-
218
+ expect(onChange).toHaveBeenCalled();
192
219
  expect(toggle.parentElement).toHaveClass(OPEN_CLASS_NAME);
193
220
 
194
221
  await userEvent.click(container);
195
-
222
+ expect(onChange).toHaveBeenCalled();
196
223
  expect(toggle.parentElement).toHaveClass(CLOSED_CLASS_NAME);
197
224
  });
198
225
  });
@@ -208,11 +235,9 @@ describe("Question", () => {
208
235
  const toggle = screen.getByRole("button");
209
236
 
210
237
  await userEvent.click(toggle);
211
-
212
238
  expect(toggle.parentElement).toHaveClass(OPEN_CLASS_NAME);
213
239
 
214
240
  await userEvent.click(container);
215
-
216
241
  expect(toggle.parentElement).toHaveClass(OPEN_CLASS_NAME);
217
242
  });
218
243
  });
@@ -5,6 +5,7 @@ import {
5
5
  ReactNode,
6
6
  useState,
7
7
  ReactElement,
8
+ useCallback,
8
9
  } from "react";
9
10
  import clsx from "clsx";
10
11
  import { useId } from "@react-aria/utils";
@@ -22,6 +23,7 @@ export interface QuestionProps {
22
23
  help?: ReactNode;
23
24
  className?: string;
24
25
  closeHelpOnOutsideClick?: boolean;
26
+ onChange?: () => void;
25
27
  }
26
28
 
27
29
  export function Question({
@@ -33,6 +35,7 @@ export function Question({
33
35
  help,
34
36
  className,
35
37
  closeHelpOnOutsideClick,
38
+ onChange,
36
39
  }: QuestionProps) {
37
40
  const [isOpen, setIsOpen] = useState(false);
38
41
  const labelId = useId();
@@ -51,9 +54,16 @@ export function Question({
51
54
  className,
52
55
  );
53
56
 
54
- const handleChange = (state: boolean) => {
55
- setIsOpen(state);
56
- };
57
+ const handleChange = useCallback(
58
+ (state: boolean) => {
59
+ setIsOpen(state);
60
+
61
+ if (onChange) {
62
+ onChange();
63
+ }
64
+ },
65
+ [onChange],
66
+ );
57
67
 
58
68
  // Allow for rich html descriptions
59
69
  const DescriptionComponent = isValidElement(description) ? "div" : Text;