@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.
Files changed (61) hide show
  1. package/CHANGELOG.md +28 -12
  2. package/DEV-cjs/core/Breadcrumbs/Breadcrumbs.js +1 -1
  3. package/DEV-cjs/core/Buttons/IconButton.js +1 -1
  4. package/DEV-cjs/core/Footer/Footer.js +7 -7
  5. package/DEV-cjs/core/Menu/MenuItem.js +1 -1
  6. package/DEV-cjs/core/Popover/Popover.js +16 -26
  7. package/DEV-cjs/core/Table/Table.js +3 -3
  8. package/DEV-cjs/core/Table/cells/DefaultCell.js +5 -5
  9. package/DEV-cjs/core/ThemeProvider/ThemeProvider.js +1 -1
  10. package/DEV-cjs/styles.js +1 -1
  11. package/DEV-cjs/utils/functions/dev.js +3 -23
  12. package/DEV-cjs/utils/hooks/index.js +1 -0
  13. package/DEV-cjs/utils/hooks/useWarningLogger.js +43 -0
  14. package/DEV-esm/core/Breadcrumbs/Breadcrumbs.js +2 -2
  15. package/DEV-esm/core/Buttons/IconButton.js +2 -2
  16. package/DEV-esm/core/Footer/Footer.js +7 -7
  17. package/DEV-esm/core/Menu/MenuItem.js +2 -2
  18. package/DEV-esm/core/Popover/Popover.js +17 -30
  19. package/DEV-esm/core/Table/Table.js +4 -4
  20. package/DEV-esm/core/Table/cells/DefaultCell.js +5 -5
  21. package/DEV-esm/core/ThemeProvider/ThemeProvider.js +1 -1
  22. package/DEV-esm/styles.js +1 -1
  23. package/DEV-esm/utils/functions/dev.js +1 -12
  24. package/DEV-esm/utils/hooks/index.js +1 -0
  25. package/DEV-esm/utils/hooks/useWarningLogger.js +31 -0
  26. package/cjs/core/Breadcrumbs/Breadcrumbs.js +1 -1
  27. package/cjs/core/Buttons/IconButton.js +1 -1
  28. package/cjs/core/Footer/Footer.d.ts +5 -5
  29. package/cjs/core/Footer/Footer.js +7 -7
  30. package/cjs/core/Menu/MenuItem.js +1 -1
  31. package/cjs/core/Popover/Popover.js +16 -26
  32. package/cjs/core/Table/Table.js +3 -3
  33. package/cjs/core/Table/cells/DefaultCell.js +5 -5
  34. package/cjs/core/Table/utils.d.ts +2 -2
  35. package/cjs/core/ThemeProvider/ThemeProvider.js +1 -1
  36. package/cjs/styles.js +1 -1
  37. package/cjs/utils/functions/dev.d.ts +1 -16
  38. package/cjs/utils/functions/dev.js +3 -13
  39. package/cjs/utils/hooks/index.d.ts +1 -0
  40. package/cjs/utils/hooks/index.js +1 -0
  41. package/cjs/utils/hooks/useWarningLogger.d.ts +15 -0
  42. package/cjs/utils/hooks/useWarningLogger.js +17 -0
  43. package/esm/core/Breadcrumbs/Breadcrumbs.js +2 -2
  44. package/esm/core/Buttons/IconButton.js +2 -2
  45. package/esm/core/Footer/Footer.d.ts +5 -5
  46. package/esm/core/Footer/Footer.js +7 -7
  47. package/esm/core/Menu/MenuItem.js +2 -2
  48. package/esm/core/Popover/Popover.js +17 -30
  49. package/esm/core/Table/Table.js +4 -4
  50. package/esm/core/Table/cells/DefaultCell.js +5 -5
  51. package/esm/core/Table/utils.d.ts +2 -2
  52. package/esm/core/ThemeProvider/ThemeProvider.js +1 -1
  53. package/esm/styles.js +1 -1
  54. package/esm/utils/functions/dev.d.ts +1 -16
  55. package/esm/utils/functions/dev.js +1 -2
  56. package/esm/utils/hooks/index.d.ts +1 -0
  57. package/esm/utils/hooks/index.js +1 -0
  58. package/esm/utils/hooks/useWarningLogger.d.ts +15 -0
  59. package/esm/utils/hooks/useWarningLogger.js +5 -0
  60. package/package.json +1 -1
  61. 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
- ```diff
24
- <BaseFilter
25
- + onSubmit={() => setFilter(text)}
26
- >
27
-
28
- <FilterButtonBar
29
- - setFilter={() => setFilter(text)}
30
- />
31
- </BaseFilter>
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 footerTranslations = {
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: footerTranslations.termsOfService,
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: footerTranslations.privacy,
48
+ title: defaultTranslatedTitles.privacy,
49
49
  url: 'https://www.bentley.com/en/privacy-policy',
50
50
  },
51
51
  {
52
52
  key: 'termsOfUse',
53
- title: footerTranslations.termsOfUse,
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: footerTranslations.cookies,
58
+ title: defaultTranslatedTitles.cookies,
59
59
  url: 'https://www.bentley.com/en/cookie-policy',
60
60
  },
61
61
  {
62
62
  key: 'legalNotices',
63
- title: footerTranslations.legalNotices,
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
- ...footerTranslations,
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
- _ThemeProvider.ThemeProvider,
256
+ _react1.FloatingFocusManager,
260
257
  {
261
- portalContainer: popoverElement,
258
+ context: popover.context,
259
+ modal: false,
262
260
  },
263
- _react.createElement(DisplayContents, null),
264
261
  _react.createElement(
265
- _react1.FloatingFocusManager,
262
+ _index.Box,
266
263
  {
267
- context: popover.context,
268
- modal: false,
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
- _react.createElement(
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 columnsProp = _react.useContext(_utils.TableColumnsContext);
19
+ let instanceColumns = _react.useContext(_utils.TableColumnsContext);
19
20
  let isCustomCell = _react.useMemo(
20
21
  () =>
21
- columnsProp
22
- .find(({ id }) => props.cellProps.column.id === id)
23
- ?.hasOwnProperty('Cell'),
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
- 'https://cdn.jsdelivr.net/npm/@itwin/itwinui-react@3/styles.css',
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
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
3
- const e = '3.14.0';
3
+ const e = '3.14.2';
4
4
  const u = new Proxy(
5
5
  {},
6
6
  {
@@ -2,18 +2,9 @@
2
2
  Object.defineProperty(exports, '__esModule', {
3
3
  value: true,
4
4
  });
5
- function _export(target, all) {
6
- for (var name in all)
7
- Object.defineProperty(target, name, {
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
- createWarningLogger,
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, createWarningLogger } from '../../utils/index.js';
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 footerTranslations = {
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: footerTranslations.termsOfService,
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: footerTranslations.privacy,
27
+ title: defaultTranslatedTitles.privacy,
28
28
  url: 'https://www.bentley.com/en/privacy-policy',
29
29
  },
30
30
  {
31
31
  key: 'termsOfUse',
32
- title: footerTranslations.termsOfUse,
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: footerTranslations.cookies,
37
+ title: defaultTranslatedTitles.cookies,
38
38
  url: 'https://www.bentley.com/en/cookie-policy',
39
39
  },
40
40
  {
41
41
  key: 'legalNotices',
42
- title: footerTranslations.legalNotices,
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
- ...footerTranslations,
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
- createWarningLogger,
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 [popoverElement, setPopoverElement] = React.useState();
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
- ThemeProvider,
255
+ FloatingFocusManager,
262
256
  {
263
- portalContainer: popoverElement,
257
+ context: popover.context,
258
+ modal: false,
264
259
  },
265
- React.createElement(DisplayContents, null),
266
260
  React.createElement(
267
- FloatingFocusManager,
261
+ Box,
268
262
  {
269
- context: popover.context,
270
- modal: false,
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
- React.createElement(
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
- createWarningLogger,
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 columnsProp = React.useContext(TableColumnsContext);
7
+ let instanceColumns = React.useContext(TableColumnsContext);
7
8
  let isCustomCell = React.useMemo(
8
9
  () =>
9
- columnsProp
10
- .find(({ id }) => props.cellProps.column.id === id)
11
- ?.hasOwnProperty('Cell'),
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
- 'https://cdn.jsdelivr.net/npm/@itwin/itwinui-react@3/styles.css',
237
+ `https://cdn.jsdelivr.net/npm/@itwin/itwinui-react@${meta.version}/styles.css`,
238
238
  );
239
239
  document.adoptedStyleSheets = [
240
240
  ...document.adoptedStyleSheets,