@itwin/itwinui-react 3.14.0 → 3.14.2
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 +28 -12
- package/DEV-cjs/core/Breadcrumbs/Breadcrumbs.js +1 -1
- package/DEV-cjs/core/Buttons/IconButton.js +1 -1
- package/DEV-cjs/core/Footer/Footer.js +7 -7
- 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 +3 -3
- package/DEV-cjs/core/Table/cells/DefaultCell.js +5 -5
- package/DEV-cjs/core/ThemeProvider/ThemeProvider.js +1 -1
- 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/Footer/Footer.js +7 -7
- 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 +4 -4
- package/DEV-esm/core/Table/cells/DefaultCell.js +5 -5
- package/DEV-esm/core/ThemeProvider/ThemeProvider.js +1 -1
- 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/Footer/Footer.d.ts +5 -5
- package/cjs/core/Footer/Footer.js +7 -7
- package/cjs/core/Menu/MenuItem.js +1 -1
- package/cjs/core/Popover/Popover.js +16 -26
- package/cjs/core/Table/Table.js +3 -3
- package/cjs/core/Table/cells/DefaultCell.js +5 -5
- package/cjs/core/Table/utils.d.ts +2 -2
- package/cjs/core/ThemeProvider/ThemeProvider.js +1 -1
- 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/Footer/Footer.d.ts +5 -5
- package/esm/core/Footer/Footer.js +7 -7
- package/esm/core/Menu/MenuItem.js +2 -2
- package/esm/core/Popover/Popover.js +17 -30
- package/esm/core/Table/Table.js +4 -4
- package/esm/core/Table/cells/DefaultCell.js +5 -5
- package/esm/core/Table/utils.d.ts +2 -2
- package/esm/core/ThemeProvider/ThemeProvider.js +1 -1
- 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,20 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 3.14.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#2217](https://github.com/iTwin/iTwinUI/pull/2217): Fixed the `Footer`'s `translatedTitles` prop's type to allow passing partial translations.
|
|
8
|
+
- [#2218](https://github.com/iTwin/iTwinUI/pull/2218): Fixed a `Table` bug where custom `Cell` content was not taking up the entire available width in some cases.
|
|
9
|
+
- [#2216](https://github.com/iTwin/iTwinUI/pull/2216): Fixed the fallback CSS logic in `ThemeProvider` to load the correct stylesheet version.
|
|
10
|
+
|
|
11
|
+
## 3.14.1
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- [#2209](https://github.com/iTwin/iTwinUI/pull/2209): Fixed an issue where nested `Popover`s were automatically closing due to faulty "outside click" detection.
|
|
16
|
+
- [#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.
|
|
17
|
+
|
|
3
18
|
## 3.14.0
|
|
4
19
|
|
|
5
20
|
### Minor Changes
|
|
@@ -16,20 +31,22 @@
|
|
|
16
31
|
- `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
32
|
- [#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
33
|
- [#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.
|
|
34
|
+
|
|
19
35
|
- The `setFilter` prop in `FilterButtonBar` has been deprecated, as `onSubmit` should be used instead.
|
|
20
36
|
<details>
|
|
21
37
|
<summary>Diff</summary>
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
38
|
+
|
|
39
|
+
```diff
|
|
40
|
+
<BaseFilter
|
|
41
|
+
+ onSubmit={() => setFilter(text)}
|
|
42
|
+
>
|
|
43
|
+
…
|
|
44
|
+
<FilterButtonBar
|
|
45
|
+
- setFilter={() => setFilter(text)}
|
|
46
|
+
/>
|
|
47
|
+
</BaseFilter>
|
|
48
|
+
```
|
|
49
|
+
|
|
33
50
|
</details>
|
|
34
51
|
|
|
35
52
|
### Patch Changes
|
|
@@ -44,7 +61,6 @@
|
|
|
44
61
|
- [#2178](https://github.com/iTwin/iTwinUI/pull/2178): Reduced layout thrashing on `Table` component by memoizing an expensive `ref` function.
|
|
45
62
|
- [#2194](https://github.com/iTwin/iTwinUI/pull/2194): The development build output is now also formatted using `prettier` for easier debugging.
|
|
46
63
|
|
|
47
|
-
|
|
48
64
|
## 3.13.4
|
|
49
65
|
|
|
50
66
|
### 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(
|
|
@@ -26,7 +26,7 @@ const _FooterItem = require('./FooterItem.js');
|
|
|
26
26
|
const _FooterSeparator = require('./FooterSeparator.js');
|
|
27
27
|
const _FooterList = require('./FooterList.js');
|
|
28
28
|
const _Anchor = require('../Typography/Anchor.js');
|
|
29
|
-
const
|
|
29
|
+
const defaultTranslatedTitles = {
|
|
30
30
|
cookies: 'Cookies',
|
|
31
31
|
legalNotices: 'Legal notices',
|
|
32
32
|
privacy: 'Privacy',
|
|
@@ -40,27 +40,27 @@ const defaultFooterElements = [
|
|
|
40
40
|
},
|
|
41
41
|
{
|
|
42
42
|
key: 'termsOfService',
|
|
43
|
-
title:
|
|
43
|
+
title: defaultTranslatedTitles.termsOfService,
|
|
44
44
|
url: 'https://connect-agreementportal.bentley.com/AgreementApp/Home/Eula/view/readonly/BentleyConnect',
|
|
45
45
|
},
|
|
46
46
|
{
|
|
47
47
|
key: 'privacy',
|
|
48
|
-
title:
|
|
48
|
+
title: defaultTranslatedTitles.privacy,
|
|
49
49
|
url: 'https://www.bentley.com/en/privacy-policy',
|
|
50
50
|
},
|
|
51
51
|
{
|
|
52
52
|
key: 'termsOfUse',
|
|
53
|
-
title:
|
|
53
|
+
title: defaultTranslatedTitles.termsOfUse,
|
|
54
54
|
url: 'https://www.bentley.com/en/terms-of-use-and-select-online-agreement',
|
|
55
55
|
},
|
|
56
56
|
{
|
|
57
57
|
key: 'cookies',
|
|
58
|
-
title:
|
|
58
|
+
title: defaultTranslatedTitles.cookies,
|
|
59
59
|
url: 'https://www.bentley.com/en/cookie-policy',
|
|
60
60
|
},
|
|
61
61
|
{
|
|
62
62
|
key: 'legalNotices',
|
|
63
|
-
title:
|
|
63
|
+
title: defaultTranslatedTitles.legalNotices,
|
|
64
64
|
url: 'https://connect.bentley.com/Legal',
|
|
65
65
|
},
|
|
66
66
|
];
|
|
@@ -69,7 +69,7 @@ const Footer = Object.assign(
|
|
|
69
69
|
let { children, customElements, translatedTitles, className, ...rest } =
|
|
70
70
|
props;
|
|
71
71
|
let titles = {
|
|
72
|
-
...
|
|
72
|
+
...defaultTranslatedTitles,
|
|
73
73
|
...translatedTitles,
|
|
74
74
|
};
|
|
75
75
|
let translatedElements = defaultFooterElements.map((element) => {
|
|
@@ -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(
|
|
@@ -514,7 +514,7 @@ const Table = (props) => {
|
|
|
514
514
|
return _react.createElement(
|
|
515
515
|
_utils.TableColumnsContext.Provider,
|
|
516
516
|
{
|
|
517
|
-
value: columns,
|
|
517
|
+
value: instance.columns,
|
|
518
518
|
},
|
|
519
519
|
_react.createElement(
|
|
520
520
|
_index.Box,
|
|
@@ -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,
|
|
@@ -11,17 +11,17 @@ Object.defineProperty(exports, 'DefaultCell', {
|
|
|
11
11
|
const _interop_require_default = require('@swc/helpers/_/_interop_require_default');
|
|
12
12
|
const _interop_require_wildcard = require('@swc/helpers/_/_interop_require_wildcard');
|
|
13
13
|
const _react = _interop_require_wildcard._(require('react'));
|
|
14
|
+
const _reacttable = require('react-table');
|
|
14
15
|
const _classnames = _interop_require_default._(require('classnames'));
|
|
15
16
|
const _index = require('../../../utils/index.js');
|
|
16
17
|
const _utils = require('../utils.js');
|
|
17
18
|
const DefaultCell = (props) => {
|
|
18
|
-
let
|
|
19
|
+
let instanceColumns = _react.useContext(_utils.TableColumnsContext);
|
|
19
20
|
let isCustomCell = _react.useMemo(
|
|
20
21
|
() =>
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
[props.cellProps.column.id, columnsProp],
|
|
22
|
+
instanceColumns.find(({ id }) => props.cellProps.column.id === id)
|
|
23
|
+
?.Cell !== _reacttable.defaultColumn.Cell,
|
|
24
|
+
[instanceColumns, props.cellProps.column.id],
|
|
25
25
|
);
|
|
26
26
|
let {
|
|
27
27
|
cellElementProps: {
|
|
@@ -247,7 +247,7 @@ const FallbackStyles = ({ root }) => {
|
|
|
247
247
|
} catch (error) {
|
|
248
248
|
console.log('Error loading styles.css locally', error);
|
|
249
249
|
let css = await (0, _index.importCss)(
|
|
250
|
-
|
|
250
|
+
`https://cdn.jsdelivr.net/npm/@itwin/itwinui-react@${_meta.meta.version}/styles.css`,
|
|
251
251
|
);
|
|
252
252
|
document.adoptedStyleSheets = [
|
|
253
253
|
...document.adoptedStyleSheets,
|
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(
|
|
@@ -5,7 +5,7 @@ import { FooterItem } from './FooterItem.js';
|
|
|
5
5
|
import { FooterSeparator } from './FooterSeparator.js';
|
|
6
6
|
import { FooterList } from './FooterList.js';
|
|
7
7
|
import { Anchor } from '../Typography/Anchor.js';
|
|
8
|
-
let
|
|
8
|
+
let defaultTranslatedTitles = {
|
|
9
9
|
cookies: 'Cookies',
|
|
10
10
|
legalNotices: 'Legal notices',
|
|
11
11
|
privacy: 'Privacy',
|
|
@@ -19,27 +19,27 @@ export const defaultFooterElements = [
|
|
|
19
19
|
},
|
|
20
20
|
{
|
|
21
21
|
key: 'termsOfService',
|
|
22
|
-
title:
|
|
22
|
+
title: defaultTranslatedTitles.termsOfService,
|
|
23
23
|
url: 'https://connect-agreementportal.bentley.com/AgreementApp/Home/Eula/view/readonly/BentleyConnect',
|
|
24
24
|
},
|
|
25
25
|
{
|
|
26
26
|
key: 'privacy',
|
|
27
|
-
title:
|
|
27
|
+
title: defaultTranslatedTitles.privacy,
|
|
28
28
|
url: 'https://www.bentley.com/en/privacy-policy',
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
31
|
key: 'termsOfUse',
|
|
32
|
-
title:
|
|
32
|
+
title: defaultTranslatedTitles.termsOfUse,
|
|
33
33
|
url: 'https://www.bentley.com/en/terms-of-use-and-select-online-agreement',
|
|
34
34
|
},
|
|
35
35
|
{
|
|
36
36
|
key: 'cookies',
|
|
37
|
-
title:
|
|
37
|
+
title: defaultTranslatedTitles.cookies,
|
|
38
38
|
url: 'https://www.bentley.com/en/cookie-policy',
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
41
|
key: 'legalNotices',
|
|
42
|
-
title:
|
|
42
|
+
title: defaultTranslatedTitles.legalNotices,
|
|
43
43
|
url: 'https://connect.bentley.com/Legal',
|
|
44
44
|
},
|
|
45
45
|
];
|
|
@@ -48,7 +48,7 @@ export const Footer = Object.assign(
|
|
|
48
48
|
let { children, customElements, translatedTitles, className, ...rest } =
|
|
49
49
|
props;
|
|
50
50
|
let titles = {
|
|
51
|
-
...
|
|
51
|
+
...defaultTranslatedTitles,
|
|
52
52
|
...translatedTitles,
|
|
53
53
|
};
|
|
54
54
|
let translatedElements = defaultFooterElements.map((element) => {
|
|
@@ -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(
|
|
@@ -524,7 +524,7 @@ export const Table = (props) => {
|
|
|
524
524
|
return React.createElement(
|
|
525
525
|
TableColumnsContext.Provider,
|
|
526
526
|
{
|
|
527
|
-
value: columns,
|
|
527
|
+
value: instance.columns,
|
|
528
528
|
},
|
|
529
529
|
React.createElement(
|
|
530
530
|
Box,
|
|
@@ -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,
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
+
import { defaultColumn } from 'react-table';
|
|
2
3
|
import cx from 'classnames';
|
|
3
4
|
import { Box, LineClamp, ShadowRoot } from '../../../utils/index.js';
|
|
4
5
|
import { TableColumnsContext } from '../utils.js';
|
|
5
6
|
export const DefaultCell = (props) => {
|
|
6
|
-
let
|
|
7
|
+
let instanceColumns = React.useContext(TableColumnsContext);
|
|
7
8
|
let isCustomCell = React.useMemo(
|
|
8
9
|
() =>
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
[props.cellProps.column.id, columnsProp],
|
|
10
|
+
instanceColumns.find(({ id }) => props.cellProps.column.id === id)
|
|
11
|
+
?.Cell !== defaultColumn.Cell,
|
|
12
|
+
[instanceColumns, props.cellProps.column.id],
|
|
13
13
|
);
|
|
14
14
|
let {
|
|
15
15
|
cellElementProps: {
|
|
@@ -234,7 +234,7 @@ let FallbackStyles = ({ root }) => {
|
|
|
234
234
|
} catch (error) {
|
|
235
235
|
console.log('Error loading styles.css locally', error);
|
|
236
236
|
let css = await importCss(
|
|
237
|
-
|
|
237
|
+
`https://cdn.jsdelivr.net/npm/@itwin/itwinui-react@${meta.version}/styles.css`,
|
|
238
238
|
);
|
|
239
239
|
document.adoptedStyleSheets = [
|
|
240
240
|
...document.adoptedStyleSheets,
|