@itwin/appui-react 5.8.0 → 5.9.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/CHANGELOG.md +14 -0
- package/lib/appui-react/hooks/useSafeContext.d.ts +7 -0
- package/lib/appui-react/hooks/useSafeContext.d.ts.map +1 -0
- package/lib/appui-react/hooks/useSafeContext.js +17 -0
- package/lib/appui-react/hooks/useSafeContext.js.map +1 -0
- package/lib/appui-react/toolbar/new-toolbars/ActionItem.d.ts +2 -2
- package/lib/appui-react/toolbar/new-toolbars/ActionItem.d.ts.map +1 -1
- package/lib/appui-react/toolbar/new-toolbars/ActionItem.js +2 -1
- package/lib/appui-react/toolbar/new-toolbars/ActionItem.js.map +1 -1
- package/lib/appui-react/toolbar/new-toolbars/CustomItem.d.ts +2 -2
- package/lib/appui-react/toolbar/new-toolbars/CustomItem.d.ts.map +1 -1
- package/lib/appui-react/toolbar/new-toolbars/CustomItem.js +3 -2
- package/lib/appui-react/toolbar/new-toolbars/CustomItem.js.map +1 -1
- package/lib/appui-react/toolbar/new-toolbars/GroupItem.d.ts +2 -3
- package/lib/appui-react/toolbar/new-toolbars/GroupItem.d.ts.map +1 -1
- package/lib/appui-react/toolbar/new-toolbars/GroupItem.js +6 -7
- package/lib/appui-react/toolbar/new-toolbars/GroupItem.js.map +1 -1
- package/lib/appui-react/toolbar/new-toolbars/Item.d.ts +3 -5
- package/lib/appui-react/toolbar/new-toolbars/Item.d.ts.map +1 -1
- package/lib/appui-react/toolbar/new-toolbars/Item.js +15 -19
- package/lib/appui-react/toolbar/new-toolbars/Item.js.map +1 -1
- package/lib/appui-react/toolbar/new-toolbars/OverflowButton.d.ts +0 -1
- package/lib/appui-react/toolbar/new-toolbars/OverflowButton.d.ts.map +1 -1
- package/lib/appui-react/toolbar/new-toolbars/OverflowButton.js +3 -2
- package/lib/appui-react/toolbar/new-toolbars/OverflowButton.js.map +1 -1
- package/lib/appui-react/toolbar/new-toolbars/Separator.d.ts +8 -0
- package/lib/appui-react/toolbar/new-toolbars/Separator.d.ts.map +1 -0
- package/lib/appui-react/toolbar/new-toolbars/Separator.js +19 -0
- package/lib/appui-react/toolbar/new-toolbars/Separator.js.map +1 -0
- package/lib/appui-react/toolbar/new-toolbars/Separator.scss +32 -0
- package/lib/appui-react/toolbar/new-toolbars/Surface.d.ts +5 -3
- package/lib/appui-react/toolbar/new-toolbars/Surface.d.ts.map +1 -1
- package/lib/appui-react/toolbar/new-toolbars/Surface.js.map +1 -1
- package/lib/appui-react/toolbar/new-toolbars/Surface.scss +4 -2
- package/lib/appui-react/toolbar/new-toolbars/ToolGroup.d.ts +0 -5
- package/lib/appui-react/toolbar/new-toolbars/ToolGroup.d.ts.map +1 -1
- package/lib/appui-react/toolbar/new-toolbars/ToolGroup.js +50 -19
- package/lib/appui-react/toolbar/new-toolbars/ToolGroup.js.map +1 -1
- package/lib/appui-react/toolbar/new-toolbars/Toolbar.d.ts +5 -0
- package/lib/appui-react/toolbar/new-toolbars/Toolbar.d.ts.map +1 -1
- package/lib/appui-react/toolbar/new-toolbars/Toolbar.js +45 -12
- package/lib/appui-react/toolbar/new-toolbars/Toolbar.js.map +1 -1
- package/lib/appui-react/toolbar/new-toolbars/useOverflow.js +2 -2
- package/lib/appui-react/toolbar/new-toolbars/useOverflow.js.map +1 -1
- package/lib/appui-react/widget-panels/useWidgetDirection.d.ts +1 -1
- package/lib/appui-react/widget-panels/useWidgetDirection.js +1 -1
- package/lib/appui-react/widget-panels/useWidgetDirection.js.map +1 -1
- package/lib/appui-react/widgets/useWidget.d.ts +5 -1
- package/lib/appui-react/widgets/useWidget.d.ts.map +1 -1
- package/lib/appui-react/widgets/useWidget.js +5 -1
- package/lib/appui-react/widgets/useWidget.js.map +1 -1
- package/lib/cjs/appui-react/toolbar/new-toolbars/Separator.scss +32 -0
- package/lib/cjs/appui-react/toolbar/new-toolbars/Surface.scss +4 -2
- package/lib/esm/appui-react/toolbar/new-toolbars/Separator.scss +32 -0
- package/lib/esm/appui-react/toolbar/new-toolbars/Surface.scss +4 -2
- package/package.json +8 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Change Log - @itwin/appui-react
|
|
2
2
|
|
|
3
|
+
## 5.9.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 1be3f19: Bump the release tag of `useWidget` and `useWidgetDirection` hooks from `@alpha` to `@public`.
|
|
8
|
+
- 6e9d137: Update `Toolbar` component to render a separator between items of different groups. This is a visual change based on the previous toolbar implementation.
|
|
9
|
+
|
|
10
|
+
### Patch Changes
|
|
11
|
+
|
|
12
|
+
- Updated dependencies [1be3f19]
|
|
13
|
+
- @itwin/imodel-components-react@5.9.0
|
|
14
|
+
- @itwin/components-react@5.9.0
|
|
15
|
+
- @itwin/core-react@5.9.0
|
|
16
|
+
|
|
3
17
|
## 5.8.0
|
|
4
18
|
|
|
5
19
|
### Minor Changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSafeContext.d.ts","sourceRoot":"","sources":["../../../src/appui-react/hooks/useSafeContext.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,gBAAgB;AAChB,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,mBAQ1D"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
/** @packageDocumentation
|
|
6
|
+
* @module Hooks
|
|
7
|
+
*/
|
|
8
|
+
import * as React from "react";
|
|
9
|
+
/** @internal */
|
|
10
|
+
export function useSafeContext(context) {
|
|
11
|
+
const value = React.useContext(context);
|
|
12
|
+
if (value === undefined) {
|
|
13
|
+
throw new Error(`${context.displayName || "Context"} is undefined`);
|
|
14
|
+
}
|
|
15
|
+
return value;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=useSafeContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSafeContext.js","sourceRoot":"","sources":["../../../src/appui-react/hooks/useSafeContext.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,gBAAgB;AAChB,MAAM,UAAU,cAAc,CAAI,OAAyB;IACzD,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAExC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,CAAC,WAAW,IAAI,SAAS,eAAe,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Hooks\n */\n\nimport * as React from \"react\";\n\n/** @internal */\nexport function useSafeContext<C>(context: React.Context<C>) {\n const value = React.useContext(context);\n\n if (value === undefined) {\n throw new Error(`${context.displayName || \"Context\"} is undefined`);\n }\n\n return value;\n}\n"]}
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import * as React from "react";
|
|
5
5
|
import type { ToolbarActionItem } from "../../toolbar/ToolbarItem.js";
|
|
6
|
-
|
|
7
|
-
export interface ActionItemProps {
|
|
6
|
+
interface ActionItemProps {
|
|
8
7
|
item: ToolbarActionItem;
|
|
9
8
|
}
|
|
10
9
|
/** @internal */
|
|
11
10
|
export declare const ActionItem: React.ForwardRefExoticComponent<ActionItemProps & React.RefAttributes<HTMLButtonElement>>;
|
|
11
|
+
export {};
|
|
12
12
|
//# sourceMappingURL=ActionItem.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionItem.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/new-toolbars/ActionItem.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"ActionItem.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/new-toolbars/ActionItem.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAOtE,UAAU,eAAe;IACvB,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAED,gBAAgB;AAChB,eAAO,MAAM,UAAU,2FAkBtB,CAAC"}
|
|
@@ -10,9 +10,10 @@ import { ToolGroupOverflowContext } from "./OverflowButton.js";
|
|
|
10
10
|
import { Item } from "./Item.js";
|
|
11
11
|
import { GroupMenuItem } from "./GroupItem.js";
|
|
12
12
|
import { ToolbarContext } from "./Toolbar.js";
|
|
13
|
+
import { useSafeContext } from "../../hooks/useSafeContext.js";
|
|
13
14
|
/** @internal */
|
|
14
15
|
export const ActionItem = React.forwardRef(function ActionItem({ item }, ref) {
|
|
15
|
-
const { onItemExecuted } =
|
|
16
|
+
const { onItemExecuted } = useSafeContext(ToolbarContext);
|
|
16
17
|
const overflowContext = React.useContext(ToolGroupOverflowContext);
|
|
17
18
|
if (overflowContext) {
|
|
18
19
|
return React.createElement(GroupMenuItem, { item: item, onClose: overflowContext.onClose });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionItem.js","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/new-toolbars/ActionItem.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"ActionItem.js","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/new-toolbars/ActionItem.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAM/D,gBAAgB;AAChB,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CACxC,SAAS,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG;IAC/B,MAAM,EAAE,cAAc,EAAE,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAC1D,MAAM,eAAe,GAAG,KAAK,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC;IACnE,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,oBAAC,aAAa,IAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,GAAI,CAAC;IACzE,CAAC;IACD,OAAO,CACL,oBAAC,IAAI,IACH,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,GAAG,EAAE;YACZ,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC,GACD,CACH,CAAC;AACJ,CAAC,CACF,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Toolbar\n */\n\nimport * as React from \"react\";\nimport type { ToolbarActionItem } from \"../../toolbar/ToolbarItem.js\";\nimport { ToolGroupOverflowContext } from \"./OverflowButton.js\";\nimport { Item } from \"./Item.js\";\nimport { GroupMenuItem } from \"./GroupItem.js\";\nimport { ToolbarContext } from \"./Toolbar.js\";\nimport { useSafeContext } from \"../../hooks/useSafeContext.js\";\n\ninterface ActionItemProps {\n item: ToolbarActionItem;\n}\n\n/** @internal */\nexport const ActionItem = React.forwardRef<HTMLButtonElement, ActionItemProps>(\n function ActionItem({ item }, ref) {\n const { onItemExecuted } = useSafeContext(ToolbarContext);\n const overflowContext = React.useContext(ToolGroupOverflowContext);\n if (overflowContext) {\n return <GroupMenuItem item={item} onClose={overflowContext.onClose} />;\n }\n return (\n <Item\n ref={ref}\n item={item}\n onClick={() => {\n item.execute();\n onItemExecuted?.(item);\n }}\n />\n );\n }\n);\n"]}
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import * as React from "react";
|
|
5
5
|
import type { ToolbarCustomItem } from "../../toolbar/ToolbarItem.js";
|
|
6
|
-
|
|
7
|
-
export interface CustomItemProps {
|
|
6
|
+
interface CustomItemProps {
|
|
8
7
|
item: ToolbarCustomItem;
|
|
9
8
|
}
|
|
10
9
|
/** @internal */
|
|
11
10
|
export declare const CustomItem: React.ForwardRefExoticComponent<CustomItemProps & React.RefAttributes<HTMLButtonElement>>;
|
|
11
|
+
export {};
|
|
12
12
|
//# sourceMappingURL=CustomItem.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomItem.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/new-toolbars/CustomItem.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"CustomItem.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/new-toolbars/CustomItem.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAQtE,UAAU,eAAe;IACvB,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAED,gBAAgB;AAChB,eAAO,MAAM,UAAU,2FA2BtB,CAAC"}
|
|
@@ -12,10 +12,11 @@ import { Item } from "./Item.js";
|
|
|
12
12
|
import { GroupMenuItem, usePopoverPlacement } from "./GroupItem.js";
|
|
13
13
|
import { ToolGroupOverflowContext } from "./OverflowButton.js";
|
|
14
14
|
import { ToolbarContext } from "./Toolbar.js";
|
|
15
|
+
import { useSafeContext } from "../../hooks/useSafeContext.js";
|
|
15
16
|
/** @internal */
|
|
16
17
|
export const CustomItem = React.forwardRef(function CustomItem({ item }, ref) {
|
|
17
18
|
const placement = usePopoverPlacement();
|
|
18
|
-
const
|
|
19
|
+
const { setPopoverOpen } = useSafeContext(ToolbarContext);
|
|
19
20
|
const overflowContext = React.useContext(ToolGroupOverflowContext);
|
|
20
21
|
if (overflowContext) {
|
|
21
22
|
return React.createElement(GroupMenuItem, { item: item, onClose: overflowContext.onClose });
|
|
@@ -25,7 +26,7 @@ export const CustomItem = React.forwardRef(function CustomItem({ item }, ref) {
|
|
|
25
26
|
React.createElement(MenuExtraContent, { key: 0 }, item.panelContent),
|
|
26
27
|
];
|
|
27
28
|
}, placement: placement, onVisibleChange: (newVisible) => {
|
|
28
|
-
|
|
29
|
+
setPopoverOpen(newVisible);
|
|
29
30
|
} },
|
|
30
31
|
React.createElement(Item, { ref: ref, item: item },
|
|
31
32
|
React.createElement(ExpandIndicator, null))));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomItem.js","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/new-toolbars/CustomItem.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"CustomItem.js","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/new-toolbars/CustomItem.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAM/D,gBAAgB;AAChB,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CACxC,SAAS,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG;IAC/B,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;IACxC,MAAM,EAAE,cAAc,EAAE,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAC1D,MAAM,eAAe,GAAG,KAAK,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC;IAEnE,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,oBAAC,aAAa,IAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,GAAI,CAAC;IACzE,CAAC;IACD,OAAO,CACL,oBAAC,YAAY,IACX,SAAS,EAAE,GAAG,EAAE;YACd,OAAO;gBACL,oBAAC,gBAAgB,IAAC,GAAG,EAAE,CAAC,IAAG,IAAI,CAAC,YAAY,CAAoB;aACjE,CAAC;QACJ,CAAC,EACD,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,CAAC,UAAU,EAAE,EAAE;YAC9B,cAAc,CAAC,UAAU,CAAC,CAAC;QAC7B,CAAC;QAED,oBAAC,IAAI,IAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI;YACxB,oBAAC,eAAe,OAAG,CACd,CACM,CAChB,CAAC;AACJ,CAAC,CACF,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Toolbar\n */\n\nimport * as React from \"react\";\nimport { DropdownMenu, MenuExtraContent } from \"@itwin/itwinui-react\";\nimport type { ToolbarCustomItem } from \"../../toolbar/ToolbarItem.js\";\nimport { ExpandIndicator } from \"./ExpandIndicator.js\";\nimport { Item } from \"./Item.js\";\nimport { GroupMenuItem, usePopoverPlacement } from \"./GroupItem.js\";\nimport { ToolGroupOverflowContext } from \"./OverflowButton.js\";\nimport { ToolbarContext } from \"./Toolbar.js\";\nimport { useSafeContext } from \"../../hooks/useSafeContext.js\";\n\ninterface CustomItemProps {\n item: ToolbarCustomItem;\n}\n\n/** @internal */\nexport const CustomItem = React.forwardRef<HTMLButtonElement, CustomItemProps>(\n function CustomItem({ item }, ref) {\n const placement = usePopoverPlacement();\n const { setPopoverOpen } = useSafeContext(ToolbarContext);\n const overflowContext = React.useContext(ToolGroupOverflowContext);\n\n if (overflowContext) {\n return <GroupMenuItem item={item} onClose={overflowContext.onClose} />;\n }\n return (\n <DropdownMenu\n menuItems={() => {\n return [\n <MenuExtraContent key={0}>{item.panelContent}</MenuExtraContent>,\n ];\n }}\n placement={placement}\n onVisibleChange={(newVisible) => {\n setPopoverOpen(newVisible);\n }}\n >\n <Item ref={ref} item={item}>\n <ExpandIndicator />\n </Item>\n </DropdownMenu>\n );\n }\n);\n"]}
|
|
@@ -4,14 +4,13 @@
|
|
|
4
4
|
import * as React from "react";
|
|
5
5
|
import type { ToolbarItem } from "../../toolbar/ToolbarItem.js";
|
|
6
6
|
import { type ToolbarGroupItem } from "../../toolbar/ToolbarItem.js";
|
|
7
|
-
|
|
8
|
-
export interface GroupItemProps {
|
|
7
|
+
interface GroupItemProps {
|
|
9
8
|
item: ToolbarGroupItem;
|
|
10
9
|
}
|
|
11
10
|
/** @internal */
|
|
12
11
|
export declare const GroupItem: React.ForwardRefExoticComponent<GroupItemProps & React.RefAttributes<HTMLButtonElement>>;
|
|
13
12
|
/** @internal */
|
|
14
|
-
export declare function usePopoverPlacement(): "top-end" | "top-start" | "
|
|
13
|
+
export declare function usePopoverPlacement(): "top-end" | "top-start" | "bottom-end" | "bottom-start" | "left-end" | "left-start" | "right-end" | "right-start";
|
|
15
14
|
interface GroupMenuItemProps {
|
|
16
15
|
item: ToolbarItem;
|
|
17
16
|
onClose?: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupItem.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/new-toolbars/GroupItem.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"GroupItem.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/new-toolbars/GroupItem.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,8BAA8B,CAAC;AAStC,UAAU,cAAc;IACtB,IAAI,EAAE,gBAAgB,CAAC;CACxB;AAED,gBAAgB;AAChB,eAAO,MAAM,SAAS,0FAyBrB,CAAC;AAEF,gBAAgB;AAChB,wBAAgB,mBAAmB,sHAGlC;AAED,UAAU,kBAAkB;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,gBAAgB;AAChB,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,kBAAkB,4BAwClE"}
|
|
@@ -15,10 +15,11 @@ import { Item } from "./Item.js";
|
|
|
15
15
|
import { Badge } from "./Badge.js";
|
|
16
16
|
import { ToolGroupOverflowContext } from "./OverflowButton.js";
|
|
17
17
|
import { ToolbarContext } from "./Toolbar.js";
|
|
18
|
+
import { useSafeContext } from "../../hooks/useSafeContext.js";
|
|
18
19
|
/** @internal */
|
|
19
20
|
export const GroupItem = React.forwardRef(function GroupItem({ item }, ref) {
|
|
20
21
|
const placement = usePopoverPlacement();
|
|
21
|
-
const
|
|
22
|
+
const { setPopoverOpen } = useSafeContext(ToolbarContext);
|
|
22
23
|
const overflowContext = React.useContext(ToolGroupOverflowContext);
|
|
23
24
|
if (overflowContext) {
|
|
24
25
|
return React.createElement(GroupMenuItem, { item: item, onClose: overflowContext.onClose });
|
|
@@ -26,21 +27,19 @@ export const GroupItem = React.forwardRef(function GroupItem({ item }, ref) {
|
|
|
26
27
|
return (React.createElement(DropdownMenu, { menuItems: (close) => {
|
|
27
28
|
return toMenuItems(item, close);
|
|
28
29
|
}, placement: placement, onVisibleChange: (newVisible) => {
|
|
29
|
-
|
|
30
|
+
setPopoverOpen(newVisible);
|
|
30
31
|
} },
|
|
31
32
|
React.createElement(Item, { item: item, ref: ref },
|
|
32
33
|
React.createElement(ExpandIndicator, null))));
|
|
33
34
|
});
|
|
34
35
|
/** @internal */
|
|
35
36
|
export function usePopoverPlacement() {
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
return undefined;
|
|
39
|
-
return `${context.expandsTo}-${context.panelAlignment}`;
|
|
37
|
+
const { expandsTo, panelAlignment } = useSafeContext(ToolbarContext);
|
|
38
|
+
return `${expandsTo}-${panelAlignment}`;
|
|
40
39
|
}
|
|
41
40
|
/** @internal */
|
|
42
41
|
export function GroupMenuItem({ item, onClose }) {
|
|
43
|
-
const { onItemExecuted } =
|
|
42
|
+
const { onItemExecuted } = useSafeContext(ToolbarContext);
|
|
44
43
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
45
44
|
const iconSpec = useConditionalProp(item.icon);
|
|
46
45
|
const label = useConditionalProp(item.label);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupItem.js","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/new-toolbars/GroupItem.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhF,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,GAEnB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"GroupItem.js","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/new-toolbars/GroupItem.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Toolbar\n */\n\nimport * as React from \"react\";\nimport { Icon } from \"@itwin/core-react\";\nimport { DropdownMenu, MenuExtraContent, MenuItem } from \"@itwin/itwinui-react\";\nimport type { ToolbarItem } from \"../../toolbar/ToolbarItem.js\";\nimport {\n isToolbarActionItem,\n isToolbarCustomItem,\n isToolbarGroupItem,\n type ToolbarGroupItem,\n} from \"../../toolbar/ToolbarItem.js\";\nimport { useConditionalProp } from \"../../hooks/useConditionalProp.js\";\nimport { ExpandIndicator } from \"./ExpandIndicator.js\";\nimport { Item } from \"./Item.js\";\nimport { Badge } from \"./Badge.js\";\nimport { ToolGroupOverflowContext } from \"./OverflowButton.js\";\nimport { ToolbarContext } from \"./Toolbar.js\";\nimport { useSafeContext } from \"../../hooks/useSafeContext.js\";\n\ninterface GroupItemProps {\n item: ToolbarGroupItem;\n}\n\n/** @internal */\nexport const GroupItem = React.forwardRef<HTMLButtonElement, GroupItemProps>(\n function GroupItem({ item }, ref) {\n const placement = usePopoverPlacement();\n const { setPopoverOpen } = useSafeContext(ToolbarContext);\n const overflowContext = React.useContext(ToolGroupOverflowContext);\n\n if (overflowContext) {\n return <GroupMenuItem item={item} onClose={overflowContext.onClose} />;\n }\n return (\n <DropdownMenu\n menuItems={(close) => {\n return toMenuItems(item, close);\n }}\n placement={placement}\n onVisibleChange={(newVisible) => {\n setPopoverOpen(newVisible);\n }}\n >\n <Item item={item} ref={ref}>\n <ExpandIndicator />\n </Item>\n </DropdownMenu>\n );\n }\n);\n\n/** @internal */\nexport function usePopoverPlacement() {\n const { expandsTo, panelAlignment } = useSafeContext(ToolbarContext);\n return `${expandsTo}-${panelAlignment}` as const;\n}\n\ninterface GroupMenuItemProps {\n item: ToolbarItem;\n onClose?: () => void;\n}\n\n/** @internal */\nexport function GroupMenuItem({ item, onClose }: GroupMenuItemProps) {\n const { onItemExecuted } = useSafeContext(ToolbarContext);\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const iconSpec = useConditionalProp(item.icon);\n const label = useConditionalProp(item.label);\n const isDisabled = useConditionalProp(item.isDisabled);\n const isHidden = useConditionalProp(item.isHidden);\n const isActive = useConditionalProp(item.isActive);\n\n if (isHidden) {\n return null;\n }\n\n const subMenuItems = isDisabled ? undefined : toMenuItems(item, onClose);\n const startIcon = item.iconNode ? (\n <>{item.iconNode}</>\n ) : (\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n <Icon iconSpec={iconSpec} />\n );\n return (\n <MenuItem\n startIcon={startIcon}\n disabled={isDisabled}\n subMenuItems={subMenuItems}\n onClick={() => {\n if (isToolbarActionItem(item)) {\n item.execute();\n onItemExecuted?.(item);\n onClose?.();\n }\n }}\n isSelected={isActive}\n data-item-id={item.id}\n >\n {/* eslint-disable-next-line @typescript-eslint/no-deprecated */}\n <Badge badge={item.badge} badgeKind={item.badgeKind} />\n {label}\n </MenuItem>\n );\n}\n\nfunction toMenuItems(item: ToolbarItem, onClose?: () => void) {\n if (isToolbarGroupItem(item)) {\n return item.items.map((groupItem) => {\n return (\n <GroupMenuItem key={groupItem.id} item={groupItem} onClose={onClose} />\n );\n });\n }\n if (isToolbarCustomItem(item)) {\n return [\n <MenuExtraContent key={item.id}>{item.panelContent}</MenuExtraContent>,\n ];\n }\n return [];\n}\n"]}
|
|
@@ -4,18 +4,16 @@
|
|
|
4
4
|
import * as React from "react";
|
|
5
5
|
import { IconButton } from "@itwin/itwinui-react";
|
|
6
6
|
import type { ToolbarItem } from "../../toolbar/ToolbarItem.js";
|
|
7
|
-
|
|
8
|
-
export interface ItemProps extends Partial<React.ComponentProps<typeof IconButton>> {
|
|
7
|
+
interface ItemProps extends Partial<React.ComponentProps<typeof IconButton>> {
|
|
9
8
|
item: ToolbarItem;
|
|
10
9
|
}
|
|
11
10
|
/** @internal */
|
|
12
11
|
export declare const Item: React.ForwardRefExoticComponent<Omit<ItemProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
13
12
|
/** @internal */
|
|
14
|
-
export declare function useExpandsTo(): "top" | "left" | "right" | "bottom";
|
|
15
|
-
/** @internal */
|
|
16
13
|
export declare function useLabelProps(): {
|
|
17
|
-
readonly placement: "top" | "
|
|
14
|
+
readonly placement: "top" | "bottom" | "left" | "right";
|
|
18
15
|
readonly visible: boolean;
|
|
19
16
|
readonly onVisibleChange: React.Dispatch<React.SetStateAction<boolean>>;
|
|
20
17
|
};
|
|
18
|
+
export {};
|
|
21
19
|
//# sourceMappingURL=Item.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Item.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/new-toolbars/Item.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Item.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/new-toolbars/Item.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAOhE,UAAU,SAAU,SAAQ,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,UAAU,CAAC,CAAC;IAC1E,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,gBAAgB;AAChB,eAAO,MAAM,IAAI,kGAsChB,CAAC;AAEF,gBAAgB;AAChB,wBAAgB,aAAa;;;;EAS5B"}
|
|
@@ -6,43 +6,39 @@
|
|
|
6
6
|
* @module Toolbar
|
|
7
7
|
*/
|
|
8
8
|
import * as React from "react";
|
|
9
|
-
import { assert } from "@itwin/core-bentley";
|
|
10
9
|
import { Icon } from "@itwin/core-react";
|
|
11
10
|
import { IconButton } from "@itwin/itwinui-react";
|
|
12
11
|
import { useConditionalProp } from "../../hooks/useConditionalProp.js";
|
|
13
12
|
import { Badge } from "./Badge.js";
|
|
14
|
-
import { ToolbarContext } from "./Toolbar.js";
|
|
13
|
+
import { ToolbarContext, ToolbarItemContext } from "./Toolbar.js";
|
|
14
|
+
import { useSafeContext } from "../../hooks/useSafeContext.js";
|
|
15
|
+
import { Separator } from "./Separator.js";
|
|
15
16
|
/** @internal */
|
|
16
17
|
export const Item = React.forwardRef(function Item(props, ref) {
|
|
17
18
|
const { item, ...other } = props;
|
|
19
|
+
const { renderSeparator } = useSafeContext(ToolbarItemContext);
|
|
18
20
|
const label = useConditionalProp(item.label);
|
|
19
21
|
const isDisabled = useConditionalProp(item.isDisabled);
|
|
20
22
|
const isHidden = useConditionalProp(item.isHidden);
|
|
21
23
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
22
24
|
const iconSpec = useConditionalProp(item.icon);
|
|
23
25
|
const labelProps = useLabelProps();
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
return (React.createElement(React.Fragment, null,
|
|
27
|
+
isHidden ? undefined : (React.createElement(IconButton, { styleType: "borderless", disabled: isDisabled, isActive: item.isActive, label: label, labelProps: labelProps, style: props.style, ref: ref, "data-item-id": item.id, ...other },
|
|
28
|
+
item.iconNode ?? (
|
|
29
|
+
/* eslint-disable-next-line @typescript-eslint/no-deprecated */
|
|
30
|
+
React.createElement(Icon, { iconSpec: iconSpec })),
|
|
31
|
+
React.createElement(Badge, { badge: item.badge, badgeKind: item.badgeKind }),
|
|
32
|
+
props.children)),
|
|
33
|
+
renderSeparator && React.createElement(Separator, null)));
|
|
30
34
|
});
|
|
31
35
|
/** @internal */
|
|
32
|
-
export function useExpandsTo() {
|
|
33
|
-
const context = React.useContext(ToolbarContext);
|
|
34
|
-
assert(!!context);
|
|
35
|
-
const { expandsTo } = context;
|
|
36
|
-
return expandsTo;
|
|
37
|
-
}
|
|
38
|
-
/** @internal */
|
|
39
36
|
export function useLabelProps() {
|
|
40
|
-
const
|
|
37
|
+
const { popoverOpen, expandsTo } = useSafeContext(ToolbarContext);
|
|
41
38
|
const [internalVisible, setInternalVisible] = React.useState(false);
|
|
42
|
-
const visible =
|
|
43
|
-
const placement = useExpandsTo();
|
|
39
|
+
const visible = popoverOpen ? false : internalVisible;
|
|
44
40
|
return {
|
|
45
|
-
placement,
|
|
41
|
+
placement: expandsTo,
|
|
46
42
|
visible,
|
|
47
43
|
onVisibleChange: setInternalVisible,
|
|
48
44
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Item.js","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/new-toolbars/Item.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Item.js","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/new-toolbars/Item.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAM3C,gBAAgB;AAChB,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAClC,SAAS,IAAI,CAAC,KAAK,EAAE,GAAG;IACtB,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC;IACjC,MAAM,EAAE,eAAe,EAAE,GAAG,cAAc,CAAC,kBAAkB,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnD,4DAA4D;IAC5D,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IAEnC,OAAO,CACL;QACG,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CACtB,oBAAC,UAAU,IACT,SAAS,EAAC,YAAY,EACtB,QAAQ,EAAE,UAAU,EACpB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,GAAG,EAAE,GAAG,kBACM,IAAI,CAAC,EAAE,KACjB,KAAK;YAER,IAAI,CAAC,QAAQ,IAAI;YAChB,+DAA+D;YAC/D,oBAAC,IAAI,IAAC,QAAQ,EAAE,QAAQ,GAAI,CAC7B;YAED,oBAAC,KAAK,IAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,GAAI;YACtD,KAAK,CAAC,QAAQ,CACJ,CACd;QACA,eAAe,IAAI,oBAAC,SAAS,OAAG,CAChC,CACJ,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,gBAAgB;AAChB,MAAM,UAAU,aAAa;IAC3B,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAClE,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC;IACtD,OAAO;QACL,SAAS,EAAE,SAAS;QACpB,OAAO;QACP,eAAe,EAAE,kBAAkB;KAC3B,CAAC;AACb,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Toolbar\n */\n\nimport * as React from \"react\";\nimport { Icon } from \"@itwin/core-react\";\nimport { IconButton } from \"@itwin/itwinui-react\";\nimport type { ToolbarItem } from \"../../toolbar/ToolbarItem.js\";\nimport { useConditionalProp } from \"../../hooks/useConditionalProp.js\";\nimport { Badge } from \"./Badge.js\";\nimport { ToolbarContext, ToolbarItemContext } from \"./Toolbar.js\";\nimport { useSafeContext } from \"../../hooks/useSafeContext.js\";\nimport { Separator } from \"./Separator.js\";\n\ninterface ItemProps extends Partial<React.ComponentProps<typeof IconButton>> {\n item: ToolbarItem;\n}\n\n/** @internal */\nexport const Item = React.forwardRef<HTMLButtonElement, ItemProps>(\n function Item(props, ref) {\n const { item, ...other } = props;\n const { renderSeparator } = useSafeContext(ToolbarItemContext);\n const label = useConditionalProp(item.label);\n const isDisabled = useConditionalProp(item.isDisabled);\n const isHidden = useConditionalProp(item.isHidden);\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const iconSpec = useConditionalProp(item.icon);\n const labelProps = useLabelProps();\n\n return (\n <>\n {isHidden ? undefined : (\n <IconButton\n styleType=\"borderless\"\n disabled={isDisabled}\n isActive={item.isActive}\n label={label}\n labelProps={labelProps}\n style={props.style}\n ref={ref}\n data-item-id={item.id}\n {...other}\n >\n {item.iconNode ?? (\n /* eslint-disable-next-line @typescript-eslint/no-deprecated */\n <Icon iconSpec={iconSpec} />\n )}\n {/* eslint-disable-next-line @typescript-eslint/no-deprecated */}\n <Badge badge={item.badge} badgeKind={item.badgeKind} />\n {props.children}\n </IconButton>\n )}\n {renderSeparator && <Separator />}\n </>\n );\n }\n);\n\n/** @internal */\nexport function useLabelProps() {\n const { popoverOpen, expandsTo } = useSafeContext(ToolbarContext);\n const [internalVisible, setInternalVisible] = React.useState(false);\n const visible = popoverOpen ? false : internalVisible;\n return {\n placement: expandsTo,\n visible,\n onVisibleChange: setInternalVisible,\n } as const;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverflowButton.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/new-toolbars/OverflowButton.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"OverflowButton.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/new-toolbars/OverflowButton.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,UAAU,iBAAiB;IACzB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,gBAAgB;AAChB,eAAO,MAAM,wBAAwB,8CAEzB,CAAC;AAEb,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,gBAAgB;AAChB,eAAO,MAAM,cAAc,+FAgCzB,CAAC"}
|
|
@@ -11,19 +11,20 @@ import { SvgMore } from "@itwin/itwinui-icons-react";
|
|
|
11
11
|
import { useLabelProps } from "./Item.js";
|
|
12
12
|
import { usePopoverPlacement } from "./GroupItem.js";
|
|
13
13
|
import { ToolbarContext } from "./Toolbar.js";
|
|
14
|
+
import { useSafeContext } from "../../hooks/useSafeContext.js";
|
|
14
15
|
/** @internal */
|
|
15
16
|
export const ToolGroupOverflowContext = React.createContext(undefined);
|
|
16
17
|
/** @internal */
|
|
17
18
|
export const OverflowButton = React.forwardRef(function OverflowButton(props, ref) {
|
|
18
19
|
const placement = usePopoverPlacement();
|
|
19
20
|
const labelProps = useLabelProps();
|
|
20
|
-
const
|
|
21
|
+
const { setPopoverOpen } = useSafeContext(ToolbarContext);
|
|
21
22
|
return (React.createElement(DropdownMenu, { menuItems: (close) => {
|
|
22
23
|
return [
|
|
23
24
|
React.createElement(OverflowMenu, { key: 0, onClose: close }, props.children),
|
|
24
25
|
];
|
|
25
26
|
}, placement: placement, onVisibleChange: (newVisible) => {
|
|
26
|
-
|
|
27
|
+
setPopoverOpen(newVisible);
|
|
27
28
|
} },
|
|
28
29
|
React.createElement(IconButton, { ref: ref, label: "More", labelProps: labelProps, styleType: "borderless" },
|
|
29
30
|
React.createElement(SvgMore, null))));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverflowButton.js","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/new-toolbars/OverflowButton.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"OverflowButton.js","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/new-toolbars/OverflowButton.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAM/D,gBAAgB;AAChB,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC,aAAa,CAEzD,SAAS,CAAC,CAAC;AAMb,gBAAgB;AAChB,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CAG5C,SAAS,cAAc,CAAC,KAAK,EAAE,GAAG;IAClC,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;IACxC,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,MAAM,EAAE,cAAc,EAAE,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAE1D,OAAO,CACL,oBAAC,YAAY,IACX,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;YACnB,OAAO;gBACL,oBAAC,YAAY,IAAC,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,IACjC,KAAK,CAAC,QAAQ,CACF;aAChB,CAAC;QACJ,CAAC,EACD,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,CAAC,UAAU,EAAE,EAAE;YAC9B,cAAc,CAAC,UAAU,CAAC,CAAC;QAC7B,CAAC;QAED,oBAAC,UAAU,IACT,GAAG,EAAE,GAAG,EACR,KAAK,EAAC,MAAM,EACZ,UAAU,EAAE,UAAU,EACtB,SAAS,EAAC,YAAY;YAEtB,oBAAC,OAAO,OAAG,CACA,CACA,CAChB,CAAC;AACJ,CAAC,CAAC,CAAC;AAOH,SAAS,YAAY,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAqB;IAC5D,OAAO,CACL,oBAAC,wBAAwB,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAClD,QAAQ,CACyB,CACrC,CAAC;AACJ,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Toolbar\n */\n\nimport * as React from \"react\";\nimport { DropdownMenu, IconButton } from \"@itwin/itwinui-react\";\nimport { SvgMore } from \"@itwin/itwinui-icons-react\";\nimport { useLabelProps } from \"./Item.js\";\nimport { usePopoverPlacement } from \"./GroupItem.js\";\nimport { ToolbarContext } from \"./Toolbar.js\";\nimport { useSafeContext } from \"../../hooks/useSafeContext.js\";\n\ninterface ToolGroupOverflow {\n onClose?: () => void;\n}\n\n/** @internal */\nexport const ToolGroupOverflowContext = React.createContext<\n ToolGroupOverflow | undefined\n>(undefined);\n\ninterface OverflowButtonProps {\n children?: React.ReactNode;\n}\n\n/** @internal */\nexport const OverflowButton = React.forwardRef<\n HTMLButtonElement,\n OverflowButtonProps\n>(function OverflowButton(props, ref) {\n const placement = usePopoverPlacement();\n const labelProps = useLabelProps();\n const { setPopoverOpen } = useSafeContext(ToolbarContext);\n\n return (\n <DropdownMenu\n menuItems={(close) => {\n return [\n <OverflowMenu key={0} onClose={close}>\n {props.children}\n </OverflowMenu>,\n ];\n }}\n placement={placement}\n onVisibleChange={(newVisible) => {\n setPopoverOpen(newVisible);\n }}\n >\n <IconButton\n ref={ref}\n label=\"More\"\n labelProps={labelProps}\n styleType=\"borderless\"\n >\n <SvgMore />\n </IconButton>\n </DropdownMenu>\n );\n});\n\ninterface OverflowMenuProps {\n children?: React.ReactNode;\n onClose?: () => void;\n}\n\nfunction OverflowMenu({ children, onClose }: OverflowMenuProps) {\n return (\n <ToolGroupOverflowContext.Provider value={{ onClose }}>\n {children}\n </ToolGroupOverflowContext.Provider>\n );\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Separator.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/new-toolbars/Separator.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,kBAAkB,CAAC;AAE1B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,gBAAgB;AAChB,wBAAgB,SAAS,sBAWxB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
/** @packageDocumentation
|
|
6
|
+
* @module Toolbar
|
|
7
|
+
*/
|
|
8
|
+
import "./Separator.scss";
|
|
9
|
+
import classnames from "classnames";
|
|
10
|
+
import * as React from "react";
|
|
11
|
+
import { ToolbarContext } from "./Toolbar.js";
|
|
12
|
+
import { useSafeContext } from "../../hooks/useSafeContext.js";
|
|
13
|
+
/** @internal */
|
|
14
|
+
export function Separator() {
|
|
15
|
+
const context = useSafeContext(ToolbarContext);
|
|
16
|
+
const { orientation } = context;
|
|
17
|
+
return (React.createElement("div", { className: classnames("uifw-toolbar-newToolbars-separator", `uifw-${orientation}`) }));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=Separator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Separator.js","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/new-toolbars/Separator.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,kBAAkB,CAAC;AAC1B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,gBAAgB;AAChB,MAAM,UAAU,SAAS;IACvB,MAAM,OAAO,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAC/C,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAChC,OAAO,CACL,6BACE,SAAS,EAAE,UAAU,CACnB,oCAAoC,EACpC,QAAQ,WAAW,EAAE,CACtB,GACD,CACH,CAAC;AACJ,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Toolbar\n */\n\nimport \"./Separator.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { ToolbarContext } from \"./Toolbar.js\";\nimport { useSafeContext } from \"../../hooks/useSafeContext.js\";\n\n/** @internal */\nexport function Separator() {\n const context = useSafeContext(ToolbarContext);\n const { orientation } = context;\n return (\n <div\n className={classnames(\n \"uifw-toolbar-newToolbars-separator\",\n `uifw-${orientation}`\n )}\n />\n );\n}\n"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
.uifw-toolbar-newToolbars-separator {
|
|
6
|
+
display: none;
|
|
7
|
+
|
|
8
|
+
&.uifw-horizontal {
|
|
9
|
+
border-right: var(--iui-surface-border);
|
|
10
|
+
border-color: var(--_uifw-toolbar-border-color);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
&.uifw-vertical {
|
|
14
|
+
border-bottom: var(--iui-surface-border);
|
|
15
|
+
border-color: var(--_uifw-toolbar-border-color);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
&:has(~ button) {
|
|
19
|
+
button + & {
|
|
20
|
+
display: block;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
@supports not selector(:has(~ *)) {
|
|
25
|
+
button + & {
|
|
26
|
+
// This will display the last separator if there are multiple separators at the end of the toolbar.
|
|
27
|
+
&:not(:last-child) {
|
|
28
|
+
display: block;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -4,9 +4,11 @@
|
|
|
4
4
|
import "./Surface.scss";
|
|
5
5
|
import * as React from "react";
|
|
6
6
|
import { Surface as IUI_Surface } from "@itwin/itwinui-react";
|
|
7
|
-
type
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
import type { ToolbarContext } from "./Toolbar.js";
|
|
8
|
+
type ToolbarContextProps = NonNullable<React.ContextType<typeof ToolbarContext>>;
|
|
9
|
+
interface SurfaceProps extends React.ComponentProps<typeof IUI_Surface> {
|
|
10
|
+
orientation: ToolbarContextProps["orientation"];
|
|
11
|
+
}
|
|
10
12
|
/** @internal */
|
|
11
13
|
export declare const Surface: React.ForwardRefExoticComponent<Omit<SurfaceProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
12
14
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Surface.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/new-toolbars/Surface.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,gBAAgB,CAAC;AACxB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"Surface.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/new-toolbars/Surface.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,gBAAgB,CAAC;AACxB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAW9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,KAAK,mBAAmB,GAAG,WAAW,CACpC,KAAK,CAAC,WAAW,CAAC,OAAO,cAAc,CAAC,CACzC,CAAC;AAEF,UAAU,YAAa,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,WAAW,CAAC;IACrE,WAAW,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC;CACjD;AAED,gBAAgB;AAChB,eAAO,MAAM,OAAO,kGAiCnB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Surface.js","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/new-toolbars/Surface.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,gBAAgB,CAAC;AACxB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,OAAO,EACP,uBAAuB,GACxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"Surface.js","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/new-toolbars/Surface.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,gBAAgB,CAAC;AACxB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,OAAO,EACP,uBAAuB,GACxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAWtE,gBAAgB;AAChB,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CACrC,SAAS,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,EAAE,YAAY;IACvE,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,uBAAuB,EAAkB,CAAC;IAC1E,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAExC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,GAAG,EAAE;QAChD,IAAI,eAAe,CAAC,eAAe;YAAE,OAAO,KAAK,CAAC;QAClD,IAAI,WAAW,CAAC,UAAU,CAAC,iBAAiB;YAAE,OAAO,IAAI,CAAC;QAC1D,OAAO,KAAK,CAAC;IACf,CAAC,EAAE,CAAC,aAAa,CAAC,4BAA4B,CAAC,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACjC,IAAI,CAAC,gBAAgB;YAAE,OAAO,SAAS,CAAC;QACxC,OAAO,uBAAuB,CAAC,cAAc,CAAC,CAAC;IACjD,CAAC,EAAE,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACvC,MAAM,eAAe,GACnB,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAEzE,OAAO,CACL,oBAAC,WAAW,OACN,IAAI,EACR,KAAK,EAAE;YACL,eAAe;YACf,GAAG,KAAK;SACT,EACD,SAAS,EAAE,UAAU,CACnB,4BAA4B,EAC5B,QAAQ,WAAW,EAAE,EACrB,SAAS,CACV,EACD,GAAG,EAAE,IAAI,GACT,CACH,CAAC;AACJ,CAAC,CACF,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Toolbar\n */\n\nimport \"./Surface.scss\";\nimport * as React from \"react\";\nimport classnames from \"classnames\";\nimport { Surface as IUI_Surface } from \"@itwin/itwinui-react\";\nimport {\n calculateToolbarOpacity,\n getToolbarBackgroundColor,\n useRefs,\n useWidgetOpacityContext,\n} from \"@itwin/core-react/internal\";\nimport { UiFramework } from \"../../UiFramework.js\";\nimport { ProcessDetector } from \"@itwin/core-bentley\";\nimport { useConditionalValue } from \"../../hooks/useConditionalValue.js\";\nimport { SyncUiEventId } from \"../../syncui/SyncUiEventDispatcher.js\";\nimport type { ToolbarContext } from \"./Toolbar.js\";\n\ntype ToolbarContextProps = NonNullable<\n React.ContextType<typeof ToolbarContext>\n>;\n\ninterface SurfaceProps extends React.ComponentProps<typeof IUI_Surface> {\n orientation: ToolbarContextProps[\"orientation\"];\n}\n\n/** @internal */\nexport const Surface = React.forwardRef<HTMLDivElement, SurfaceProps>(\n function Surface({ className, style, orientation, ...rest }, forwardedRed) {\n const { ref, proximityScale } = useWidgetOpacityContext<HTMLDivElement>();\n const refs = useRefs(ref, forwardedRed);\n\n const calculateOpacity = useConditionalValue(() => {\n if (ProcessDetector.isMobileBrowser) return false;\n if (UiFramework.visibility.snapWidgetOpacity) return true;\n return false;\n }, [SyncUiEventId.ShowHideManagerSettingChange]);\n const opacity = React.useMemo(() => {\n if (!calculateOpacity) return undefined;\n return calculateToolbarOpacity(proximityScale);\n }, [proximityScale, calculateOpacity]);\n const backgroundColor =\n opacity === undefined ? undefined : getToolbarBackgroundColor(opacity);\n\n return (\n <IUI_Surface\n {...rest}\n style={{\n backgroundColor,\n ...style,\n }}\n className={classnames(\n \"uifw-toolbar-group-surface\",\n `uifw-${orientation}`,\n className\n )}\n ref={refs}\n />\n );\n }\n);\n"]}
|
|
@@ -3,10 +3,12 @@
|
|
|
3
3
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
.uifw-toolbar-group-surface {
|
|
6
|
+
--_uifw-toolbar-border-color: var(--iui-color-border-foreground);
|
|
7
|
+
|
|
6
8
|
display: flex;
|
|
7
9
|
width: fit-content;
|
|
8
10
|
height: fit-content;
|
|
9
|
-
border-color: var(--
|
|
11
|
+
border-color: var(--_uifw-toolbar-border-color);
|
|
10
12
|
transition: border-color var(--iui-duration-1) ease;
|
|
11
13
|
// TODO: needed due to opacity on toolbar container (since pointer events are disabled for center content).
|
|
12
14
|
pointer-events: all;
|
|
@@ -26,7 +28,7 @@
|
|
|
26
28
|
|
|
27
29
|
&:hover,
|
|
28
30
|
&:focus-within {
|
|
29
|
-
border-color: var(--iui-color-border-foreground-hover);
|
|
31
|
+
--_uifw-toolbar-border-color: var(--iui-color-border-foreground-hover);
|
|
30
32
|
}
|
|
31
33
|
|
|
32
34
|
&:empty {
|