@madie/madie-design-system 1.2.34 → 1.2.37

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.
Files changed (83) hide show
  1. package/.storybook/main.js +6 -0
  2. package/components/Instant/Instant.stories.js +28 -0
  3. package/components/Instant/index.jsx +267 -0
  4. package/components/TextField/TextField.stories.js +14 -0
  5. package/components/TextField/index.jsx +45 -40
  6. package/components/index.js +2 -0
  7. package/coverage/clover.xml +78 -26
  8. package/coverage/coverage-final.json +5 -4
  9. package/coverage/lcov-report/index.html +29 -14
  10. package/coverage/lcov-report/react/components/Accordion/index.html +1 -1
  11. package/coverage/lcov-report/react/components/Accordion/index.jsx.html +1 -1
  12. package/coverage/lcov-report/react/components/Button/index.html +1 -1
  13. package/coverage/lcov-report/react/components/Button/index.js.html +1 -1
  14. package/coverage/lcov-report/react/components/DateField/DateField.jsx.html +1 -1
  15. package/coverage/lcov-report/react/components/DateField/index.html +1 -1
  16. package/coverage/lcov-report/react/components/DateTimeField/DateTimeField.jsx.html +1 -1
  17. package/coverage/lcov-report/react/components/DateTimeField/index.html +1 -1
  18. package/coverage/lcov-report/react/components/Error/Collapsible.jsx.html +1 -1
  19. package/coverage/lcov-report/react/components/Error/ErrorUI.jsx.html +1 -1
  20. package/coverage/lcov-report/react/components/Error/error.js.html +1 -1
  21. package/coverage/lcov-report/react/components/Error/index.html +1 -1
  22. package/coverage/lcov-report/react/components/Footer/FooterUI.jsx.html +1 -1
  23. package/coverage/lcov-report/react/components/Footer/LegacyFooterUI.jsx.html +1 -1
  24. package/coverage/lcov-report/react/components/Footer/footer.js.html +1 -1
  25. package/coverage/lcov-report/react/components/Footer/index.html +1 -1
  26. package/coverage/lcov-report/react/components/Infotip/Infotip.jsx.html +1 -1
  27. package/coverage/lcov-report/react/components/Infotip/InfotipIcon.jsx.html +1 -1
  28. package/coverage/lcov-report/react/components/Infotip/index.html +1 -1
  29. package/coverage/lcov-report/react/components/Infotip/index.js.html +1 -1
  30. package/coverage/lcov-report/react/components/InputLabel/index.html +1 -1
  31. package/coverage/lcov-report/react/components/InputLabel/index.jsx.html +4 -4
  32. package/coverage/lcov-report/react/components/Instant/index.html +116 -0
  33. package/coverage/lcov-report/react/components/Instant/index.jsx.html +886 -0
  34. package/coverage/lcov-report/react/components/MadieAlert/index.html +1 -1
  35. package/coverage/lcov-report/react/components/MadieAlert/index.jsx.html +1 -1
  36. package/coverage/lcov-report/react/components/MadieDeleteDialog/index.html +1 -1
  37. package/coverage/lcov-report/react/components/MadieDeleteDialog/index.jsx.html +1 -1
  38. package/coverage/lcov-report/react/components/MadieDialog/index.html +1 -1
  39. package/coverage/lcov-report/react/components/MadieDialog/index.jsx.html +1 -1
  40. package/coverage/lcov-report/react/components/MadieDiscardDialog/index.html +1 -1
  41. package/coverage/lcov-report/react/components/MadieDiscardDialog/index.jsx.html +1 -1
  42. package/coverage/lcov-report/react/components/MadieSpinner/index.html +1 -1
  43. package/coverage/lcov-report/react/components/MadieSpinner/index.jsx.html +1 -1
  44. package/coverage/lcov-report/react/components/MadieTooltip/index.html +1 -1
  45. package/coverage/lcov-report/react/components/MadieTooltip/index.jsx.html +3 -3
  46. package/coverage/lcov-report/react/components/MadieTooltipIcon/index.html +1 -1
  47. package/coverage/lcov-report/react/components/MadieTooltipIcon/index.jsx.html +3 -3
  48. package/coverage/lcov-report/react/components/Pagination/index.html +1 -1
  49. package/coverage/lcov-report/react/components/Pagination/index.jsx.html +1 -1
  50. package/coverage/lcov-report/react/components/Popover/index.html +1 -1
  51. package/coverage/lcov-report/react/components/Popover/index.js.html +1 -1
  52. package/coverage/lcov-report/react/components/ReadOnlyTextField/index.html +1 -1
  53. package/coverage/lcov-report/react/components/ReadOnlyTextField/index.jsx.html +1 -1
  54. package/coverage/lcov-report/react/components/Select/index.html +1 -1
  55. package/coverage/lcov-report/react/components/Select/index.jsx.html +1 -1
  56. package/coverage/lcov-report/react/components/Tabs/Tab.js.html +1 -1
  57. package/coverage/lcov-report/react/components/Tabs/index.html +1 -1
  58. package/coverage/lcov-report/react/components/Tabs/index.js.html +1 -1
  59. package/coverage/lcov-report/react/components/TextArea/index.html +1 -1
  60. package/coverage/lcov-report/react/components/TextArea/index.jsx.html +1 -1
  61. package/coverage/lcov-report/react/components/TextField/index.html +11 -11
  62. package/coverage/lcov-report/react/components/TextField/index.jsx.html +74 -59
  63. package/coverage/lcov-report/react/components/Toast/index.html +1 -1
  64. package/coverage/lcov-report/react/components/Toast/index.jsx.html +1 -1
  65. package/coverage/lcov-report/react/components/Tooltip/Tooltip.jsx.html +1 -1
  66. package/coverage/lcov-report/react/components/Tooltip/index.html +1 -1
  67. package/coverage/lcov-report/react/components/Tooltip/index.js.html +1 -1
  68. package/coverage/lcov-report/react/components/Tooltip/position.js.html +1 -1
  69. package/coverage/lcov-report/react/index.html +1 -1
  70. package/coverage/lcov-report/react/index.js.html +1 -1
  71. package/coverage/lcov-report/react/lib/Chevron.jsx.html +1 -1
  72. package/coverage/lcov-report/react/lib/SvgComponents.jsx.html +1 -1
  73. package/coverage/lcov-report/react/lib/index.html +1 -1
  74. package/coverage/lcov.info +173 -64
  75. package/dist/browser.js +1 -1
  76. package/dist/index.js +1 -1
  77. package/dist/react/index.js +1 -1
  78. package/dist/react/index.js.map +1 -1
  79. package/package-lock.json +203 -120
  80. package/package.json +2 -2
  81. package/test/components/Instant.test.js +83 -0
  82. package/test/components/TextField.test.js +47 -15
  83. package/webpack.config.react.js +13 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@madie/madie-design-system",
3
- "version": "1.2.34",
3
+ "version": "1.2.37",
4
4
  "description": "Shared style guide across the Madie program.",
5
5
  "main": "dist/index.js",
6
6
  "homepage": "https://github.com/MeasureAuthoringTool/madie-design-system",
@@ -117,7 +117,7 @@
117
117
  "@reach/portal": "^0.16.2",
118
118
  "@reach/tooltip": "^0.16.2",
119
119
  "axios": "^1.7.4",
120
- "cookie": "^0.4.1",
120
+ "cookie": "^0.7.2",
121
121
  "cross-env": "^7.0.3",
122
122
  "d3-selection": "^1.4.2",
123
123
  "d3-shape": "^1.3.7",
@@ -0,0 +1,83 @@
1
+ import "@testing-library/jest-dom";
2
+ import React, { useState } from "react";
3
+ import { render, fireEvent, screen } from "@testing-library/react";
4
+ import Instant from "../../components/Instant";
5
+ import dayjs from "dayjs";
6
+
7
+ export const InstantTester = () => {
8
+ const [value, setValue] = useState("");
9
+ const handleDateTimeChange = (v) => {
10
+ setValue(v)
11
+ };
12
+ return (
13
+ <div>
14
+ <div data-testId="test-date">{value}</div>
15
+ <Instant
16
+ disabled={false}
17
+ id="status_date_time"
18
+ label="Status Date"
19
+ handleDateTimeChange={handleDateTimeChange}
20
+ dateTimeValue={value}
21
+ dateFieldSx={{}}
22
+ />
23
+ </div>)
24
+ }
25
+
26
+
27
+ describe("Instant", () => {
28
+ const { getByDisplayValue, findByTestId, findByText, getByText, getByTestId } = screen;
29
+ it("It renders as expected with static values", async () => {
30
+ const handleDateTimeChange = jest.fn();
31
+ render(
32
+ <div>
33
+ <Instant
34
+ disabled={false}
35
+ id="status_date_time"
36
+ label="Status Date"
37
+ handleDateTimeChange={handleDateTimeChange}
38
+ dateTimeValue={dayjs("2022-04-17")}
39
+ dateFieldSx={{}}
40
+ />
41
+ </div>
42
+ );
43
+ const labelText = await findByText("Status Date");
44
+ expect(labelText).toBeInTheDocument();
45
+ expect(await findByText("Status Date")).toBeInTheDocument();
46
+ expect(
47
+ getByDisplayValue("04/17/2022")
48
+ ).toBeInTheDocument();
49
+ });
50
+
51
+ it("we can change the date from null and when date to date", async () => {
52
+ await render(<InstantTester />)
53
+ const labelText = await findByText("Status Date");
54
+ expect(labelText).toBeInTheDocument();
55
+ expect(await findByText("Status Date")).toBeInTheDocument();
56
+ const inputField = await findByTestId("status_date_time-input");
57
+ fireEvent.change(inputField, { target: { value: "01/01/2026" } })
58
+ expect(
59
+ getByText("2026-01-01T00:00:00.000+00:00")
60
+ ).toBeInTheDocument();
61
+ fireEvent.change(inputField, { target: { value: "01/01/2027" } })
62
+ expect(
63
+ getByText("2027-01-01T00:00:00.000+00:00")
64
+ ).toBeInTheDocument();
65
+ });
66
+ it("Handles change for Hours, minutes, seconds, ms; does not combust.", async () => {
67
+
68
+ await render(<InstantTester />)
69
+ const labelText = await findByText("Status Date");
70
+ expect(labelText).toBeInTheDocument();
71
+ expect(await findByText("Status Date")).toBeInTheDocument();
72
+ const inputField = await findByTestId("status_date_time-input");
73
+ fireEvent.change(inputField, { target: { value: "01/01/2026" } })
74
+ expect(getByText("2026-01-01T00:00:00.000+00:00")).toBeInTheDocument();
75
+ fireEvent.change(getByTestId("status_date_time-hour-input"), { target : {value: "1"}})
76
+ fireEvent.change(getByTestId("status_date_time-minute-input"), { target : {value: "2"}})
77
+ fireEvent.change(getByTestId("status_date_time-second-input"), { target : {value: "3"}})
78
+ fireEvent.change(getByTestId("status_date_time-millisecond-input"), { target : {value: "4"}})
79
+ expect(
80
+ getByText("2026-01-01T01:02:03.004+00:00")
81
+ ).toBeInTheDocument();
82
+ });
83
+ });
@@ -2,7 +2,12 @@ import "@testing-library/jest-dom";
2
2
  import { describe, expect, test } from "@jest/globals";
3
3
  import TextField from "../../components/TextField/index";
4
4
  import { act, Simulate } from "react-dom/test-utils";
5
- import { findByTestId, render, fireEvent } from "@testing-library/react";
5
+ import {
6
+ findByTestId,
7
+ render,
8
+ fireEvent,
9
+ screen,
10
+ } from "@testing-library/react";
6
11
  import userEvent from "@testing-library/user-event";
7
12
 
8
13
  import * as React from "react";
@@ -98,43 +103,70 @@ describe("TextField", () => {
98
103
  size="small"
99
104
  />
100
105
  );
101
- const tooltipTrigger = await findByTestId("testName-tooltip-button")
106
+ const tooltipTrigger = await findByTestId(
107
+ "testName-tooltip-button"
108
+ );
102
109
 
103
110
  // click and escape
104
111
  act(() => {
105
112
  fireEvent.click(tooltipTrigger);
106
- })
113
+ });
107
114
  expect(getByText("tooltip text")).toBeInTheDocument();
108
115
  act(() => {
109
116
  fireEvent.keyDown(getByText(/tooltip text/i), {
110
117
  key: "Escape",
111
118
  code: "Escape",
112
119
  keyCode: 27,
113
- charCode: 27
114
- });
115
- })
116
- expect(getByTestId("testName-tooltip")).toHaveClass("hidden")
120
+ charCode: 27,
121
+ });
122
+ });
123
+ expect(getByTestId("testName-tooltip")).toHaveClass("hidden");
117
124
 
118
125
  // enter and leave
119
126
  act(() => {
120
127
  fireEvent.mouseEnter(getByTestId("testName-tooltip-button"));
121
- })
122
- expect(getByTestId("testName-tooltip")).not.toHaveClass("hidden")
128
+ });
129
+ expect(getByTestId("testName-tooltip")).not.toHaveClass("hidden");
123
130
  act(() => {
124
131
  fireEvent.mouseLeave(getByTestId("testName-tooltip-button"));
125
- })
126
- expect(getByTestId("testName-tooltip")).toHaveClass("hidden")
132
+ });
133
+ expect(getByTestId("testName-tooltip")).toHaveClass("hidden");
127
134
 
128
135
  // focus, blur
129
136
  act(() => {
130
137
  fireEvent.focus(getByTestId("testName-tooltip-button"));
131
- })
132
- expect(getByTestId("testName-tooltip")).not.toHaveClass("hidden")
138
+ });
139
+ expect(getByTestId("testName-tooltip")).not.toHaveClass("hidden");
133
140
 
134
141
  act(() => {
135
142
  fireEvent.blur(getByTestId("testName-tooltip-button"));
136
- })
137
- expect(getByTestId("testName-tooltip")).toHaveClass("hidden")
143
+ });
144
+ expect(getByTestId("testName-tooltip")).toHaveClass("hidden");
145
+ });
146
+ });
147
+
148
+ test("Textfield has different color for label", async () => {
149
+ await act(async () => {
150
+ const { findByTestId, getByTestId } = render(
151
+ <TextField
152
+ placeholder="test Name"
153
+ required
154
+ label="test Name"
155
+ labelColor={"#1976d2"}
156
+ id="testName"
157
+ inputProps={{ "data-testid": "test-name-input" }}
158
+ data-testid="test-name-text-field"
159
+ size="small"
160
+ />
161
+ );
162
+ screen.debug(undefined, 60000);
163
+ expect(
164
+ await findByTestId("test-name-text-field")
165
+ ).toBeInTheDocument();
166
+ const textNode = await getByTestId("test-name-input");
167
+ userEvent.type(textNode, "newVal");
168
+ Simulate.change(textNode);
169
+ expect(textNode.value).toBe("newVal");
138
170
  });
139
171
  });
140
172
  });
@@ -80,6 +80,19 @@ module.exports = {
80
80
  libraryTarget: "umd",
81
81
  globalObject: "this",
82
82
  },
83
+ // below lines fix hot reload but put CI/CD into a hanging state
84
+ // watch: true,
85
+ // watchOptions: {
86
+ // ignored: /node_modules/, // Don't watch files in node_modules
87
+ // aggregateTimeout: 300,
88
+ // poll: 1000,
89
+ // },
90
+ // devServer: {
91
+ // // static: path.join(__dirname, "dist/react"),
92
+ // // compress: true,
93
+ // hot: true, // Enable hot module replacement
94
+ // watchFiles: ["src/**/*", "components/**/*"], // Watch these files
95
+ // },
83
96
  devtool: "source-map",
84
97
  module: _module,
85
98
  plugins,