@itwin/appui-react 3.0.0-dev.154 → 3.0.0-dev.155

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 (47) hide show
  1. package/lib/cjs/appui-react/statusfields/Indicator.d.ts +15 -14
  2. package/lib/cjs/appui-react/statusfields/Indicator.d.ts.map +1 -1
  3. package/lib/cjs/appui-react/statusfields/Indicator.js +23 -21
  4. package/lib/cjs/appui-react/statusfields/Indicator.js.map +1 -1
  5. package/lib/cjs/appui-react/statusfields/Indicator.scss +21 -7
  6. package/lib/cjs/appui-react/statusfields/MessageCenter.d.ts.map +1 -1
  7. package/lib/cjs/appui-react/statusfields/MessageCenter.js +2 -1
  8. package/lib/cjs/appui-react/statusfields/MessageCenter.js.map +1 -1
  9. package/lib/cjs/appui-react/statusfields/SnapMode.d.ts +2 -10
  10. package/lib/cjs/appui-react/statusfields/SnapMode.d.ts.map +1 -1
  11. package/lib/cjs/appui-react/statusfields/SnapMode.js +4 -35
  12. package/lib/cjs/appui-react/statusfields/SnapMode.js.map +1 -1
  13. package/lib/cjs/appui-react/statusfields/ViewAttributes.d.ts +0 -6
  14. package/lib/cjs/appui-react/statusfields/ViewAttributes.d.ts.map +1 -1
  15. package/lib/cjs/appui-react/statusfields/ViewAttributes.js +1 -25
  16. package/lib/cjs/appui-react/statusfields/ViewAttributes.js.map +1 -1
  17. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts.map +1 -1
  18. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js +1 -1
  19. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  20. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.scss +8 -3
  21. package/lib/cjs/appui-react/utils/UiShowHideManager.d.ts.map +1 -1
  22. package/lib/cjs/appui-react/utils/UiShowHideManager.js +2 -2
  23. package/lib/cjs/appui-react/utils/UiShowHideManager.js.map +1 -1
  24. package/lib/esm/appui-react/statusfields/Indicator.d.ts +15 -14
  25. package/lib/esm/appui-react/statusfields/Indicator.d.ts.map +1 -1
  26. package/lib/esm/appui-react/statusfields/Indicator.js +23 -21
  27. package/lib/esm/appui-react/statusfields/Indicator.js.map +1 -1
  28. package/lib/esm/appui-react/statusfields/Indicator.scss +21 -7
  29. package/lib/esm/appui-react/statusfields/MessageCenter.d.ts.map +1 -1
  30. package/lib/esm/appui-react/statusfields/MessageCenter.js +2 -1
  31. package/lib/esm/appui-react/statusfields/MessageCenter.js.map +1 -1
  32. package/lib/esm/appui-react/statusfields/SnapMode.d.ts +2 -10
  33. package/lib/esm/appui-react/statusfields/SnapMode.d.ts.map +1 -1
  34. package/lib/esm/appui-react/statusfields/SnapMode.js +5 -36
  35. package/lib/esm/appui-react/statusfields/SnapMode.js.map +1 -1
  36. package/lib/esm/appui-react/statusfields/ViewAttributes.d.ts +0 -6
  37. package/lib/esm/appui-react/statusfields/ViewAttributes.d.ts.map +1 -1
  38. package/lib/esm/appui-react/statusfields/ViewAttributes.js +2 -26
  39. package/lib/esm/appui-react/statusfields/ViewAttributes.js.map +1 -1
  40. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts.map +1 -1
  41. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js +1 -1
  42. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  43. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.scss +8 -3
  44. package/lib/esm/appui-react/utils/UiShowHideManager.d.ts.map +1 -1
  45. package/lib/esm/appui-react/utils/UiShowHideManager.js +2 -2
  46. package/lib/esm/appui-react/utils/UiShowHideManager.js.map +1 -1
  47. package/package.json +34 -34
@@ -1 +1 @@
1
- {"version":3,"file":"ViewAttributes.js","sourceRoot":"","sources":["../../../../src/appui-react/statusfields/ViewAttributes.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module StatusBar\r\n */\r\n\r\nimport \"./ViewAttributes.scss\";\r\nimport * as React from \"react\";\r\nimport { ViewFlagProps, ViewFlags } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"@itwin/core-frontend\";\r\nimport { Dialog, FooterPopup, TitleBar } from \"@itwin/appui-layout-react\";\r\nimport { Checkbox } from \"@itwin/itwinui-react\";\r\nimport { StatusBarFieldId } from \"../statusbar/StatusBarWidgetControl\";\r\nimport { UiFramework } from \"../UiFramework\";\r\nimport { Indicator } from \"./Indicator\";\r\nimport { StatusFieldProps } from \"./StatusFieldProps\";\r\n\r\ninterface ViewAttributesStatusFieldState {\r\n viewFlags: ViewFlagProps;\r\n cameraOn: boolean;\r\n target: HTMLElement | null;\r\n}\r\n\r\n/** Widget for showing Checkboxes for View Attributes\r\n * @beta\r\n */\r\nexport class ViewAttributesStatusField extends React.Component<StatusFieldProps, ViewAttributesStatusFieldState> {\r\n private _className: string;\r\n private _title = UiFramework.translate(\"listTools.viewAttributes\");\r\n\r\n constructor(props: StatusFieldProps) {\r\n super(props);\r\n\r\n this.state = {\r\n cameraOn: false,\r\n viewFlags: {},\r\n target: null,\r\n };\r\n\r\n this._className = this.constructor.name;\r\n }\r\n\r\n public override componentDidMount() {\r\n this.updateState();\r\n }\r\n\r\n /** Handle opening/closing the dialog */\r\n private _handleIndicatorClick = () => {\r\n this.updateState();\r\n\r\n const isOpen = this.props.openWidget === this._className;\r\n if (isOpen)\r\n this.setOpenWidget(null);\r\n else\r\n this.setOpenWidget(this._className);\r\n };\r\n\r\n // istanbul ignore next\r\n private updateState() {\r\n if (IModelApp.viewManager.selectedView) {\r\n const viewFlags: ViewFlagProps = { ...IModelApp.viewManager.selectedView.view.viewFlags.toJSON() };\r\n const cameraOn = IModelApp.viewManager.selectedView.isCameraOn;\r\n\r\n this.setState({\r\n viewFlags,\r\n cameraOn,\r\n });\r\n }\r\n }\r\n\r\n // istanbul ignore next\r\n private _handleViewFlagClick = (flagName: string) => {\r\n if (IModelApp.viewManager.selectedView) {\r\n const props: ViewFlagProps = IModelApp.viewManager.selectedView.viewFlags.toJSON();\r\n (props as any)[flagName] = (props as any)[flagName] === undefined ? true : !(props as any)[flagName];\r\n const viewFlags = ViewFlags.fromJSON(props);\r\n IModelApp.viewManager.selectedView.viewFlags = viewFlags;\r\n this.updateState();\r\n }\r\n };\r\n\r\n private _handleToggleCamera = async () => {\r\n await IModelApp.tools.run(\"View.ToggleCamera\", IModelApp.viewManager.selectedView);\r\n this.updateState();\r\n };\r\n\r\n // istanbul ignore next\r\n private stylizeName(name: string) {\r\n name = name.charAt(0).toUpperCase() + name.slice(1);\r\n name = name.replace(/([A-Z])/g, \" $1\").trim();\r\n return name;\r\n }\r\n\r\n private getViewFlagItem(flagName: string, value: boolean, labelKey?: string) {\r\n return <Checkbox key={flagName} label={labelKey ? IModelApp.localization.getLocalizedString(labelKey) : /* istanbul ignore next */ this.stylizeName(flagName)} onClick={() => this._handleViewFlagClick(flagName)} defaultChecked={value} />;\r\n }\r\n\r\n private getFlagState(flagName: string) {\r\n return this.state.viewFlags.hasOwnProperty(flagName) ? /* istanbul ignore next */ (this.state.viewFlags as any)[flagName] : false;\r\n }\r\n\r\n private getToggleCameraItem() {\r\n return <Checkbox key={\"toggleCamera\"} label={IModelApp.localization.getLocalizedString(\"UiFramework:listTools.camera\")} onClick={this._handleToggleCamera} defaultChecked={this.state.cameraOn} />;\r\n }\r\n\r\n private getViewFlags() {\r\n const items: JSX.Element[] = [];\r\n items.push(this.getViewFlagItem(\"acs\", this.getFlagState(\"acs\"), \"UiFramework:listTools.acs\"));\r\n items.push(this.getToggleCameraItem());\r\n items.push(this.getViewFlagItem(\"noConstruct\", !this.getFlagState(\"noConstruct\"), \"UiFramework:listTools.constructions\"));\r\n items.push(this.getViewFlagItem(\"hidEdges\", this.getFlagState(\"hidEdges\"), \"UiFramework:listTools.hidEdges\"));\r\n items.push(this.getViewFlagItem(\"monochrome\", this.getFlagState(\"monochrome\"), \"UiFramework:listTools.monochrome\"));\r\n items.push(this.getViewFlagItem(\"visEdges\", this.getFlagState(\"visEdges\"), \"UiFramework:listTools.visEdges\"));\r\n items.push(this.getViewFlagItem(\"ambientOcclusion\", this.getFlagState(\"ambientOcclusion\"), \"UiFramework:listTools.ambientOcclusion\"));\r\n items.push(this.getViewFlagItem(\"shadows\", this.getFlagState(\"shadows\"), \"UiFramework:listTools.shadows\"));\r\n items.push(this.getViewFlagItem(\"backgroundMap\", this.getFlagState(\"backgroundMap\"), \"UiFramework:listTools.backgroundMap\"));\r\n return <div className=\"uifw-view-attributes-contents\">{items}</div>;\r\n }\r\n\r\n public override render() {\r\n const isOpen = this.props.openWidget === this._className;\r\n\r\n return (\r\n <>\r\n <div ref={this._handleTargetRef} title={this._title}>\r\n <Indicator\r\n iconName=\"icon-window-settings\"\r\n onClick={this._handleIndicatorClick}\r\n opened={isOpen}\r\n isInFooterMode={this.props.isInFooterMode}\r\n />\r\n </div>\r\n <FooterPopup\r\n target={this.state.target}\r\n onClose={this._handleClose}\r\n isOpen={isOpen}>\r\n <Dialog\r\n titleBar={\r\n <TitleBar title={this._title} />\r\n }>\r\n {this.getViewFlags()}\r\n </Dialog>\r\n </FooterPopup>\r\n </>\r\n );\r\n }\r\n\r\n private _handleTargetRef = (target: HTMLElement | null) => {\r\n this.setState({ target });\r\n };\r\n\r\n private _handleClose = () => {\r\n this.setOpenWidget(null);\r\n };\r\n\r\n /** Opens the pop-up window. */\r\n private setOpenWidget(openWidget: StatusBarFieldId) {\r\n // istanbul ignore else\r\n if (this.props.onOpenWidget)\r\n this.props.onOpenWidget(openWidget);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ViewAttributes.js","sourceRoot":"","sources":["../../../../src/appui-react/statusfields/ViewAttributes.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module StatusBar\r\n */\r\n\r\nimport \"./ViewAttributes.scss\";\r\nimport * as React from \"react\";\r\nimport { ViewFlagProps, ViewFlags } from \"@itwin/core-common\";\r\nimport { IModelApp } from \"@itwin/core-frontend\";\r\nimport { Dialog, TitleBar } from \"@itwin/appui-layout-react\";\r\nimport { Checkbox } from \"@itwin/itwinui-react\";\r\nimport { UiFramework } from \"../UiFramework\";\r\nimport { Indicator } from \"./Indicator\";\r\nimport { StatusFieldProps } from \"./StatusFieldProps\";\r\n\r\ninterface ViewAttributesStatusFieldState {\r\n viewFlags: ViewFlagProps;\r\n cameraOn: boolean;\r\n target: HTMLElement | null;\r\n}\r\n\r\n/** Widget for showing Checkboxes for View Attributes\r\n * @beta\r\n */\r\nexport class ViewAttributesStatusField extends React.Component<StatusFieldProps, ViewAttributesStatusFieldState> {\r\n private _className: string;\r\n private _title = UiFramework.translate(\"listTools.viewAttributes\");\r\n\r\n constructor(props: StatusFieldProps) {\r\n super(props);\r\n\r\n this.state = {\r\n cameraOn: false,\r\n viewFlags: {},\r\n target: null,\r\n };\r\n\r\n this._className = this.constructor.name;\r\n }\r\n\r\n public override componentDidMount() {\r\n this.updateState();\r\n }\r\n\r\n // istanbul ignore next\r\n private updateState() {\r\n if (IModelApp.viewManager.selectedView) {\r\n const viewFlags: ViewFlagProps = { ...IModelApp.viewManager.selectedView.view.viewFlags.toJSON() };\r\n const cameraOn = IModelApp.viewManager.selectedView.isCameraOn;\r\n\r\n this.setState({\r\n viewFlags,\r\n cameraOn,\r\n });\r\n }\r\n }\r\n\r\n // istanbul ignore next\r\n private _handleViewFlagClick = (flagName: string) => {\r\n if (IModelApp.viewManager.selectedView) {\r\n const props: ViewFlagProps = IModelApp.viewManager.selectedView.viewFlags.toJSON();\r\n (props as any)[flagName] = (props as any)[flagName] === undefined ? true : !(props as any)[flagName];\r\n const viewFlags = ViewFlags.fromJSON(props);\r\n IModelApp.viewManager.selectedView.viewFlags = viewFlags;\r\n this.updateState();\r\n }\r\n };\r\n\r\n private _handleToggleCamera = async () => {\r\n await IModelApp.tools.run(\"View.ToggleCamera\", IModelApp.viewManager.selectedView);\r\n this.updateState();\r\n };\r\n\r\n // istanbul ignore next\r\n private stylizeName(name: string) {\r\n name = name.charAt(0).toUpperCase() + name.slice(1);\r\n name = name.replace(/([A-Z])/g, \" $1\").trim();\r\n return name;\r\n }\r\n\r\n private getViewFlagItem(flagName: string, value: boolean, labelKey?: string) {\r\n return <Checkbox key={flagName} label={labelKey ? IModelApp.localization.getLocalizedString(labelKey) : /* istanbul ignore next */ this.stylizeName(flagName)} onClick={() => this._handleViewFlagClick(flagName)} defaultChecked={value} />;\r\n }\r\n\r\n private getFlagState(flagName: string) {\r\n return this.state.viewFlags.hasOwnProperty(flagName) ? /* istanbul ignore next */ (this.state.viewFlags as any)[flagName] : false;\r\n }\r\n\r\n private getToggleCameraItem() {\r\n return <Checkbox key={\"toggleCamera\"} label={IModelApp.localization.getLocalizedString(\"UiFramework:listTools.camera\")} onClick={this._handleToggleCamera} defaultChecked={this.state.cameraOn} />;\r\n }\r\n\r\n private getViewFlags() {\r\n const items: JSX.Element[] = [];\r\n items.push(this.getViewFlagItem(\"acs\", this.getFlagState(\"acs\"), \"UiFramework:listTools.acs\"));\r\n items.push(this.getToggleCameraItem());\r\n items.push(this.getViewFlagItem(\"noConstruct\", !this.getFlagState(\"noConstruct\"), \"UiFramework:listTools.constructions\"));\r\n items.push(this.getViewFlagItem(\"hidEdges\", this.getFlagState(\"hidEdges\"), \"UiFramework:listTools.hidEdges\"));\r\n items.push(this.getViewFlagItem(\"monochrome\", this.getFlagState(\"monochrome\"), \"UiFramework:listTools.monochrome\"));\r\n items.push(this.getViewFlagItem(\"visEdges\", this.getFlagState(\"visEdges\"), \"UiFramework:listTools.visEdges\"));\r\n items.push(this.getViewFlagItem(\"ambientOcclusion\", this.getFlagState(\"ambientOcclusion\"), \"UiFramework:listTools.ambientOcclusion\"));\r\n items.push(this.getViewFlagItem(\"shadows\", this.getFlagState(\"shadows\"), \"UiFramework:listTools.shadows\"));\r\n items.push(this.getViewFlagItem(\"backgroundMap\", this.getFlagState(\"backgroundMap\"), \"UiFramework:listTools.backgroundMap\"));\r\n return <div className=\"uifw-view-attributes-contents\">{items}</div>;\r\n }\r\n\r\n public override render() {\r\n const isOpen = this.props.openWidget === this._className;\r\n return (\r\n <>\r\n <Indicator\r\n iconName=\"icon-window-settings\"\r\n opened={isOpen}\r\n toolTip={this._title}\r\n dialog={<Dialog\r\n titleBar={\r\n <TitleBar title={this._title} />\r\n }>\r\n {this.getViewFlags()}\r\n </Dialog>}\r\n isInFooterMode={this.props.isInFooterMode}\r\n />\r\n </>\r\n );\r\n }\r\n\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ToolAssistanceField.d.ts","sourceRoot":"","sources":["../../../../../src/appui-react/statusfields/toolassistance/ToolAssistanceField.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ToolAssistanceField.d.ts","sourceRoot":"","sources":["../../../../../src/appui-react/statusfields/toolassistance/ToolAssistanceField.tsx"],"names":[],"mappings":"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"}
@@ -272,7 +272,7 @@ class ToolAssistanceField extends React.Component {
272
272
  }
273
273
  tooltip += UiFramework_1.UiFramework.translate("toolAssistance.moreInfo");
274
274
  return (React.createElement(React.Fragment, null,
275
- React.createElement("div", { ref: this._handleTargetRef },
275
+ React.createElement("div", { style: { height: "100%" }, ref: this._handleTargetRef },
276
276
  React.createElement(appui_layout_react_1.ToolAssistance // eslint-disable-line deprecation/deprecation
277
277
  , { icons: React.createElement(React.Fragment, null, toolIcon), indicatorRef: this._indicator, className: (0, classnames_1.default)("uifw-statusFields-toolassistance", this.props.className), style: this.props.style, isInFooterMode: this.props.isInFooterMode, onClick: this._handleToolAssistanceIndicatorClick, title: tooltip }, this.props.isInFooterMode ? prompt : undefined)),
278
278
  React.createElement(appui_layout_react_1.FooterPopup, { isOpen: this.props.openWidget === this._className, onClose: this._handleClose, onOutsideClick: this._handleOutsideClick, target: this._target, isPinned: this.state.isPinned },
@@ -1 +1 @@
1
- {"version":3,"file":"ToolAssistanceField.js","sourceRoot":"","sources":["../../../../../src/appui-react/statusfields/toolassistance/ToolAssistanceField.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Notification\r\n */\r\n\r\nimport \"./ToolAssistanceField.scss\";\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport {\r\n IModelApp, ToolAssistanceImage, ToolAssistanceInputMethod, ToolAssistanceInstruction, ToolAssistanceInstructions, ToolAssistanceKeyboardInfo,\r\n ToolAssistanceSection,\r\n} from \"@itwin/core-frontend\";\r\nimport { IconSpecUtilities } from \"@itwin/appui-abstract\";\r\nimport {\r\n FillCentered, Icon, LocalStateStorage, SvgSprite, UiCore, UiStateEntry, UiStateStorage, UiStateStorageResult, UiStateStorageStatus,\r\n} from \"@itwin/core-react\";\r\nimport {\r\n FooterPopup, ToolAssistanceInstruction as NZ_ToolAssistanceInstruction, TitleBarButton, ToolAssistance, ToolAssistanceDialog, ToolAssistanceItem,\r\n ToolAssistanceSeparator,\r\n} from \"@itwin/appui-layout-react\";\r\nimport { HorizontalTabs, ToggleSwitch } from \"@itwin/itwinui-react\";\r\nimport { CursorPrompt } from \"../../cursor/cursorprompt/CursorPrompt\";\r\nimport { FrontstageManager, ToolIconChangedEventArgs } from \"../../frontstage/FrontstageManager\";\r\nimport { MessageManager, ToolAssistanceChangedEventArgs } from \"../../messages/MessageManager\";\r\nimport { StatusBarFieldId } from \"../../statusbar/StatusBarWidgetControl\";\r\nimport { UiFramework } from \"../../UiFramework\";\r\nimport { StatusFieldProps } from \"../StatusFieldProps\";\r\nimport { UiStateStorageContext } from \"../../uistate/useUiStateStorage\";\r\n\r\nimport acceptPointIcon from \"./accept-point.svg?sprite\";\r\nimport cursorClickIcon from \"./cursor-click.svg?sprite\";\r\nimport oneTouchDragIcon from \"./gesture-one-finger-drag.svg?sprite\";\r\nimport oneTouchDoubleTapIcon from \"./gesture-one-finger-tap-double.svg?sprite\";\r\nimport oneTouchTapIcon from \"./gesture-one-finger-tap.svg?sprite\";\r\nimport twoTouchPinchIcon from \"./gesture-pinch.svg?sprite\";\r\nimport twoTouchDragIcon from \"./gesture-two-finger-drag.svg?sprite\";\r\nimport twoTouchTapIcon from \"./gesture-two-finger-tap.svg?sprite\";\r\nimport clickLeftDragIcon from \"./mouse-click-left-drag.svg?sprite\";\r\nimport clickLeftIcon from \"./mouse-click-left.svg?sprite\";\r\nimport clickRightDragIcon from \"./mouse-click-right-drag.svg?sprite\";\r\nimport clickRightIcon from \"./mouse-click-right.svg?sprite\";\r\nimport clickMouseWheelDragIcon from \"./mouse-click-wheel-drag.svg?sprite\";\r\nimport mouseWheelClickIcon from \"./mouse-click-wheel.svg?sprite\";\r\nimport touchCursorDragIcon from \"./touch-cursor-pan.svg?sprite\";\r\nimport touchCursorTapIcon from \"./touch-cursor-point.svg?sprite\";\r\n\r\n// cSpell:ignore cursorprompt\r\n\r\n/** Properties of [[ToolAssistanceField]] component.\r\n * @public\r\n */\r\nexport interface ToolAssistanceFieldProps extends StatusFieldProps {\r\n /** Indicates whether to include promptAtCursor Checkbox. Defaults to true. */\r\n includePromptAtCursor: boolean;\r\n /** Optional parameter for persistent UI settings. Defaults to UiStateStorageContext.\r\n */\r\n uiStateStorage?: UiStateStorage; // eslint-disable-line deprecation/deprecation\r\n /** Cursor Prompt Timeout period. Defaults to 5000. */\r\n cursorPromptTimeout: number;\r\n /** Fade Out the Cursor Prompt when closed. */\r\n fadeOutCursorPrompt: boolean;\r\n /** Indicates whether to show promptAtCursor by default. Defaults to false. */\r\n defaultPromptAtCursor: boolean;\r\n}\r\n\r\n/** Default properties of [[ToolAssistanceField]] component.\r\n * @internal\r\n */\r\nexport type ToolAssistanceFieldDefaultProps =\r\n Pick<ToolAssistanceFieldProps, \"includePromptAtCursor\" | \"uiStateStorage\" | \"cursorPromptTimeout\" | \"fadeOutCursorPrompt\" | \"defaultPromptAtCursor\">;\r\n\r\n/** @internal */\r\ninterface ToolAssistanceFieldState {\r\n instructions: ToolAssistanceInstructions | undefined;\r\n toolIconSpec: string;\r\n showPromptAtCursor: boolean;\r\n includeMouseInstructions: boolean;\r\n includeTouchInstructions: boolean;\r\n showMouseTouchTabs: boolean;\r\n showMouseInstructions: boolean;\r\n showTouchInstructions: boolean;\r\n mouseTouchTabIndex: number;\r\n isPinned: boolean;\r\n}\r\n\r\n/** Tool Assistance Field React component.\r\n * @public\r\n */\r\nexport class ToolAssistanceField extends React.Component<ToolAssistanceFieldProps, ToolAssistanceFieldState> {\r\n /** @internal */\r\n public static override contextType = UiStateStorageContext;\r\n /** @internal */\r\n public declare context: React.ContextType<typeof UiStateStorageContext>;\r\n\r\n private static _toolAssistanceKey = \"ToolAssistance\";\r\n private static _showPromptAtCursorKey = \"showPromptAtCursor\";\r\n private static _mouseTouchTabIndexKey = \"mouseTouchTabIndex\";\r\n private _showPromptAtCursorSetting: UiStateEntry<boolean>;\r\n private _mouseTouchTabIndexSetting: UiStateEntry<number>;\r\n private _target: HTMLElement | null = null;\r\n private _className: string;\r\n private _indicator = React.createRef<HTMLDivElement>();\r\n private _cursorPrompt: CursorPrompt;\r\n private _isMounted = false;\r\n private _uiSettingsStorage: UiStateStorage; // eslint-disable-line deprecation/deprecation\r\n\r\n /** @internal */\r\n public static readonly defaultProps: ToolAssistanceFieldDefaultProps = {\r\n includePromptAtCursor: true,\r\n cursorPromptTimeout: 5000,\r\n fadeOutCursorPrompt: true,\r\n defaultPromptAtCursor: false,\r\n };\r\n\r\n /** @internal */\r\n constructor(p: ToolAssistanceFieldProps) {\r\n super(p);\r\n\r\n const instance = this.constructor;\r\n this._className = instance.name;\r\n\r\n const mobile = UiFramework.isMobile();\r\n\r\n this.state = {\r\n instructions: undefined,\r\n toolIconSpec: \"\",\r\n showPromptAtCursor: p.defaultPromptAtCursor,\r\n includeMouseInstructions: !mobile,\r\n includeTouchInstructions: true,\r\n showMouseTouchTabs: false,\r\n showMouseInstructions: false,\r\n showTouchInstructions: false,\r\n mouseTouchTabIndex: 0,\r\n isPinned: false,\r\n };\r\n\r\n this._uiSettingsStorage = new LocalStateStorage();\r\n this._cursorPrompt = new CursorPrompt(this.props.cursorPromptTimeout, this.props.fadeOutCursorPrompt);\r\n this._showPromptAtCursorSetting = new UiStateEntry(ToolAssistanceField._toolAssistanceKey, ToolAssistanceField._showPromptAtCursorKey,\r\n () => this.state.showPromptAtCursor);\r\n this._mouseTouchTabIndexSetting = new UiStateEntry(ToolAssistanceField._toolAssistanceKey, ToolAssistanceField._mouseTouchTabIndexKey,\r\n () => this.state.mouseTouchTabIndex);\r\n }\r\n\r\n /** @internal */\r\n public override async componentDidMount() {\r\n this._isMounted = true;\r\n MessageManager.onToolAssistanceChangedEvent.addListener(this._handleToolAssistanceChangedEvent);\r\n FrontstageManager.onToolIconChangedEvent.addListener(this._handleToolIconChangedEvent);\r\n\r\n // istanbul ignore else\r\n if (this.props.uiStateStorage)\r\n this._uiSettingsStorage = this.props.uiStateStorage;\r\n else if (this.context)\r\n this._uiSettingsStorage = this.context;\r\n\r\n await this.restoreSettings();\r\n }\r\n\r\n /** @internal */\r\n public override componentWillUnmount() {\r\n this._isMounted = false;\r\n MessageManager.onToolAssistanceChangedEvent.removeListener(this._handleToolAssistanceChangedEvent);\r\n FrontstageManager.onToolIconChangedEvent.removeListener(this._handleToolIconChangedEvent);\r\n }\r\n\r\n private async restoreSettings() {\r\n let getShowPromptAtCursor: Promise<UiStateStorageResult> | undefined; // eslint-disable-line deprecation/deprecation\r\n // istanbul ignore else\r\n if (this.props.includePromptAtCursor) {\r\n getShowPromptAtCursor = this._showPromptAtCursorSetting.getSetting(this._uiSettingsStorage);\r\n }\r\n const getMouseTouchTabIndex = this._mouseTouchTabIndexSetting.getSetting(this._uiSettingsStorage);\r\n const [showPromptAtCursorResult, mouseTouchTabIndexResult] = await Promise.all([\r\n getShowPromptAtCursor,\r\n getMouseTouchTabIndex,\r\n ]);\r\n\r\n // istanbul ignore else\r\n if (showPromptAtCursorResult !== undefined && showPromptAtCursorResult.status === UiStateStorageStatus.Success) {\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState({ showPromptAtCursor: showPromptAtCursorResult.setting });\r\n }\r\n\r\n // istanbul ignore else\r\n if (mouseTouchTabIndexResult.status === UiStateStorageStatus.Success) {\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState({ mouseTouchTabIndex: mouseTouchTabIndexResult.setting });\r\n }\r\n }\r\n\r\n private _handleToolAssistanceChangedEvent = (args: ToolAssistanceChangedEventArgs): void => {\r\n let showMouseTouchTabs = false;\r\n let showMouseInstructions = false;\r\n let showTouchInstructions = false;\r\n\r\n if (args.instructions && args.instructions.sections) {\r\n const hasMouseInstructions = args.instructions.sections.some((section: ToolAssistanceSection) => {\r\n return section.instructions.some((instruction: ToolAssistanceInstruction) => this._isMouseInstruction(instruction));\r\n });\r\n const hasTouchInstructions = args.instructions.sections.some((section: ToolAssistanceSection) => {\r\n return section.instructions.some((instruction: ToolAssistanceInstruction) => this._isTouchInstruction(instruction));\r\n });\r\n\r\n if (this.state.includeMouseInstructions && this.state.includeTouchInstructions && hasMouseInstructions && hasTouchInstructions) {\r\n showMouseTouchTabs = true;\r\n showMouseInstructions = this.state.mouseTouchTabIndex === 0;\r\n showTouchInstructions = this.state.mouseTouchTabIndex === 1;\r\n } else {\r\n if (this.state.includeMouseInstructions && hasMouseInstructions)\r\n showMouseInstructions = true;\r\n else if (this.state.includeTouchInstructions && hasTouchInstructions)\r\n showTouchInstructions = true;\r\n }\r\n }\r\n\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState(\r\n {\r\n instructions: args.instructions,\r\n showMouseTouchTabs,\r\n showMouseInstructions,\r\n showTouchInstructions,\r\n },\r\n () => {\r\n this._showCursorPrompt();\r\n },\r\n );\r\n };\r\n\r\n private _isBothInstruction = (instruction: ToolAssistanceInstruction) => {\r\n return instruction.inputMethod === undefined || instruction.inputMethod === ToolAssistanceInputMethod.Both;\r\n };\r\n\r\n private _isMouseInstruction = (instruction: ToolAssistanceInstruction) => instruction.inputMethod === ToolAssistanceInputMethod.Mouse;\r\n\r\n private _isTouchInstruction = (instruction: ToolAssistanceInstruction) => instruction.inputMethod === ToolAssistanceInputMethod.Touch;\r\n\r\n private _handleToolIconChangedEvent = (args: ToolIconChangedEventArgs): void => {\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState(\r\n { toolIconSpec: args.iconSpec },\r\n () => {\r\n this._showCursorPrompt();\r\n },\r\n );\r\n\r\n };\r\n\r\n private _showCursorPrompt() {\r\n if (this.state.showPromptAtCursor && this.state.instructions)\r\n this._cursorPrompt.display(this.state.toolIconSpec, this.state.instructions.mainInstruction);\r\n }\r\n\r\n private _sectionHasDisplayableInstructions(section: ToolAssistanceSection): boolean {\r\n const displayableInstructions = this._getDisplayableInstructions(section);\r\n return displayableInstructions.length > 0;\r\n }\r\n\r\n private _getDisplayableInstructions(section: ToolAssistanceSection): ToolAssistanceInstruction[] {\r\n const displayableInstructions = section.instructions.filter((instruction: ToolAssistanceInstruction) => {\r\n return (\r\n this._isBothInstruction(instruction)\r\n || (this.state.showMouseInstructions && this._isMouseInstruction(instruction))\r\n || (this.state.showTouchInstructions && this._isTouchInstruction(instruction))\r\n );\r\n });\r\n return displayableInstructions;\r\n }\r\n\r\n private _handleMouseTouchTab = async (index: number) => {\r\n const showMouseInstructions = index === 0;\r\n const showTouchInstructions = index === 1;\r\n\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState({\r\n mouseTouchTabIndex: index,\r\n showMouseInstructions,\r\n showTouchInstructions,\r\n }, async () => {\r\n await this._mouseTouchTabIndexSetting.saveSetting(this._uiSettingsStorage);\r\n });\r\n };\r\n\r\n /** @internal */\r\n public override render(): React.ReactNode {\r\n const { instructions } = this.state;\r\n const dialogTitle = (IModelApp.toolAdmin.activeTool) ? /* istanbul ignore next */ IModelApp.toolAdmin.activeTool.flyover : UiFramework.translate(\"toolAssistance.title\");\r\n const mouseLabel = UiFramework.translate(\"toolAssistance.mouse\");\r\n const touchLabel = UiFramework.translate(\"toolAssistance.touch\");\r\n let prompt = \"\";\r\n let tooltip = \"\";\r\n let toolIcon: React.ReactNode;\r\n let dialogContent: React.ReactNode;\r\n\r\n if (instructions) {\r\n prompt = instructions.mainInstruction.text;\r\n toolIcon = <Icon iconSpec={this.state.toolIconSpec} />;\r\n\r\n let displayableSections: ToolAssistanceSection[] | undefined;\r\n if (instructions.sections) {\r\n displayableSections = instructions.sections.filter((section: ToolAssistanceSection) => this._sectionHasDisplayableInstructions(section));\r\n }\r\n\r\n dialogContent = (\r\n <div>\r\n {this.state.showMouseTouchTabs &&\r\n <HorizontalTabs\r\n tabsClassName=\"uifw-toolAssistance-tabs\"\r\n labels={[mouseLabel, touchLabel]}\r\n activeIndex={this.state.mouseTouchTabIndex}\r\n onTabSelected={this._handleMouseTouchTab} />\r\n }\r\n\r\n <div className=\"uifw-toolAssistance-content\">\r\n <NZ_ToolAssistanceInstruction\r\n key=\"main\"\r\n image={ToolAssistanceField.getInstructionImage(instructions.mainInstruction)}\r\n text={instructions.mainInstruction.text}\r\n isNew={instructions.mainInstruction.isNew} />\r\n\r\n {displayableSections && displayableSections.map((section: ToolAssistanceSection, index1: number) => {\r\n return (\r\n <React.Fragment key={index1.toString()}>\r\n <ToolAssistanceSeparator key={index1.toString()}>{section.label}</ToolAssistanceSeparator>\r\n {this._getDisplayableInstructions(section).map((instruction: ToolAssistanceInstruction, index2: number) => {\r\n return (\r\n <NZ_ToolAssistanceInstruction\r\n key={`${index1.toString()}-${index2.toString()}`}\r\n image={ToolAssistanceField.getInstructionImage(instruction)}\r\n text={instruction.text}\r\n isNew={instruction.isNew} />\r\n );\r\n })}\r\n </React.Fragment>\r\n );\r\n })}\r\n\r\n {this.props.includePromptAtCursor &&\r\n <>\r\n <ToolAssistanceSeparator key=\"prompt-sep\" />\r\n <ToolAssistanceItem key=\"prompt-item\">\r\n <ToggleSwitch\r\n label={UiFramework.translate(\"toolAssistance.promptAtCursor\")}\r\n labelPosition=\"right\"\r\n checked={this.state.showPromptAtCursor} onChange={this._onPromptAtCursorChange} />\r\n </ToolAssistanceItem>\r\n </>\r\n }\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n if (prompt)\r\n tooltip = prompt;\r\n\r\n // istanbul ignore next\r\n if (IModelApp.toolAdmin.activeTool)\r\n tooltip = `${IModelApp.toolAdmin.activeTool.flyover} > ${tooltip} `;\r\n\r\n if (tooltip) {\r\n const lineBreak = \"\\u000d\\u000a\";\r\n tooltip = tooltip + lineBreak;\r\n }\r\n\r\n tooltip += UiFramework.translate(\"toolAssistance.moreInfo\");\r\n\r\n return (\r\n <>\r\n <div ref={this._handleTargetRef}>\r\n <ToolAssistance // eslint-disable-line deprecation/deprecation\r\n icons={\r\n <>\r\n {toolIcon}\r\n </>\r\n }\r\n indicatorRef={this._indicator}\r\n className={classnames(\"uifw-statusFields-toolassistance\", this.props.className)}\r\n style={this.props.style}\r\n isInFooterMode={this.props.isInFooterMode}\r\n onClick={this._handleToolAssistanceIndicatorClick}\r\n title={tooltip}\r\n >\r\n {this.props.isInFooterMode ? prompt : undefined}\r\n </ToolAssistance>\r\n </div>\r\n <FooterPopup\r\n isOpen={this.props.openWidget === this._className}\r\n onClose={this._handleClose}\r\n onOutsideClick={this._handleOutsideClick}\r\n target={this._target}\r\n isPinned={this.state.isPinned}\r\n >\r\n <ToolAssistanceDialog\r\n buttons={\r\n <>\r\n {!this.state.isPinned &&\r\n <TitleBarButton onClick={this._handlePinButtonClick} title={UiFramework.translate(\"toolAssistance.pin\")}>\r\n <i className={\"icon icon-pin\"} />\r\n </TitleBarButton>\r\n }\r\n {this.state.isPinned &&\r\n <TitleBarButton onClick={this._handleCloseButtonClick} title={UiCore.translate(\"dialog.close\")}>\r\n <i className={\"icon icon-close\"} />\r\n </TitleBarButton>\r\n }\r\n </>\r\n }\r\n title={dialogTitle}\r\n >\r\n {dialogContent}\r\n </ToolAssistanceDialog>\r\n </FooterPopup>\r\n </>\r\n );\r\n }\r\n\r\n private _handleTargetRef = (target: HTMLElement | null) => {\r\n this._target = target;\r\n };\r\n\r\n private _onPromptAtCursorChange = async (e: React.ChangeEvent<HTMLInputElement>) => {\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState({\r\n showPromptAtCursor: e.target.checked,\r\n }, async () => {\r\n await this._showPromptAtCursorSetting.saveSetting(this._uiSettingsStorage);\r\n });\r\n };\r\n\r\n private _handleClose = () => {\r\n this.setOpenWidget(null);\r\n };\r\n\r\n private _handleOutsideClick = (e: MouseEvent) => {\r\n if (this.state.isPinned)\r\n return;\r\n\r\n // istanbul ignore if\r\n if (!this._indicator.current ||\r\n !(e.target instanceof Node) ||\r\n this._indicator.current.contains(e.target))\r\n return;\r\n\r\n this._handleClose();\r\n };\r\n\r\n private _handleToolAssistanceIndicatorClick = () => {\r\n const isOpen = this.props.openWidget === this._className;\r\n if (isOpen) {\r\n this.setOpenWidget(null);\r\n } else\r\n this.setOpenWidget(this._className);\r\n };\r\n\r\n private _handlePinButtonClick = () => {\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState({ isPinned: true });\r\n };\r\n\r\n private _handleCloseButtonClick = () => {\r\n this._handleClose();\r\n };\r\n\r\n private setOpenWidget(openWidget: StatusBarFieldId) {\r\n // istanbul ignore else\r\n if (this.props.onOpenWidget)\r\n this.props.onOpenWidget(openWidget);\r\n\r\n if (!openWidget && this.state.isPinned) {\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState({ isPinned: false });\r\n }\r\n }\r\n\r\n /** @internal */\r\n public static getInstructionImage(instruction: ToolAssistanceInstruction): React.ReactNode {\r\n let image: React.ReactNode;\r\n\r\n if ((typeof instruction.image === \"string\" || instruction.image !== ToolAssistanceImage.Keyboard) && instruction.keyboardInfo) {\r\n if (instruction.keyboardInfo.keys.length === 1 && !instruction.keyboardInfo.bottomKeys) {\r\n const key = instruction.keyboardInfo.keys[0];\r\n const rightImage = (typeof instruction.image === \"string\") ?\r\n <div className=\"uifw-toolassistance-icon-medium\"><Icon iconSpec={instruction.image} /></div> :\r\n this.getInstructionSvgImage(instruction, true);\r\n\r\n image = (\r\n <FillCentered>\r\n {ToolAssistanceField.getKeyNode(key, 0, \"uifw-toolassistance-key-modifier\")}\r\n {rightImage}\r\n </FillCentered>\r\n );\r\n } else {\r\n Logger.logError(UiFramework.loggerCategory(this), `getInstructionImage: Invalid keyboardInfo provided with image`);\r\n }\r\n } else if (typeof instruction.image === \"string\") {\r\n if (instruction.image.length > 0) {\r\n const svgSource = IconSpecUtilities.getSvgSource(instruction.image);\r\n const className = (svgSource !== undefined) ? \"uifw-toolassistance-svg\" : \"uifw-toolassistance-icon-large\";\r\n image = <div className={className}><Icon iconSpec={instruction.image} /></div>;\r\n }\r\n } else if (instruction.image === ToolAssistanceImage.Keyboard) {\r\n if (instruction.keyboardInfo) {\r\n image = ToolAssistanceField.getInstructionKeyboardImage(instruction.keyboardInfo);\r\n } else {\r\n Logger.logError(UiFramework.loggerCategory(this), `getInstructionImage: ToolAssistanceImage.Keyboard specified but no keyboardInfo provided`);\r\n }\r\n } else {\r\n image = this.getInstructionSvgImage(instruction, false);\r\n }\r\n\r\n return image;\r\n }\r\n\r\n private static getInstructionSvgImage(instruction: ToolAssistanceInstruction, mediumSize: boolean): React.ReactNode {\r\n let image: React.ReactNode;\r\n let className = mediumSize ? \"uifw-toolassistance-svg-medium\" : \"uifw-toolassistance-svg\";\r\n\r\n // istanbul ignore else\r\n if (typeof instruction.image !== \"string\" && instruction.image !== ToolAssistanceImage.Keyboard) {\r\n const toolAssistanceImage: ToolAssistanceImage = instruction.image;\r\n let svgImage = \"\";\r\n\r\n switch (toolAssistanceImage) {\r\n case ToolAssistanceImage.AcceptPoint:\r\n svgImage = acceptPointIcon;\r\n break;\r\n case ToolAssistanceImage.CursorClick:\r\n svgImage = cursorClickIcon;\r\n break;\r\n case ToolAssistanceImage.LeftClick:\r\n svgImage = clickLeftIcon;\r\n break;\r\n case ToolAssistanceImage.RightClick:\r\n svgImage = clickRightIcon;\r\n break;\r\n case ToolAssistanceImage.MouseWheel:\r\n svgImage = mouseWheelClickIcon;\r\n break;\r\n case ToolAssistanceImage.LeftClickDrag:\r\n svgImage = clickLeftDragIcon;\r\n className = mediumSize ? \"uifw-toolassistance-svg-medium-wide\" : \"uifw-toolassistance-svg-wide\";\r\n break;\r\n case ToolAssistanceImage.RightClickDrag:\r\n svgImage = clickRightDragIcon;\r\n className = mediumSize ? \"uifw-toolassistance-svg-medium-wide\" : \"uifw-toolassistance-svg-wide\";\r\n break;\r\n case ToolAssistanceImage.MouseWheelClickDrag:\r\n svgImage = clickMouseWheelDragIcon;\r\n className = mediumSize ? \"uifw-toolassistance-svg-medium-wide\" : \"uifw-toolassistance-svg-wide\";\r\n break;\r\n case ToolAssistanceImage.OneTouchTap:\r\n svgImage = oneTouchTapIcon;\r\n break;\r\n case ToolAssistanceImage.OneTouchDoubleTap:\r\n svgImage = oneTouchDoubleTapIcon;\r\n break;\r\n case ToolAssistanceImage.OneTouchDrag:\r\n svgImage = oneTouchDragIcon;\r\n break;\r\n case ToolAssistanceImage.TwoTouchTap:\r\n svgImage = twoTouchTapIcon;\r\n break;\r\n case ToolAssistanceImage.TwoTouchDrag:\r\n svgImage = twoTouchDragIcon;\r\n break;\r\n case ToolAssistanceImage.TwoTouchPinch:\r\n svgImage = twoTouchPinchIcon;\r\n break;\r\n case ToolAssistanceImage.TouchCursorTap:\r\n svgImage = touchCursorTapIcon;\r\n break;\r\n case ToolAssistanceImage.TouchCursorDrag:\r\n svgImage = touchCursorDragIcon;\r\n className = mediumSize ? /* istanbul ignore next */ \"uifw-toolassistance-svg-medium-wide\" : \"uifw-toolassistance-svg-wide\";\r\n break;\r\n }\r\n\r\n image = (\r\n <div className={className}>\r\n {svgImage &&\r\n // istanbul ignore next\r\n <SvgSprite src={svgImage} />\r\n }\r\n </div>\r\n );\r\n }\r\n\r\n return image;\r\n }\r\n\r\n private static getInstructionKeyboardImage(keyboardInfo: ToolAssistanceKeyboardInfo): React.ReactNode {\r\n let image: React.ReactNode;\r\n\r\n if (keyboardInfo.bottomKeys !== undefined) {\r\n image = (\r\n <div className=\"uifw-toolassistance-key-group\">\r\n <span className=\"row1\">\r\n {keyboardInfo.keys.map((key: string, index1: number) => {\r\n return ToolAssistanceField.getKeyNode(key, index1, \"uifw-toolassistance-key-small\");\r\n })}\r\n </span>\r\n <br />\r\n <span className=\"row2\">\r\n {keyboardInfo.bottomKeys.map((key: string, index2: number) => {\r\n return ToolAssistanceField.getKeyNode(key, index2, \"uifw-toolassistance-key-small\");\r\n })}\r\n </span>\r\n </div>\r\n );\r\n } else if (keyboardInfo.keys.length === 2) {\r\n image = (\r\n <FillCentered>\r\n {keyboardInfo.keys.map((key: string, index3: number) => {\r\n let className = \"uifw-toolassistance-key-medium\";\r\n if (key.length > 1)\r\n className = \"uifw-toolassistance-key-modifier\";\r\n return ToolAssistanceField.getKeyNode(key, index3, className);\r\n })}\r\n </FillCentered>\r\n );\r\n } else if (keyboardInfo.keys[0]) {\r\n if (keyboardInfo.keys[0].length > 1)\r\n image = ToolAssistanceField.getKeyNode(keyboardInfo.keys[0], 0, \"uifw-toolassistance-key-large\");\r\n else\r\n image = ToolAssistanceField.getKeyNode(keyboardInfo.keys[0], 0);\r\n } else {\r\n Logger.logError(UiFramework.loggerCategory(this), `ToolAssistanceImage.Keyboard specified but ToolAssistanceKeyboardInfo not valid`);\r\n }\r\n\r\n return image;\r\n }\r\n\r\n private static getKeyNode(key: string, index: number, className?: string): React.ReactNode {\r\n return (\r\n <div key={index.toString()} className={classnames(\"uifw-toolassistance-key\", className)}>\r\n <FillCentered>{key}</FillCentered>\r\n </div>\r\n );\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ToolAssistanceField.js","sourceRoot":"","sources":["../../../../../src/appui-react/statusfields/toolassistance/ToolAssistanceField.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Notification\r\n */\r\n\r\nimport \"./ToolAssistanceField.scss\";\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport {\r\n IModelApp, ToolAssistanceImage, ToolAssistanceInputMethod, ToolAssistanceInstruction, ToolAssistanceInstructions, ToolAssistanceKeyboardInfo,\r\n ToolAssistanceSection,\r\n} from \"@itwin/core-frontend\";\r\nimport { IconSpecUtilities } from \"@itwin/appui-abstract\";\r\nimport {\r\n FillCentered, Icon, LocalStateStorage, SvgSprite, UiCore, UiStateEntry, UiStateStorage, UiStateStorageResult, UiStateStorageStatus,\r\n} from \"@itwin/core-react\";\r\nimport {\r\n FooterPopup, ToolAssistanceInstruction as NZ_ToolAssistanceInstruction, TitleBarButton, ToolAssistance, ToolAssistanceDialog,\r\n ToolAssistanceItem,\r\n ToolAssistanceSeparator,\r\n} from \"@itwin/appui-layout-react\";\r\nimport { HorizontalTabs, ToggleSwitch } from \"@itwin/itwinui-react\";\r\nimport { CursorPrompt } from \"../../cursor/cursorprompt/CursorPrompt\";\r\nimport { FrontstageManager, ToolIconChangedEventArgs } from \"../../frontstage/FrontstageManager\";\r\nimport { MessageManager, ToolAssistanceChangedEventArgs } from \"../../messages/MessageManager\";\r\nimport { StatusBarFieldId } from \"../../statusbar/StatusBarWidgetControl\";\r\nimport { UiFramework } from \"../../UiFramework\";\r\nimport { StatusFieldProps } from \"../StatusFieldProps\";\r\nimport { UiStateStorageContext } from \"../../uistate/useUiStateStorage\";\r\n\r\nimport acceptPointIcon from \"./accept-point.svg?sprite\";\r\nimport cursorClickIcon from \"./cursor-click.svg?sprite\";\r\nimport oneTouchDragIcon from \"./gesture-one-finger-drag.svg?sprite\";\r\nimport oneTouchDoubleTapIcon from \"./gesture-one-finger-tap-double.svg?sprite\";\r\nimport oneTouchTapIcon from \"./gesture-one-finger-tap.svg?sprite\";\r\nimport twoTouchPinchIcon from \"./gesture-pinch.svg?sprite\";\r\nimport twoTouchDragIcon from \"./gesture-two-finger-drag.svg?sprite\";\r\nimport twoTouchTapIcon from \"./gesture-two-finger-tap.svg?sprite\";\r\nimport clickLeftDragIcon from \"./mouse-click-left-drag.svg?sprite\";\r\nimport clickLeftIcon from \"./mouse-click-left.svg?sprite\";\r\nimport clickRightDragIcon from \"./mouse-click-right-drag.svg?sprite\";\r\nimport clickRightIcon from \"./mouse-click-right.svg?sprite\";\r\nimport clickMouseWheelDragIcon from \"./mouse-click-wheel-drag.svg?sprite\";\r\nimport mouseWheelClickIcon from \"./mouse-click-wheel.svg?sprite\";\r\nimport touchCursorDragIcon from \"./touch-cursor-pan.svg?sprite\";\r\nimport touchCursorTapIcon from \"./touch-cursor-point.svg?sprite\";\r\n\r\n// cSpell:ignore cursorprompt\r\n\r\n/** Properties of [[ToolAssistanceField]] component.\r\n * @public\r\n */\r\nexport interface ToolAssistanceFieldProps extends StatusFieldProps {\r\n /** Indicates whether to include promptAtCursor Checkbox. Defaults to true. */\r\n includePromptAtCursor: boolean;\r\n /** Optional parameter for persistent UI settings. Defaults to UiStateStorageContext.\r\n */\r\n uiStateStorage?: UiStateStorage; // eslint-disable-line deprecation/deprecation\r\n /** Cursor Prompt Timeout period. Defaults to 5000. */\r\n cursorPromptTimeout: number;\r\n /** Fade Out the Cursor Prompt when closed. */\r\n fadeOutCursorPrompt: boolean;\r\n /** Indicates whether to show promptAtCursor by default. Defaults to false. */\r\n defaultPromptAtCursor: boolean;\r\n}\r\n\r\n/** Default properties of [[ToolAssistanceField]] component.\r\n * @internal\r\n */\r\nexport type ToolAssistanceFieldDefaultProps =\r\n Pick<ToolAssistanceFieldProps, \"includePromptAtCursor\" | \"uiStateStorage\" | \"cursorPromptTimeout\" | \"fadeOutCursorPrompt\" | \"defaultPromptAtCursor\">;\r\n\r\n/** @internal */\r\ninterface ToolAssistanceFieldState {\r\n instructions: ToolAssistanceInstructions | undefined;\r\n toolIconSpec: string;\r\n showPromptAtCursor: boolean;\r\n includeMouseInstructions: boolean;\r\n includeTouchInstructions: boolean;\r\n showMouseTouchTabs: boolean;\r\n showMouseInstructions: boolean;\r\n showTouchInstructions: boolean;\r\n mouseTouchTabIndex: number;\r\n isPinned: boolean;\r\n}\r\n\r\n/** Tool Assistance Field React component.\r\n * @public\r\n */\r\nexport class ToolAssistanceField extends React.Component<ToolAssistanceFieldProps, ToolAssistanceFieldState> {\r\n /** @internal */\r\n public static override contextType = UiStateStorageContext;\r\n /** @internal */\r\n public declare context: React.ContextType<typeof UiStateStorageContext>;\r\n\r\n private static _toolAssistanceKey = \"ToolAssistance\";\r\n private static _showPromptAtCursorKey = \"showPromptAtCursor\";\r\n private static _mouseTouchTabIndexKey = \"mouseTouchTabIndex\";\r\n private _showPromptAtCursorSetting: UiStateEntry<boolean>;\r\n private _mouseTouchTabIndexSetting: UiStateEntry<number>;\r\n private _target: HTMLElement | null = null;\r\n private _className: string;\r\n private _indicator = React.createRef<HTMLDivElement>();\r\n private _cursorPrompt: CursorPrompt;\r\n private _isMounted = false;\r\n private _uiSettingsStorage: UiStateStorage; // eslint-disable-line deprecation/deprecation\r\n\r\n /** @internal */\r\n public static readonly defaultProps: ToolAssistanceFieldDefaultProps = {\r\n includePromptAtCursor: true,\r\n cursorPromptTimeout: 5000,\r\n fadeOutCursorPrompt: true,\r\n defaultPromptAtCursor: false,\r\n };\r\n\r\n /** @internal */\r\n constructor(p: ToolAssistanceFieldProps) {\r\n super(p);\r\n\r\n const instance = this.constructor;\r\n this._className = instance.name;\r\n\r\n const mobile = UiFramework.isMobile();\r\n\r\n this.state = {\r\n instructions: undefined,\r\n toolIconSpec: \"\",\r\n showPromptAtCursor: p.defaultPromptAtCursor,\r\n includeMouseInstructions: !mobile,\r\n includeTouchInstructions: true,\r\n showMouseTouchTabs: false,\r\n showMouseInstructions: false,\r\n showTouchInstructions: false,\r\n mouseTouchTabIndex: 0,\r\n isPinned: false,\r\n };\r\n\r\n this._uiSettingsStorage = new LocalStateStorage();\r\n this._cursorPrompt = new CursorPrompt(this.props.cursorPromptTimeout, this.props.fadeOutCursorPrompt);\r\n this._showPromptAtCursorSetting = new UiStateEntry(ToolAssistanceField._toolAssistanceKey, ToolAssistanceField._showPromptAtCursorKey,\r\n () => this.state.showPromptAtCursor);\r\n this._mouseTouchTabIndexSetting = new UiStateEntry(ToolAssistanceField._toolAssistanceKey, ToolAssistanceField._mouseTouchTabIndexKey,\r\n () => this.state.mouseTouchTabIndex);\r\n }\r\n\r\n /** @internal */\r\n public override async componentDidMount() {\r\n this._isMounted = true;\r\n MessageManager.onToolAssistanceChangedEvent.addListener(this._handleToolAssistanceChangedEvent);\r\n FrontstageManager.onToolIconChangedEvent.addListener(this._handleToolIconChangedEvent);\r\n\r\n // istanbul ignore else\r\n if (this.props.uiStateStorage)\r\n this._uiSettingsStorage = this.props.uiStateStorage;\r\n else if (this.context)\r\n this._uiSettingsStorage = this.context;\r\n\r\n await this.restoreSettings();\r\n }\r\n\r\n /** @internal */\r\n public override componentWillUnmount() {\r\n this._isMounted = false;\r\n MessageManager.onToolAssistanceChangedEvent.removeListener(this._handleToolAssistanceChangedEvent);\r\n FrontstageManager.onToolIconChangedEvent.removeListener(this._handleToolIconChangedEvent);\r\n }\r\n\r\n private async restoreSettings() {\r\n let getShowPromptAtCursor: Promise<UiStateStorageResult> | undefined; // eslint-disable-line deprecation/deprecation\r\n // istanbul ignore else\r\n if (this.props.includePromptAtCursor) {\r\n getShowPromptAtCursor = this._showPromptAtCursorSetting.getSetting(this._uiSettingsStorage);\r\n }\r\n const getMouseTouchTabIndex = this._mouseTouchTabIndexSetting.getSetting(this._uiSettingsStorage);\r\n const [showPromptAtCursorResult, mouseTouchTabIndexResult] = await Promise.all([\r\n getShowPromptAtCursor,\r\n getMouseTouchTabIndex,\r\n ]);\r\n\r\n // istanbul ignore else\r\n if (showPromptAtCursorResult !== undefined && showPromptAtCursorResult.status === UiStateStorageStatus.Success) {\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState({ showPromptAtCursor: showPromptAtCursorResult.setting });\r\n }\r\n\r\n // istanbul ignore else\r\n if (mouseTouchTabIndexResult.status === UiStateStorageStatus.Success) {\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState({ mouseTouchTabIndex: mouseTouchTabIndexResult.setting });\r\n }\r\n }\r\n\r\n private _handleToolAssistanceChangedEvent = (args: ToolAssistanceChangedEventArgs): void => {\r\n let showMouseTouchTabs = false;\r\n let showMouseInstructions = false;\r\n let showTouchInstructions = false;\r\n\r\n if (args.instructions && args.instructions.sections) {\r\n const hasMouseInstructions = args.instructions.sections.some((section: ToolAssistanceSection) => {\r\n return section.instructions.some((instruction: ToolAssistanceInstruction) => this._isMouseInstruction(instruction));\r\n });\r\n const hasTouchInstructions = args.instructions.sections.some((section: ToolAssistanceSection) => {\r\n return section.instructions.some((instruction: ToolAssistanceInstruction) => this._isTouchInstruction(instruction));\r\n });\r\n\r\n if (this.state.includeMouseInstructions && this.state.includeTouchInstructions && hasMouseInstructions && hasTouchInstructions) {\r\n showMouseTouchTabs = true;\r\n showMouseInstructions = this.state.mouseTouchTabIndex === 0;\r\n showTouchInstructions = this.state.mouseTouchTabIndex === 1;\r\n } else {\r\n if (this.state.includeMouseInstructions && hasMouseInstructions)\r\n showMouseInstructions = true;\r\n else if (this.state.includeTouchInstructions && hasTouchInstructions)\r\n showTouchInstructions = true;\r\n }\r\n }\r\n\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState(\r\n {\r\n instructions: args.instructions,\r\n showMouseTouchTabs,\r\n showMouseInstructions,\r\n showTouchInstructions,\r\n },\r\n () => {\r\n this._showCursorPrompt();\r\n },\r\n );\r\n };\r\n\r\n private _isBothInstruction = (instruction: ToolAssistanceInstruction) => {\r\n return instruction.inputMethod === undefined || instruction.inputMethod === ToolAssistanceInputMethod.Both;\r\n };\r\n\r\n private _isMouseInstruction = (instruction: ToolAssistanceInstruction) => instruction.inputMethod === ToolAssistanceInputMethod.Mouse;\r\n\r\n private _isTouchInstruction = (instruction: ToolAssistanceInstruction) => instruction.inputMethod === ToolAssistanceInputMethod.Touch;\r\n\r\n private _handleToolIconChangedEvent = (args: ToolIconChangedEventArgs): void => {\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState(\r\n { toolIconSpec: args.iconSpec },\r\n () => {\r\n this._showCursorPrompt();\r\n },\r\n );\r\n\r\n };\r\n\r\n private _showCursorPrompt() {\r\n if (this.state.showPromptAtCursor && this.state.instructions)\r\n this._cursorPrompt.display(this.state.toolIconSpec, this.state.instructions.mainInstruction);\r\n }\r\n\r\n private _sectionHasDisplayableInstructions(section: ToolAssistanceSection): boolean {\r\n const displayableInstructions = this._getDisplayableInstructions(section);\r\n return displayableInstructions.length > 0;\r\n }\r\n\r\n private _getDisplayableInstructions(section: ToolAssistanceSection): ToolAssistanceInstruction[] {\r\n const displayableInstructions = section.instructions.filter((instruction: ToolAssistanceInstruction) => {\r\n return (\r\n this._isBothInstruction(instruction)\r\n || (this.state.showMouseInstructions && this._isMouseInstruction(instruction))\r\n || (this.state.showTouchInstructions && this._isTouchInstruction(instruction))\r\n );\r\n });\r\n return displayableInstructions;\r\n }\r\n\r\n private _handleMouseTouchTab = async (index: number) => {\r\n const showMouseInstructions = index === 0;\r\n const showTouchInstructions = index === 1;\r\n\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState({\r\n mouseTouchTabIndex: index,\r\n showMouseInstructions,\r\n showTouchInstructions,\r\n }, async () => {\r\n await this._mouseTouchTabIndexSetting.saveSetting(this._uiSettingsStorage);\r\n });\r\n };\r\n\r\n /** @internal */\r\n public override render(): React.ReactNode {\r\n const { instructions } = this.state;\r\n const dialogTitle = (IModelApp.toolAdmin.activeTool) ? /* istanbul ignore next */ IModelApp.toolAdmin.activeTool.flyover : UiFramework.translate(\"toolAssistance.title\");\r\n const mouseLabel = UiFramework.translate(\"toolAssistance.mouse\");\r\n const touchLabel = UiFramework.translate(\"toolAssistance.touch\");\r\n let prompt = \"\";\r\n let tooltip = \"\";\r\n let toolIcon: React.ReactNode;\r\n let dialogContent: React.ReactNode;\r\n\r\n if (instructions) {\r\n prompt = instructions.mainInstruction.text;\r\n toolIcon = <Icon iconSpec={this.state.toolIconSpec} />;\r\n\r\n let displayableSections: ToolAssistanceSection[] | undefined;\r\n if (instructions.sections) {\r\n displayableSections = instructions.sections.filter((section: ToolAssistanceSection) => this._sectionHasDisplayableInstructions(section));\r\n }\r\n\r\n dialogContent = (\r\n <div>\r\n {this.state.showMouseTouchTabs &&\r\n <HorizontalTabs\r\n tabsClassName=\"uifw-toolAssistance-tabs\"\r\n labels={[mouseLabel, touchLabel]}\r\n activeIndex={this.state.mouseTouchTabIndex}\r\n onTabSelected={this._handleMouseTouchTab} />\r\n }\r\n\r\n <div className=\"uifw-toolAssistance-content\">\r\n <NZ_ToolAssistanceInstruction\r\n key=\"main\"\r\n image={ToolAssistanceField.getInstructionImage(instructions.mainInstruction)}\r\n text={instructions.mainInstruction.text}\r\n isNew={instructions.mainInstruction.isNew} />\r\n\r\n {displayableSections && displayableSections.map((section: ToolAssistanceSection, index1: number) => {\r\n return (\r\n <React.Fragment key={index1.toString()}>\r\n <ToolAssistanceSeparator key={index1.toString()}>{section.label}</ToolAssistanceSeparator>\r\n {this._getDisplayableInstructions(section).map((instruction: ToolAssistanceInstruction, index2: number) => {\r\n return (\r\n <NZ_ToolAssistanceInstruction\r\n key={`${index1.toString()}-${index2.toString()}`}\r\n image={ToolAssistanceField.getInstructionImage(instruction)}\r\n text={instruction.text}\r\n isNew={instruction.isNew} />\r\n );\r\n })}\r\n </React.Fragment>\r\n );\r\n })}\r\n\r\n {this.props.includePromptAtCursor &&\r\n <>\r\n <ToolAssistanceSeparator key=\"prompt-sep\" />\r\n <ToolAssistanceItem key=\"prompt-item\">\r\n <ToggleSwitch\r\n label={UiFramework.translate(\"toolAssistance.promptAtCursor\")}\r\n labelPosition=\"right\"\r\n checked={this.state.showPromptAtCursor} onChange={this._onPromptAtCursorChange} />\r\n </ToolAssistanceItem>\r\n </>\r\n }\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n if (prompt)\r\n tooltip = prompt;\r\n\r\n // istanbul ignore next\r\n if (IModelApp.toolAdmin.activeTool)\r\n tooltip = `${IModelApp.toolAdmin.activeTool.flyover} > ${tooltip} `;\r\n\r\n if (tooltip) {\r\n const lineBreak = \"\\u000d\\u000a\";\r\n tooltip = tooltip + lineBreak;\r\n }\r\n\r\n tooltip += UiFramework.translate(\"toolAssistance.moreInfo\");\r\n\r\n return (\r\n <>\r\n <div style={{ height: \"100%\" }} ref={this._handleTargetRef}>\r\n <ToolAssistance // eslint-disable-line deprecation/deprecation\r\n icons={\r\n <>\r\n {toolIcon}\r\n </>\r\n }\r\n indicatorRef={this._indicator}\r\n className={classnames(\"uifw-statusFields-toolassistance\", this.props.className)}\r\n style={this.props.style}\r\n isInFooterMode={this.props.isInFooterMode}\r\n onClick={this._handleToolAssistanceIndicatorClick}\r\n title={tooltip}\r\n >\r\n {this.props.isInFooterMode ? prompt : undefined}\r\n </ToolAssistance>\r\n </div>\r\n <FooterPopup\r\n isOpen={this.props.openWidget === this._className}\r\n onClose={this._handleClose}\r\n onOutsideClick={this._handleOutsideClick}\r\n target={this._target}\r\n isPinned={this.state.isPinned}\r\n >\r\n <ToolAssistanceDialog\r\n buttons={\r\n <>\r\n {!this.state.isPinned &&\r\n <TitleBarButton onClick={this._handlePinButtonClick} title={UiFramework.translate(\"toolAssistance.pin\")}>\r\n <i className={\"icon icon-pin\"} />\r\n </TitleBarButton>\r\n }\r\n {this.state.isPinned &&\r\n <TitleBarButton onClick={this._handleCloseButtonClick} title={UiCore.translate(\"dialog.close\")}>\r\n <i className={\"icon icon-close\"} />\r\n </TitleBarButton>\r\n }\r\n </>\r\n }\r\n title={dialogTitle}\r\n >\r\n {dialogContent}\r\n </ToolAssistanceDialog>\r\n </FooterPopup>\r\n </>\r\n );\r\n }\r\n\r\n private _handleTargetRef = (target: HTMLElement | null) => {\r\n this._target = target;\r\n };\r\n\r\n private _onPromptAtCursorChange = async (e: React.ChangeEvent<HTMLInputElement>) => {\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState({\r\n showPromptAtCursor: e.target.checked,\r\n }, async () => {\r\n await this._showPromptAtCursorSetting.saveSetting(this._uiSettingsStorage);\r\n });\r\n };\r\n\r\n private _handleClose = () => {\r\n this.setOpenWidget(null);\r\n };\r\n\r\n private _handleOutsideClick = (e: MouseEvent) => {\r\n if (this.state.isPinned)\r\n return;\r\n\r\n // istanbul ignore if\r\n if (!this._indicator.current ||\r\n !(e.target instanceof Node) ||\r\n this._indicator.current.contains(e.target))\r\n return;\r\n\r\n this._handleClose();\r\n };\r\n\r\n private _handleToolAssistanceIndicatorClick = () => {\r\n const isOpen = this.props.openWidget === this._className;\r\n if (isOpen) {\r\n this.setOpenWidget(null);\r\n } else\r\n this.setOpenWidget(this._className);\r\n };\r\n\r\n private _handlePinButtonClick = () => {\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState({ isPinned: true });\r\n };\r\n\r\n private _handleCloseButtonClick = () => {\r\n this._handleClose();\r\n };\r\n\r\n private setOpenWidget(openWidget: StatusBarFieldId) {\r\n // istanbul ignore else\r\n if (this.props.onOpenWidget)\r\n this.props.onOpenWidget(openWidget);\r\n\r\n if (!openWidget && this.state.isPinned) {\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState({ isPinned: false });\r\n }\r\n }\r\n\r\n /** @internal */\r\n public static getInstructionImage(instruction: ToolAssistanceInstruction): React.ReactNode {\r\n let image: React.ReactNode;\r\n\r\n if ((typeof instruction.image === \"string\" || instruction.image !== ToolAssistanceImage.Keyboard) && instruction.keyboardInfo) {\r\n if (instruction.keyboardInfo.keys.length === 1 && !instruction.keyboardInfo.bottomKeys) {\r\n const key = instruction.keyboardInfo.keys[0];\r\n const rightImage = (typeof instruction.image === \"string\") ?\r\n <div className=\"uifw-toolassistance-icon-medium\"><Icon iconSpec={instruction.image} /></div> :\r\n this.getInstructionSvgImage(instruction, true);\r\n\r\n image = (\r\n <FillCentered>\r\n {ToolAssistanceField.getKeyNode(key, 0, \"uifw-toolassistance-key-modifier\")}\r\n {rightImage}\r\n </FillCentered>\r\n );\r\n } else {\r\n Logger.logError(UiFramework.loggerCategory(this), `getInstructionImage: Invalid keyboardInfo provided with image`);\r\n }\r\n } else if (typeof instruction.image === \"string\") {\r\n if (instruction.image.length > 0) {\r\n const svgSource = IconSpecUtilities.getSvgSource(instruction.image);\r\n const className = (svgSource !== undefined) ? \"uifw-toolassistance-svg\" : \"uifw-toolassistance-icon-large\";\r\n image = <div className={className}><Icon iconSpec={instruction.image} /></div>;\r\n }\r\n } else if (instruction.image === ToolAssistanceImage.Keyboard) {\r\n if (instruction.keyboardInfo) {\r\n image = ToolAssistanceField.getInstructionKeyboardImage(instruction.keyboardInfo);\r\n } else {\r\n Logger.logError(UiFramework.loggerCategory(this), `getInstructionImage: ToolAssistanceImage.Keyboard specified but no keyboardInfo provided`);\r\n }\r\n } else {\r\n image = this.getInstructionSvgImage(instruction, false);\r\n }\r\n\r\n return image;\r\n }\r\n\r\n private static getInstructionSvgImage(instruction: ToolAssistanceInstruction, mediumSize: boolean): React.ReactNode {\r\n let image: React.ReactNode;\r\n let className = mediumSize ? \"uifw-toolassistance-svg-medium\" : \"uifw-toolassistance-svg\";\r\n\r\n // istanbul ignore else\r\n if (typeof instruction.image !== \"string\" && instruction.image !== ToolAssistanceImage.Keyboard) {\r\n const toolAssistanceImage: ToolAssistanceImage = instruction.image;\r\n let svgImage = \"\";\r\n\r\n switch (toolAssistanceImage) {\r\n case ToolAssistanceImage.AcceptPoint:\r\n svgImage = acceptPointIcon;\r\n break;\r\n case ToolAssistanceImage.CursorClick:\r\n svgImage = cursorClickIcon;\r\n break;\r\n case ToolAssistanceImage.LeftClick:\r\n svgImage = clickLeftIcon;\r\n break;\r\n case ToolAssistanceImage.RightClick:\r\n svgImage = clickRightIcon;\r\n break;\r\n case ToolAssistanceImage.MouseWheel:\r\n svgImage = mouseWheelClickIcon;\r\n break;\r\n case ToolAssistanceImage.LeftClickDrag:\r\n svgImage = clickLeftDragIcon;\r\n className = mediumSize ? \"uifw-toolassistance-svg-medium-wide\" : \"uifw-toolassistance-svg-wide\";\r\n break;\r\n case ToolAssistanceImage.RightClickDrag:\r\n svgImage = clickRightDragIcon;\r\n className = mediumSize ? \"uifw-toolassistance-svg-medium-wide\" : \"uifw-toolassistance-svg-wide\";\r\n break;\r\n case ToolAssistanceImage.MouseWheelClickDrag:\r\n svgImage = clickMouseWheelDragIcon;\r\n className = mediumSize ? \"uifw-toolassistance-svg-medium-wide\" : \"uifw-toolassistance-svg-wide\";\r\n break;\r\n case ToolAssistanceImage.OneTouchTap:\r\n svgImage = oneTouchTapIcon;\r\n break;\r\n case ToolAssistanceImage.OneTouchDoubleTap:\r\n svgImage = oneTouchDoubleTapIcon;\r\n break;\r\n case ToolAssistanceImage.OneTouchDrag:\r\n svgImage = oneTouchDragIcon;\r\n break;\r\n case ToolAssistanceImage.TwoTouchTap:\r\n svgImage = twoTouchTapIcon;\r\n break;\r\n case ToolAssistanceImage.TwoTouchDrag:\r\n svgImage = twoTouchDragIcon;\r\n break;\r\n case ToolAssistanceImage.TwoTouchPinch:\r\n svgImage = twoTouchPinchIcon;\r\n break;\r\n case ToolAssistanceImage.TouchCursorTap:\r\n svgImage = touchCursorTapIcon;\r\n break;\r\n case ToolAssistanceImage.TouchCursorDrag:\r\n svgImage = touchCursorDragIcon;\r\n className = mediumSize ? /* istanbul ignore next */ \"uifw-toolassistance-svg-medium-wide\" : \"uifw-toolassistance-svg-wide\";\r\n break;\r\n }\r\n\r\n image = (\r\n <div className={className}>\r\n {svgImage &&\r\n // istanbul ignore next\r\n <SvgSprite src={svgImage} />\r\n }\r\n </div>\r\n );\r\n }\r\n\r\n return image;\r\n }\r\n\r\n private static getInstructionKeyboardImage(keyboardInfo: ToolAssistanceKeyboardInfo): React.ReactNode {\r\n let image: React.ReactNode;\r\n\r\n if (keyboardInfo.bottomKeys !== undefined) {\r\n image = (\r\n <div className=\"uifw-toolassistance-key-group\">\r\n <span className=\"row1\">\r\n {keyboardInfo.keys.map((key: string, index1: number) => {\r\n return ToolAssistanceField.getKeyNode(key, index1, \"uifw-toolassistance-key-small\");\r\n })}\r\n </span>\r\n <br />\r\n <span className=\"row2\">\r\n {keyboardInfo.bottomKeys.map((key: string, index2: number) => {\r\n return ToolAssistanceField.getKeyNode(key, index2, \"uifw-toolassistance-key-small\");\r\n })}\r\n </span>\r\n </div>\r\n );\r\n } else if (keyboardInfo.keys.length === 2) {\r\n image = (\r\n <FillCentered>\r\n {keyboardInfo.keys.map((key: string, index3: number) => {\r\n let className = \"uifw-toolassistance-key-medium\";\r\n if (key.length > 1)\r\n className = \"uifw-toolassistance-key-modifier\";\r\n return ToolAssistanceField.getKeyNode(key, index3, className);\r\n })}\r\n </FillCentered>\r\n );\r\n } else if (keyboardInfo.keys[0]) {\r\n if (keyboardInfo.keys[0].length > 1)\r\n image = ToolAssistanceField.getKeyNode(keyboardInfo.keys[0], 0, \"uifw-toolassistance-key-large\");\r\n else\r\n image = ToolAssistanceField.getKeyNode(keyboardInfo.keys[0], 0);\r\n } else {\r\n Logger.logError(UiFramework.loggerCategory(this), `ToolAssistanceImage.Keyboard specified but ToolAssistanceKeyboardInfo not valid`);\r\n }\r\n\r\n return image;\r\n }\r\n\r\n private static getKeyNode(key: string, index: number, className?: string): React.ReactNode {\r\n return (\r\n <div key={index.toString()} className={classnames(\"uifw-toolassistance-key\", className)}>\r\n <FillCentered>{key}</FillCentered>\r\n </div>\r\n );\r\n }\r\n}\r\n"]}
@@ -182,20 +182,25 @@ $key-size-modifier: 24px;
182
182
  }
183
183
  }
184
184
 
185
- .uifw-toolAssistance-tabs {
185
+ .uifw-toolAssistance-tabs.iui-tabs.iui-default {
186
186
  @include iui-text(leading);
187
187
 
188
188
  // Tabs are sized at 50% with the labels centered
189
189
  >li {
190
190
  width: 50%;
191
191
 
192
- .iui-tab {
192
+ button.iui-tab {
193
193
  width: 100%;
194
194
  display: unset;
195
+ background-color: var(--buic-background-tab-inactive);
196
+
197
+ &.iui-active {
198
+ background-color: var(--buic-background-dialog);
199
+ }
195
200
  }
196
201
 
197
202
  .iui-tab-label {
198
203
  text-align: center;
199
204
  }
200
205
  }
201
- }
206
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"UiShowHideManager.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/utils/UiShowHideManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UiShowHideManager.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/utils/UiShowHideManager.ts"],"names":[],"mappings":"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"}
@@ -180,10 +180,10 @@ class UiShowHideManager {
180
180
  }
181
181
  exports.UiShowHideManager = UiShowHideManager;
182
182
  UiShowHideManager._isUiVisible = true;
183
- UiShowHideManager._autoHideUi = false;
183
+ UiShowHideManager._autoHideUi = true;
184
184
  UiShowHideManager._showHidePanels = false;
185
185
  UiShowHideManager._showHideFooter = false;
186
186
  UiShowHideManager._inactivityTime = exports.INACTIVITY_TIME_DEFAULT;
187
- UiShowHideManager._useProximityOpacity = true;
187
+ UiShowHideManager._useProximityOpacity = false;
188
188
  UiShowHideManager._snapWidgetOpacity = false;
189
189
  //# sourceMappingURL=UiShowHideManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UiShowHideManager.js","sourceRoot":"","sources":["../../../../src/appui-react/utils/UiShowHideManager.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,kDAAyE;AACzE,2EAAuF;AACvF,gDAAmE;AAEnE;;GAEG;AACH,MAAa,0BAA0B;IAAvC;QAKkB,eAAU,GAAG,4BAA4B,CAAC;IA+B5D,CAAC;IA7BQ,MAAM,CAAC,UAAU;QACtB,yBAAW,CAAC,4BAA4B,CAAC,IAAI,0BAA0B,EAAE,CAAC,CAAC;IAC7E,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,OAAuB;QACnD,IAAI,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,0BAA0B,CAAC,kBAAkB,EAAE,0BAA0B,CAAC,cAAc,CAAC,CAAC;QAChI,IAAI,MAAM,CAAC,MAAM,KAAK,iCAAoB,CAAC,OAAO;YAChD,iBAAiB,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAElD,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,0BAA0B,CAAC,kBAAkB,EAAE,0BAA0B,CAAC,uBAAuB,CAAC,CAAC;QACrI,IAAI,MAAM,CAAC,MAAM,KAAK,iCAAoB,CAAC,OAAO;YAChD,iBAAiB,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE3D,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,0BAA0B,CAAC,kBAAkB,EAAE,0BAA0B,CAAC,qBAAqB,CAAC,CAAC;QACnI,IAAI,MAAM,CAAC,MAAM,KAAK,iCAAoB,CAAC,OAAO;YAChD,iBAAiB,CAAC,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAU,EAAE,OAAwB;QACtE,KAAK,CAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,yBAAW,CAAC,iBAAiB,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IACjH,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAU,EAAE,OAAwB;QAC/E,KAAK,CAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,yBAAW,CAAC,iBAAiB,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC;IAC1H,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAU,EAAE,OAAwB;QAC7E,KAAK,CAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,yBAAW,CAAC,iBAAiB,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;IACxH,CAAC;;AAnCH,gEAoCC;AAnCgB,6CAAkB,GAAG,eAAe,CAAC;AACrC,yCAAc,GAAG,YAAY,CAAC;AAC9B,kDAAuB,GAAG,qBAAqB,CAAC;AAChD,gDAAqB,GAAG,mBAAmB,CAAC;AAkC7D;;GAEG;AACU,QAAA,uBAAuB,GAAG,IAAI,CAAC,CAAE,uBAAuB;AAErE;;GAEG;AACH,MAAa,iBAAiB;IAU5B,sCAAsC;IAC/B,MAAM,KAAK,WAAW;QAC3B,OAAO,iBAAiB,CAAC,YAAY,CAAC;IACxC,CAAC;IACM,MAAM,KAAK,WAAW,CAAC,OAAgB;QAC5C,iBAAiB,CAAC,YAAY,GAAG,OAAO,CAAC;IAC3C,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,aAAa,CAAC,KAAc;QACxC,iBAAiB,CAAC,WAAW,GAAG,KAAK,CAAC;IACxC,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,sBAAsB,CAAC,KAAc;QACjD,iBAAiB,CAAC,oBAAoB,GAAG,KAAK,CAAC;IACjD,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,oBAAoB,CAAC,KAAc;QAC/C,iBAAiB,CAAC,kBAAkB,GAAG,KAAK,CAAC;IAC/C,CAAC;IAED;;OAEG;IACI,MAAM,KAAK,UAAU;QAC1B,OAAO,iBAAiB,CAAC,WAAW,CAAC;IACvC,CAAC;IAEM,MAAM,KAAK,UAAU,CAAC,QAAiB;QAC5C,KAAK,0BAA0B,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC1D,iBAAiB,CAAC,WAAW,GAAG,QAAQ,CAAC;QACzC,6CAAqB,CAAC,4BAA4B,CAAC,qCAAa,CAAC,4BAA4B,CAAC,CAAC;IACjG,CAAC;IACD,oFAAoF;IAC7E,MAAM,KAAK,cAAc;QAC9B,OAAO,iBAAiB,CAAC,eAAe,CAAC;IAC3C,CAAC;IACM,MAAM,KAAK,cAAc,CAAC,QAAiB;QAChD,iBAAiB,CAAC,eAAe,GAAG,QAAQ,CAAC;QAC7C,yBAAW,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,yBAAW,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,gFAAgF;IACzE,MAAM,KAAK,cAAc;QAC9B,OAAO,iBAAiB,CAAC,eAAe,CAAC;IAC3C,CAAC;IACM,MAAM,KAAK,cAAc,CAAC,QAAiB;QAChD,iBAAiB,CAAC,eAAe,GAAG,QAAQ,CAAC;QAC7C,yBAAW,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,yBAAW,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,iGAAiG;IAC1F,MAAM,KAAK,cAAc;QAC9B,OAAO,iBAAiB,CAAC,eAAe,CAAC;IAC3C,CAAC;IACM,MAAM,KAAK,cAAc,CAAC,IAAY;QAC3C,iBAAiB,CAAC,eAAe,GAAG,IAAI,CAAC;IAC3C,CAAC;IAED,6GAA6G;IACtG,MAAM,KAAK,mBAAmB;QACnC,OAAO,iBAAiB,CAAC,oBAAoB,CAAC;IAChD,CAAC;IACM,MAAM,KAAK,mBAAmB,CAAC,KAAc;QAClD,iBAAiB,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAC/C,KAAK,0BAA0B,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAChE,6CAAqB,CAAC,4BAA4B,CAAC,qCAAa,CAAC,4BAA4B,CAAC,CAAC;QAC/F,yBAAW,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,yBAAW,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,kFAAkF;IAC3E,MAAM,KAAK,iBAAiB;QACjC,OAAO,iBAAiB,CAAC,kBAAkB,CAAC;IAC9C,CAAC;IACM,MAAM,KAAK,iBAAiB,CAAC,KAAc;QAChD,iBAAiB,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAC7C,KAAK,0BAA0B,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC9D,6CAAqB,CAAC,4BAA4B,CAAC,qCAAa,CAAC,4BAA4B,CAAC,CAAC;QAC/F,yBAAW,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,yBAAW,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,6CAA6C;IACtC,MAAM,CAAC,qBAAqB;QACjC,IAAI,CAAC,iBAAiB,CAAC,WAAW;YAChC,OAAO;QAET,iBAAiB,CAAC,mBAAmB,EAAE,CAAC;IAC1C,CAAC;IAED,6DAA6D;IACtD,MAAM,CAAC,sBAAsB,CAAC,MAAkD;QACrF,IAAI,CAAC,iBAAiB,CAAC,WAAW;YAChC,OAAO;QAET,iBAAiB,CAAC,mBAAmB,EAAE,CAAC;IAC1C,CAAC;IAED,iDAAiD;IAC1C,MAAM,CAAC,sBAAsB,CAAC,MAAkD;QACrF,IAAI,CAAC,iBAAiB,CAAC,WAAW;YAChC,OAAO;QAET,iBAAiB,CAAC,oBAAoB,EAAE,CAAC;IAC3C,CAAC;IAED,mDAAmD;IAC5C,MAAM,CAAC,mBAAmB;QAC/B,UAAU,CAAC,GAAG,EAAE;YACd,iBAAiB,CAAC,MAAM,EAAE,CAAC;YAC3B,iBAAiB,CAAC,UAAU,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,oDAAoD;IAC7C,MAAM,CAAC,oBAAoB;QAChC,UAAU,CAAC,GAAG,EAAE;YACd,iBAAiB,CAAC,MAAM,EAAE,CAAC;YAC3B,iBAAiB,CAAC,WAAW,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,WAAW;QACxB,YAAY,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAEO,MAAM,CAAC,UAAU;QACvB,iBAAiB,CAAC,WAAW,EAAE,CAAC;QAChC,iBAAiB,CAAC,QAAQ,GAAG,UAAU,CAAC,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,CAAC,eAAe,CAAC,CAAC;IACvG,CAAC;IAEO,MAAM,CAAC,MAAM;QACnB,yBAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAEO,MAAM,CAAC,MAAM;QACnB,yBAAW,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,SAAS;QACrB,iBAAiB,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC;;AAzJH,8CA0JC;AAzJgB,8BAAY,GAAY,IAAI,CAAC;AAC7B,6BAAW,GAAY,KAAK,CAAC;AAC7B,iCAAe,GAAY,KAAK,CAAC;AACjC,iCAAe,GAAY,KAAK,CAAC;AACjC,iCAAe,GAAW,+BAAuB,CAAC;AAElD,sCAAoB,GAAY,IAAI,CAAC;AACrC,oCAAkB,GAAY,KAAK,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Utilities\r\n */\r\n\r\nimport { UiStateStorage, UiStateStorageStatus } from \"@itwin/core-react\";\r\nimport { SyncUiEventDispatcher, SyncUiEventId } from \"../syncui/SyncUiEventDispatcher\";\r\nimport { UiFramework, UserSettingsProvider } from \"../UiFramework\";\r\n\r\n/** Class that maintain UiShowHide user settings between sessions\r\n * @internal\r\n */\r\nexport class UiShowHideSettingsProvider implements UserSettingsProvider {\r\n private static _settingsNamespace = \"AppUiSettings\";\r\n private static _autoHideUiKey = \"AutoHideUi\";\r\n private static _useProximityOpacityKey = \"UseProximityOpacity\";\r\n private static _snapWidgetOpacityKey = \"SnapWidgetOpacity\";\r\n public readonly providerId = \"UiShowHideSettingsProvider\";\r\n\r\n public static initialize() {\r\n UiFramework.registerUserSettingsProvider(new UiShowHideSettingsProvider());\r\n }\r\n\r\n public async loadUserSettings(storage: UiStateStorage): Promise<void> {\r\n let result = await storage.getSetting(UiShowHideSettingsProvider._settingsNamespace, UiShowHideSettingsProvider._autoHideUiKey);\r\n if (result.status === UiStateStorageStatus.Success)\r\n UiShowHideManager.setAutoHideUi(result.setting);\r\n\r\n result = await storage.getSetting(UiShowHideSettingsProvider._settingsNamespace, UiShowHideSettingsProvider._useProximityOpacityKey);\r\n if (result.status === UiStateStorageStatus.Success)\r\n UiShowHideManager.setUseProximityOpacity(result.setting);\r\n\r\n result = await storage.getSetting(UiShowHideSettingsProvider._settingsNamespace, UiShowHideSettingsProvider._snapWidgetOpacityKey);\r\n if (result.status === UiStateStorageStatus.Success)\r\n UiShowHideManager.setSnapWidgetOpacity(result.setting);\r\n }\r\n\r\n public static async storeAutoHideUi(v: boolean, storage?: UiStateStorage) {\r\n void (storage ?? UiFramework.getUiStateStorage()).saveSetting(this._settingsNamespace, this._autoHideUiKey, v);\r\n }\r\n\r\n public static async storeUseProximityOpacity(v: boolean, storage?: UiStateStorage) {\r\n void (storage ?? UiFramework.getUiStateStorage()).saveSetting(this._settingsNamespace, this._useProximityOpacityKey, v);\r\n }\r\n\r\n public static async storeSnapWidgetOpacity(v: boolean, storage?: UiStateStorage) {\r\n void (storage ?? UiFramework.getUiStateStorage()).saveSetting(this._settingsNamespace, this._snapWidgetOpacityKey, v);\r\n }\r\n}\r\n\r\n/** The default inactivity time.\r\n * @internal\r\n */\r\nexport const INACTIVITY_TIME_DEFAULT = 3500; /** Wait 3.5 seconds */\r\n\r\n/** Maintains Ui Show/Hide state. The `Ui` includes widgets, panels and the status bar.\r\n * @public\r\n */\r\nexport class UiShowHideManager {\r\n private static _isUiVisible: boolean = true;\r\n private static _autoHideUi: boolean = false;\r\n private static _showHidePanels: boolean = false;\r\n private static _showHideFooter: boolean = false;\r\n private static _inactivityTime: number = INACTIVITY_TIME_DEFAULT;\r\n private static _timeout: NodeJS.Timeout;\r\n private static _useProximityOpacity: boolean = true;\r\n private static _snapWidgetOpacity: boolean = false;\r\n\r\n /** Determines if the Ui is visible */\r\n public static get isUiVisible() {\r\n return UiShowHideManager._isUiVisible;\r\n }\r\n public static set isUiVisible(visible: boolean) {\r\n UiShowHideManager._isUiVisible = visible;\r\n }\r\n\r\n /** @internal */\r\n public static setAutoHideUi(value: boolean) {\r\n UiShowHideManager._autoHideUi = value;\r\n }\r\n\r\n /** @internal */\r\n public static setUseProximityOpacity(value: boolean) {\r\n UiShowHideManager._useProximityOpacity = value;\r\n }\r\n\r\n /** @internal */\r\n public static setSnapWidgetOpacity(value: boolean) {\r\n UiShowHideManager._snapWidgetOpacity = value;\r\n }\r\n\r\n /** Determines whether the `auto-hide Ui` feature is on. Defaults to false.\r\n * When true, the Ui automatically hides after a few seconds of inactivity.\r\n */\r\n public static get autoHideUi(): boolean {\r\n return UiShowHideManager._autoHideUi;\r\n }\r\n\r\n public static set autoHideUi(autoHide: boolean) {\r\n void UiShowHideSettingsProvider.storeAutoHideUi(autoHide);\r\n UiShowHideManager._autoHideUi = autoHide;\r\n SyncUiEventDispatcher.dispatchImmediateSyncUiEvent(SyncUiEventId.ShowHideManagerSettingChange);\r\n }\r\n /** Determines whether the widget panels are shown and hidden. Defaults to false. */\r\n public static get showHidePanels(): boolean {\r\n return UiShowHideManager._showHidePanels;\r\n }\r\n public static set showHidePanels(showHide: boolean) {\r\n UiShowHideManager._showHidePanels = showHide;\r\n UiFramework.onUiVisibilityChanged.emit({ visible: UiFramework.getIsUiVisible() });\r\n }\r\n\r\n /** Determines whether the status bar is shown and hidden. Defaults to false. */\r\n public static get showHideFooter(): boolean {\r\n return UiShowHideManager._showHideFooter;\r\n }\r\n public static set showHideFooter(showHide: boolean) {\r\n UiShowHideManager._showHideFooter = showHide;\r\n UiFramework.onUiVisibilityChanged.emit({ visible: UiFramework.getIsUiVisible() });\r\n }\r\n\r\n /** Determines the amount of inactivity time before the Ui is hidden. Defaults to 3.5 seconds. */\r\n public static get inactivityTime(): number {\r\n return UiShowHideManager._inactivityTime;\r\n }\r\n public static set inactivityTime(time: number) {\r\n UiShowHideManager._inactivityTime = time;\r\n }\r\n\r\n /** Determines whether the proximity of the mouse should alter the opacity of a toolbar. Defaults to true. */\r\n public static get useProximityOpacity(): boolean {\r\n return UiShowHideManager._useProximityOpacity;\r\n }\r\n public static set useProximityOpacity(value: boolean) {\r\n UiShowHideManager._useProximityOpacity = value;\r\n void UiShowHideSettingsProvider.storeUseProximityOpacity(value);\r\n SyncUiEventDispatcher.dispatchImmediateSyncUiEvent(SyncUiEventId.ShowHideManagerSettingChange);\r\n UiFramework.onUiVisibilityChanged.emit({ visible: UiFramework.getIsUiVisible() });\r\n }\r\n\r\n /** Determines whether the opacity of a toolbar should snap. Defaults to false. */\r\n public static get snapWidgetOpacity(): boolean {\r\n return UiShowHideManager._snapWidgetOpacity;\r\n }\r\n public static set snapWidgetOpacity(value: boolean) {\r\n UiShowHideManager._snapWidgetOpacity = value;\r\n void UiShowHideSettingsProvider.storeSnapWidgetOpacity(value);\r\n SyncUiEventDispatcher.dispatchImmediateSyncUiEvent(SyncUiEventId.ShowHideManagerSettingChange);\r\n UiFramework.onUiVisibilityChanged.emit({ visible: UiFramework.getIsUiVisible() });\r\n }\r\n\r\n /** Handler for when a Frontstage is ready */\r\n public static handleFrontstageReady() {\r\n if (!UiShowHideManager._autoHideUi)\r\n return;\r\n\r\n UiShowHideManager.showUiAndResetTimer();\r\n }\r\n\r\n /** Handler for when the mouse moves over the content area */\r\n public static handleContentMouseMove(_event?: React.MouseEvent<HTMLElement, MouseEvent>) {\r\n if (!UiShowHideManager._autoHideUi)\r\n return;\r\n\r\n UiShowHideManager.showUiAndResetTimer();\r\n }\r\n\r\n /** Handler for when the mouse enters a widget */\r\n public static handleWidgetMouseEnter(_event?: React.MouseEvent<HTMLElement, MouseEvent>) {\r\n if (!UiShowHideManager._autoHideUi)\r\n return;\r\n\r\n UiShowHideManager.showUiAndCancelTimer();\r\n }\r\n\r\n /** Shows the Ui and resets the inactivity timer */\r\n public static showUiAndResetTimer() {\r\n setTimeout(() => {\r\n UiShowHideManager.showUi();\r\n UiShowHideManager.resetTimer();\r\n });\r\n }\r\n\r\n /** Shows the Ui and cancels the inactivity timer */\r\n public static showUiAndCancelTimer() {\r\n setTimeout(() => {\r\n UiShowHideManager.showUi();\r\n UiShowHideManager.cancelTimer();\r\n });\r\n }\r\n\r\n private static cancelTimer() {\r\n clearTimeout(UiShowHideManager._timeout);\r\n }\r\n\r\n private static resetTimer() {\r\n UiShowHideManager.cancelTimer();\r\n UiShowHideManager._timeout = setTimeout(UiShowHideManager.hideUi, UiShowHideManager._inactivityTime);\r\n }\r\n\r\n private static showUi() {\r\n UiFramework.setIsUiVisible(true);\r\n }\r\n\r\n private static hideUi() {\r\n UiFramework.setIsUiVisible(false);\r\n }\r\n\r\n /** @internal */\r\n public static terminate() {\r\n UiShowHideManager.cancelTimer();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"UiShowHideManager.js","sourceRoot":"","sources":["../../../../src/appui-react/utils/UiShowHideManager.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Utilities\r\n */\r\n\r\nimport { UiStateStorage, UiStateStorageStatus } from \"@itwin/core-react\";\r\nimport { SyncUiEventDispatcher, SyncUiEventId } from \"../syncui/SyncUiEventDispatcher\";\r\nimport { UiFramework, UserSettingsProvider } from \"../UiFramework\";\r\n\r\n/** Class that maintain UiShowHide user settings between sessions\r\n * @internal\r\n */\r\nexport class UiShowHideSettingsProvider implements UserSettingsProvider {\r\n private static _settingsNamespace = \"AppUiSettings\";\r\n private static _autoHideUiKey = \"AutoHideUi\";\r\n private static _useProximityOpacityKey = \"UseProximityOpacity\";\r\n private static _snapWidgetOpacityKey = \"SnapWidgetOpacity\";\r\n public readonly providerId = \"UiShowHideSettingsProvider\";\r\n\r\n public static initialize() {\r\n UiFramework.registerUserSettingsProvider(new UiShowHideSettingsProvider());\r\n }\r\n\r\n public async loadUserSettings(storage: UiStateStorage): Promise<void> {\r\n let result = await storage.getSetting(UiShowHideSettingsProvider._settingsNamespace, UiShowHideSettingsProvider._autoHideUiKey);\r\n if (result.status === UiStateStorageStatus.Success)\r\n UiShowHideManager.setAutoHideUi(result.setting);\r\n\r\n result = await storage.getSetting(UiShowHideSettingsProvider._settingsNamespace, UiShowHideSettingsProvider._useProximityOpacityKey);\r\n if (result.status === UiStateStorageStatus.Success)\r\n UiShowHideManager.setUseProximityOpacity(result.setting);\r\n\r\n result = await storage.getSetting(UiShowHideSettingsProvider._settingsNamespace, UiShowHideSettingsProvider._snapWidgetOpacityKey);\r\n if (result.status === UiStateStorageStatus.Success)\r\n UiShowHideManager.setSnapWidgetOpacity(result.setting);\r\n }\r\n\r\n public static async storeAutoHideUi(v: boolean, storage?: UiStateStorage) {\r\n void (storage ?? UiFramework.getUiStateStorage()).saveSetting(this._settingsNamespace, this._autoHideUiKey, v);\r\n }\r\n\r\n public static async storeUseProximityOpacity(v: boolean, storage?: UiStateStorage) {\r\n void (storage ?? UiFramework.getUiStateStorage()).saveSetting(this._settingsNamespace, this._useProximityOpacityKey, v);\r\n }\r\n\r\n public static async storeSnapWidgetOpacity(v: boolean, storage?: UiStateStorage) {\r\n void (storage ?? UiFramework.getUiStateStorage()).saveSetting(this._settingsNamespace, this._snapWidgetOpacityKey, v);\r\n }\r\n}\r\n\r\n/** The default inactivity time.\r\n * @internal\r\n */\r\nexport const INACTIVITY_TIME_DEFAULT = 3500; /** Wait 3.5 seconds */\r\n\r\n/** Maintains Ui Show/Hide state. The `Ui` includes widgets, panels and the status bar.\r\n * @public\r\n */\r\nexport class UiShowHideManager {\r\n private static _isUiVisible: boolean = true;\r\n private static _autoHideUi: boolean = true;\r\n private static _showHidePanels: boolean = false;\r\n private static _showHideFooter: boolean = false;\r\n private static _inactivityTime: number = INACTIVITY_TIME_DEFAULT;\r\n private static _timeout: NodeJS.Timeout;\r\n private static _useProximityOpacity: boolean = false;\r\n private static _snapWidgetOpacity: boolean = false;\r\n\r\n /** Determines if the Ui is visible */\r\n public static get isUiVisible() {\r\n return UiShowHideManager._isUiVisible;\r\n }\r\n public static set isUiVisible(visible: boolean) {\r\n UiShowHideManager._isUiVisible = visible;\r\n }\r\n\r\n /** @internal */\r\n public static setAutoHideUi(value: boolean) {\r\n UiShowHideManager._autoHideUi = value;\r\n }\r\n\r\n /** @internal */\r\n public static setUseProximityOpacity(value: boolean) {\r\n UiShowHideManager._useProximityOpacity = value;\r\n }\r\n\r\n /** @internal */\r\n public static setSnapWidgetOpacity(value: boolean) {\r\n UiShowHideManager._snapWidgetOpacity = value;\r\n }\r\n\r\n /** Determines whether the `auto-hide Ui` feature is on. Defaults to false.\r\n * When true, the Ui automatically hides after a few seconds of inactivity.\r\n */\r\n public static get autoHideUi(): boolean {\r\n return UiShowHideManager._autoHideUi;\r\n }\r\n\r\n public static set autoHideUi(autoHide: boolean) {\r\n void UiShowHideSettingsProvider.storeAutoHideUi(autoHide);\r\n UiShowHideManager._autoHideUi = autoHide;\r\n SyncUiEventDispatcher.dispatchImmediateSyncUiEvent(SyncUiEventId.ShowHideManagerSettingChange);\r\n }\r\n /** Determines whether the widget panels are shown and hidden. Defaults to false. */\r\n public static get showHidePanels(): boolean {\r\n return UiShowHideManager._showHidePanels;\r\n }\r\n public static set showHidePanels(showHide: boolean) {\r\n UiShowHideManager._showHidePanels = showHide;\r\n UiFramework.onUiVisibilityChanged.emit({ visible: UiFramework.getIsUiVisible() });\r\n }\r\n\r\n /** Determines whether the status bar is shown and hidden. Defaults to false. */\r\n public static get showHideFooter(): boolean {\r\n return UiShowHideManager._showHideFooter;\r\n }\r\n public static set showHideFooter(showHide: boolean) {\r\n UiShowHideManager._showHideFooter = showHide;\r\n UiFramework.onUiVisibilityChanged.emit({ visible: UiFramework.getIsUiVisible() });\r\n }\r\n\r\n /** Determines the amount of inactivity time before the Ui is hidden. Defaults to 3.5 seconds. */\r\n public static get inactivityTime(): number {\r\n return UiShowHideManager._inactivityTime;\r\n }\r\n public static set inactivityTime(time: number) {\r\n UiShowHideManager._inactivityTime = time;\r\n }\r\n\r\n /** Determines whether the proximity of the mouse should alter the opacity of a toolbar. Defaults to true. */\r\n public static get useProximityOpacity(): boolean {\r\n return UiShowHideManager._useProximityOpacity;\r\n }\r\n public static set useProximityOpacity(value: boolean) {\r\n UiShowHideManager._useProximityOpacity = value;\r\n void UiShowHideSettingsProvider.storeUseProximityOpacity(value);\r\n SyncUiEventDispatcher.dispatchImmediateSyncUiEvent(SyncUiEventId.ShowHideManagerSettingChange);\r\n UiFramework.onUiVisibilityChanged.emit({ visible: UiFramework.getIsUiVisible() });\r\n }\r\n\r\n /** Determines whether the opacity of a toolbar should snap. Defaults to false. */\r\n public static get snapWidgetOpacity(): boolean {\r\n return UiShowHideManager._snapWidgetOpacity;\r\n }\r\n public static set snapWidgetOpacity(value: boolean) {\r\n UiShowHideManager._snapWidgetOpacity = value;\r\n void UiShowHideSettingsProvider.storeSnapWidgetOpacity(value);\r\n SyncUiEventDispatcher.dispatchImmediateSyncUiEvent(SyncUiEventId.ShowHideManagerSettingChange);\r\n UiFramework.onUiVisibilityChanged.emit({ visible: UiFramework.getIsUiVisible() });\r\n }\r\n\r\n /** Handler for when a Frontstage is ready */\r\n public static handleFrontstageReady() {\r\n if (!UiShowHideManager._autoHideUi)\r\n return;\r\n\r\n UiShowHideManager.showUiAndResetTimer();\r\n }\r\n\r\n /** Handler for when the mouse moves over the content area */\r\n public static handleContentMouseMove(_event?: React.MouseEvent<HTMLElement, MouseEvent>) {\r\n if (!UiShowHideManager._autoHideUi)\r\n return;\r\n\r\n UiShowHideManager.showUiAndResetTimer();\r\n }\r\n\r\n /** Handler for when the mouse enters a widget */\r\n public static handleWidgetMouseEnter(_event?: React.MouseEvent<HTMLElement, MouseEvent>) {\r\n if (!UiShowHideManager._autoHideUi)\r\n return;\r\n\r\n UiShowHideManager.showUiAndCancelTimer();\r\n }\r\n\r\n /** Shows the Ui and resets the inactivity timer */\r\n public static showUiAndResetTimer() {\r\n setTimeout(() => {\r\n UiShowHideManager.showUi();\r\n UiShowHideManager.resetTimer();\r\n });\r\n }\r\n\r\n /** Shows the Ui and cancels the inactivity timer */\r\n public static showUiAndCancelTimer() {\r\n setTimeout(() => {\r\n UiShowHideManager.showUi();\r\n UiShowHideManager.cancelTimer();\r\n });\r\n }\r\n\r\n private static cancelTimer() {\r\n clearTimeout(UiShowHideManager._timeout);\r\n }\r\n\r\n private static resetTimer() {\r\n UiShowHideManager.cancelTimer();\r\n UiShowHideManager._timeout = setTimeout(UiShowHideManager.hideUi, UiShowHideManager._inactivityTime);\r\n }\r\n\r\n private static showUi() {\r\n UiFramework.setIsUiVisible(true);\r\n }\r\n\r\n private static hideUi() {\r\n UiFramework.setIsUiVisible(false);\r\n }\r\n\r\n /** @internal */\r\n public static terminate() {\r\n UiShowHideManager.cancelTimer();\r\n }\r\n}\r\n"]}
@@ -3,38 +3,39 @@
3
3
  */
4
4
  import "./Indicator.scss";
5
5
  import * as React from "react";
6
- import { ConditionalStringValue } from "@itwin/appui-abstract";
6
+ import { ConditionalStringValue, StatusBarLabelSide } from "@itwin/appui-abstract";
7
7
  import { CommonProps } from "@itwin/core-react";
8
+ import { FooterPopupContentType } from "@itwin/appui-layout-react";
8
9
  /** Properties of [[Indicator]] component. */
9
10
  interface IndicatorProps extends CommonProps {
10
- /** Label of balloon icon. */
11
+ /** Label of balloon icon. @deprecated use label */
11
12
  balloonLabel?: string;
12
- /** Dialog that is opened when indicator is clicked. */
13
+ /** Dialog to display in popup when indicator is clicked. */
13
14
  dialog?: React.ReactChild;
14
- /** Describes if the indicator label is visible. */
15
- isLabelVisible?: boolean;
16
- /** Icon to use in the footer. */
15
+ /** Icon to use in the footer. @deprecated use iconSpec */
17
16
  iconName?: string;
18
17
  /** specification for Icon, overrides iconName specification */
19
18
  iconSpec?: string | ConditionalStringValue;
19
+ /** Describes if the indicator label is visible. */
20
+ isLabelVisible?: boolean;
20
21
  /** Indicator label. */
21
22
  label?: string;
23
+ /** Side to display label. */
24
+ labelSide?: StatusBarLabelSide;
22
25
  /** Function called when indicator is clicked. */
23
26
  onClick?: () => void;
24
- /** Determines if indicator has been opened to show contained dialog */
25
- opened: boolean;
27
+ /** If dialog prop is set, used to determine initial state. */
28
+ opened?: boolean;
26
29
  /** Describes whether the footer is in footer or widget mode. */
27
30
  isInFooterMode?: boolean;
28
- /** Tooltip text */
31
+ /** Tooltip text if not specified label is used */
29
32
  toolTip?: string;
33
+ /** ContentType is used to determine color of popup arrow. If not set defaults to FooterPopupContentType.Dialog */
34
+ contentType?: FooterPopupContentType;
30
35
  }
31
36
  /** General-purpose [[Footer]] indicator. Shows an icon and supports an optional popup dialog.
32
37
  * @beta
33
38
  */
34
- export declare class Indicator extends React.Component<IndicatorProps, any> {
35
- constructor(props: IndicatorProps);
36
- private _handleOnIndicatorClick;
37
- render(): JSX.Element;
38
- }
39
+ export declare function Indicator(props: IndicatorProps): JSX.Element;
39
40
  export {};
40
41
  //# sourceMappingURL=Indicator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Indicator.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/statusfields/Indicator.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,kBAAkB,CAAC;AAE1B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAQ,MAAM,mBAAmB,CAAC;AAEtD,6CAA6C;AAC7C,UAAU,cAAe,SAAQ,WAAW;IAC1C,6BAA6B;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uDAAuD;IACvD,MAAM,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC;IAC1B,mDAAmD;IACnD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,GAAG,sBAAsB,CAAC;IAC3C,uBAAuB;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,uEAAuE;IACvE,MAAM,EAAE,OAAO,CAAC;IAChB,gEAAgE;IAChE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mBAAmB;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,SAAU,SAAQ,KAAK,CAAC,SAAS,CAAC,cAAc,EAAE,GAAG,CAAC;gBACrD,KAAK,EAAE,cAAc;IAIjC,OAAO,CAAC,uBAAuB,CAI7B;IAEc,MAAM;CA6BvB"}
1
+ {"version":3,"file":"Indicator.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/statusfields/Indicator.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,kBAAkB,CAAC;AAE1B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,WAAW,EAAQ,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAe,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEhF,6CAA6C;AAC7C,UAAU,cAAe,SAAQ,WAAW;IAC1C,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC;IAC1B,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,GAAG,sBAAsB,CAAC;IAC3C,mDAAmD;IACnD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,uBAAuB;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,8DAA8D;IAC9D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gEAAgE;IAChE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kHAAkH;IAClH,WAAW,CAAC,EAAE,sBAAsB,CAAC;CACtC;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,eA0C9C"}
@@ -8,30 +8,32 @@
8
8
  import "./Indicator.scss";
9
9
  import classnames from "classnames";
10
10
  import * as React from "react";
11
+ import { ConditionalStringValue, StatusBarLabelSide } from "@itwin/appui-abstract";
11
12
  import { Icon } from "@itwin/core-react";
13
+ import { FooterPopup } from "@itwin/appui-layout-react";
12
14
  /** General-purpose [[Footer]] indicator. Shows an icon and supports an optional popup dialog.
13
15
  * @beta
14
16
  */
15
- export class Indicator extends React.Component {
16
- constructor(props) {
17
- super(props);
18
- this._handleOnIndicatorClick = () => {
19
- // istanbul ignore else
20
- if (this.props.onClick)
21
- this.props.onClick();
22
- };
23
- }
24
- render() {
25
- const className = classnames("uifw-footer-indicator", this.props.isInFooterMode && "nz-footer-mode", this.props.className);
26
- const iconClassNames = classnames("icon", "uifw-indicator-icon", this.props.iconName ? this.props.iconName : /* istanbul ignore next */ "icon-placeholder");
27
- return (React.createElement("div", { className: className, title: this.props.toolTip ? this.props.toolTip : this.props.label, style: this.props.style },
28
- React.createElement("div", { className: "nz-balloon-container", onClick: this._handleOnIndicatorClick, role: "presentation" },
29
- (this.props.iconName && !this.props.iconSpec) && React.createElement("div", { className: iconClassNames }),
30
- this.props.iconSpec && React.createElement("div", { className: "uifw-indicator-icon" },
31
- " ",
32
- React.createElement(Icon, { iconSpec: this.props.iconSpec })),
33
- this.props.opened &&
34
- React.createElement("div", { className: "nz-dialog" }, this.props.dialog))));
35
- }
17
+ export function Indicator(props) {
18
+ const { className, contentType, dialog, iconName, iconSpec, isInFooterMode, isLabelVisible, label, labelSide, onClick, opened, style, toolTip } = props;
19
+ const hasClickAction = React.useMemo(() => !!onClick || !!dialog, [dialog, onClick]);
20
+ const [isOpen, setIsOpen] = React.useState(!!opened);
21
+ const handleOnIndicatorClick = React.useCallback(() => {
22
+ if (dialog) {
23
+ setIsOpen(!isOpen);
24
+ }
25
+ onClick && onClick();
26
+ }, [dialog, isOpen, onClick]);
27
+ const inFooter = React.useMemo(() => false === isInFooterMode ? false : true, [isInFooterMode]);
28
+ const target = React.useRef(null);
29
+ const icon = React.useMemo(() => iconSpec !== null && iconSpec !== void 0 ? iconSpec : iconName, [iconSpec, iconName]);
30
+ const title = React.useMemo(() => toolTip !== null && toolTip !== void 0 ? toolTip : label, [toolTip, label]);
31
+ const classNames = classnames("uifw-footer-label-left", "uifw-footer-indicator", inFooter && "nz-footer-mode", hasClickAction && "uifw-footer-action", labelSide === StatusBarLabelSide.Right && "uifw-footer-label-reversed", className);
32
+ return (React.createElement(React.Fragment, null,
33
+ React.createElement("div", { ref: target, role: "button", tabIndex: -1, className: classNames, title: title, style: style, onClick: handleOnIndicatorClick },
34
+ isLabelVisible && label && React.createElement("span", null, ConditionalStringValue.getValue(label)),
35
+ icon && React.createElement("div", { className: "uifw-indicator-icon" },
36
+ React.createElement(Icon, { iconSpec: icon }))),
37
+ dialog && React.createElement(FooterPopup, { contentType: contentType, target: target.current, onClose: () => setIsOpen(false), isOpen: isOpen }, dialog)));
36
38
  }
37
39
  //# sourceMappingURL=Indicator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Indicator.js","sourceRoot":"","sources":["../../../../src/appui-react/statusfields/Indicator.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,kBAAkB,CAAC;AAC1B,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAe,IAAI,EAAE,MAAM,mBAAmB,CAAC;AA0BtD;;GAEG;AACH,MAAM,OAAO,SAAU,SAAQ,KAAK,CAAC,SAA8B;IACjE,YAAY,KAAqB;QAC/B,KAAK,CAAC,KAAK,CAAC,CAAC;QAGP,4BAAuB,GAAG,GAAG,EAAE;YACrC,uBAAuB;YACvB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO;gBACpB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC,CAAC;IANF,CAAC;IAQe,MAAM;QACpB,MAAM,SAAS,GAAG,UAAU,CAC1B,uBAAuB,EACvB,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,gBAAgB,EAC7C,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAExB,MAAM,cAAc,GAAG,UAAU,CAC/B,MAAM,EACN,qBAAqB,EACrB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,0BAA0B,CAAC,kBAAkB,CAC1F,CAAC;QAEF,OAAO,CACL,6BACE,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EACjE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;YACvB,6BAAK,SAAS,EAAC,sBAAsB,EAAC,OAAO,EAAE,IAAI,CAAC,uBAAuB,EAAE,IAAI,EAAC,cAAc;gBAC7F,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,6BAAK,SAAS,EAAE,cAAc,GAAI;gBACnF,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,6BAAK,SAAS,EAAC,qBAAqB;;oBAAE,oBAAC,IAAI,IAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAI,CAAM;gBAC1G,IAAI,CAAC,KAAK,CAAC,MAAM;oBAChB,6BAAK,SAAS,EAAC,WAAW,IACvB,IAAI,CAAC,KAAK,CAAC,MAAM,CACd,CAEJ,CACF,CACP,CAAC;IACJ,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module StatusBar\r\n */\r\n\r\nimport \"./Indicator.scss\";\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { ConditionalStringValue } from \"@itwin/appui-abstract\";\r\nimport { CommonProps, Icon } from \"@itwin/core-react\";\r\n\r\n/** Properties of [[Indicator]] component. */\r\ninterface IndicatorProps extends CommonProps {\r\n /** Label of balloon icon. */\r\n balloonLabel?: string;\r\n /** Dialog that is opened when indicator is clicked. */\r\n dialog?: React.ReactChild;\r\n /** Describes if the indicator label is visible. */\r\n isLabelVisible?: boolean;\r\n /** Icon to use in the footer. */\r\n iconName?: string;\r\n /** specification for Icon, overrides iconName specification */\r\n iconSpec?: string | ConditionalStringValue;\r\n /** Indicator label. */\r\n label?: string;\r\n /** Function called when indicator is clicked. */\r\n onClick?: () => void;\r\n /** Determines if indicator has been opened to show contained dialog */\r\n opened: boolean;\r\n /** Describes whether the footer is in footer or widget mode. */\r\n isInFooterMode?: boolean;\r\n /** Tooltip text */\r\n toolTip?: string;\r\n}\r\n\r\n/** General-purpose [[Footer]] indicator. Shows an icon and supports an optional popup dialog.\r\n * @beta\r\n */\r\nexport class Indicator extends React.Component<IndicatorProps, any> {\r\n constructor(props: IndicatorProps) {\r\n super(props);\r\n }\r\n\r\n private _handleOnIndicatorClick = () => {\r\n // istanbul ignore else\r\n if (this.props.onClick)\r\n this.props.onClick();\r\n };\r\n\r\n public override render() {\r\n const className = classnames(\r\n \"uifw-footer-indicator\",\r\n this.props.isInFooterMode && \"nz-footer-mode\",\r\n this.props.className);\r\n\r\n const iconClassNames = classnames(\r\n \"icon\",\r\n \"uifw-indicator-icon\",\r\n this.props.iconName ? this.props.iconName : /* istanbul ignore next */ \"icon-placeholder\",\r\n );\r\n\r\n return (\r\n <div\r\n className={className}\r\n title={this.props.toolTip ? this.props.toolTip : this.props.label}\r\n style={this.props.style}>\r\n <div className=\"nz-balloon-container\" onClick={this._handleOnIndicatorClick} role=\"presentation\">\r\n {(this.props.iconName && !this.props.iconSpec) && <div className={iconClassNames} />}\r\n {this.props.iconSpec && <div className=\"uifw-indicator-icon\"> <Icon iconSpec={this.props.iconSpec} /></div>}\r\n {this.props.opened &&\r\n <div className=\"nz-dialog\">\r\n {this.props.dialog}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"Indicator.js","sourceRoot":"","sources":["../../../../src/appui-react/statusfields/Indicator.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module StatusBar\r\n */\r\n\r\nimport \"./Indicator.scss\";\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { ConditionalStringValue, StatusBarLabelSide } from \"@itwin/appui-abstract\";\r\nimport { CommonProps, Icon } from \"@itwin/core-react\";\r\nimport { FooterPopup, FooterPopupContentType } from \"@itwin/appui-layout-react\";\r\n\r\n/** Properties of [[Indicator]] component. */\r\ninterface IndicatorProps extends CommonProps {\r\n /** Label of balloon icon. @deprecated use label */\r\n balloonLabel?: string;\r\n /** Dialog to display in popup when indicator is clicked. */\r\n dialog?: React.ReactChild;\r\n /** Icon to use in the footer. @deprecated use iconSpec */\r\n iconName?: string;\r\n /** specification for Icon, overrides iconName specification */\r\n iconSpec?: string | ConditionalStringValue;\r\n /** Describes if the indicator label is visible. */\r\n isLabelVisible?: boolean;\r\n /** Indicator label. */\r\n label?: string;\r\n /** Side to display label. */\r\n labelSide?: StatusBarLabelSide;\r\n /** Function called when indicator is clicked. */\r\n onClick?: () => void;\r\n /** If dialog prop is set, used to determine initial state. */\r\n opened?: boolean;\r\n /** Describes whether the footer is in footer or widget mode. */\r\n isInFooterMode?: boolean;\r\n /** Tooltip text if not specified label is used */\r\n toolTip?: string;\r\n /** ContentType is used to determine color of popup arrow. If not set defaults to FooterPopupContentType.Dialog */\r\n contentType?: FooterPopupContentType;\r\n}\r\n\r\n/** General-purpose [[Footer]] indicator. Shows an icon and supports an optional popup dialog.\r\n * @beta\r\n */\r\nexport function Indicator(props: IndicatorProps) {\r\n const { className, contentType, dialog, iconName, iconSpec, isInFooterMode, isLabelVisible, label, labelSide, onClick, opened, style, toolTip } = props;\r\n const hasClickAction = React.useMemo(() => !!onClick || !!dialog, [dialog, onClick]);\r\n const [isOpen, setIsOpen] = React.useState(!!opened);\r\n const handleOnIndicatorClick = React.useCallback(() => {\r\n if (dialog) {\r\n setIsOpen(!isOpen);\r\n }\r\n onClick && onClick();\r\n }, [dialog, isOpen, onClick]);\r\n const inFooter = React.useMemo(() => false === isInFooterMode ? false : true, [isInFooterMode]);\r\n const target = React.useRef<HTMLDivElement>(null);\r\n const icon = React.useMemo(() => iconSpec ?? iconName, [iconSpec, iconName]);\r\n const title = React.useMemo(() => toolTip ?? label, [toolTip, label]);\r\n const classNames = classnames(\r\n \"uifw-footer-label-left\", \"uifw-footer-indicator\",\r\n inFooter && \"nz-footer-mode\",\r\n hasClickAction && \"uifw-footer-action\",\r\n labelSide === StatusBarLabelSide.Right && \"uifw-footer-label-reversed\",\r\n className);\r\n return (\r\n\r\n <>\r\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}\r\n <div ref={target}\r\n role=\"button\" tabIndex={-1}\r\n className={classNames}\r\n title={title}\r\n style={style}\r\n onClick={handleOnIndicatorClick}\r\n >\r\n {isLabelVisible && label && <span>{ConditionalStringValue.getValue(label)}</span>}\r\n {icon && <div className=\"uifw-indicator-icon\"><Icon iconSpec={icon} /></div>}\r\n </div>\r\n {dialog && <FooterPopup contentType={contentType}\r\n target={target.current}\r\n onClose={() => setIsOpen(false)}\r\n isOpen={isOpen}>\r\n {dialog}\r\n </FooterPopup>}\r\n </>\r\n );\r\n}\r\n"]}