@itwin/itwinui-react 3.14.0 → 3.14.1
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/CHANGELOG.md +20 -12
- package/DEV-cjs/core/Breadcrumbs/Breadcrumbs.js +1 -1
- package/DEV-cjs/core/Buttons/IconButton.js +1 -1
- package/DEV-cjs/core/Menu/MenuItem.js +1 -1
- package/DEV-cjs/core/Popover/Popover.js +16 -26
- package/DEV-cjs/core/Table/Table.js +2 -2
- package/DEV-cjs/styles.js +1 -1
- package/DEV-cjs/utils/functions/dev.js +3 -23
- package/DEV-cjs/utils/hooks/index.js +1 -0
- package/DEV-cjs/utils/hooks/useWarningLogger.js +43 -0
- package/DEV-esm/core/Breadcrumbs/Breadcrumbs.js +2 -2
- package/DEV-esm/core/Buttons/IconButton.js +2 -2
- package/DEV-esm/core/Menu/MenuItem.js +2 -2
- package/DEV-esm/core/Popover/Popover.js +17 -30
- package/DEV-esm/core/Table/Table.js +3 -3
- package/DEV-esm/styles.js +1 -1
- package/DEV-esm/utils/functions/dev.js +1 -12
- package/DEV-esm/utils/hooks/index.js +1 -0
- package/DEV-esm/utils/hooks/useWarningLogger.js +31 -0
- package/cjs/core/Breadcrumbs/Breadcrumbs.js +1 -1
- package/cjs/core/Buttons/IconButton.js +1 -1
- package/cjs/core/Menu/MenuItem.js +1 -1
- package/cjs/core/Popover/Popover.js +16 -26
- package/cjs/core/Table/Table.js +2 -2
- package/cjs/styles.js +1 -1
- package/cjs/utils/functions/dev.d.ts +1 -16
- package/cjs/utils/functions/dev.js +3 -13
- package/cjs/utils/hooks/index.d.ts +1 -0
- package/cjs/utils/hooks/index.js +1 -0
- package/cjs/utils/hooks/useWarningLogger.d.ts +15 -0
- package/cjs/utils/hooks/useWarningLogger.js +17 -0
- package/esm/core/Breadcrumbs/Breadcrumbs.js +2 -2
- package/esm/core/Buttons/IconButton.js +2 -2
- package/esm/core/Menu/MenuItem.js +2 -2
- package/esm/core/Popover/Popover.js +17 -30
- package/esm/core/Table/Table.js +3 -3
- package/esm/styles.js +1 -1
- package/esm/utils/functions/dev.d.ts +1 -16
- package/esm/utils/functions/dev.js +1 -2
- package/esm/utils/hooks/index.d.ts +1 -0
- package/esm/utils/hooks/index.js +1 -0
- package/esm/utils/hooks/useWarningLogger.d.ts +15 -0
- package/esm/utils/hooks/useWarningLogger.js +5 -0
- package/package.json +1 -1
- package/styles.css +8 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 3.14.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#2209](https://github.com/iTwin/iTwinUI/pull/2209): Fixed an issue where nested `Popover`s were automatically closing due to faulty "outside click" detection.
|
|
8
|
+
- [#2213](https://github.com/iTwin/iTwinUI/pull/2213): Dev-only warnings have been improved so that they are correctly shown for every individual instance of a component. Additionally, these warnings are now logged using `console.error`, which results in a better stack trace.
|
|
9
|
+
|
|
3
10
|
## 3.14.0
|
|
4
11
|
|
|
5
12
|
### Minor Changes
|
|
@@ -16,20 +23,22 @@
|
|
|
16
23
|
- `Popover` now also sets a default max-height of `400px` to prevent it from becoming too large. This can be customized using the `middleware.size.maxHeight` prop.
|
|
17
24
|
- [#2205](https://github.com/iTwin/iTwinUI/pull/2205): `tableFilters.TextFilter` now prevents the user from applying the filter when the text input is empty.
|
|
18
25
|
- [#2205](https://github.com/iTwin/iTwinUI/pull/2205): `BaseFilter` now renders as a `<form>` and `FilterButtonBar` now renders a `<button type="submit">`. Together, this enables the use of browser's built-in validation before applying filters.
|
|
26
|
+
|
|
19
27
|
- The `setFilter` prop in `FilterButtonBar` has been deprecated, as `onSubmit` should be used instead.
|
|
20
28
|
<details>
|
|
21
29
|
<summary>Diff</summary>
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
|
|
31
|
+
```diff
|
|
32
|
+
<BaseFilter
|
|
33
|
+
+ onSubmit={() => setFilter(text)}
|
|
34
|
+
>
|
|
35
|
+
…
|
|
36
|
+
<FilterButtonBar
|
|
37
|
+
- setFilter={() => setFilter(text)}
|
|
38
|
+
/>
|
|
39
|
+
</BaseFilter>
|
|
40
|
+
```
|
|
41
|
+
|
|
33
42
|
</details>
|
|
34
43
|
|
|
35
44
|
### Patch Changes
|
|
@@ -44,7 +53,6 @@
|
|
|
44
53
|
- [#2178](https://github.com/iTwin/iTwinUI/pull/2178): Reduced layout thrashing on `Table` component by memoizing an expensive `ref` function.
|
|
45
54
|
- [#2194](https://github.com/iTwin/iTwinUI/pull/2194): The development build output is now also formatted using `prettier` for easier debugging.
|
|
46
55
|
|
|
47
|
-
|
|
48
56
|
## 3.13.4
|
|
49
57
|
|
|
50
58
|
### Patch Changes
|
|
@@ -15,7 +15,6 @@ const _classnames = _interop_require_default._(require('classnames'));
|
|
|
15
15
|
const _index = require('../../utils/index.js');
|
|
16
16
|
const _Button = require('../Buttons/Button.js');
|
|
17
17
|
const _Anchor = require('../Typography/Anchor.js');
|
|
18
|
-
const logWarning = (0, _index.createWarningLogger)();
|
|
19
18
|
const BreadcrumbsComponent = _react.forwardRef((props, ref) => {
|
|
20
19
|
let {
|
|
21
20
|
children: items,
|
|
@@ -109,6 +108,7 @@ const BreadcrumbsComponent = _react.forwardRef((props, ref) => {
|
|
|
109
108
|
BreadcrumbsComponent.displayName = 'Breadcrumbs';
|
|
110
109
|
const ListItem = ({ item, isActive }) => {
|
|
111
110
|
let children = item;
|
|
111
|
+
let logWarning = (0, _index.useWarningLogger)();
|
|
112
112
|
if (
|
|
113
113
|
children?.type === 'span' ||
|
|
114
114
|
children?.type === 'a' ||
|
|
@@ -17,7 +17,6 @@ const _Tooltip = require('../Tooltip/Tooltip.js');
|
|
|
17
17
|
const _VisuallyHidden = require('../VisuallyHidden/VisuallyHidden.js');
|
|
18
18
|
const _ButtonGroup = require('../ButtonGroup/ButtonGroup.js');
|
|
19
19
|
const _Popover = require('../Popover/Popover.js');
|
|
20
|
-
const logWarning = (0, _index.createWarningLogger)();
|
|
21
20
|
const IconButton = _react.forwardRef((props, ref) => {
|
|
22
21
|
let {
|
|
23
22
|
isActive,
|
|
@@ -35,6 +34,7 @@ const IconButton = _react.forwardRef((props, ref) => {
|
|
|
35
34
|
_ButtonGroup.ButtonGroupContext,
|
|
36
35
|
);
|
|
37
36
|
let hasPopoverOpen = _react.useContext(_Popover.PopoverOpenContext);
|
|
37
|
+
let logWarning = (0, _index.useWarningLogger)();
|
|
38
38
|
if (!label && !props['aria-label'] && !props['aria-labelledby'])
|
|
39
39
|
logWarning('IconButton is missing the `label` prop.');
|
|
40
40
|
let button = _react.createElement(
|
|
@@ -15,7 +15,6 @@ const _index = require('../../utils/index.js');
|
|
|
15
15
|
const _Menu = require('./Menu.js');
|
|
16
16
|
const _ListItem = require('../List/ListItem.js');
|
|
17
17
|
const _classnames = _interop_require_default._(require('classnames'));
|
|
18
|
-
const logWarning = (0, _index.createWarningLogger)();
|
|
19
18
|
const MenuItem = _react.forwardRef((props, forwardedRef) => {
|
|
20
19
|
let {
|
|
21
20
|
className,
|
|
@@ -34,6 +33,7 @@ const MenuItem = _react.forwardRef((props, forwardedRef) => {
|
|
|
34
33
|
subMenuItems = [],
|
|
35
34
|
...rest
|
|
36
35
|
} = props;
|
|
36
|
+
let logWarning = (0, _index.useWarningLogger)();
|
|
37
37
|
if (null != onClickProp && subMenuItems.length > 0)
|
|
38
38
|
logWarning(
|
|
39
39
|
'Passing a non-empty submenuItems array and onClick to MenuItem at the same time is not supported. This is because when a non empty submenuItems array is passed, clicking the MenuItem toggles the submenu visibility.',
|
|
@@ -27,7 +27,6 @@ const _classnames = _interop_require_default._(require('classnames'));
|
|
|
27
27
|
const _react1 = require('@floating-ui/react');
|
|
28
28
|
const _index = require('../../utils/index.js');
|
|
29
29
|
const _Portal = require('../../utils/components/Portal.js');
|
|
30
|
-
const _ThemeProvider = require('../ThemeProvider/ThemeProvider.js');
|
|
31
30
|
const PopoverOpenContext = _react.createContext(void 0);
|
|
32
31
|
const usePopover = (options) => {
|
|
33
32
|
let {
|
|
@@ -222,11 +221,9 @@ const Popover = _react.forwardRef((props, forwardedRef) => {
|
|
|
222
221
|
role: 'dialog',
|
|
223
222
|
middleware,
|
|
224
223
|
});
|
|
225
|
-
let [popoverElement, setPopoverElement] = _react.useState();
|
|
226
224
|
let popoverRef = (0, _index.useMergedRefs)(
|
|
227
225
|
popover.refs.setFloating,
|
|
228
226
|
forwardedRef,
|
|
229
|
-
setPopoverElement,
|
|
230
227
|
);
|
|
231
228
|
let triggerId = `${(0, _index.useId)()}-trigger`;
|
|
232
229
|
let hasAriaLabel = !!props['aria-labelledby'] || !!props['aria-label'];
|
|
@@ -256,34 +253,27 @@ const Popover = _react.forwardRef((props, forwardedRef) => {
|
|
|
256
253
|
portal: portal,
|
|
257
254
|
},
|
|
258
255
|
_react.createElement(
|
|
259
|
-
|
|
256
|
+
_react1.FloatingFocusManager,
|
|
260
257
|
{
|
|
261
|
-
|
|
258
|
+
context: popover.context,
|
|
259
|
+
modal: false,
|
|
262
260
|
},
|
|
263
|
-
_react.createElement(DisplayContents, null),
|
|
264
261
|
_react.createElement(
|
|
265
|
-
|
|
262
|
+
_index.Box,
|
|
266
263
|
{
|
|
267
|
-
|
|
268
|
-
|
|
264
|
+
className: (0, _classnames.default)(
|
|
265
|
+
{
|
|
266
|
+
'iui-popover-surface': applyBackground,
|
|
267
|
+
},
|
|
268
|
+
className,
|
|
269
|
+
),
|
|
270
|
+
'aria-labelledby': hasAriaLabel
|
|
271
|
+
? void 0
|
|
272
|
+
: popover.refs.domReference.current?.id,
|
|
273
|
+
...popover.getFloatingProps(rest),
|
|
274
|
+
ref: popoverRef,
|
|
269
275
|
},
|
|
270
|
-
|
|
271
|
-
_index.Box,
|
|
272
|
-
{
|
|
273
|
-
className: (0, _classnames.default)(
|
|
274
|
-
{
|
|
275
|
-
'iui-popover-surface': applyBackground,
|
|
276
|
-
},
|
|
277
|
-
className,
|
|
278
|
-
),
|
|
279
|
-
'aria-labelledby': hasAriaLabel
|
|
280
|
-
? void 0
|
|
281
|
-
: popover.refs.domReference.current?.id,
|
|
282
|
-
...popover.getFloatingProps(rest),
|
|
283
|
-
ref: popoverRef,
|
|
284
|
-
},
|
|
285
|
-
content,
|
|
286
|
-
),
|
|
276
|
+
content,
|
|
287
277
|
),
|
|
288
278
|
),
|
|
289
279
|
)
|
|
@@ -35,7 +35,6 @@ const singleRowSelectedAction = 'singleRowSelected';
|
|
|
35
35
|
const shiftRowSelectedAction = 'shiftRowSelected';
|
|
36
36
|
const tableResizeStartAction = 'tableResizeStart';
|
|
37
37
|
const tableResizeEndAction = 'tableResizeEnd';
|
|
38
|
-
const logWarning = (0, _index.createWarningLogger)();
|
|
39
38
|
const flattenColumns = (columns) => {
|
|
40
39
|
let flatColumns = [];
|
|
41
40
|
columns.forEach((column) => {
|
|
@@ -282,6 +281,7 @@ const Table = (props) => {
|
|
|
282
281
|
setGlobalFilter,
|
|
283
282
|
} = instance;
|
|
284
283
|
let headerGroups = _headerGroups;
|
|
284
|
+
let logWarning = (0, _index.useWarningLogger)();
|
|
285
285
|
if (1 === columns.length && 'columns' in columns[0]) {
|
|
286
286
|
headerGroups = _headerGroups.slice(1);
|
|
287
287
|
logWarning(
|
|
@@ -575,7 +575,7 @@ const Table = (props) => {
|
|
|
575
575
|
let dragAndDropProps = column.getDragAndDropProps();
|
|
576
576
|
return _react.createElement(_ColumnHeader.ColumnHeader, {
|
|
577
577
|
...dragAndDropProps,
|
|
578
|
-
key: dragAndDropProps.key,
|
|
578
|
+
key: dragAndDropProps.key || column.id || index,
|
|
579
579
|
columnRefs: columnRefs,
|
|
580
580
|
column: column,
|
|
581
581
|
index: index,
|
package/DEV-cjs/styles.js
CHANGED
|
@@ -2,18 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, '__esModule', {
|
|
3
3
|
value: true,
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
enumerable: true,
|
|
9
|
-
get: all[name],
|
|
10
|
-
});
|
|
11
|
-
}
|
|
12
|
-
_export(exports, {
|
|
13
|
-
createWarningLogger: function () {
|
|
14
|
-
return createWarningLogger;
|
|
15
|
-
},
|
|
16
|
-
isUnitTest: function () {
|
|
5
|
+
Object.defineProperty(exports, 'isUnitTest', {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function () {
|
|
17
8
|
return isUnitTest;
|
|
18
9
|
},
|
|
19
10
|
});
|
|
@@ -24,14 +15,3 @@ const isMocha =
|
|
|
24
15
|
`${globalThis.beforeEach}`.replace(/\s/g, '');
|
|
25
16
|
const isVitest = void 0 !== globalThis.__vitest_index__;
|
|
26
17
|
const isUnitTest = isJest || isVitest || isMocha;
|
|
27
|
-
const createWarningLogger = isUnitTest
|
|
28
|
-
? () => () => {}
|
|
29
|
-
: () => {
|
|
30
|
-
let logged = false;
|
|
31
|
-
return (message) => {
|
|
32
|
-
if (!logged) {
|
|
33
|
-
console.warn(message);
|
|
34
|
-
logged = true;
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
};
|
|
@@ -19,3 +19,4 @@ _export_star._(require('./useId.js'), exports);
|
|
|
19
19
|
_export_star._(require('./useControlledState.js'), exports);
|
|
20
20
|
_export_star._(require('./useSyncExternalStore.js'), exports);
|
|
21
21
|
_export_star._(require('./useVirtualScroll.js'), exports);
|
|
22
|
+
_export_star._(require('./useWarningLogger.js'), exports);
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
Object.defineProperty(exports, '__esModule', {
|
|
3
|
+
value: true,
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, 'useWarningLogger', {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function () {
|
|
8
|
+
return useWarningLogger;
|
|
9
|
+
},
|
|
10
|
+
});
|
|
11
|
+
const _interop_require_wildcard = require('@swc/helpers/_/_interop_require_wildcard');
|
|
12
|
+
const _react = _interop_require_wildcard._(require('react'));
|
|
13
|
+
const _dev = require('../functions/dev.js');
|
|
14
|
+
const _React = _react;
|
|
15
|
+
const ReactInternals =
|
|
16
|
+
_React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
|
|
17
|
+
const useWarningLogger = _dev.isUnitTest
|
|
18
|
+
? () => () => {}
|
|
19
|
+
: function () {
|
|
20
|
+
let loggedRef = _react.useRef(false);
|
|
21
|
+
let timeoutRef = _react.useRef(null);
|
|
22
|
+
let stack = ReactInternals?.ReactDebugCurrentFrame?.getCurrentStack?.();
|
|
23
|
+
let componentName = stack?.trim().split('\n')[1]?.trim();
|
|
24
|
+
let prefix = componentName ? `Warning (${componentName}):` : 'Warning:';
|
|
25
|
+
let logWarning = _react.useCallback(
|
|
26
|
+
(message) => {
|
|
27
|
+
timeoutRef.current = window.setTimeout(() => {
|
|
28
|
+
if (!loggedRef.current) {
|
|
29
|
+
console.error(prefix, message);
|
|
30
|
+
loggedRef.current = true;
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
},
|
|
34
|
+
[prefix],
|
|
35
|
+
);
|
|
36
|
+
_react.useEffect(
|
|
37
|
+
() => () => {
|
|
38
|
+
if (timeoutRef.current) window.clearTimeout(timeoutRef.current);
|
|
39
|
+
},
|
|
40
|
+
[],
|
|
41
|
+
);
|
|
42
|
+
return logWarning;
|
|
43
|
+
};
|
|
@@ -5,11 +5,10 @@ import {
|
|
|
5
5
|
useOverflow,
|
|
6
6
|
SvgChevronRight,
|
|
7
7
|
Box,
|
|
8
|
-
|
|
8
|
+
useWarningLogger,
|
|
9
9
|
} from '../../utils/index.js';
|
|
10
10
|
import { Button } from '../Buttons/Button.js';
|
|
11
11
|
import { Anchor } from '../Typography/Anchor.js';
|
|
12
|
-
let logWarning = createWarningLogger();
|
|
13
12
|
let BreadcrumbsComponent = React.forwardRef((props, ref) => {
|
|
14
13
|
let {
|
|
15
14
|
children: items,
|
|
@@ -103,6 +102,7 @@ let BreadcrumbsComponent = React.forwardRef((props, ref) => {
|
|
|
103
102
|
BreadcrumbsComponent.displayName = 'Breadcrumbs';
|
|
104
103
|
let ListItem = ({ item, isActive }) => {
|
|
105
104
|
let children = item;
|
|
105
|
+
let logWarning = useWarningLogger();
|
|
106
106
|
if (
|
|
107
107
|
children?.type === 'span' ||
|
|
108
108
|
children?.type === 'a' ||
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import cx from 'classnames';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { Box, ButtonBase,
|
|
3
|
+
import { Box, ButtonBase, useWarningLogger } from '../../utils/index.js';
|
|
4
4
|
import { Tooltip } from '../Tooltip/Tooltip.js';
|
|
5
5
|
import { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden.js';
|
|
6
6
|
import { ButtonGroupContext } from '../ButtonGroup/ButtonGroup.js';
|
|
7
7
|
import { PopoverOpenContext } from '../Popover/Popover.js';
|
|
8
|
-
let logWarning = createWarningLogger();
|
|
9
8
|
export const IconButton = React.forwardRef((props, ref) => {
|
|
10
9
|
let {
|
|
11
10
|
isActive,
|
|
@@ -21,6 +20,7 @@ export const IconButton = React.forwardRef((props, ref) => {
|
|
|
21
20
|
} = props;
|
|
22
21
|
let buttonGroupOrientation = React.useContext(ButtonGroupContext);
|
|
23
22
|
let hasPopoverOpen = React.useContext(PopoverOpenContext);
|
|
23
|
+
let logWarning = useWarningLogger();
|
|
24
24
|
if (!label && !props['aria-label'] && !props['aria-labelledby'])
|
|
25
25
|
logWarning('IconButton is missing the `label` prop.');
|
|
26
26
|
let button = React.createElement(
|
|
@@ -3,12 +3,11 @@ import {
|
|
|
3
3
|
SvgCaretRightSmall,
|
|
4
4
|
useMergedRefs,
|
|
5
5
|
useId,
|
|
6
|
-
|
|
6
|
+
useWarningLogger,
|
|
7
7
|
} from '../../utils/index.js';
|
|
8
8
|
import { Menu, MenuContext } from './Menu.js';
|
|
9
9
|
import { ListItem } from '../List/ListItem.js';
|
|
10
10
|
import cx from 'classnames';
|
|
11
|
-
let logWarning = createWarningLogger();
|
|
12
11
|
export const MenuItem = React.forwardRef((props, forwardedRef) => {
|
|
13
12
|
let {
|
|
14
13
|
className,
|
|
@@ -27,6 +26,7 @@ export const MenuItem = React.forwardRef((props, forwardedRef) => {
|
|
|
27
26
|
subMenuItems = [],
|
|
28
27
|
...rest
|
|
29
28
|
} = props;
|
|
29
|
+
let logWarning = useWarningLogger();
|
|
30
30
|
if (null != onClickProp && subMenuItems.length > 0)
|
|
31
31
|
logWarning(
|
|
32
32
|
'Passing a non-empty submenuItems array and onClick to MenuItem at the same time is not supported. This is because when a non empty submenuItems array is passed, clicking the MenuItem toggles the submenu visibility.',
|
|
@@ -32,7 +32,6 @@ import {
|
|
|
32
32
|
useMergedRefs,
|
|
33
33
|
} from '../../utils/index.js';
|
|
34
34
|
import { usePortalTo } from '../../utils/components/Portal.js';
|
|
35
|
-
import { ThemeProvider } from '../ThemeProvider/ThemeProvider.js';
|
|
36
35
|
export const PopoverOpenContext = React.createContext(void 0);
|
|
37
36
|
export const usePopover = (options) => {
|
|
38
37
|
let {
|
|
@@ -224,12 +223,7 @@ export const Popover = React.forwardRef((props, forwardedRef) => {
|
|
|
224
223
|
role: 'dialog',
|
|
225
224
|
middleware,
|
|
226
225
|
});
|
|
227
|
-
let
|
|
228
|
-
let popoverRef = useMergedRefs(
|
|
229
|
-
popover.refs.setFloating,
|
|
230
|
-
forwardedRef,
|
|
231
|
-
setPopoverElement,
|
|
232
|
-
);
|
|
226
|
+
let popoverRef = useMergedRefs(popover.refs.setFloating, forwardedRef);
|
|
233
227
|
let triggerId = `${useId()}-trigger`;
|
|
234
228
|
let hasAriaLabel = !!props['aria-labelledby'] || !!props['aria-label'];
|
|
235
229
|
useLayoutEffect(() => {
|
|
@@ -258,34 +252,27 @@ export const Popover = React.forwardRef((props, forwardedRef) => {
|
|
|
258
252
|
portal: portal,
|
|
259
253
|
},
|
|
260
254
|
React.createElement(
|
|
261
|
-
|
|
255
|
+
FloatingFocusManager,
|
|
262
256
|
{
|
|
263
|
-
|
|
257
|
+
context: popover.context,
|
|
258
|
+
modal: false,
|
|
264
259
|
},
|
|
265
|
-
React.createElement(DisplayContents, null),
|
|
266
260
|
React.createElement(
|
|
267
|
-
|
|
261
|
+
Box,
|
|
268
262
|
{
|
|
269
|
-
|
|
270
|
-
|
|
263
|
+
className: cx(
|
|
264
|
+
{
|
|
265
|
+
'iui-popover-surface': applyBackground,
|
|
266
|
+
},
|
|
267
|
+
className,
|
|
268
|
+
),
|
|
269
|
+
'aria-labelledby': hasAriaLabel
|
|
270
|
+
? void 0
|
|
271
|
+
: popover.refs.domReference.current?.id,
|
|
272
|
+
...popover.getFloatingProps(rest),
|
|
273
|
+
ref: popoverRef,
|
|
271
274
|
},
|
|
272
|
-
|
|
273
|
-
Box,
|
|
274
|
-
{
|
|
275
|
-
className: cx(
|
|
276
|
-
{
|
|
277
|
-
'iui-popover-surface': applyBackground,
|
|
278
|
-
},
|
|
279
|
-
className,
|
|
280
|
-
),
|
|
281
|
-
'aria-labelledby': hasAriaLabel
|
|
282
|
-
? void 0
|
|
283
|
-
: popover.refs.domReference.current?.id,
|
|
284
|
-
...popover.getFloatingProps(rest),
|
|
285
|
-
ref: popoverRef,
|
|
286
|
-
},
|
|
287
|
-
content,
|
|
288
|
-
),
|
|
275
|
+
content,
|
|
289
276
|
),
|
|
290
277
|
),
|
|
291
278
|
)
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
useResizeObserver,
|
|
19
19
|
useLayoutEffect,
|
|
20
20
|
Box,
|
|
21
|
-
|
|
21
|
+
useWarningLogger,
|
|
22
22
|
ShadowRoot,
|
|
23
23
|
useMergedRefs,
|
|
24
24
|
useLatestRef,
|
|
@@ -52,7 +52,6 @@ let singleRowSelectedAction = 'singleRowSelected';
|
|
|
52
52
|
let shiftRowSelectedAction = 'shiftRowSelected';
|
|
53
53
|
export const tableResizeStartAction = 'tableResizeStart';
|
|
54
54
|
let tableResizeEndAction = 'tableResizeEnd';
|
|
55
|
-
let logWarning = createWarningLogger();
|
|
56
55
|
let flattenColumns = (columns) => {
|
|
57
56
|
let flatColumns = [];
|
|
58
57
|
columns.forEach((column) => {
|
|
@@ -292,6 +291,7 @@ export const Table = (props) => {
|
|
|
292
291
|
setGlobalFilter,
|
|
293
292
|
} = instance;
|
|
294
293
|
let headerGroups = _headerGroups;
|
|
294
|
+
let logWarning = useWarningLogger();
|
|
295
295
|
if (1 === columns.length && 'columns' in columns[0]) {
|
|
296
296
|
headerGroups = _headerGroups.slice(1);
|
|
297
297
|
logWarning(
|
|
@@ -582,7 +582,7 @@ export const Table = (props) => {
|
|
|
582
582
|
let dragAndDropProps = column.getDragAndDropProps();
|
|
583
583
|
return React.createElement(ColumnHeader, {
|
|
584
584
|
...dragAndDropProps,
|
|
585
|
-
key: dragAndDropProps.key,
|
|
585
|
+
key: dragAndDropProps.key || column.id || index,
|
|
586
586
|
columnRefs: columnRefs,
|
|
587
587
|
column: column,
|
|
588
588
|
index: index,
|
package/DEV-esm/styles.js
CHANGED
|
@@ -5,15 +5,4 @@ let isMocha =
|
|
|
5
5
|
`${globalThis.beforeEach}`.replace(/\s/g, '');
|
|
6
6
|
let isVitest = void 0 !== globalThis.__vitest_index__;
|
|
7
7
|
let isUnitTest = isJest || isVitest || isMocha;
|
|
8
|
-
|
|
9
|
-
? () => () => {}
|
|
10
|
-
: () => {
|
|
11
|
-
let logged = false;
|
|
12
|
-
return (message) => {
|
|
13
|
-
if (!logged) {
|
|
14
|
-
console.warn(message);
|
|
15
|
-
logged = true;
|
|
16
|
-
}
|
|
17
|
-
};
|
|
18
|
-
};
|
|
19
|
-
export { isUnitTest, createWarningLogger };
|
|
8
|
+
export { isUnitTest };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { isUnitTest } from '../functions/dev.js';
|
|
3
|
+
let _React = React;
|
|
4
|
+
let ReactInternals = _React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
|
|
5
|
+
export const useWarningLogger = isUnitTest
|
|
6
|
+
? () => () => {}
|
|
7
|
+
: function () {
|
|
8
|
+
let loggedRef = React.useRef(false);
|
|
9
|
+
let timeoutRef = React.useRef(null);
|
|
10
|
+
let stack = ReactInternals?.ReactDebugCurrentFrame?.getCurrentStack?.();
|
|
11
|
+
let componentName = stack?.trim().split('\n')[1]?.trim();
|
|
12
|
+
let prefix = componentName ? `Warning (${componentName}):` : 'Warning:';
|
|
13
|
+
let logWarning = React.useCallback(
|
|
14
|
+
(message) => {
|
|
15
|
+
timeoutRef.current = window.setTimeout(() => {
|
|
16
|
+
if (!loggedRef.current) {
|
|
17
|
+
console.error(prefix, message);
|
|
18
|
+
loggedRef.current = true;
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
},
|
|
22
|
+
[prefix],
|
|
23
|
+
);
|
|
24
|
+
React.useEffect(
|
|
25
|
+
() => () => {
|
|
26
|
+
if (timeoutRef.current) window.clearTimeout(timeoutRef.current);
|
|
27
|
+
},
|
|
28
|
+
[],
|
|
29
|
+
);
|
|
30
|
+
return logWarning;
|
|
31
|
+
};
|
|
@@ -15,7 +15,6 @@ const _classnames = _interop_require_default._(require('classnames'));
|
|
|
15
15
|
const _index = require('../../utils/index.js');
|
|
16
16
|
const _Button = require('../Buttons/Button.js');
|
|
17
17
|
const _Anchor = require('../Typography/Anchor.js');
|
|
18
|
-
const logWarning = (0, _index.createWarningLogger)();
|
|
19
18
|
const BreadcrumbsComponent = _react.forwardRef((props, ref) => {
|
|
20
19
|
let {
|
|
21
20
|
children: items,
|
|
@@ -108,6 +107,7 @@ const BreadcrumbsComponent = _react.forwardRef((props, ref) => {
|
|
|
108
107
|
});
|
|
109
108
|
const ListItem = ({ item, isActive }) => {
|
|
110
109
|
let children = item;
|
|
110
|
+
let logWarning = (0, _index.useWarningLogger)();
|
|
111
111
|
if (
|
|
112
112
|
children?.type === 'span' ||
|
|
113
113
|
children?.type === 'a' ||
|
|
@@ -17,7 +17,6 @@ const _Tooltip = require('../Tooltip/Tooltip.js');
|
|
|
17
17
|
const _VisuallyHidden = require('../VisuallyHidden/VisuallyHidden.js');
|
|
18
18
|
const _ButtonGroup = require('../ButtonGroup/ButtonGroup.js');
|
|
19
19
|
const _Popover = require('../Popover/Popover.js');
|
|
20
|
-
const logWarning = (0, _index.createWarningLogger)();
|
|
21
20
|
const IconButton = _react.forwardRef((props, ref) => {
|
|
22
21
|
let {
|
|
23
22
|
isActive,
|
|
@@ -35,6 +34,7 @@ const IconButton = _react.forwardRef((props, ref) => {
|
|
|
35
34
|
_ButtonGroup.ButtonGroupContext,
|
|
36
35
|
);
|
|
37
36
|
let hasPopoverOpen = _react.useContext(_Popover.PopoverOpenContext);
|
|
37
|
+
let logWarning = (0, _index.useWarningLogger)();
|
|
38
38
|
let button = _react.createElement(
|
|
39
39
|
_index.ButtonBase,
|
|
40
40
|
{
|
|
@@ -15,7 +15,6 @@ const _index = require('../../utils/index.js');
|
|
|
15
15
|
const _Menu = require('./Menu.js');
|
|
16
16
|
const _ListItem = require('../List/ListItem.js');
|
|
17
17
|
const _classnames = _interop_require_default._(require('classnames'));
|
|
18
|
-
const logWarning = (0, _index.createWarningLogger)();
|
|
19
18
|
const MenuItem = _react.forwardRef((props, forwardedRef) => {
|
|
20
19
|
let {
|
|
21
20
|
className,
|
|
@@ -34,6 +33,7 @@ const MenuItem = _react.forwardRef((props, forwardedRef) => {
|
|
|
34
33
|
subMenuItems = [],
|
|
35
34
|
...rest
|
|
36
35
|
} = props;
|
|
36
|
+
let logWarning = (0, _index.useWarningLogger)();
|
|
37
37
|
let parentMenu = _react.useContext(_Menu.MenuContext);
|
|
38
38
|
let menuItemRef = _react.useRef(null);
|
|
39
39
|
let submenuId = (0, _index.useId)();
|
|
@@ -27,7 +27,6 @@ const _classnames = _interop_require_default._(require('classnames'));
|
|
|
27
27
|
const _react1 = require('@floating-ui/react');
|
|
28
28
|
const _index = require('../../utils/index.js');
|
|
29
29
|
const _Portal = require('../../utils/components/Portal.js');
|
|
30
|
-
const _ThemeProvider = require('../ThemeProvider/ThemeProvider.js');
|
|
31
30
|
const PopoverOpenContext = _react.createContext(void 0);
|
|
32
31
|
const usePopover = (options) => {
|
|
33
32
|
let {
|
|
@@ -222,11 +221,9 @@ const Popover = _react.forwardRef((props, forwardedRef) => {
|
|
|
222
221
|
role: 'dialog',
|
|
223
222
|
middleware,
|
|
224
223
|
});
|
|
225
|
-
let [popoverElement, setPopoverElement] = _react.useState();
|
|
226
224
|
let popoverRef = (0, _index.useMergedRefs)(
|
|
227
225
|
popover.refs.setFloating,
|
|
228
226
|
forwardedRef,
|
|
229
|
-
setPopoverElement,
|
|
230
227
|
);
|
|
231
228
|
let triggerId = `${(0, _index.useId)()}-trigger`;
|
|
232
229
|
let hasAriaLabel = !!props['aria-labelledby'] || !!props['aria-label'];
|
|
@@ -256,34 +253,27 @@ const Popover = _react.forwardRef((props, forwardedRef) => {
|
|
|
256
253
|
portal: portal,
|
|
257
254
|
},
|
|
258
255
|
_react.createElement(
|
|
259
|
-
|
|
256
|
+
_react1.FloatingFocusManager,
|
|
260
257
|
{
|
|
261
|
-
|
|
258
|
+
context: popover.context,
|
|
259
|
+
modal: false,
|
|
262
260
|
},
|
|
263
|
-
_react.createElement(DisplayContents, null),
|
|
264
261
|
_react.createElement(
|
|
265
|
-
|
|
262
|
+
_index.Box,
|
|
266
263
|
{
|
|
267
|
-
|
|
268
|
-
|
|
264
|
+
className: (0, _classnames.default)(
|
|
265
|
+
{
|
|
266
|
+
'iui-popover-surface': applyBackground,
|
|
267
|
+
},
|
|
268
|
+
className,
|
|
269
|
+
),
|
|
270
|
+
'aria-labelledby': hasAriaLabel
|
|
271
|
+
? void 0
|
|
272
|
+
: popover.refs.domReference.current?.id,
|
|
273
|
+
...popover.getFloatingProps(rest),
|
|
274
|
+
ref: popoverRef,
|
|
269
275
|
},
|
|
270
|
-
|
|
271
|
-
_index.Box,
|
|
272
|
-
{
|
|
273
|
-
className: (0, _classnames.default)(
|
|
274
|
-
{
|
|
275
|
-
'iui-popover-surface': applyBackground,
|
|
276
|
-
},
|
|
277
|
-
className,
|
|
278
|
-
),
|
|
279
|
-
'aria-labelledby': hasAriaLabel
|
|
280
|
-
? void 0
|
|
281
|
-
: popover.refs.domReference.current?.id,
|
|
282
|
-
...popover.getFloatingProps(rest),
|
|
283
|
-
ref: popoverRef,
|
|
284
|
-
},
|
|
285
|
-
content,
|
|
286
|
-
),
|
|
276
|
+
content,
|
|
287
277
|
),
|
|
288
278
|
),
|
|
289
279
|
)
|