@linzjs/step-ag-grid 24.0.0 → 25.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.
Files changed (53) hide show
  1. package/dist/GridTheme.scss +1 -1
  2. package/dist/index.css +0 -13
  3. package/dist/src/index.d.ts +2 -0
  4. package/{src/utils → dist/src/utils/__tests__}/testQuick.ts +1 -1
  5. package/{src/utils → dist/src/utils/__tests__}/testUtil.ts +1 -1
  6. package/dist/src/utils/__tests__/vitestUtil.ts +295 -0
  7. package/dist/{step-ag-grid.cjs.js → step-ag-grid.cjs} +4 -4
  8. package/dist/step-ag-grid.cjs.map +1 -0
  9. package/dist/step-ag-grid.esm.js +4 -6
  10. package/dist/step-ag-grid.esm.js.map +1 -1
  11. package/dist/vite.config.d.ts +1 -1
  12. package/package.json +23 -27
  13. package/src/components/GridCell.test.tsx +2 -0
  14. package/src/contexts/GridContextProvider.test.tsx +1 -0
  15. package/src/contexts/GridContextProvider.tsx +1 -2
  16. package/src/index.ts +2 -0
  17. package/src/lui/ActionButton.scss +2 -2
  18. package/src/lui/FormError.scss +3 -4
  19. package/src/lui/TextInputFormatted.scss +1 -1
  20. package/src/lui/reactUtils.test.tsx +1 -0
  21. package/src/lui/timeoutHook.test.tsx +7 -6
  22. package/src/stories/grid/GridDragRow.stories.tsx +1 -1
  23. package/src/stories/grid/GridFilterButtons.stories.tsx +1 -1
  24. package/src/stories/grid/GridNonEditableRow.stories.tsx +1 -1
  25. package/src/stories/grid/GridPinnedRow.stories.tsx +1 -1
  26. package/src/stories/grid/GridPopoutContextMenu.stories.tsx +1 -1
  27. package/src/stories/grid/GridPopoutEditBoolean.stories.tsx +1 -1
  28. package/src/stories/grid/GridPopoutEditGeneric.stories.tsx +1 -1
  29. package/src/stories/grid/GridPopoutEditGenericTextArea.stories.tsx +1 -1
  30. package/src/stories/grid/GridPopoverEditBearing.stories.tsx +1 -1
  31. package/src/stories/grid/GridPopoverEditDropDown.stories.tsx +1 -1
  32. package/src/stories/grid/GridPopoverEditMultiSelect.stories.tsx +1 -1
  33. package/src/stories/grid/GridPopoverEditMultiSelectGrid.stories.tsx +1 -1
  34. package/src/stories/grid/GridReadOnly.stories.tsx +1 -1
  35. package/src/stories/grid/interactions/GridKeyboardInteractions.stories.tsx +1 -1
  36. package/src/styles/Grid.scss +9 -9
  37. package/src/styles/GridIcon.scss +6 -6
  38. package/src/styles/GridPopoverMenu.scss +3 -3
  39. package/src/styles/GridTheme.scss +1 -1
  40. package/src/styles/react-menu-customisations.scss +26 -41
  41. package/src/utils/__tests__/storybookTestUtil.ts +4 -0
  42. package/src/utils/__tests__/testQuick.ts +157 -0
  43. package/src/utils/__tests__/testUtil.ts +294 -0
  44. package/src/utils/__tests__/vitestUtil.ts +295 -0
  45. package/src/utils/bearing.test.ts +3 -1
  46. package/src/utils/textMatcher.test.ts +2 -1
  47. package/src/utils/textValidator.test.ts +5 -6
  48. package/src/utils/util.test.ts +2 -1
  49. package/dist/src/utils/storybookTestUtil.d.ts +0 -3
  50. package/dist/src/utils/testQuick.d.ts +0 -62
  51. package/dist/src/utils/testUtil.d.ts +0 -46
  52. package/dist/step-ag-grid.cjs.js.map +0 -1
  53. /package/{src/utils → dist/src/utils/__tests__}/storybookTestUtil.ts +0 -0
@@ -0,0 +1,295 @@
1
+ import { act, waitFor, within } from '@testing-library/react';
2
+ import userEvent from '@testing-library/user-event';
3
+ import { isEqual } from 'lodash-es';
4
+ import { expect } from 'vitest';
5
+
6
+ import { findQuick, getAllQuick, getMatcher, getQuick, IQueryQuick, queryQuick } from './testQuick';
7
+
8
+ let user = userEvent;
9
+ /**
10
+ * allow external userEvent to be used
11
+ * @param customisedUserEvent
12
+ */
13
+ export const setUpUserEvent = (customisedUserEvent: any) => {
14
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
15
+ user = customisedUserEvent;
16
+ };
17
+
18
+ export const countRows = (within?: HTMLElement): number => {
19
+ return getAllQuick({ tagName: `div[row-id]:not(:empty)` }, within).length;
20
+ };
21
+
22
+ export const findRowByIndex = async (rowIndex: number | string, within?: HTMLElement): Promise<HTMLDivElement> => {
23
+ await waitFor(() => {
24
+ expect(getAllQuick({ classes: '.ag-row' }).length > 0).toBe(true);
25
+ });
26
+ //if this is not wrapped in an act console errors are logged during testing
27
+ let row!: HTMLDivElement;
28
+ await act(async () => {
29
+ row = await findQuick<HTMLDivElement>(
30
+ { tagName: `.ag-center-cols-container div[row-index='${rowIndex}']:not(:empty)` },
31
+ within,
32
+ );
33
+ let combineChildren = [...Array.from(row.children)];
34
+
35
+ const leftCols = queryQuick<HTMLDivElement>(
36
+ { tagName: `.ag-pinned-left-cols-container div[row-index='${rowIndex}']` },
37
+ within,
38
+ );
39
+ if (leftCols) {
40
+ combineChildren = [...Array.from(leftCols.children), ...combineChildren];
41
+ }
42
+
43
+ const rightCols = queryQuick<HTMLDivElement>(
44
+ { tagName: `.ag-pinned-right-cols-container div[row-index='${rowIndex}']` },
45
+ within,
46
+ );
47
+ if (rightCols) {
48
+ combineChildren = [...Array.from(rightCols.children), ...combineChildren];
49
+ }
50
+
51
+ row.replaceChildren(...combineChildren);
52
+ });
53
+ return row;
54
+ };
55
+
56
+ export const findRow = async (rowId: number | string, within?: HTMLElement): Promise<HTMLDivElement> => {
57
+ await waitFor(() => {
58
+ expect(getAllQuick({ classes: '.ag-row' }).length > 0).toBe(true);
59
+ });
60
+ //if this is not wrapped in an act console errors are logged during testing
61
+ let row!: HTMLDivElement;
62
+ await act(async () => {
63
+ row = await findQuick<HTMLDivElement>(
64
+ { tagName: `.ag-center-cols-container div[row-id='${rowId}']:not(:empty)` },
65
+ within,
66
+ );
67
+ let combineChildren = [...Array.from(row.children)];
68
+
69
+ const leftCols = queryQuick<HTMLDivElement>(
70
+ { tagName: `.ag-pinned-left-cols-container div[row-id='${rowId}']` },
71
+ within,
72
+ );
73
+ if (leftCols) {
74
+ combineChildren = [...Array.from(leftCols.children), ...combineChildren];
75
+ }
76
+
77
+ const rightCols = queryQuick<HTMLDivElement>(
78
+ { tagName: `.ag-pinned-right-cols-container div[row-id='${rowId}']` },
79
+ within,
80
+ );
81
+ if (rightCols) {
82
+ combineChildren = [...Array.from(rightCols.children), ...combineChildren];
83
+ }
84
+
85
+ row.replaceChildren(...combineChildren);
86
+ });
87
+ return row;
88
+ };
89
+
90
+ export const queryRow = (rowId: number | string, within?: HTMLElement): HTMLDivElement | null => {
91
+ return queryQuick<HTMLDivElement>({ tagName: `div[row-id='${rowId}']:not(:empty)` }, within);
92
+ };
93
+
94
+ const _selectRow = async (
95
+ select: 'select' | 'deselect' | 'toggle',
96
+ rowId: string | number,
97
+ within?: HTMLElement,
98
+ ): Promise<void> => {
99
+ const row = await findRow(rowId, within);
100
+ const isSelected = row.className.includes('ag-row-selected');
101
+ if (select === 'toggle' || (select === 'select' && !isSelected) || (select === 'deselect' && isSelected)) {
102
+ const cell = await findCell(rowId, 'selection', within);
103
+ await user.click(cell);
104
+ await waitFor(async () => {
105
+ const row = await findRow(rowId, within);
106
+ const nowSelected = row.className.includes('ag-row-selected');
107
+ if (nowSelected === isSelected) throw `Row ${rowId} won't select`;
108
+ });
109
+ }
110
+ };
111
+
112
+ export const selectRow = async (rowId: string | number, within?: HTMLElement): Promise<void> =>
113
+ _selectRow('select', rowId, within);
114
+
115
+ export const deselectRow = async (rowId: string | number, within?: HTMLElement): Promise<void> =>
116
+ _selectRow('deselect', rowId, within);
117
+
118
+ export const findCell = async (rowId: number | string, colId: string, within?: HTMLElement): Promise<HTMLElement> => {
119
+ const row = await findRow(rowId, within);
120
+ return await findQuick({ tagName: `[col-id='${colId}']` }, row);
121
+ };
122
+
123
+ export const findCellContains = async (
124
+ rowId: number | string,
125
+ colId: string,
126
+ text: string | RegExp,
127
+ within?: HTMLElement,
128
+ ) => {
129
+ return await waitFor(
130
+ async () => {
131
+ const row = await findRow(rowId, within);
132
+ return getQuick({ tagName: `[col-id='${colId}']`, text }, row);
133
+ },
134
+ { timeout: 10000 },
135
+ );
136
+ };
137
+
138
+ export const selectCell = async (rowId: string | number, colId: string, within?: HTMLElement): Promise<void> => {
139
+ const cell = await findCell(rowId, colId, within);
140
+ await user.click(cell);
141
+ };
142
+
143
+ export const editCell = async (rowId: number | string, colId: string, within?: HTMLElement): Promise<void> => {
144
+ await waitFor(
145
+ async () => {
146
+ const cell = await findCell(rowId, colId, within);
147
+ await user.dblClick(cell);
148
+ await waitFor(findOpenPopover, { timeout: 1000 });
149
+ },
150
+ { timeout: 10000 },
151
+ );
152
+ };
153
+
154
+ export const isCellReadOnly = async (rowId: number | string, colId: string, within?: HTMLElement): Promise<boolean> => {
155
+ const cell = await findCell(rowId, colId, within);
156
+ return cell.className.includes('GridCell-readonly');
157
+ };
158
+
159
+ export const findOpenPopover = () => findQuick({ classes: '.szh-menu--state-open' });
160
+
161
+ export const queryMenuOption = async (menuOptionText: string | RegExp): Promise<HTMLElement | null> => {
162
+ const openMenu = await findOpenPopover();
163
+ const els = await within(openMenu).findAllByRole('menuitem');
164
+ const matcher = getMatcher(menuOptionText);
165
+ const result = els.find(matcher);
166
+ return result ?? null;
167
+ };
168
+
169
+ export const findMenuOption = async (menuOptionText: string | RegExp): Promise<HTMLElement> => {
170
+ return await waitFor(
171
+ async () => {
172
+ const menuOption = await queryMenuOption(menuOptionText);
173
+ if (menuOption == null) {
174
+ throw Error(`Unable to find menu option ${menuOptionText}`);
175
+ }
176
+ return menuOption;
177
+ },
178
+ { timeout: 5000 },
179
+ );
180
+ };
181
+
182
+ export const validateMenuOptions = async (
183
+ rowId: number | string,
184
+ colId: string,
185
+ expectedMenuOptions: Array<string>,
186
+ ): Promise<boolean> => {
187
+ await editCell(rowId, colId);
188
+ const openMenu = await findOpenPopover();
189
+ const actualOptions = (await within(openMenu).findAllByRole('menuitem')).map((menuItem) => menuItem.textContent);
190
+ return isEqual(actualOptions, expectedMenuOptions);
191
+ };
192
+
193
+ export const clickMenuOption = async (menuOptionText: string | RegExp): Promise<void> => {
194
+ const menuOption = await findMenuOption(menuOptionText);
195
+ await user.click(menuOption);
196
+ };
197
+
198
+ export const openAndClickMenuOption = async (
199
+ rowId: number | string,
200
+ colId: string,
201
+ menuOptionText: string | RegExp,
202
+ within?: HTMLElement,
203
+ ): Promise<void> => {
204
+ await editCell(rowId, colId, within);
205
+ await clickMenuOption(menuOptionText);
206
+ };
207
+
208
+ export const openAndFindMenuOption = async (
209
+ rowId: number | string,
210
+ colId: string,
211
+ menuOptionText: string | RegExp,
212
+ within?: HTMLElement,
213
+ ): Promise<HTMLElement> => {
214
+ await editCell(rowId, colId, within);
215
+ return await findMenuOption(menuOptionText);
216
+ };
217
+
218
+ export const getMultiSelectOptions = async () => {
219
+ const openMenu = await findOpenPopover();
220
+ return getAllQuick<HTMLInputElement>({ role: 'menuitem', child: { tagName: 'input,textarea' } }, openMenu).map(
221
+ (input) => {
222
+ return {
223
+ v: input.value,
224
+ c: input.checked ?? true,
225
+ };
226
+ },
227
+ );
228
+ };
229
+
230
+ export const findMultiSelectOption = async (value: string): Promise<HTMLElement> => {
231
+ const openMenu = await findOpenPopover();
232
+ return getQuick({ role: 'menuitem', child: { tagName: `input[value='${value}']` } }, openMenu);
233
+ };
234
+
235
+ export const clickMultiSelectOption = async (value: string): Promise<void> => {
236
+ const menuItem = await findMultiSelectOption(value);
237
+ menuItem.parentElement && (await user.click(menuItem.parentElement));
238
+ };
239
+
240
+ const typeInput = async (value: string, filter: IQueryQuick): Promise<void> => {
241
+ const openMenu = await findOpenPopover();
242
+ const input = await findQuick(filter, openMenu);
243
+ await user.clear(input);
244
+ //'typing' an empty string will cause a console error, and it's also unnecessary after the previous clear call
245
+ if (value.length > 0) {
246
+ await user.type(input, value);
247
+ }
248
+ };
249
+
250
+ export const typeOnlyInput = async (value: string): Promise<void> =>
251
+ typeInput(value, { child: { tagName: "input[type='text'], textarea" } });
252
+
253
+ export const typeInputByLabel = async (value: string, labelText: string): Promise<void> => {
254
+ const labels = getAllQuick({ child: { tagName: 'label' } }).filter((l) => l.textContent === labelText);
255
+ if (labels.length === 0) {
256
+ throw Error(`Label not found for text: ${labelText}`);
257
+ }
258
+ if (labels.length > 1) {
259
+ throw Error(`Multiple labels found for text: ${labelText}`);
260
+ }
261
+ const inputId = labels[0].getAttribute('for');
262
+ await typeInput(value, { child: { tagName: `input[id='${inputId}'], textarea[id='${inputId}']` } });
263
+ };
264
+
265
+ export const typeInputByPlaceholder = async (value: string, placeholder: string): Promise<void> =>
266
+ typeInput(value, {
267
+ child: { tagName: `input[placeholder='${placeholder}'], textarea[placeholder='${placeholder}']` },
268
+ });
269
+
270
+ export const typeOtherInput = async (value: string): Promise<void> =>
271
+ typeInput(value, { classes: '.subComponent', child: { tagName: "input[type='text']" } });
272
+
273
+ export const typeOtherTextArea = async (value: string): Promise<void> =>
274
+ typeInput(value, { classes: '.subComponent', child: { tagName: 'textarea' } });
275
+
276
+ export const closeMenu = () => user.click(document.body);
277
+ export const closePopover = () => user.click(document.body);
278
+
279
+ export const findActionButton = (text: string, container?: HTMLElement): Promise<HTMLElement> =>
280
+ findQuick({ tagName: 'button', child: { classes: '.ActionButton-minimalAreaDisplay', text: text } }, container);
281
+
282
+ export const clickActionButton = async (text: string, container?: HTMLElement): Promise<void> => {
283
+ const button = await findActionButton(text, container);
284
+ await user.click(button);
285
+ };
286
+
287
+ export const waitForGridReady = async (props?: { grid?: HTMLElement; timeout?: number }) =>
288
+ waitFor(() => expect(getAllQuick({ classes: '.Grid-ready' }, props?.grid)).toBeDefined(), {
289
+ timeout: props?.timeout ?? 5000,
290
+ });
291
+
292
+ export const waitForGridRows = async (props?: { grid?: HTMLElement; timeout?: number }) =>
293
+ waitFor(() => expect(getAllQuick({ classes: '.ag-row' }, props?.grid).length > 0).toBe(true), {
294
+ timeout: props?.timeout ?? 5000,
295
+ });
@@ -1,3 +1,5 @@
1
+ import { describe, expect, test, vi } from 'vitest';
2
+
1
3
  import {
2
4
  bearingCorrectionRangeValidator,
3
5
  bearingRangeValidator,
@@ -57,7 +59,7 @@ describe('bearing', () => {
57
59
  });
58
60
 
59
61
  // calls custom invalid
60
- const fn = jest.fn();
62
+ const fn = vi.fn();
61
63
  bearingStringValidator('1.2', fn);
62
64
  expect(fn).toHaveBeenCalledWith(1.2);
63
65
  });
@@ -1,5 +1,6 @@
1
- import { textMatch } from './textMatcher';
1
+ import { describe, expect, test } from 'vitest';
2
2
 
3
+ import { textMatch } from './textMatcher';
3
4
  /**
4
5
  * "L" => L*
5
6
  * "=L" => L
@@ -1,3 +1,5 @@
1
+ import { describe, expect, test, vi } from 'vitest';
2
+
1
3
  import { GridBaseRow } from '../components/Grid';
2
4
  import { TextInputValidator, TextInputValidatorProps } from './textValidator';
3
5
 
@@ -88,18 +90,15 @@ describe('TextInputValidator', () => {
88
90
  },
89
91
  ] as (TextInputValidatorProps<GridBaseRow> & { tests: [string, string | undefined][] })[];
90
92
 
91
- validate.forEach((v, i) => {
93
+ validate.forEach((v) => {
92
94
  for (const test of v.tests) {
93
- expect(
94
- TextInputValidator(v, test[0], { id: 0 }, {}),
95
- `Test ${i}: "${test[0]}" should return "${test[1]}"`,
96
- ).toBe(test[1]);
95
+ expect(TextInputValidator(v, test[0], { id: 0 }, {})).toBe(test[1]);
97
96
  }
98
97
  });
99
98
  });
100
99
 
101
100
  test('validator is called', () => {
102
- const fn = jest.fn();
101
+ const fn = vi.fn();
103
102
  TextInputValidator({ invalid: fn }, '', { id: 0 }, {});
104
103
  expect(fn).toHaveBeenCalled();
105
104
  });
@@ -1,5 +1,6 @@
1
- import { isFloat, sanitiseFileName } from './util';
1
+ import { describe, expect, test } from 'vitest';
2
2
 
3
+ import { isFloat, sanitiseFileName } from './util';
3
4
  describe('sanitiseFileName', () => {
4
5
  test('isFloat', () => {
5
6
  expect(isFloat('')).toBe(false);
@@ -1,3 +0,0 @@
1
- export declare const waitForGridReady: ({ canvasElement }: {
2
- canvasElement: HTMLElement;
3
- }) => Promise<void>;
@@ -1,62 +0,0 @@
1
- /**
2
- * General query all by selected. Internal use, use quick operations instead.
3
- *
4
- * @param selector Selector to use
5
- * @param container Optional container
6
- * @return HTMLElement array
7
- */
8
- import { IconName } from '@linzjs/lui/dist/components/LuiIcon/LuiIcon';
9
- /**
10
- * Filters for query quick operations.
11
- */
12
- export interface IQueryQuick {
13
- testId?: string;
14
- tagName?: 'button' | 'span' | 'div' | 'input' | 'textarea' | any;
15
- text?: string | RegExp;
16
- icon?: IconName;
17
- ariaLabel?: string;
18
- role?: string;
19
- classes?: string;
20
- child?: IQueryQuick;
21
- }
22
- export declare const getMatcher: (matcherText: string | RegExp) => (e: HTMLElement) => boolean;
23
- /**
24
- * Query by filter.
25
- *
26
- * @param filter Filter
27
- * @param container Optional container to look in
28
- * @return HTMLElement if found else null
29
- */
30
- export declare const queryQuick: <T extends HTMLElement>(filter: IQueryQuick, container?: HTMLElement) => T | null;
31
- /**
32
- * Query all by filter.
33
- *
34
- * @param filter Filter
35
- * @param container Optional container to look in
36
- * @return HTMLElement array
37
- */
38
- export declare const queryAllQuick: <T extends HTMLElement>(filter: IQueryQuick, container?: HTMLElement) => T[];
39
- /**
40
- * Get all by filter.
41
- *
42
- * @param filter Filter
43
- * @param container Optional container to look in
44
- * @return HTMLElement array. Throws exception if nothing is found.
45
- */
46
- export declare const getAllQuick: <T extends HTMLElement>(filter: IQueryQuick, container?: HTMLElement) => T[];
47
- /**
48
- * Get by filter.
49
- *
50
- * @param filter Filter
51
- * @param container Optional container to look in
52
- * @return HTMLElement. Throws exception if not found.
53
- */
54
- export declare const getQuick: (filter: IQueryQuick, container?: HTMLElement) => HTMLElement;
55
- /**
56
- * Find by filter. Waits up to 5 seconds to find filter.
57
- *
58
- * @param filter Filter
59
- * @param container Optional container to look in
60
- * @return HTMLElement. Throws exception if not found.
61
- */
62
- export declare const findQuick: <T extends HTMLElement>(filter: IQueryQuick, container?: HTMLElement) => Promise<T>;
@@ -1,46 +0,0 @@
1
- /**
2
- * allow external userEvent to be used
3
- * @param customisedUserEvent
4
- */
5
- export declare const setUpUserEvent: (customisedUserEvent: any) => void;
6
- export declare const countRows: (within?: HTMLElement) => number;
7
- export declare const findRowByIndex: (rowIndex: number | string, within?: HTMLElement) => Promise<HTMLDivElement>;
8
- export declare const findRow: (rowId: number | string, within?: HTMLElement) => Promise<HTMLDivElement>;
9
- export declare const queryRow: (rowId: number | string, within?: HTMLElement) => HTMLDivElement | null;
10
- export declare const selectRow: (rowId: string | number, within?: HTMLElement) => Promise<void>;
11
- export declare const deselectRow: (rowId: string | number, within?: HTMLElement) => Promise<void>;
12
- export declare const findCell: (rowId: number | string, colId: string, within?: HTMLElement) => Promise<HTMLElement>;
13
- export declare const findCellContains: (rowId: number | string, colId: string, text: string | RegExp, within?: HTMLElement) => Promise<HTMLElement>;
14
- export declare const selectCell: (rowId: string | number, colId: string, within?: HTMLElement) => Promise<void>;
15
- export declare const editCell: (rowId: number | string, colId: string, within?: HTMLElement) => Promise<void>;
16
- export declare const isCellReadOnly: (rowId: number | string, colId: string, within?: HTMLElement) => Promise<boolean>;
17
- export declare const findOpenPopover: () => Promise<HTMLElement>;
18
- export declare const queryMenuOption: (menuOptionText: string | RegExp) => Promise<HTMLElement | null>;
19
- export declare const findMenuOption: (menuOptionText: string | RegExp) => Promise<HTMLElement>;
20
- export declare const validateMenuOptions: (rowId: number | string, colId: string, expectedMenuOptions: Array<string>) => Promise<boolean>;
21
- export declare const clickMenuOption: (menuOptionText: string | RegExp) => Promise<void>;
22
- export declare const openAndClickMenuOption: (rowId: number | string, colId: string, menuOptionText: string | RegExp, within?: HTMLElement) => Promise<void>;
23
- export declare const openAndFindMenuOption: (rowId: number | string, colId: string, menuOptionText: string | RegExp, within?: HTMLElement) => Promise<HTMLElement>;
24
- export declare const getMultiSelectOptions: () => Promise<{
25
- v: string;
26
- c: boolean;
27
- }[]>;
28
- export declare const findMultiSelectOption: (value: string) => Promise<HTMLElement>;
29
- export declare const clickMultiSelectOption: (value: string) => Promise<void>;
30
- export declare const typeOnlyInput: (value: string) => Promise<void>;
31
- export declare const typeInputByLabel: (value: string, labelText: string) => Promise<void>;
32
- export declare const typeInputByPlaceholder: (value: string, placeholder: string) => Promise<void>;
33
- export declare const typeOtherInput: (value: string) => Promise<void>;
34
- export declare const typeOtherTextArea: (value: string) => Promise<void>;
35
- export declare const closeMenu: () => Promise<void>;
36
- export declare const closePopover: () => Promise<void>;
37
- export declare const findActionButton: (text: string, container?: HTMLElement) => Promise<HTMLElement>;
38
- export declare const clickActionButton: (text: string, container?: HTMLElement) => Promise<void>;
39
- export declare const waitForGridReady: (props?: {
40
- grid?: HTMLElement;
41
- timeout?: number;
42
- }) => Promise<void>;
43
- export declare const waitForGridRows: (props?: {
44
- grid?: HTMLElement;
45
- timeout?: number;
46
- }) => Promise<void>;