@linzjs/step-ag-grid 15.1.3 → 17.0.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/dist/GridTheme.scss +138 -106
- package/dist/index.css +1 -8
- package/dist/node_modules/@linzjs/lui/dist/assets/svg-content.d.ts +7 -0
- package/dist/src/components/ComponentLoadingWrapper.d.ts +3 -4
- package/dist/src/components/Grid.d.ts +2 -2
- package/dist/src/components/GridCell.d.ts +6 -6
- package/dist/src/components/GridCellMultiEditor.d.ts +2 -2
- package/dist/src/components/GridIcon.d.ts +2 -2
- package/dist/src/components/GridLoadableCell.d.ts +1 -2
- package/dist/src/components/GridNoRowsOverlay.d.ts +5 -4
- package/dist/src/components/GridPopoverHook.d.ts +3 -3
- package/dist/src/components/GridWrapper.d.ts +2 -3
- package/dist/src/components/PostSortRowsHook.d.ts +1 -1
- package/dist/src/components/gridFilter/GridFilterButtons.d.ts +2 -2
- package/dist/src/components/gridFilter/GridFilterColumnsToggle.d.ts +2 -2
- package/dist/src/components/gridFilter/GridFilterDownloadCsvButton.d.ts +1 -2
- package/dist/src/components/gridFilter/GridFilterQuick.d.ts +1 -2
- package/dist/src/components/gridFilter/GridFilters.d.ts +2 -5
- package/dist/src/components/gridForm/GridFormDropDown.d.ts +3 -3
- package/dist/src/components/gridForm/GridFormEditBearing.d.ts +1 -2
- package/dist/src/components/gridForm/GridFormMessage.d.ts +3 -3
- package/dist/src/components/gridForm/GridFormMultiSelect.d.ts +3 -3
- package/dist/src/components/gridForm/GridFormPopoverMenu.d.ts +4 -4
- package/dist/src/components/gridForm/GridFormSubComponentTextArea.d.ts +2 -2
- package/dist/src/components/gridForm/GridFormSubComponentTextInput.d.ts +2 -2
- package/dist/src/components/gridForm/GridFormTextArea.d.ts +2 -2
- package/dist/src/components/gridForm/GridFormTextInput.d.ts +1 -2
- package/dist/src/components/gridHeader/GridHeaderSelect.d.ts +1 -2
- package/dist/src/components/gridHook/useGridContextMenu.d.ts +1 -1
- package/dist/src/components/gridRender/GridRenderGenericCell.d.ts +2 -2
- package/dist/src/components/gridRender/GridRenderPopoutMenuCell.d.ts +1 -2
- package/dist/src/contexts/GridContext.d.ts +5 -5
- package/dist/src/contexts/GridContextProvider.d.ts +2 -6
- package/dist/src/contexts/GridPopoverContextProvider.d.ts +2 -3
- package/dist/src/contexts/GridUpdatingContextProvider.d.ts +2 -6
- package/dist/src/lui/ActionButton.d.ts +3 -3
- package/dist/src/lui/FormError.d.ts +3 -3
- package/dist/src/lui/TextAreaInput.d.ts +4 -4
- package/dist/src/lui/TextInputFormatted.d.ts +3 -3
- package/dist/src/react-menu3/components/ControlledMenu.d.ts +3 -3
- package/dist/src/react-menu3/components/FocusableItem.d.ts +4 -4
- package/dist/src/react-menu3/components/Menu.d.ts +2 -2
- package/dist/src/react-menu3/components/MenuButton.d.ts +1 -1
- package/dist/src/react-menu3/components/MenuDivider.d.ts +1 -1
- package/dist/src/react-menu3/components/MenuGroup.d.ts +2 -2
- package/dist/src/react-menu3/components/MenuHeader.d.ts +2 -2
- package/dist/src/react-menu3/components/MenuItem.d.ts +1 -1
- package/dist/src/react-menu3/components/MenuList.d.ts +1 -2
- package/dist/src/react-menu3/components/MenuRadioGroup.d.ts +2 -2
- package/dist/src/react-menu3/components/SubMenu.d.ts +2 -2
- package/dist/src/react-menu3/utils/utils.d.ts +1 -1
- package/dist/src/react-menu3/utils/withHovering.d.ts +2 -2
- package/dist/src/utils/textValidator.d.ts +3 -3
- package/dist/step-ag-grid.cjs.js +1007 -3909
- package/dist/step-ag-grid.cjs.js.map +1 -1
- package/dist/step-ag-grid.esm.js +1008 -3910
- package/dist/step-ag-grid.esm.js.map +1 -1
- package/package.json +63 -59
- package/src/components/ComponentLoadingWrapper.tsx +9 -6
- package/src/components/Grid.tsx +32 -27
- package/src/components/GridCell.tsx +5 -5
- package/src/components/GridCellMultiEditor.tsx +2 -2
- package/src/components/GridIcon.tsx +2 -1
- package/src/components/GridNoRowsOverlay.tsx +10 -11
- package/src/components/GridPopoverHook.tsx +4 -4
- package/src/components/GridWrapper.tsx +2 -3
- package/src/components/PostSortRowsHook.ts +4 -4
- package/src/components/gridFilter/GridFilterButtons.tsx +2 -2
- package/src/components/gridFilter/GridFilterColumnsToggle.tsx +2 -2
- package/src/components/gridFilter/GridFilters.tsx +4 -6
- package/src/components/gridForm/GridFormDropDown.tsx +4 -4
- package/src/components/gridForm/GridFormMessage.tsx +3 -3
- package/src/components/gridForm/GridFormMultiSelect.tsx +2 -1
- package/src/components/gridForm/GridFormPopoverMenu.tsx +4 -4
- package/src/components/gridForm/GridFormSubComponentTextArea.tsx +2 -2
- package/src/components/gridForm/GridFormSubComponentTextInput.tsx +2 -2
- package/src/components/gridForm/GridFormTextArea.tsx +2 -2
- package/src/components/gridPopoverEdit/GridPopoverMessage.ts +1 -1
- package/src/components/gridRender/GridRenderGenericCell.tsx +2 -1
- package/src/contexts/GridContext.tsx +5 -5
- package/src/contexts/GridContextProvider.tsx +57 -32
- package/src/contexts/GridPopoverContextProvider.tsx +2 -3
- package/src/contexts/GridUpdatingContextProvider.tsx +2 -6
- package/src/lui/ActionButton.tsx +4 -3
- package/src/lui/FormError.tsx +3 -1
- package/src/lui/TextAreaInput.tsx +3 -3
- package/src/lui/TextInputFormatted.tsx +5 -4
- package/src/lui/reactUtils.test.tsx +7 -6
- package/src/react-menu3/components/FocusableItem.tsx +2 -2
- package/src/react-menu3/utils/utils.ts +1 -1
- package/src/react-menu3/utils/withHovering.tsx +2 -2
- package/src/stories/components/ActionButton.stories.tsx +2 -1
- package/src/stories/grid/FormTest.tsx +4 -3
- package/src/stories/grid/GridFilterButtons.stories.tsx +13 -16
- package/src/stories/grid/GridNoRowsOverlay.stories.tsx +14 -11
- package/src/stories/grid/GridNonEditableRow.stories.tsx +13 -5
- package/src/stories/grid/GridPopoutContextMenu.stories.tsx +12 -4
- package/src/stories/grid/GridPopoutEditGeneric.stories.tsx +12 -4
- package/src/stories/grid/GridPopoutEditGenericTextArea.stories.tsx +13 -5
- package/src/stories/grid/GridPopoverEditBearing.stories.tsx +11 -3
- package/src/stories/grid/GridPopoverEditDropDown.stories.tsx +11 -3
- package/src/stories/grid/GridPopoverEditMultiSelect.stories.tsx +11 -3
- package/src/stories/grid/GridPopoverEditMultiSelectGrid.stories.tsx +12 -3
- package/src/stories/grid/GridReadOnly.stories.tsx +22 -5
- package/src/stories/grid/gridFormInteraction/GridFormDropDownInteraction.stories.tsx +15 -12
- package/src/stories/grid/gridFormInteraction/GridFormEditBearingCorrectionInteraction.stories.tsx +20 -12
- package/src/stories/grid/gridFormInteraction/GridFormEditBearingInteraction.stories.tsx +20 -12
- package/src/stories/grid/gridFormInteraction/GridFormMultiSelectGridInteraction.stories.tsx +13 -10
- package/src/stories/grid/gridFormInteraction/GridFormMultiSelectInteraction.stories.tsx +19 -16
- package/src/stories/grid/gridFormInteraction/GridFormPopoverMenuInteraction.stories.tsx +21 -17
- package/src/stories/grid/gridFormInteraction/GridFormTextAreaInteraction.stories.tsx +13 -10
- package/src/stories/grid/gridFormInteraction/GridFormTextInputInteraction.stories.tsx +15 -12
- package/src/stories/grid/gridFormStatic/GridFormDropDown.stories.tsx +5 -2
- package/src/stories/grid/gridFormStatic/GridFormEditBearing.stories.tsx +5 -2
- package/src/stories/grid/gridFormStatic/GridFormEditBearingCorrection.stories.tsx +5 -2
- package/src/stories/grid/gridFormStatic/GridFormMessage.stories.tsx +6 -3
- package/src/stories/grid/gridFormStatic/GridFormMultiSelect.stories.tsx +4 -1
- package/src/stories/grid/gridFormStatic/GridFormPopoverMenu.stories.tsx +4 -1
- package/src/stories/grid/gridFormStatic/GridFormTextArea.stories.tsx +5 -2
- package/src/stories/grid/gridFormStatic/GridFormTextInput.stories.tsx +5 -2
- package/src/stories/grid/interactions/GridKeyboardInteractions.stories.tsx +25 -12
- package/src/stories/react-menu/ReactMenu.stories.tsx +6 -4
- package/src/styles/ComponentLoadingWrapper.scss +1 -4
- package/src/styles/Grid.scss +0 -4
- package/src/styles/GridTheme.scss +138 -106
- package/src/utils/testUtil.ts +3 -0
- package/src/utils/textValidator.ts +3 -1
|
@@ -1,11 +1,12 @@
|
|
|
1
|
+
import "@linzjs/lui/dist/scss/base.scss";
|
|
2
|
+
|
|
1
3
|
import { expect } from "@storybook/jest";
|
|
2
4
|
import { ComponentMeta, ComponentStory } from "@storybook/react/dist/ts3.9/client/preview/types-6-3";
|
|
3
5
|
import { within } from "@storybook/testing-library";
|
|
4
6
|
|
|
5
7
|
import "@linzjs/lui/dist/fonts";
|
|
6
|
-
import "@linzjs/lui/dist/scss/base.scss";
|
|
7
8
|
|
|
8
|
-
import { GridNoRowsOverlay } from "../../components";
|
|
9
|
+
import { GridNoRowsOverlay, GridNoRowsOverlayProps } from "../../components";
|
|
9
10
|
|
|
10
11
|
export default {
|
|
11
12
|
title: "Components / Grids / GridNoRowsOverlay",
|
|
@@ -13,24 +14,26 @@ export default {
|
|
|
13
14
|
args: {},
|
|
14
15
|
} as ComponentMeta<typeof GridNoRowsOverlay>;
|
|
15
16
|
|
|
16
|
-
const GridNoRowsOverlayTemplate: ComponentStory<typeof GridNoRowsOverlay> = (params) => {
|
|
17
|
+
const GridNoRowsOverlayTemplate: ComponentStory<typeof GridNoRowsOverlay> = (params: GridNoRowsOverlayProps) => {
|
|
17
18
|
return <GridNoRowsOverlay {...params} />;
|
|
18
19
|
};
|
|
19
20
|
|
|
20
|
-
export const
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
export const _GridNoRowsEmpty = GridNoRowsOverlayTemplate.bind({});
|
|
22
|
+
_GridNoRowsEmpty.args = {
|
|
23
|
+
rowCount: 0,
|
|
24
|
+
filteredRowCount: 0,
|
|
23
25
|
};
|
|
24
|
-
|
|
26
|
+
_GridNoRowsEmpty.play = async ({ canvasElement }) => {
|
|
25
27
|
const canvas = within(canvasElement);
|
|
26
28
|
expect(await canvas.findByText("There are currently no rows")).toBeInTheDocument();
|
|
27
29
|
};
|
|
28
30
|
|
|
29
|
-
export const
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
export const _GridNoRowsFiltered = GridNoRowsOverlayTemplate.bind({});
|
|
32
|
+
_GridNoRowsFiltered.args = {
|
|
33
|
+
rowCount: 1,
|
|
34
|
+
filteredRowCount: 0,
|
|
32
35
|
};
|
|
33
|
-
|
|
36
|
+
_GridNoRowsFiltered.play = async ({ canvasElement }) => {
|
|
34
37
|
const canvas = within(canvasElement);
|
|
35
38
|
expect(await canvas.findByText("All rows have been filtered")).toBeInTheDocument();
|
|
36
39
|
};
|
|
@@ -1,11 +1,16 @@
|
|
|
1
|
+
import "../../styles/GridTheme.scss";
|
|
2
|
+
import "../../styles/index.scss";
|
|
3
|
+
import "@linzjs/lui/dist/scss/base.scss";
|
|
4
|
+
|
|
5
|
+
import { expect } from "@storybook/jest";
|
|
1
6
|
import { ComponentMeta, ComponentStory } from "@storybook/react/dist/ts3.9/client/preview/types-6-3";
|
|
7
|
+
import { waitFor } from "@storybook/testing-library";
|
|
2
8
|
import { ColDef } from "ag-grid-community";
|
|
3
9
|
import { GridPopoverEditDropDown } from "components/gridPopoverEdit/GridPopoverEditDropDown";
|
|
4
10
|
import { GridPopoverTextArea } from "components/gridPopoverEdit/GridPopoverTextArea";
|
|
5
11
|
import { useMemo, useState } from "react";
|
|
6
12
|
|
|
7
13
|
import "@linzjs/lui/dist/fonts";
|
|
8
|
-
import "@linzjs/lui/dist/scss/base.scss";
|
|
9
14
|
|
|
10
15
|
import {
|
|
11
16
|
ColDefT,
|
|
@@ -20,8 +25,6 @@ import {
|
|
|
20
25
|
MenuOption,
|
|
21
26
|
wait,
|
|
22
27
|
} from "../..";
|
|
23
|
-
import "../../styles/GridTheme.scss";
|
|
24
|
-
import "../../styles/index.scss";
|
|
25
28
|
|
|
26
29
|
export default {
|
|
27
30
|
title: "Components / Grids",
|
|
@@ -175,5 +178,10 @@ const GridNonEditableRowTemplate: ComponentStory<typeof Grid> = (props: GridProp
|
|
|
175
178
|
);
|
|
176
179
|
};
|
|
177
180
|
|
|
178
|
-
export const
|
|
179
|
-
|
|
181
|
+
export const _NonEditableRow = GridNonEditableRowTemplate.bind({});
|
|
182
|
+
_NonEditableRow.args = { autoSelectFirstRow: true, selectable: true };
|
|
183
|
+
_NonEditableRow.play = async ({ canvasElement }) => {
|
|
184
|
+
await waitFor(() => {
|
|
185
|
+
expect(canvasElement.querySelector(".Grid-ready")).toBeInTheDocument();
|
|
186
|
+
});
|
|
187
|
+
};
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
+
import "../../styles/GridTheme.scss";
|
|
2
|
+
import "../../styles/index.scss";
|
|
3
|
+
import "@linzjs/lui/dist/scss/base.scss";
|
|
4
|
+
|
|
5
|
+
import { expect } from "@storybook/jest";
|
|
1
6
|
import { ComponentMeta, ComponentStory } from "@storybook/react/dist/ts3.9/client/preview/types-6-3";
|
|
7
|
+
import { waitFor } from "@storybook/testing-library";
|
|
2
8
|
import { ReactElement, useCallback, useContext, useMemo, useState } from "react";
|
|
3
9
|
|
|
4
10
|
import "@linzjs/lui/dist/fonts";
|
|
5
|
-
import "@linzjs/lui/dist/scss/base.scss";
|
|
6
11
|
|
|
7
12
|
import {
|
|
8
13
|
ActionButton,
|
|
@@ -17,8 +22,6 @@ import {
|
|
|
17
22
|
MenuItem,
|
|
18
23
|
wait,
|
|
19
24
|
} from "../..";
|
|
20
|
-
import "../../styles/GridTheme.scss";
|
|
21
|
-
import "../../styles/index.scss";
|
|
22
25
|
import { IFormTestRow } from "./FormTest";
|
|
23
26
|
|
|
24
27
|
export default {
|
|
@@ -133,4 +136,9 @@ const GridPopoutContextMenuTemplate: ComponentStory<typeof Grid> = (props: GridP
|
|
|
133
136
|
);
|
|
134
137
|
};
|
|
135
138
|
|
|
136
|
-
export const
|
|
139
|
+
export const _EditContextMenu = GridPopoutContextMenuTemplate.bind({});
|
|
140
|
+
_EditContextMenu.play = async ({ canvasElement }) => {
|
|
141
|
+
await waitFor(() => {
|
|
142
|
+
expect(canvasElement.querySelector(".Grid-ready")).toBeInTheDocument();
|
|
143
|
+
});
|
|
144
|
+
};
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
+
import "../../styles/GridTheme.scss";
|
|
2
|
+
import "../../styles/index.scss";
|
|
3
|
+
import "@linzjs/lui/dist/scss/base.scss";
|
|
4
|
+
|
|
5
|
+
import { expect } from "@storybook/jest";
|
|
1
6
|
import { ComponentMeta, ComponentStory } from "@storybook/react/dist/ts3.9/client/preview/types-6-3";
|
|
7
|
+
import { waitFor } from "@storybook/testing-library";
|
|
2
8
|
import { useMemo, useState } from "react";
|
|
3
9
|
|
|
4
10
|
import "@linzjs/lui/dist/fonts";
|
|
5
|
-
import "@linzjs/lui/dist/scss/base.scss";
|
|
6
11
|
|
|
7
12
|
import { ColDefT, Grid, GridCell, GridContextProvider, GridProps, GridUpdatingContextProvider } from "../..";
|
|
8
|
-
import "../../styles/GridTheme.scss";
|
|
9
|
-
import "../../styles/index.scss";
|
|
10
13
|
import { FormTest, IFormTestRow } from "./FormTest";
|
|
11
14
|
|
|
12
15
|
export default {
|
|
@@ -69,4 +72,9 @@ const GridPopoutEditGenericTemplate: ComponentStory<typeof Grid> = (props: GridP
|
|
|
69
72
|
);
|
|
70
73
|
};
|
|
71
74
|
|
|
72
|
-
export const
|
|
75
|
+
export const _EditGeneric = GridPopoutEditGenericTemplate.bind({});
|
|
76
|
+
_EditGeneric.play = async ({ canvasElement }) => {
|
|
77
|
+
await waitFor(() => {
|
|
78
|
+
expect(canvasElement.querySelector(".Grid-ready")).toBeInTheDocument();
|
|
79
|
+
});
|
|
80
|
+
};
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
+
import "../../styles/GridTheme.scss";
|
|
2
|
+
import "../../styles/index.scss";
|
|
3
|
+
import "@linzjs/lui/dist/scss/base.scss";
|
|
4
|
+
|
|
5
|
+
import { expect } from "@storybook/jest";
|
|
1
6
|
import { ComponentMeta, ComponentStory } from "@storybook/react/dist/ts3.9/client/preview/types-6-3";
|
|
7
|
+
import { waitFor } from "@storybook/testing-library";
|
|
2
8
|
import { useCallback, useContext, useMemo, useState } from "react";
|
|
3
9
|
|
|
4
10
|
import "@linzjs/lui/dist/fonts";
|
|
5
|
-
import "@linzjs/lui/dist/scss/base.scss";
|
|
6
11
|
|
|
7
12
|
import {
|
|
8
13
|
ActionButton,
|
|
@@ -23,8 +28,6 @@ import {
|
|
|
23
28
|
isFloat,
|
|
24
29
|
wait,
|
|
25
30
|
} from "../..";
|
|
26
|
-
import "../../styles/GridTheme.scss";
|
|
27
|
-
import "../../styles/index.scss";
|
|
28
31
|
import { IFormTestRow } from "./FormTest";
|
|
29
32
|
|
|
30
33
|
export default {
|
|
@@ -172,7 +175,7 @@ const GridPopoutEditGenericTemplate: ComponentStory<typeof Grid> = (props: GridP
|
|
|
172
175
|
{
|
|
173
176
|
label: "Delete",
|
|
174
177
|
action: async ({ selectedRows }) => {
|
|
175
|
-
await wait(
|
|
178
|
+
await wait(1000);
|
|
176
179
|
setRowData(rowData.filter((data) => !selectedRows.some((row) => row.id == data.id)));
|
|
177
180
|
},
|
|
178
181
|
},
|
|
@@ -224,4 +227,9 @@ const GridPopoutEditGenericTemplate: ComponentStory<typeof Grid> = (props: GridP
|
|
|
224
227
|
);
|
|
225
228
|
};
|
|
226
229
|
|
|
227
|
-
export const
|
|
230
|
+
export const _EditGenericTextArea = GridPopoutEditGenericTemplate.bind({});
|
|
231
|
+
_EditGenericTextArea.play = async ({ canvasElement }) => {
|
|
232
|
+
await waitFor(() => {
|
|
233
|
+
expect(canvasElement.querySelector(".Grid-ready")).toBeInTheDocument();
|
|
234
|
+
});
|
|
235
|
+
};
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
+
import "../../styles/GridTheme.scss";
|
|
2
|
+
import "../../styles/index.scss";
|
|
3
|
+
import "@linzjs/lui/dist/scss/base.scss";
|
|
4
|
+
|
|
5
|
+
import { expect } from "@storybook/jest";
|
|
1
6
|
import { ComponentMeta, ComponentStory } from "@storybook/react/dist/ts3.9/client/preview/types-6-3";
|
|
7
|
+
import { waitFor } from "@storybook/testing-library";
|
|
2
8
|
import { useMemo, useState } from "react";
|
|
3
9
|
|
|
4
10
|
import "@linzjs/lui/dist/fonts";
|
|
5
|
-
import "@linzjs/lui/dist/scss/base.scss";
|
|
6
11
|
|
|
7
12
|
import {
|
|
8
13
|
ColDefT,
|
|
@@ -20,8 +25,6 @@ import {
|
|
|
20
25
|
GridWrapper,
|
|
21
26
|
wait,
|
|
22
27
|
} from "../..";
|
|
23
|
-
import "../../styles/GridTheme.scss";
|
|
24
|
-
import "../../styles/index.scss";
|
|
25
28
|
|
|
26
29
|
export default {
|
|
27
30
|
title: "Components / Grids",
|
|
@@ -121,3 +124,8 @@ const GridPopoverEditBearingTemplate: ComponentStory<typeof Grid> = (props: Grid
|
|
|
121
124
|
};
|
|
122
125
|
|
|
123
126
|
export const _GridPopoverEditBearing = GridPopoverEditBearingTemplate.bind({});
|
|
127
|
+
_GridPopoverEditBearing.play = async ({ canvasElement }) => {
|
|
128
|
+
await waitFor(() => {
|
|
129
|
+
expect(canvasElement.querySelector(".Grid-ready")).toBeInTheDocument();
|
|
130
|
+
});
|
|
131
|
+
};
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
+
import "../../styles/GridTheme.scss";
|
|
2
|
+
import "../../styles/index.scss";
|
|
3
|
+
import "@linzjs/lui/dist/scss/base.scss";
|
|
4
|
+
|
|
5
|
+
import { expect } from "@storybook/jest";
|
|
1
6
|
import { ComponentMeta, ComponentStory } from "@storybook/react/dist/ts3.9/client/preview/types-6-3";
|
|
7
|
+
import { waitFor } from "@storybook/testing-library";
|
|
2
8
|
import { useCallback, useMemo, useState } from "react";
|
|
3
9
|
|
|
4
10
|
import "@linzjs/lui/dist/fonts";
|
|
5
|
-
import "@linzjs/lui/dist/scss/base.scss";
|
|
6
11
|
|
|
7
12
|
import {
|
|
8
13
|
ColDefT,
|
|
@@ -25,8 +30,6 @@ import {
|
|
|
25
30
|
MenuSeparatorString,
|
|
26
31
|
wait,
|
|
27
32
|
} from "../..";
|
|
28
|
-
import "../../styles/GridTheme.scss";
|
|
29
|
-
import "../../styles/index.scss";
|
|
30
33
|
|
|
31
34
|
export default {
|
|
32
35
|
title: "Components / Grids",
|
|
@@ -313,3 +316,8 @@ const GridEditDropDownTemplate: ComponentStory<typeof Grid> = (props: GridProps)
|
|
|
313
316
|
};
|
|
314
317
|
|
|
315
318
|
export const EditDropdown = GridEditDropDownTemplate.bind({});
|
|
319
|
+
EditDropdown.play = async ({ canvasElement }) => {
|
|
320
|
+
await waitFor(() => {
|
|
321
|
+
expect(canvasElement.querySelector(".Grid-ready")).toBeInTheDocument();
|
|
322
|
+
});
|
|
323
|
+
};
|
|
@@ -1,9 +1,14 @@
|
|
|
1
|
+
import "../../styles/GridTheme.scss";
|
|
2
|
+
import "../../styles/index.scss";
|
|
3
|
+
import "@linzjs/lui/dist/scss/base.scss";
|
|
4
|
+
|
|
5
|
+
import { expect } from "@storybook/jest";
|
|
1
6
|
import { ComponentMeta, ComponentStory } from "@storybook/react/dist/ts3.9/client/preview/types-6-3";
|
|
7
|
+
import { waitFor } from "@storybook/testing-library";
|
|
2
8
|
import { isEmpty, partition } from "lodash-es";
|
|
3
9
|
import { useMemo, useState } from "react";
|
|
4
10
|
|
|
5
11
|
import "@linzjs/lui/dist/fonts";
|
|
6
|
-
import "@linzjs/lui/dist/scss/base.scss";
|
|
7
12
|
|
|
8
13
|
import {
|
|
9
14
|
ColDefT,
|
|
@@ -18,8 +23,6 @@ import {
|
|
|
18
23
|
MultiSelectOption,
|
|
19
24
|
wait,
|
|
20
25
|
} from "../..";
|
|
21
|
-
import "../../styles/GridTheme.scss";
|
|
22
|
-
import "../../styles/index.scss";
|
|
23
26
|
|
|
24
27
|
export default {
|
|
25
28
|
title: "Components / Grids",
|
|
@@ -193,3 +196,8 @@ const GridEditMultiSelectTemplate: ComponentStory<typeof Grid> = (props: GridPro
|
|
|
193
196
|
};
|
|
194
197
|
|
|
195
198
|
export const EditMultiSelect = GridEditMultiSelectTemplate.bind({});
|
|
199
|
+
EditMultiSelect.play = async ({ canvasElement }) => {
|
|
200
|
+
await waitFor(() => {
|
|
201
|
+
expect(canvasElement.querySelector(".Grid-ready")).toBeInTheDocument();
|
|
202
|
+
});
|
|
203
|
+
};
|
|
@@ -1,15 +1,19 @@
|
|
|
1
|
+
import "../../styles/GridTheme.scss";
|
|
2
|
+
import "../../styles/index.scss";
|
|
3
|
+
import "@linzjs/lui/dist/scss/base.scss";
|
|
4
|
+
|
|
5
|
+
import { expect } from "@storybook/jest";
|
|
1
6
|
import { ComponentMeta, ComponentStory } from "@storybook/react/dist/ts3.9/client/preview/types-6-3";
|
|
7
|
+
import { waitFor } from "@storybook/testing-library";
|
|
2
8
|
import { countBy, mergeWith, pull, range, union } from "lodash-es";
|
|
3
9
|
import { useMemo, useState } from "react";
|
|
4
10
|
|
|
5
11
|
import "@linzjs/lui/dist/fonts";
|
|
6
|
-
import "@linzjs/lui/dist/scss/base.scss";
|
|
7
12
|
|
|
8
13
|
import { ColDefT, Grid, GridCell, GridContextProvider, GridProps, GridUpdatingContextProvider } from "../..";
|
|
9
14
|
import { MultiSelectGridOption } from "../../components/gridForm/GridFormMultiSelectGrid";
|
|
10
15
|
import { GridPopoutEditMultiSelectGrid } from "../../components/gridPopoverEdit/GridPopoutEditMultiSelectGrid";
|
|
11
|
-
import "
|
|
12
|
-
import "../../styles/index.scss";
|
|
16
|
+
import { EditMultiSelect } from "./GridPopoverEditMultiSelect.stories";
|
|
13
17
|
|
|
14
18
|
export default {
|
|
15
19
|
title: "Components / Grids",
|
|
@@ -107,3 +111,8 @@ const GridEditMultiSelectGridTemplate: ComponentStory<typeof Grid> = (props: Gri
|
|
|
107
111
|
};
|
|
108
112
|
|
|
109
113
|
export const EditMultiSelectGrid = GridEditMultiSelectGridTemplate.bind({});
|
|
114
|
+
EditMultiSelect.play = async ({ canvasElement }) => {
|
|
115
|
+
await waitFor(() => {
|
|
116
|
+
expect(canvasElement.querySelector(".Grid-ready")).toBeInTheDocument();
|
|
117
|
+
});
|
|
118
|
+
};
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
+
import "../../styles/GridTheme.scss";
|
|
2
|
+
import "../../styles/index.scss";
|
|
3
|
+
import "@linzjs/lui/dist/scss/base.scss";
|
|
4
|
+
|
|
5
|
+
import { expect } from "@storybook/jest";
|
|
1
6
|
import { ComponentMeta, ComponentStory } from "@storybook/react/dist/ts3.9/client/preview/types-6-3";
|
|
2
|
-
import {
|
|
7
|
+
import { waitFor } from "@storybook/testing-library";
|
|
8
|
+
import { ReactElement, useCallback, useMemo, useState } from "react";
|
|
3
9
|
|
|
4
10
|
import "@linzjs/lui/dist/fonts";
|
|
5
|
-
import "@linzjs/lui/dist/scss/base.scss";
|
|
6
11
|
|
|
7
12
|
import {
|
|
8
13
|
ColDefT,
|
|
@@ -26,8 +31,6 @@ import {
|
|
|
26
31
|
import { GridFilterColumnsToggle } from "../../components";
|
|
27
32
|
import { GridFilterDownloadCsvButton } from "../../components";
|
|
28
33
|
import { GridCellFiller } from "../../components/GridCellFiller";
|
|
29
|
-
import "../../styles/GridTheme.scss";
|
|
30
|
-
import "../../styles/index.scss";
|
|
31
34
|
|
|
32
35
|
export default {
|
|
33
36
|
title: "Components / Grids",
|
|
@@ -39,6 +42,14 @@ export default {
|
|
|
39
42
|
selectable: false,
|
|
40
43
|
rowSelection: "single",
|
|
41
44
|
},
|
|
45
|
+
// Storybook hangs otherwise
|
|
46
|
+
parameters: {
|
|
47
|
+
docs: {
|
|
48
|
+
source: {
|
|
49
|
+
type: "code",
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
},
|
|
42
53
|
decorators: [
|
|
43
54
|
(Story) => (
|
|
44
55
|
<div style={{ maxWidth: 1024, height: 400, display: "flex", flexDirection: "column" }}>
|
|
@@ -118,6 +129,7 @@ const GridReadOnlyTemplate: ComponentStory<typeof Grid> = (props: GridProps) =>
|
|
|
118
129
|
GridCell({
|
|
119
130
|
headerName: "Custom edit",
|
|
120
131
|
editable: true,
|
|
132
|
+
flex: 1,
|
|
121
133
|
valueFormatter: () => "Press E",
|
|
122
134
|
cellRendererParams: {
|
|
123
135
|
rightHoverElement: (
|
|
@@ -240,7 +252,7 @@ const GridReadOnlyTemplate: ComponentStory<typeof Grid> = (props: GridProps) =>
|
|
|
240
252
|
);
|
|
241
253
|
};
|
|
242
254
|
|
|
243
|
-
const GridFilterLessThan = (props: { field: keyof ITestRow; text: string }):
|
|
255
|
+
const GridFilterLessThan = (props: { field: keyof ITestRow; text: string }): ReactElement => {
|
|
244
256
|
const [value, setValue] = useState<number>();
|
|
245
257
|
|
|
246
258
|
const filter = useCallback(
|
|
@@ -268,3 +280,8 @@ const GridFilterLessThan = (props: { field: keyof ITestRow; text: string }): JSX
|
|
|
268
280
|
};
|
|
269
281
|
|
|
270
282
|
export const ReadOnlySingleSelection = GridReadOnlyTemplate.bind({});
|
|
283
|
+
ReadOnlySingleSelection.play = async ({ canvasElement }) => {
|
|
284
|
+
await waitFor(() => {
|
|
285
|
+
expect(canvasElement.querySelector(".Grid-ready")).toBeInTheDocument();
|
|
286
|
+
});
|
|
287
|
+
};
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import "../../../react-menu3/styles/index.scss";
|
|
2
|
+
import "../../../styles/index.scss";
|
|
3
|
+
import "@linzjs/lui/dist/scss/base.scss";
|
|
4
|
+
|
|
1
5
|
import { expect, jest } from "@storybook/jest";
|
|
2
6
|
import { ComponentMeta, ComponentStory } from "@storybook/react/dist/ts3.9/client/preview/types-6-3";
|
|
3
7
|
import { userEvent, within } from "@storybook/testing-library";
|
|
@@ -5,7 +9,6 @@ import { GridPopoverContext, GridPopoverContextType } from "contexts/GridPopover
|
|
|
5
9
|
import { useRef } from "react";
|
|
6
10
|
|
|
7
11
|
import "@linzjs/lui/dist/fonts";
|
|
8
|
-
import "@linzjs/lui/dist/scss/base.scss";
|
|
9
12
|
|
|
10
13
|
import {
|
|
11
14
|
GridContextProvider,
|
|
@@ -29,7 +32,7 @@ const onSelectedItem = jest
|
|
|
29
32
|
.fn<Promise<void>, [GridPopoutEditDropDownSelectedItem<any>]>()
|
|
30
33
|
.mockImplementation(async () => undefined);
|
|
31
34
|
|
|
32
|
-
const Template: ComponentStory<typeof GridFormDropDown> = (props) => {
|
|
35
|
+
const Template: ComponentStory<typeof GridFormDropDown> = (props: GridFormDropDownProps<any>) => {
|
|
33
36
|
const config: GridFormDropDownProps<any> = {
|
|
34
37
|
filtered: "local",
|
|
35
38
|
onSelectedItem,
|
|
@@ -82,7 +85,7 @@ GridFormDropDownInteractions_.play = async ({ canvasElement }) => {
|
|
|
82
85
|
const enabledMenuOption = await getOption("Enabled");
|
|
83
86
|
expect(enabledMenuOption).toBeInTheDocument();
|
|
84
87
|
|
|
85
|
-
userEvent.click(enabledMenuOption);
|
|
88
|
+
await userEvent.click(enabledMenuOption);
|
|
86
89
|
expect(updateValue).toHaveBeenCalled();
|
|
87
90
|
expect(onSelectedItem).toHaveBeenCalled();
|
|
88
91
|
|
|
@@ -90,7 +93,7 @@ GridFormDropDownInteractions_.play = async ({ canvasElement }) => {
|
|
|
90
93
|
updateValue.mockClear();
|
|
91
94
|
onSelectedItem.mockClear();
|
|
92
95
|
const disabledMenuOption = await getOption("Disabled");
|
|
93
|
-
userEvent.click(disabledMenuOption);
|
|
96
|
+
await userEvent.click(disabledMenuOption);
|
|
94
97
|
expect(updateValue).not.toHaveBeenCalled();
|
|
95
98
|
expect(onSelectedItem).not.toHaveBeenCalled();
|
|
96
99
|
|
|
@@ -100,38 +103,38 @@ GridFormDropDownInteractions_.play = async ({ canvasElement }) => {
|
|
|
100
103
|
|
|
101
104
|
expect(canvas.queryByPlaceholderText("Text input")).not.toBeInTheDocument();
|
|
102
105
|
|
|
103
|
-
userEvent.click(subTextInput);
|
|
106
|
+
await userEvent.click(subTextInput);
|
|
104
107
|
const textInput = await canvas.findByPlaceholderText("Text input");
|
|
105
108
|
expect(textInput).toBeInTheDocument();
|
|
106
109
|
expect(await canvas.findByText("Must not be empty")).toBeInTheDocument();
|
|
107
110
|
|
|
108
|
-
userEvent.type(textInput, "Hello");
|
|
111
|
+
await userEvent.type(textInput, "Hello");
|
|
109
112
|
expect(await canvas.findByText("Press enter or tab to save")).toBeInTheDocument();
|
|
110
113
|
|
|
111
114
|
// Test tab to save
|
|
112
115
|
updateValue.mockClear();
|
|
113
|
-
userEvent.tab();
|
|
116
|
+
await userEvent.tab();
|
|
114
117
|
expect(updateValue).toHaveBeenCalledWith(expect.anything(), 1); // 1 = Tab
|
|
115
118
|
|
|
116
119
|
// Test shift+tab to save
|
|
117
120
|
updateValue.mockClear();
|
|
118
|
-
userEvent.tab({ shift: true });
|
|
121
|
+
await userEvent.tab({ shift: true });
|
|
119
122
|
expect(updateValue).toHaveBeenCalledWith(expect.anything(), -1); // -1 = Shift + tab
|
|
120
123
|
|
|
121
124
|
// Test escape to not save
|
|
122
125
|
updateValue.mockClear();
|
|
123
|
-
userEvent.type(textInput, "{Escape}");
|
|
126
|
+
await userEvent.type(textInput, "{Escape}");
|
|
124
127
|
expect(updateValue).not.toHaveBeenCalled();
|
|
125
128
|
|
|
126
129
|
// Test invalid value doesn't save
|
|
127
130
|
updateValue.mockClear();
|
|
128
|
-
userEvent.clear(textInput);
|
|
129
|
-
userEvent.type(textInput, "{Enter}");
|
|
131
|
+
await userEvent.clear(textInput);
|
|
132
|
+
await userEvent.type(textInput, "{Enter}");
|
|
130
133
|
expect(updateValue).not.toHaveBeenCalled();
|
|
131
134
|
|
|
132
135
|
// Test filter
|
|
133
136
|
const filterText = await canvas.findByPlaceholderText("Filter...");
|
|
134
|
-
userEvent.type(filterText, "ena");
|
|
137
|
+
await userEvent.type(filterText, "ena");
|
|
135
138
|
expect(canvas.queryByText("Enabled")).toBeInTheDocument();
|
|
136
139
|
expect(canvas.queryByText("Disabled")).not.toBeInTheDocument();
|
|
137
140
|
expect(canvas.queryByText("Sub menu...")).not.toBeInTheDocument();
|
package/src/stories/grid/gridFormInteraction/GridFormEditBearingCorrectionInteraction.stories.tsx
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import "../../../react-menu3/styles/index.scss";
|
|
2
|
+
import "../../../styles/index.scss";
|
|
3
|
+
import "@linzjs/lui/dist/scss/base.scss";
|
|
4
|
+
|
|
1
5
|
import { expect, jest } from "@storybook/jest";
|
|
2
6
|
import { ComponentMeta, ComponentStory } from "@storybook/react/dist/ts3.9/client/preview/types-6-3";
|
|
3
7
|
import { userEvent, within } from "@storybook/testing-library";
|
|
@@ -5,9 +9,13 @@ import { GridPopoverContext, GridPopoverContextType } from "contexts/GridPopover
|
|
|
5
9
|
import { useRef } from "react";
|
|
6
10
|
|
|
7
11
|
import "@linzjs/lui/dist/fonts";
|
|
8
|
-
import "@linzjs/lui/dist/scss/base.scss";
|
|
9
12
|
|
|
10
|
-
import {
|
|
13
|
+
import {
|
|
14
|
+
GridContextProvider,
|
|
15
|
+
GridFormEditBearing,
|
|
16
|
+
GridFormEditBearingProps,
|
|
17
|
+
GridPopoverEditBearingCorrectionEditorParams,
|
|
18
|
+
} from "../../..";
|
|
11
19
|
|
|
12
20
|
export default {
|
|
13
21
|
title: "GridForm / Interactions",
|
|
@@ -17,7 +25,7 @@ export default {
|
|
|
17
25
|
|
|
18
26
|
const updateValue = jest.fn();
|
|
19
27
|
|
|
20
|
-
const Template: ComponentStory<typeof GridFormEditBearing> = (props) => {
|
|
28
|
+
const Template: ComponentStory<typeof GridFormEditBearing> = (props: GridFormEditBearingProps<any>) => {
|
|
21
29
|
const anchorRef = useRef<HTMLHeadingElement>(null);
|
|
22
30
|
|
|
23
31
|
return (
|
|
@@ -53,39 +61,39 @@ GridFormEditBearingCorrectionInteractions_.play = async ({ canvasElement }) => {
|
|
|
53
61
|
|
|
54
62
|
// Test formatting a bearing
|
|
55
63
|
expect(inputField).toBeInTheDocument();
|
|
56
|
-
userEvent.type(inputField, "1.2345");
|
|
64
|
+
await userEvent.type(inputField, "1.2345");
|
|
57
65
|
expect(await canvas.findByText("+1° 23' 45\"")).toBeInTheDocument();
|
|
58
66
|
|
|
59
67
|
// Test enter to save
|
|
60
68
|
updateValue.mockClear();
|
|
61
|
-
userEvent.type(inputField, "{Enter}");
|
|
69
|
+
await userEvent.type(inputField, "{Enter}");
|
|
62
70
|
expect(updateValue).toHaveBeenCalledWith(expect.anything(), 0); // 0 = Enter
|
|
63
71
|
|
|
64
72
|
// Test tab to save
|
|
65
73
|
updateValue.mockClear();
|
|
66
|
-
userEvent.tab();
|
|
74
|
+
await userEvent.tab();
|
|
67
75
|
expect(updateValue).toHaveBeenCalledWith(expect.anything(), 1); // 1 = Tab
|
|
68
76
|
|
|
69
77
|
// Test shift+tab to save
|
|
70
78
|
updateValue.mockClear();
|
|
71
|
-
userEvent.tab({ shift: true });
|
|
79
|
+
await userEvent.tab({ shift: true });
|
|
72
80
|
expect(updateValue).toHaveBeenCalledWith(expect.anything(), -1); // -1 = Shift + tab
|
|
73
81
|
|
|
74
82
|
// Test escape not to save
|
|
75
83
|
updateValue.mockClear();
|
|
76
|
-
userEvent.type(inputField, "{Escape}");
|
|
84
|
+
await userEvent.type(inputField, "{Escape}");
|
|
77
85
|
expect(updateValue).not.toHaveBeenCalled();
|
|
78
86
|
|
|
79
87
|
// Test invalid value doesn't save
|
|
80
88
|
updateValue.mockClear();
|
|
81
|
-
userEvent.type(inputField, "xxx");
|
|
89
|
+
await userEvent.type(inputField, "xxx");
|
|
82
90
|
expect(await canvas.findByText("?")).toBeInTheDocument();
|
|
83
91
|
|
|
84
92
|
expect(canvas.getByText("Bearing must be a number in D.MMSSS format")).toBeInTheDocument();
|
|
85
|
-
userEvent.type(inputField, "{Enter}");
|
|
93
|
+
await userEvent.type(inputField, "{Enter}");
|
|
86
94
|
expect(updateValue).not.toHaveBeenCalled();
|
|
87
|
-
userEvent.tab();
|
|
95
|
+
await userEvent.tab();
|
|
88
96
|
expect(updateValue).not.toHaveBeenCalled();
|
|
89
|
-
userEvent.tab({ shift: true });
|
|
97
|
+
await userEvent.tab({ shift: true });
|
|
90
98
|
expect(updateValue).not.toHaveBeenCalled();
|
|
91
99
|
};
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import "../../../react-menu3/styles/index.scss";
|
|
2
|
+
import "../../../styles/index.scss";
|
|
3
|
+
import "@linzjs/lui/dist/scss/base.scss";
|
|
4
|
+
|
|
1
5
|
import { expect, jest } from "@storybook/jest";
|
|
2
6
|
import { ComponentMeta, ComponentStory } from "@storybook/react/dist/ts3.9/client/preview/types-6-3";
|
|
3
7
|
import { userEvent, within } from "@storybook/testing-library";
|
|
@@ -5,9 +9,13 @@ import { GridPopoverContext, GridPopoverContextType } from "contexts/GridPopover
|
|
|
5
9
|
import { useRef } from "react";
|
|
6
10
|
|
|
7
11
|
import "@linzjs/lui/dist/fonts";
|
|
8
|
-
import "@linzjs/lui/dist/scss/base.scss";
|
|
9
12
|
|
|
10
|
-
import {
|
|
13
|
+
import {
|
|
14
|
+
GridContextProvider,
|
|
15
|
+
GridFormEditBearing,
|
|
16
|
+
GridFormEditBearingProps,
|
|
17
|
+
GridPopoverEditBearingEditorParams,
|
|
18
|
+
} from "../../..";
|
|
11
19
|
|
|
12
20
|
export default {
|
|
13
21
|
title: "GridForm / Interactions",
|
|
@@ -17,7 +25,7 @@ export default {
|
|
|
17
25
|
|
|
18
26
|
const updateValue = jest.fn();
|
|
19
27
|
|
|
20
|
-
const Template: ComponentStory<typeof GridFormEditBearing> = (props) => {
|
|
28
|
+
const Template: ComponentStory<typeof GridFormEditBearing> = (props: GridFormEditBearingProps<any>) => {
|
|
21
29
|
const anchorRef = useRef<HTMLHeadingElement>(null);
|
|
22
30
|
|
|
23
31
|
return (
|
|
@@ -53,38 +61,38 @@ GridFormEditBearingInteractions_.play = async ({ canvasElement }) => {
|
|
|
53
61
|
|
|
54
62
|
// Test formatting a bearing
|
|
55
63
|
expect(inputField).toBeInTheDocument();
|
|
56
|
-
userEvent.type(inputField, "1.2345");
|
|
64
|
+
await userEvent.type(inputField, "1.2345");
|
|
57
65
|
expect(await canvas.findByText("1° 23' 45\"")).toBeInTheDocument();
|
|
58
66
|
|
|
59
67
|
// Test enter to save
|
|
60
68
|
updateValue.mockClear();
|
|
61
|
-
userEvent.type(inputField, "{Enter}");
|
|
69
|
+
await userEvent.type(inputField, "{Enter}");
|
|
62
70
|
expect(updateValue).toHaveBeenCalledWith(expect.anything(), 0); // 0 = Enter
|
|
63
71
|
|
|
64
72
|
// Test tab to save
|
|
65
73
|
updateValue.mockClear();
|
|
66
|
-
userEvent.tab();
|
|
74
|
+
await userEvent.tab();
|
|
67
75
|
expect(updateValue).toHaveBeenCalledWith(expect.anything(), 1); // 1 = Tab
|
|
68
76
|
|
|
69
77
|
// Test shift+tab to save
|
|
70
78
|
updateValue.mockClear();
|
|
71
|
-
userEvent.tab({ shift: true });
|
|
79
|
+
await userEvent.tab({ shift: true });
|
|
72
80
|
expect(updateValue).toHaveBeenCalledWith(expect.anything(), -1); // -1 = Shift + tab
|
|
73
81
|
|
|
74
82
|
// Test escape not to save
|
|
75
83
|
updateValue.mockClear();
|
|
76
|
-
userEvent.type(inputField, "{Escape}");
|
|
84
|
+
await userEvent.type(inputField, "{Escape}");
|
|
77
85
|
expect(updateValue).not.toHaveBeenCalled();
|
|
78
86
|
|
|
79
87
|
// Test invalid value doesn't save
|
|
80
88
|
updateValue.mockClear();
|
|
81
|
-
userEvent.type(inputField, "xxx");
|
|
89
|
+
await userEvent.type(inputField, "xxx");
|
|
82
90
|
expect(await canvas.findByText("?")).toBeInTheDocument();
|
|
83
91
|
expect(canvas.getByText("Bearing must be a number in D.MMSSS format")).toBeInTheDocument();
|
|
84
|
-
userEvent.type(inputField, "{Enter}");
|
|
92
|
+
await userEvent.type(inputField, "{Enter}");
|
|
85
93
|
expect(updateValue).not.toHaveBeenCalled();
|
|
86
|
-
userEvent.tab();
|
|
94
|
+
await userEvent.tab();
|
|
87
95
|
expect(updateValue).not.toHaveBeenCalled();
|
|
88
|
-
userEvent.tab({ shift: true });
|
|
96
|
+
await userEvent.tab({ shift: true });
|
|
89
97
|
expect(updateValue).not.toHaveBeenCalled();
|
|
90
98
|
};
|