@onewelcome/react-lib-components 1.4.0 → 1.6.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/README.md +7 -0
- package/dist/Breadcrumbs/Breadcrumbs.d.ts +1 -1
- package/dist/Button/Button.d.ts +0 -1
- package/dist/ContextMenu/ContextMenu.d.ts +4 -1
- package/dist/DataGrid/DataGridActions/DataGridColumnsToggle.d.ts +1 -1
- package/dist/DataGrid/datagrid.interfaces.d.ts +5 -4
- package/dist/Form/Checkbox/Checkbox.d.ts +1 -1
- package/dist/Form/FormControl/FormControl.d.ts +1 -1
- package/dist/Form/FormHelperText/FormHelperText.d.ts +1 -1
- package/dist/Form/FormSelectorWrapper/FormSelectorWrapper.d.ts +1 -1
- package/dist/Form/Input/Input.d.ts +2 -2
- package/dist/Form/Radio/Radio.d.ts +1 -1
- package/dist/Form/Select/Select.d.ts +2 -2
- package/dist/Form/Select/Select.interfaces.d.ts +1 -1
- package/dist/Form/Textarea/Textarea.d.ts +1 -6
- package/dist/Form/Toggle/Toggle.d.ts +1 -1
- package/dist/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.d.ts +1 -1
- package/dist/Form/Wrapper/InputWrapper/InputWrapper.d.ts +1 -1
- package/dist/Form/Wrapper/RadioWrapper/RadioWrapper.d.ts +1 -1
- package/dist/Form/Wrapper/SelectWrapper/SelectWrapper.d.ts +1 -1
- package/dist/Form/Wrapper/TextareaWrapper/TextareaWrapper.d.ts +1 -1
- package/dist/Form/form.interfaces.d.ts +1 -0
- package/dist/Icon/Icon.d.ts +1 -1
- package/dist/Link/Link.d.ts +2 -3
- package/dist/Notifications/Banner/Banner.d.ts +11 -0
- package/dist/Notifications/Snackbar/interfaces.d.ts +2 -2
- package/dist/Pagination/Pagination.d.ts +3 -3
- package/dist/Popover/Popover.d.ts +3 -1
- package/dist/Tabs/TabButton.d.ts +0 -1
- package/dist/Typography/Typography.d.ts +2 -2
- package/dist/Wizard/Wizard.d.ts +1 -1
- package/dist/Wizard/wizardStateReducer.d.ts +2 -2
- package/dist/_BaseStyling_/BaseStyling.d.ts +4 -0
- package/dist/hooks/useDetermineStatusIcon.d.ts +3 -0
- package/dist/hooks/usePosition.d.ts +6 -5
- package/dist/hooks/useSpacing.d.ts +3 -3
- package/dist/index.d.ts +1 -0
- package/dist/interfaces.d.ts +1 -1
- package/dist/react-lib-components.cjs.development.js +483 -363
- package/dist/react-lib-components.cjs.development.js.map +1 -1
- package/dist/react-lib-components.cjs.production.min.js +1 -1
- package/dist/react-lib-components.cjs.production.min.js.map +1 -1
- package/dist/react-lib-components.esm.js +484 -365
- package/dist/react-lib-components.esm.js.map +1 -1
- package/dist/util/helper.d.ts +1 -1
- package/package.json +39 -38
- package/src/Button/BaseButton.module.scss +2 -2
- package/src/Button/Button.module.scss +4 -5
- package/src/Button/Button.tsx +0 -1
- package/src/Button/IconButton.module.scss +4 -5
- package/src/ContextMenu/ContextMenu.tsx +18 -7
- package/src/DataGrid/DataGrid.tsx +3 -2
- package/src/DataGrid/DataGridActions/DataGridActions.tsx +16 -9
- package/src/DataGrid/DataGridBody/DataGridCell.module.scss +2 -2
- package/src/DataGrid/DataGridHeader/DataGridHeader.test.tsx +8 -3
- package/src/DataGrid/DataGridHeader/DataGridHeader.tsx +3 -1
- package/src/DataGrid/datagrid.interfaces.ts +1 -0
- package/src/Form/Input/Input.module.scss +36 -25
- package/src/Form/Input/Input.test.tsx +22 -0
- package/src/Form/Input/Input.tsx +8 -5
- package/src/Form/Select/Select.module.scss +9 -6
- package/src/Form/Select/Select.test.tsx +11 -0
- package/src/Form/Select/Select.tsx +5 -9
- package/src/Form/Select/SelectService.ts +2 -2
- package/src/Form/Textarea/Textarea.module.scss +21 -13
- package/src/Form/Textarea/Textarea.test.tsx +8 -0
- package/src/Form/Textarea/Textarea.tsx +6 -12
- package/src/Form/Toggle/Toggle.module.scss +3 -3
- package/src/Form/Wrapper/InputWrapper/InputWrapper.module.scss +7 -3
- package/src/Form/Wrapper/InputWrapper/InputWrapper.tsx +2 -0
- package/src/Form/Wrapper/SelectWrapper/SelectWrapper.tsx +12 -1
- package/src/Form/Wrapper/TextareaWrapper/TextareaWrapper.module.scss +15 -14
- package/src/Form/Wrapper/TextareaWrapper/TextareaWrapper.tsx +2 -1
- package/src/Form/Wrapper/Wrapper/Wrapper.module.scss +2 -2
- package/src/Form/form.interfaces.ts +1 -0
- package/src/Link/Link.module.scss +5 -5
- package/src/Link/Link.tsx +14 -13
- package/src/Notifications/Banner/Banner.module.scss +76 -0
- package/src/Notifications/Banner/Banner.test.tsx +84 -0
- package/src/Notifications/Banner/Banner.tsx +78 -0
- package/src/Notifications/BaseModal/BaseModal.module.scss +2 -2
- package/src/Notifications/Snackbar/SnackbarContainer/SnackbarContainer.module.scss +2 -2
- package/src/Notifications/Snackbar/SnackbarItem/SnackbarItem.module.scss +4 -4
- package/src/Notifications/Snackbar/SnackbarItem/SnackbarItem.tsx +3 -2
- package/src/Popover/Popover.module.scss +2 -2
- package/src/Popover/Popover.test.tsx +4 -1
- package/src/Popover/Popover.tsx +40 -8
- package/src/Skeleton/Skeleton.module.scss +2 -2
- package/src/Tabs/TabButton.tsx +1 -2
- package/src/Tabs/Tabs.module.scss +2 -2
- package/src/Tabs/Tabs.tsx +13 -10
- package/src/Tiles/Tile.module.scss +4 -4
- package/src/Tooltip/Tooltip.module.scss +3 -3
- package/src/Tooltip/Tooltip.test.tsx +5 -5
- package/src/_BaseStyling_/BaseStyling.tsx +8 -0
- package/src/hooks/useDetermineStatusIcon.test.ts +28 -0
- package/src/hooks/useDetermineStatusIcon.tsx +35 -0
- package/src/hooks/usePosition.test.tsx +85 -85
- package/src/hooks/usePosition.ts +6 -3
- package/src/index.ts +1 -0
- package/src/mixins.module.scss +5 -5
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
import React, { Fragment, useRef } from "react";
|
|
18
|
-
import { render } from "@testing-library/react";
|
|
18
|
+
import { render, waitFor } from "@testing-library/react";
|
|
19
19
|
import { ConfigObject, usePosition } from "./usePosition";
|
|
20
20
|
import userEvent from "@testing-library/user-event";
|
|
21
21
|
|
|
@@ -100,411 +100,411 @@ const createUsePositionComponent = (
|
|
|
100
100
|
};
|
|
101
101
|
|
|
102
102
|
describe("returns proper values for default transformOrigin", () => {
|
|
103
|
-
it("returns the correct values for left top placement", () => {
|
|
103
|
+
it("returns the correct values for left top placement", async () => {
|
|
104
104
|
const { popover } = createUsePositionComponent();
|
|
105
105
|
|
|
106
|
-
expect(popover).toHaveStyle({ top: "250px", left: "250px" });
|
|
106
|
+
await waitFor(() => expect(popover).toHaveStyle({ top: "250px", left: "250px" }));
|
|
107
107
|
});
|
|
108
108
|
|
|
109
|
-
it("returns the correct values for left bottom placement", () => {
|
|
109
|
+
it("returns the correct values for left bottom placement", async () => {
|
|
110
110
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
111
111
|
...defaultParams,
|
|
112
112
|
placement: { horizontal: "left", vertical: "bottom" }
|
|
113
113
|
}));
|
|
114
114
|
|
|
115
|
-
expect(popover).toHaveStyle({ top: "750px", left: "250px" });
|
|
115
|
+
await waitFor(() => expect(popover).toHaveStyle({ top: "750px", left: "250px" }));
|
|
116
116
|
});
|
|
117
117
|
|
|
118
|
-
it("returns the correct values for left center placement", () => {
|
|
118
|
+
it("returns the correct values for left center placement", async () => {
|
|
119
119
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
120
120
|
...defaultParams,
|
|
121
121
|
placement: { horizontal: "left", vertical: "center" }
|
|
122
122
|
}));
|
|
123
123
|
|
|
124
|
-
expect(popover).toHaveStyle({ top: "500px", left: "250px" });
|
|
124
|
+
await waitFor(() => expect(popover).toHaveStyle({ top: "500px", left: "250px" }));
|
|
125
125
|
});
|
|
126
126
|
|
|
127
|
-
it("returns the correct values for center top placement", () => {
|
|
127
|
+
it("returns the correct values for center top placement", async () => {
|
|
128
128
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
129
129
|
...defaultParams,
|
|
130
130
|
placement: { horizontal: "center", vertical: "top" }
|
|
131
131
|
}));
|
|
132
132
|
|
|
133
|
-
expect(popover).toHaveStyle({ top: "250px", left: "500px" });
|
|
133
|
+
await waitFor(() => expect(popover).toHaveStyle({ top: "250px", left: "500px" }));
|
|
134
134
|
});
|
|
135
135
|
|
|
136
|
-
it("returns the correct values for center center placement", () => {
|
|
136
|
+
it("returns the correct values for center center placement", async () => {
|
|
137
137
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
138
138
|
...defaultParams,
|
|
139
139
|
placement: { horizontal: "center", vertical: "center" }
|
|
140
140
|
}));
|
|
141
141
|
|
|
142
|
-
expect(popover).toHaveStyle({ top: "500px", left: "500px" });
|
|
142
|
+
await waitFor(() => expect(popover).toHaveStyle({ top: "500px", left: "500px" }));
|
|
143
143
|
});
|
|
144
144
|
|
|
145
|
-
it("returns the correct values for center bottom placement", () => {
|
|
145
|
+
it("returns the correct values for center bottom placement", async () => {
|
|
146
146
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
147
147
|
...defaultParams,
|
|
148
148
|
placement: { horizontal: "center", vertical: "bottom" }
|
|
149
149
|
}));
|
|
150
150
|
|
|
151
|
-
expect(popover).toHaveStyle({ top: "750px", left: "500px" });
|
|
151
|
+
await waitFor(() => expect(popover).toHaveStyle({ top: "750px", left: "500px" }));
|
|
152
152
|
});
|
|
153
153
|
|
|
154
|
-
it("returns the correct values for right top placement", () => {
|
|
154
|
+
it("returns the correct values for right top placement", async () => {
|
|
155
155
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
156
156
|
...defaultParams,
|
|
157
157
|
placement: { horizontal: "right", vertical: "top" }
|
|
158
158
|
}));
|
|
159
159
|
|
|
160
|
-
expect(popover).toHaveStyle({ top: "250px", left: "750px" });
|
|
160
|
+
await waitFor(() => expect(popover).toHaveStyle({ top: "250px", left: "750px" }));
|
|
161
161
|
});
|
|
162
162
|
|
|
163
|
-
it("returns the correct values for right center placement", () => {
|
|
163
|
+
it("returns the correct values for right center placement", async () => {
|
|
164
164
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
165
165
|
...defaultParams,
|
|
166
166
|
placement: { horizontal: "right", vertical: "center" }
|
|
167
167
|
}));
|
|
168
168
|
|
|
169
|
-
expect(popover).toHaveStyle({ top: "500px", left: "750px" });
|
|
169
|
+
await waitFor(() => expect(popover).toHaveStyle({ top: "500px", left: "750px" }));
|
|
170
170
|
});
|
|
171
171
|
|
|
172
|
-
it("returns the correct values for right bottom placement", () => {
|
|
172
|
+
it("returns the correct values for right bottom placement", async () => {
|
|
173
173
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
174
174
|
...defaultParams,
|
|
175
175
|
placement: { horizontal: "right", vertical: "bottom" }
|
|
176
176
|
}));
|
|
177
177
|
|
|
178
|
-
expect(popover).toHaveStyle({ top: "750px", left: "750px" });
|
|
178
|
+
await waitFor(() => expect(popover).toHaveStyle({ top: "750px", left: "750px" }));
|
|
179
179
|
});
|
|
180
180
|
});
|
|
181
181
|
|
|
182
182
|
describe("it returns proper values for centered transformOrigin", () => {
|
|
183
|
-
it("returns the correct values for left top placement", () => {
|
|
183
|
+
it("returns the correct values for left top placement", async () => {
|
|
184
184
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
185
185
|
...defaultParams,
|
|
186
186
|
transformOrigin: { horizontal: "center", vertical: "center" }
|
|
187
187
|
}));
|
|
188
188
|
|
|
189
|
-
expect(popover).toHaveStyle({ top: "200px", left: "200px" });
|
|
189
|
+
await waitFor(() => expect(popover).toHaveStyle({ top: "200px", left: "200px" }));
|
|
190
190
|
});
|
|
191
191
|
|
|
192
|
-
it("returns the correct values for left bottom placement", () => {
|
|
192
|
+
it("returns the correct values for left bottom placement", async () => {
|
|
193
193
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
194
194
|
...defaultParams,
|
|
195
195
|
placement: { horizontal: "left", vertical: "bottom" },
|
|
196
196
|
transformOrigin: { horizontal: "center", vertical: "center" }
|
|
197
197
|
}));
|
|
198
198
|
|
|
199
|
-
expect(popover).toHaveStyle({ top: "700px", left: "200px" });
|
|
199
|
+
await waitFor(() => expect(popover).toHaveStyle({ top: "700px", left: "200px" }));
|
|
200
200
|
});
|
|
201
201
|
|
|
202
|
-
it("returns the correct values for left center placement", () => {
|
|
202
|
+
it("returns the correct values for left center placement", async () => {
|
|
203
203
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
204
204
|
...defaultParams,
|
|
205
205
|
placement: { horizontal: "left", vertical: "center" },
|
|
206
206
|
transformOrigin: { horizontal: "center", vertical: "center" }
|
|
207
207
|
}));
|
|
208
208
|
|
|
209
|
-
expect(popover).toHaveStyle({ top: "450px", left: "200px" });
|
|
209
|
+
await waitFor(() => expect(popover).toHaveStyle({ top: "450px", left: "200px" }));
|
|
210
210
|
});
|
|
211
211
|
|
|
212
|
-
it("returns the correct values for center top placement", () => {
|
|
212
|
+
it("returns the correct values for center top placement", async () => {
|
|
213
213
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
214
214
|
...defaultParams,
|
|
215
215
|
placement: { horizontal: "center", vertical: "top" },
|
|
216
216
|
transformOrigin: { horizontal: "center", vertical: "center" }
|
|
217
217
|
}));
|
|
218
218
|
|
|
219
|
-
expect(popover).toHaveStyle({ top: "200px", left: "450px" });
|
|
219
|
+
await waitFor(() => expect(popover).toHaveStyle({ top: "200px", left: "450px" }));
|
|
220
220
|
});
|
|
221
221
|
|
|
222
|
-
it("returns the correct values for center center placement", () => {
|
|
222
|
+
it("returns the correct values for center center placement", async () => {
|
|
223
223
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
224
224
|
...defaultParams,
|
|
225
225
|
placement: { horizontal: "center", vertical: "center" },
|
|
226
226
|
transformOrigin: { horizontal: "center", vertical: "center" }
|
|
227
227
|
}));
|
|
228
228
|
|
|
229
|
-
expect(popover).toHaveStyle({ top: "450px", left: "450px" });
|
|
229
|
+
await waitFor(() => expect(popover).toHaveStyle({ top: "450px", left: "450px" }));
|
|
230
230
|
});
|
|
231
231
|
|
|
232
|
-
it("returns the correct values for center bottom placement", () => {
|
|
232
|
+
it("returns the correct values for center bottom placement", async () => {
|
|
233
233
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
234
234
|
...defaultParams,
|
|
235
235
|
placement: { horizontal: "center", vertical: "bottom" },
|
|
236
236
|
transformOrigin: { horizontal: "center", vertical: "center" }
|
|
237
237
|
}));
|
|
238
238
|
|
|
239
|
-
expect(popover).toHaveStyle({ top: "700px", left: "450px" });
|
|
239
|
+
await waitFor(() => expect(popover).toHaveStyle({ top: "700px", left: "450px" }));
|
|
240
240
|
});
|
|
241
241
|
|
|
242
|
-
it("returns the correct values for right top placement", () => {
|
|
242
|
+
it("returns the correct values for right top placement", async () => {
|
|
243
243
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
244
244
|
...defaultParams,
|
|
245
245
|
placement: { horizontal: "right", vertical: "top" },
|
|
246
246
|
transformOrigin: { horizontal: "center", vertical: "center" }
|
|
247
247
|
}));
|
|
248
248
|
|
|
249
|
-
expect(popover).toHaveStyle({ top: "200px", left: "700px" });
|
|
249
|
+
await waitFor(() => expect(popover).toHaveStyle({ top: "200px", left: "700px" }));
|
|
250
250
|
});
|
|
251
251
|
|
|
252
|
-
it("returns the correct values for right center placement", () => {
|
|
252
|
+
it("returns the correct values for right center placement", async () => {
|
|
253
253
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
254
254
|
...defaultParams,
|
|
255
255
|
placement: { horizontal: "right", vertical: "center" },
|
|
256
256
|
transformOrigin: { horizontal: "center", vertical: "center" }
|
|
257
257
|
}));
|
|
258
258
|
|
|
259
|
-
expect(popover).toHaveStyle({ top: "450px", left: "700px" });
|
|
259
|
+
await waitFor(() => expect(popover).toHaveStyle({ top: "450px", left: "700px" }));
|
|
260
260
|
});
|
|
261
261
|
|
|
262
|
-
it("returns the correct values for right bottom placement", () => {
|
|
262
|
+
it("returns the correct values for right bottom placement", async () => {
|
|
263
263
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
264
264
|
...defaultParams,
|
|
265
265
|
placement: { horizontal: "right", vertical: "bottom" },
|
|
266
266
|
transformOrigin: { horizontal: "center", vertical: "center" }
|
|
267
267
|
}));
|
|
268
268
|
|
|
269
|
-
expect(popover).toHaveStyle({ top: "700px", left: "700px" });
|
|
269
|
+
await waitFor(() => expect(popover).toHaveStyle({ top: "700px", left: "700px" }));
|
|
270
270
|
});
|
|
271
271
|
});
|
|
272
272
|
|
|
273
273
|
describe("it returns proper values for right top transformOrigin", () => {
|
|
274
|
-
it("returns the correct values for left top placement", () => {
|
|
274
|
+
it("returns the correct values for left top placement", async () => {
|
|
275
275
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
276
276
|
...defaultParams,
|
|
277
277
|
transformOrigin: { horizontal: "right", vertical: "top" }
|
|
278
278
|
}));
|
|
279
279
|
|
|
280
|
-
expect(popover).toHaveStyle({ top: "250px", right: "750px" });
|
|
280
|
+
await waitFor(() => expect(popover).toHaveStyle({ top: "250px", right: "750px" }));
|
|
281
281
|
});
|
|
282
282
|
|
|
283
|
-
it("returns the correct values for left bottom placement", () => {
|
|
283
|
+
it("returns the correct values for left bottom placement", async () => {
|
|
284
284
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
285
285
|
...defaultParams,
|
|
286
286
|
placement: { horizontal: "left", vertical: "bottom" },
|
|
287
287
|
transformOrigin: { horizontal: "right", vertical: "top" }
|
|
288
288
|
}));
|
|
289
289
|
|
|
290
|
-
expect(popover).toHaveStyle({ top: "750px", right: "750px" });
|
|
290
|
+
await waitFor(() => expect(popover).toHaveStyle({ top: "750px", right: "750px" }));
|
|
291
291
|
});
|
|
292
292
|
|
|
293
|
-
it("returns the correct values for left center placement", () => {
|
|
293
|
+
it("returns the correct values for left center placement", async () => {
|
|
294
294
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
295
295
|
...defaultParams,
|
|
296
296
|
placement: { horizontal: "left", vertical: "center" },
|
|
297
297
|
transformOrigin: { horizontal: "right", vertical: "top" }
|
|
298
298
|
}));
|
|
299
299
|
|
|
300
|
-
expect(popover).toHaveStyle({ top: "500px", right: "750px" });
|
|
300
|
+
await waitFor(() => expect(popover).toHaveStyle({ top: "500px", right: "750px" }));
|
|
301
301
|
});
|
|
302
302
|
|
|
303
|
-
it("returns the correct values for center top placement", () => {
|
|
303
|
+
it("returns the correct values for center top placement", async () => {
|
|
304
304
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
305
305
|
...defaultParams,
|
|
306
306
|
placement: { horizontal: "center", vertical: "top" },
|
|
307
307
|
transformOrigin: { horizontal: "right", vertical: "top" }
|
|
308
308
|
}));
|
|
309
309
|
|
|
310
|
-
expect(popover).toHaveStyle({ top: "250px", right: "500px" });
|
|
310
|
+
await waitFor(() => expect(popover).toHaveStyle({ top: "250px", right: "500px" }));
|
|
311
311
|
});
|
|
312
312
|
|
|
313
|
-
it("returns the correct values for center center placement", () => {
|
|
313
|
+
it("returns the correct values for center center placement", async () => {
|
|
314
314
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
315
315
|
...defaultParams,
|
|
316
316
|
placement: { horizontal: "center", vertical: "center" },
|
|
317
317
|
transformOrigin: { horizontal: "right", vertical: "top" }
|
|
318
318
|
}));
|
|
319
319
|
|
|
320
|
-
expect(popover).toHaveStyle({ top: "500px", right: "500px" });
|
|
320
|
+
await waitFor(() => expect(popover).toHaveStyle({ top: "500px", right: "500px" }));
|
|
321
321
|
});
|
|
322
322
|
|
|
323
|
-
it("returns the correct values for center bottom placement", () => {
|
|
323
|
+
it("returns the correct values for center bottom placement", async () => {
|
|
324
324
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
325
325
|
...defaultParams,
|
|
326
326
|
placement: { horizontal: "center", vertical: "bottom" },
|
|
327
327
|
transformOrigin: { horizontal: "right", vertical: "top" }
|
|
328
328
|
}));
|
|
329
329
|
|
|
330
|
-
expect(popover).toHaveStyle({ top: "750px", right: "500px" });
|
|
330
|
+
await waitFor(() => expect(popover).toHaveStyle({ top: "750px", right: "500px" }));
|
|
331
331
|
});
|
|
332
332
|
|
|
333
|
-
it("returns the correct values for right top placement", () => {
|
|
333
|
+
it("returns the correct values for right top placement", async () => {
|
|
334
334
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
335
335
|
...defaultParams,
|
|
336
336
|
placement: { horizontal: "right", vertical: "top" },
|
|
337
337
|
transformOrigin: { horizontal: "right", vertical: "top" }
|
|
338
338
|
}));
|
|
339
339
|
|
|
340
|
-
expect(popover).toHaveStyle({ top: "250px", right: "250px" });
|
|
340
|
+
await waitFor(() => expect(popover).toHaveStyle({ top: "250px", right: "250px" }));
|
|
341
341
|
});
|
|
342
342
|
|
|
343
|
-
it("returns the correct values for right center placement", () => {
|
|
343
|
+
it("returns the correct values for right center placement", async () => {
|
|
344
344
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
345
345
|
...defaultParams,
|
|
346
346
|
placement: { horizontal: "right", vertical: "center" },
|
|
347
347
|
transformOrigin: { horizontal: "right", vertical: "top" }
|
|
348
348
|
}));
|
|
349
349
|
|
|
350
|
-
expect(popover).toHaveStyle({ top: "500px", right: "250px" });
|
|
350
|
+
await waitFor(() => expect(popover).toHaveStyle({ top: "500px", right: "250px" }));
|
|
351
351
|
});
|
|
352
352
|
|
|
353
|
-
it("returns the correct values for right bottom placement", () => {
|
|
353
|
+
it("returns the correct values for right bottom placement", async () => {
|
|
354
354
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
355
355
|
...defaultParams,
|
|
356
356
|
placement: { horizontal: "right", vertical: "bottom" },
|
|
357
357
|
transformOrigin: { horizontal: "right", vertical: "top" }
|
|
358
358
|
}));
|
|
359
359
|
|
|
360
|
-
expect(popover).toHaveStyle({ top: "750px", right: "250px" });
|
|
360
|
+
await waitFor(() => expect(popover).toHaveStyle({ top: "750px", right: "250px" }));
|
|
361
361
|
});
|
|
362
362
|
});
|
|
363
363
|
|
|
364
364
|
describe("it returns proper values for left bottom transformOrigin", () => {
|
|
365
|
-
it("returns the correct values for left top placement", () => {
|
|
365
|
+
it("returns the correct values for left top placement", async () => {
|
|
366
366
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
367
367
|
...defaultParams,
|
|
368
368
|
transformOrigin: { horizontal: "left", vertical: "bottom" }
|
|
369
369
|
}));
|
|
370
370
|
|
|
371
|
-
expect(popover).toHaveStyle({ bottom: "750px", left: "250px" });
|
|
371
|
+
await waitFor(() => expect(popover).toHaveStyle({ bottom: "750px", left: "250px" }));
|
|
372
372
|
});
|
|
373
373
|
|
|
374
|
-
it("returns the correct values for left bottom placement", () => {
|
|
374
|
+
it("returns the correct values for left bottom placement", async () => {
|
|
375
375
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
376
376
|
...defaultParams,
|
|
377
377
|
placement: { horizontal: "left", vertical: "bottom" },
|
|
378
378
|
transformOrigin: { horizontal: "left", vertical: "bottom" }
|
|
379
379
|
}));
|
|
380
380
|
|
|
381
|
-
expect(popover).toHaveStyle({ bottom: "250px", left: "250px" });
|
|
381
|
+
await waitFor(() => expect(popover).toHaveStyle({ bottom: "250px", left: "250px" }));
|
|
382
382
|
});
|
|
383
383
|
|
|
384
|
-
it("returns the correct values for left center placement", () => {
|
|
384
|
+
it("returns the correct values for left center placement", async () => {
|
|
385
385
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
386
386
|
...defaultParams,
|
|
387
387
|
placement: { horizontal: "left", vertical: "center" },
|
|
388
388
|
transformOrigin: { horizontal: "left", vertical: "bottom" }
|
|
389
389
|
}));
|
|
390
390
|
|
|
391
|
-
expect(popover).toHaveStyle({ bottom: "500px", left: "250px" });
|
|
391
|
+
await waitFor(() => expect(popover).toHaveStyle({ bottom: "500px", left: "250px" }));
|
|
392
392
|
});
|
|
393
393
|
|
|
394
|
-
it("returns the correct values for center top placement", () => {
|
|
394
|
+
it("returns the correct values for center top placement", async () => {
|
|
395
395
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
396
396
|
...defaultParams,
|
|
397
397
|
placement: { horizontal: "center", vertical: "top" },
|
|
398
398
|
transformOrigin: { horizontal: "left", vertical: "bottom" }
|
|
399
399
|
}));
|
|
400
400
|
|
|
401
|
-
expect(popover).toHaveStyle({ bottom: "750px", left: "500px" });
|
|
401
|
+
await waitFor(() => expect(popover).toHaveStyle({ bottom: "750px", left: "500px" }));
|
|
402
402
|
});
|
|
403
403
|
|
|
404
|
-
it("returns the correct values for center center placement", () => {
|
|
404
|
+
it("returns the correct values for center center placement", async () => {
|
|
405
405
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
406
406
|
...defaultParams,
|
|
407
407
|
placement: { horizontal: "center", vertical: "center" },
|
|
408
408
|
transformOrigin: { horizontal: "left", vertical: "bottom" }
|
|
409
409
|
}));
|
|
410
410
|
|
|
411
|
-
expect(popover).toHaveStyle({ bottom: "500px", left: "500px" });
|
|
411
|
+
await waitFor(() => expect(popover).toHaveStyle({ bottom: "500px", left: "500px" }));
|
|
412
412
|
});
|
|
413
413
|
|
|
414
|
-
it("returns the correct values for center bottom placement", () => {
|
|
414
|
+
it("returns the correct values for center bottom placement", async () => {
|
|
415
415
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
416
416
|
...defaultParams,
|
|
417
417
|
placement: { horizontal: "center", vertical: "bottom" },
|
|
418
418
|
transformOrigin: { horizontal: "left", vertical: "bottom" }
|
|
419
419
|
}));
|
|
420
420
|
|
|
421
|
-
expect(popover).toHaveStyle({ bottom: "250px", left: "500px" });
|
|
421
|
+
await waitFor(() => expect(popover).toHaveStyle({ bottom: "250px", left: "500px" }));
|
|
422
422
|
});
|
|
423
423
|
|
|
424
|
-
it("returns the correct values for right top placement", () => {
|
|
424
|
+
it("returns the correct values for right top placement", async () => {
|
|
425
425
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
426
426
|
...defaultParams,
|
|
427
427
|
placement: { horizontal: "right", vertical: "top" },
|
|
428
428
|
transformOrigin: { horizontal: "left", vertical: "bottom" }
|
|
429
429
|
}));
|
|
430
430
|
|
|
431
|
-
expect(popover).toHaveStyle({ bottom: "750px", left: "750px" });
|
|
431
|
+
await waitFor(() => expect(popover).toHaveStyle({ bottom: "750px", left: "750px" }));
|
|
432
432
|
});
|
|
433
433
|
|
|
434
|
-
it("returns the correct values for right center placement", () => {
|
|
434
|
+
it("returns the correct values for right center placement", async () => {
|
|
435
435
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
436
436
|
...defaultParams,
|
|
437
437
|
placement: { horizontal: "right", vertical: "center" },
|
|
438
438
|
transformOrigin: { horizontal: "left", vertical: "bottom" }
|
|
439
439
|
}));
|
|
440
440
|
|
|
441
|
-
expect(popover).toHaveStyle({ bottom: "500px", left: "750px" });
|
|
441
|
+
await waitFor(() => expect(popover).toHaveStyle({ bottom: "500px", left: "750px" }));
|
|
442
442
|
});
|
|
443
443
|
|
|
444
|
-
it("returns the correct values for right bottom placement", () => {
|
|
444
|
+
it("returns the correct values for right bottom placement", async () => {
|
|
445
445
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
446
446
|
...defaultParams,
|
|
447
447
|
placement: { horizontal: "right", vertical: "bottom" },
|
|
448
448
|
transformOrigin: { horizontal: "left", vertical: "bottom" }
|
|
449
449
|
}));
|
|
450
450
|
|
|
451
|
-
expect(popover).toHaveStyle({ bottom: "250px", left: "750px" });
|
|
451
|
+
await waitFor(() => expect(popover).toHaveStyle({ bottom: "250px", left: "750px" }));
|
|
452
452
|
});
|
|
453
453
|
});
|
|
454
454
|
|
|
455
455
|
describe("setting offsets work in different direction", () => {
|
|
456
|
-
it("has proper top offset", () => {
|
|
456
|
+
it("has proper top offset", async () => {
|
|
457
457
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
458
458
|
...defaultParams,
|
|
459
459
|
offset: { top: 50, right: 0, bottom: 0, left: 0 }
|
|
460
460
|
}));
|
|
461
461
|
|
|
462
|
-
expect(popover).toHaveStyle({ left: "250px", top: "300px" });
|
|
462
|
+
await waitFor(() => expect(popover).toHaveStyle({ left: "250px", top: "300px" }));
|
|
463
463
|
});
|
|
464
464
|
|
|
465
|
-
it("has proper right offset", () => {
|
|
465
|
+
it("has proper right offset", async () => {
|
|
466
466
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
467
467
|
...defaultParams,
|
|
468
468
|
offset: { top: 0, right: 50, bottom: 0, left: 0 }
|
|
469
469
|
}));
|
|
470
470
|
|
|
471
|
-
expect(popover).toHaveStyle({ left: "200px", top: "250px" });
|
|
471
|
+
await waitFor(() => expect(popover).toHaveStyle({ left: "200px", top: "250px" }));
|
|
472
472
|
});
|
|
473
473
|
|
|
474
|
-
it("has proper bottom offset", () => {
|
|
474
|
+
it("has proper bottom offset", async () => {
|
|
475
475
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
476
476
|
...defaultParams,
|
|
477
477
|
offset: { top: 0, right: 0, bottom: 50, left: 0 }
|
|
478
478
|
}));
|
|
479
479
|
|
|
480
|
-
expect(popover).toHaveStyle({ left: "250px", top: "200px" });
|
|
480
|
+
await waitFor(() => expect(popover).toHaveStyle({ left: "250px", top: "200px" }));
|
|
481
481
|
});
|
|
482
482
|
|
|
483
|
-
it("has proper left offset", () => {
|
|
483
|
+
it("has proper left offset", async () => {
|
|
484
484
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
485
485
|
...defaultParams,
|
|
486
486
|
offset: { top: 0, right: 0, bottom: 0, left: 50 }
|
|
487
487
|
}));
|
|
488
488
|
|
|
489
|
-
expect(popover).toHaveStyle({ left: "300px", top: "250px" });
|
|
489
|
+
await waitFor(() => expect(popover).toHaveStyle({ left: "300px", top: "250px" }));
|
|
490
490
|
});
|
|
491
491
|
|
|
492
|
-
it("can handle multiple values", () => {
|
|
492
|
+
it("can handle multiple values", async () => {
|
|
493
493
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
494
494
|
...defaultParams,
|
|
495
495
|
offset: { top: 50, right: 25, bottom: 25, left: 50 }
|
|
496
496
|
}));
|
|
497
497
|
|
|
498
|
-
expect(popover).toHaveStyle({ left: "275px", top: "275px" });
|
|
498
|
+
await waitFor(() => expect(popover).toHaveStyle({ left: "275px", top: "275px" }));
|
|
499
499
|
});
|
|
500
500
|
|
|
501
|
-
it("works with transformOrigin from bottom right as well", () => {
|
|
501
|
+
it("works with transformOrigin from bottom right as well", async () => {
|
|
502
502
|
const { popover } = createUsePositionComponent(defaultParams => ({
|
|
503
503
|
...defaultParams,
|
|
504
504
|
transformOrigin: { horizontal: "right", vertical: "bottom" },
|
|
505
505
|
offset: { top: 50, right: 25, bottom: 25, left: 50 }
|
|
506
506
|
}));
|
|
507
507
|
|
|
508
|
-
expect(popover).toHaveStyle({ right: "725px", bottom: "725px" });
|
|
508
|
+
await waitFor(() => expect(popover).toHaveStyle({ right: "725px", bottom: "725px" }));
|
|
509
509
|
});
|
|
510
510
|
});
|
package/src/hooks/usePosition.ts
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
import React, { useState } from "react";
|
|
18
|
+
import { useDebouncedCallback } from "./useDebouncedCallback";
|
|
18
19
|
|
|
19
20
|
export interface ConfigObject {
|
|
20
21
|
relativeElement: RefElement;
|
|
@@ -22,6 +23,7 @@ export interface ConfigObject {
|
|
|
22
23
|
transformOrigin?: Placement;
|
|
23
24
|
placement?: Placement;
|
|
24
25
|
offset?: Offset;
|
|
26
|
+
debounceAmount?: number;
|
|
25
27
|
}
|
|
26
28
|
|
|
27
29
|
export type HorizontalPlacement = "left" | "center" | "centerh" | "right";
|
|
@@ -86,7 +88,8 @@ const defaultConfigObject: ConfigObject = {
|
|
|
86
88
|
right: 0,
|
|
87
89
|
bottom: 0,
|
|
88
90
|
left: 0
|
|
89
|
-
}
|
|
91
|
+
},
|
|
92
|
+
debounceAmount: 20
|
|
90
93
|
};
|
|
91
94
|
|
|
92
95
|
/* eslint-disable @typescript-eslint/no-non-null-assertion, @typescript-eslint/no-non-null-asserted-optional-chain*/
|
|
@@ -326,7 +329,7 @@ export const usePosition = (providedConfigObject: ConfigObject = defaultConfigOb
|
|
|
326
329
|
}));
|
|
327
330
|
};
|
|
328
331
|
|
|
329
|
-
const calculatePosition = () => {
|
|
332
|
+
const calculatePosition = useDebouncedCallback(() => {
|
|
330
333
|
if (!configObject.relativeElement?.current) return;
|
|
331
334
|
const relativeElRect = (configObject.relativeElement!
|
|
332
335
|
.current as HTMLElement)!.getBoundingClientRect();
|
|
@@ -352,7 +355,7 @@ export const usePosition = (providedConfigObject: ConfigObject = defaultConfigOb
|
|
|
352
355
|
|
|
353
356
|
_calculatePlacement(clonedRelEl, elementToBePositionedDimensions, "horizontal");
|
|
354
357
|
_calculatePlacement(clonedRelEl, elementToBePositionedDimensions, "vertical");
|
|
355
|
-
};
|
|
358
|
+
}, configObject.debounceAmount || 20);
|
|
356
359
|
|
|
357
360
|
return {
|
|
358
361
|
top: position.top,
|
package/src/index.ts
CHANGED
|
@@ -123,3 +123,4 @@ export { HeaderCell } from "./DataGrid/datagrid.interfaces";
|
|
|
123
123
|
export { DataGrid, Props as DataGridProps } from "./DataGrid/DataGrid";
|
|
124
124
|
export { DataGridRow, Props as DataGridRowProps } from "./DataGrid/DataGridBody/DataGridRow";
|
|
125
125
|
export { DataGridCell, Props as DataGridCellProps } from "./DataGrid/DataGridBody/DataGridCell";
|
|
126
|
+
export { Banner, Props as BannerProps } from "./Notifications/Banner/Banner";
|
package/src/mixins.module.scss
CHANGED
|
@@ -208,7 +208,7 @@
|
|
|
208
208
|
@mixin skeletonLoading() {
|
|
209
209
|
position: relative;
|
|
210
210
|
overflow: hidden;
|
|
211
|
-
background-color: var(--
|
|
211
|
+
background-color: var(--skeleton-background-color);
|
|
212
212
|
|
|
213
213
|
&::after {
|
|
214
214
|
position: absolute;
|
|
@@ -219,10 +219,10 @@
|
|
|
219
219
|
transform: translateX(-100%);
|
|
220
220
|
background-image: linear-gradient(
|
|
221
221
|
90deg,
|
|
222
|
-
rgba(
|
|
223
|
-
rgba(
|
|
224
|
-
rgba(
|
|
225
|
-
rgba(
|
|
222
|
+
rgba(var(--skeleton-animation-color-rgb), 0) 0,
|
|
223
|
+
rgba(var(--skeleton-animation-color-rgb), 0.2) 20%,
|
|
224
|
+
rgba(var(--skeleton-animation-color-rgb), 0.5) 60%,
|
|
225
|
+
rgba(var(--skeleton-animation-color-rgb), 0)
|
|
226
226
|
);
|
|
227
227
|
content: "";
|
|
228
228
|
|