@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.
- package/.storybook/main.js +6 -0
- package/components/Instant/Instant.stories.js +28 -0
- package/components/Instant/index.jsx +267 -0
- package/components/TextField/TextField.stories.js +14 -0
- package/components/TextField/index.jsx +45 -40
- package/components/index.js +2 -0
- package/coverage/clover.xml +78 -26
- package/coverage/coverage-final.json +5 -4
- package/coverage/lcov-report/index.html +29 -14
- package/coverage/lcov-report/react/components/Accordion/index.html +1 -1
- package/coverage/lcov-report/react/components/Accordion/index.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Button/index.html +1 -1
- package/coverage/lcov-report/react/components/Button/index.js.html +1 -1
- package/coverage/lcov-report/react/components/DateField/DateField.jsx.html +1 -1
- package/coverage/lcov-report/react/components/DateField/index.html +1 -1
- package/coverage/lcov-report/react/components/DateTimeField/DateTimeField.jsx.html +1 -1
- package/coverage/lcov-report/react/components/DateTimeField/index.html +1 -1
- package/coverage/lcov-report/react/components/Error/Collapsible.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Error/ErrorUI.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Error/error.js.html +1 -1
- package/coverage/lcov-report/react/components/Error/index.html +1 -1
- package/coverage/lcov-report/react/components/Footer/FooterUI.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Footer/LegacyFooterUI.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Footer/footer.js.html +1 -1
- package/coverage/lcov-report/react/components/Footer/index.html +1 -1
- package/coverage/lcov-report/react/components/Infotip/Infotip.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Infotip/InfotipIcon.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Infotip/index.html +1 -1
- package/coverage/lcov-report/react/components/Infotip/index.js.html +1 -1
- package/coverage/lcov-report/react/components/InputLabel/index.html +1 -1
- package/coverage/lcov-report/react/components/InputLabel/index.jsx.html +4 -4
- package/coverage/lcov-report/react/components/Instant/index.html +116 -0
- package/coverage/lcov-report/react/components/Instant/index.jsx.html +886 -0
- package/coverage/lcov-report/react/components/MadieAlert/index.html +1 -1
- package/coverage/lcov-report/react/components/MadieAlert/index.jsx.html +1 -1
- package/coverage/lcov-report/react/components/MadieDeleteDialog/index.html +1 -1
- package/coverage/lcov-report/react/components/MadieDeleteDialog/index.jsx.html +1 -1
- package/coverage/lcov-report/react/components/MadieDialog/index.html +1 -1
- package/coverage/lcov-report/react/components/MadieDialog/index.jsx.html +1 -1
- package/coverage/lcov-report/react/components/MadieDiscardDialog/index.html +1 -1
- package/coverage/lcov-report/react/components/MadieDiscardDialog/index.jsx.html +1 -1
- package/coverage/lcov-report/react/components/MadieSpinner/index.html +1 -1
- package/coverage/lcov-report/react/components/MadieSpinner/index.jsx.html +1 -1
- package/coverage/lcov-report/react/components/MadieTooltip/index.html +1 -1
- package/coverage/lcov-report/react/components/MadieTooltip/index.jsx.html +3 -3
- package/coverage/lcov-report/react/components/MadieTooltipIcon/index.html +1 -1
- package/coverage/lcov-report/react/components/MadieTooltipIcon/index.jsx.html +3 -3
- package/coverage/lcov-report/react/components/Pagination/index.html +1 -1
- package/coverage/lcov-report/react/components/Pagination/index.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Popover/index.html +1 -1
- package/coverage/lcov-report/react/components/Popover/index.js.html +1 -1
- package/coverage/lcov-report/react/components/ReadOnlyTextField/index.html +1 -1
- package/coverage/lcov-report/react/components/ReadOnlyTextField/index.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Select/index.html +1 -1
- package/coverage/lcov-report/react/components/Select/index.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Tabs/Tab.js.html +1 -1
- package/coverage/lcov-report/react/components/Tabs/index.html +1 -1
- package/coverage/lcov-report/react/components/Tabs/index.js.html +1 -1
- package/coverage/lcov-report/react/components/TextArea/index.html +1 -1
- package/coverage/lcov-report/react/components/TextArea/index.jsx.html +1 -1
- package/coverage/lcov-report/react/components/TextField/index.html +11 -11
- package/coverage/lcov-report/react/components/TextField/index.jsx.html +74 -59
- package/coverage/lcov-report/react/components/Toast/index.html +1 -1
- package/coverage/lcov-report/react/components/Toast/index.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Tooltip/Tooltip.jsx.html +1 -1
- package/coverage/lcov-report/react/components/Tooltip/index.html +1 -1
- package/coverage/lcov-report/react/components/Tooltip/index.js.html +1 -1
- package/coverage/lcov-report/react/components/Tooltip/position.js.html +1 -1
- package/coverage/lcov-report/react/index.html +1 -1
- package/coverage/lcov-report/react/index.js.html +1 -1
- package/coverage/lcov-report/react/lib/Chevron.jsx.html +1 -1
- package/coverage/lcov-report/react/lib/SvgComponents.jsx.html +1 -1
- package/coverage/lcov-report/react/lib/index.html +1 -1
- package/coverage/lcov.info +173 -64
- package/dist/browser.js +1 -1
- package/dist/index.js +1 -1
- package/dist/react/index.js +1 -1
- package/dist/react/index.js.map +1 -1
- package/package-lock.json +203 -120
- package/package.json +2 -2
- package/test/components/Instant.test.js +83 -0
- package/test/components/TextField.test.js +47 -15
- 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.
|
|
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.
|
|
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 {
|
|
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(
|
|
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
|
});
|
package/webpack.config.react.js
CHANGED
|
@@ -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,
|