@itwin/appui-react 5.0.0-dev.2 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +78 -1
- package/lib/appui-react/UiFramework.d.ts +2 -2
- package/lib/appui-react/UiFramework.d.ts.map +1 -1
- package/lib/appui-react/UiFramework.js +3 -1
- package/lib/appui-react/UiFramework.js.map +1 -1
- package/lib/appui-react/UiFramework.json +4 -0
- package/lib/appui-react/childwindow/ChildWindowWidget.d.ts.map +1 -1
- package/lib/appui-react/childwindow/ChildWindowWidget.js +4 -1
- package/lib/appui-react/childwindow/ChildWindowWidget.js.map +1 -1
- package/lib/appui-react/configurableui/ConfigurableUiContent.d.ts +1 -1
- package/lib/appui-react/dialog/StandardMessageBox.d.ts.map +1 -1
- package/lib/appui-react/dialog/StandardMessageBox.js +1 -1
- package/lib/appui-react/dialog/StandardMessageBox.js.map +1 -1
- package/lib/appui-react/framework/FrameworkFrontstages.d.ts +3 -3
- package/lib/appui-react/framework/FrameworkFrontstages.d.ts.map +1 -1
- package/lib/appui-react/framework/FrameworkFrontstages.js.map +1 -1
- package/lib/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
- package/lib/appui-react/frontstage/FrontstageDef.js +4 -0
- package/lib/appui-react/frontstage/FrontstageDef.js.map +1 -1
- package/lib/appui-react/frontstage/ModalFrontstage.d.ts +4 -2
- package/lib/appui-react/frontstage/ModalFrontstage.d.ts.map +1 -1
- package/lib/appui-react/frontstage/ModalFrontstage.js +5 -7
- package/lib/appui-react/frontstage/ModalFrontstage.js.map +1 -1
- package/lib/appui-react/frontstage/ModalFrontstage.scss +0 -5
- package/lib/appui-react/frontstage/ModalFrontstageButton.d.ts +22 -0
- package/lib/appui-react/frontstage/ModalFrontstageButton.d.ts.map +1 -0
- package/lib/appui-react/frontstage/ModalFrontstageButton.js +29 -0
- package/lib/appui-react/frontstage/ModalFrontstageButton.js.map +1 -0
- package/lib/appui-react/frontstage/ModalFrontstageButton.scss +21 -0
- package/lib/appui-react/icons/SvgAssetClassificationHide.d.ts +7 -0
- package/lib/appui-react/icons/SvgAssetClassificationHide.d.ts.map +1 -0
- package/lib/appui-react/icons/SvgAssetClassificationHide.js +14 -0
- package/lib/appui-react/icons/SvgAssetClassificationHide.js.map +1 -0
- package/lib/appui-react/icons/SvgAssetIsolate.d.ts +7 -0
- package/lib/appui-react/icons/SvgAssetIsolate.d.ts.map +1 -0
- package/lib/appui-react/icons/SvgAssetIsolate.js +14 -0
- package/lib/appui-react/icons/SvgAssetIsolate.js.map +1 -0
- package/lib/appui-react/icons/SvgGyroscope.d.ts +7 -0
- package/lib/appui-react/icons/SvgGyroscope.d.ts.map +1 -0
- package/lib/appui-react/icons/SvgGyroscope.js +15 -0
- package/lib/appui-react/icons/SvgGyroscope.js.map +1 -0
- package/lib/appui-react/icons/SvgLayersHide.d.ts +7 -0
- package/lib/appui-react/icons/SvgLayersHide.d.ts.map +1 -0
- package/lib/appui-react/icons/SvgLayersHide.js +14 -0
- package/lib/appui-react/icons/SvgLayersHide.js.map +1 -0
- package/lib/appui-react/icons/SvgLayersIsolate.d.ts +7 -0
- package/lib/appui-react/icons/SvgLayersIsolate.d.ts.map +1 -0
- package/lib/appui-react/icons/SvgLayersIsolate.js +14 -0
- package/lib/appui-react/icons/SvgLayersIsolate.js.map +1 -0
- package/lib/appui-react/icons/SvgModelHide.d.ts +7 -0
- package/lib/appui-react/icons/SvgModelHide.d.ts.map +1 -0
- package/lib/appui-react/icons/SvgModelHide.js +15 -0
- package/lib/appui-react/icons/SvgModelHide.js.map +1 -0
- package/lib/appui-react/icons/SvgModelIsolate.d.ts +7 -0
- package/lib/appui-react/icons/SvgModelIsolate.d.ts.map +1 -0
- package/lib/appui-react/icons/SvgModelIsolate.js +15 -0
- package/lib/appui-react/icons/SvgModelIsolate.js.map +1 -0
- package/lib/appui-react/icons/SvgSavedView.d.ts +7 -0
- package/lib/appui-react/icons/SvgSavedView.d.ts.map +1 -0
- package/lib/appui-react/icons/SvgSavedView.js +15 -0
- package/lib/appui-react/icons/SvgSavedView.js.map +1 -0
- package/lib/appui-react/icons/SvgSectionTool.d.ts +7 -0
- package/lib/appui-react/icons/SvgSectionTool.d.ts.map +1 -0
- package/lib/appui-react/icons/SvgSectionTool.js +15 -0
- package/lib/appui-react/icons/SvgSectionTool.js.map +1 -0
- package/lib/appui-react/icons/SvgSelectionClear.d.ts +7 -0
- package/lib/appui-react/icons/SvgSelectionClear.d.ts.map +1 -0
- package/lib/appui-react/icons/SvgSelectionClear.js +14 -0
- package/lib/appui-react/icons/SvgSelectionClear.js.map +1 -0
- package/lib/appui-react/icons/SvgViewLayouts.d.ts +7 -0
- package/lib/appui-react/icons/SvgViewLayouts.d.ts.map +1 -0
- package/lib/appui-react/icons/SvgViewLayouts.js +14 -0
- package/lib/appui-react/icons/SvgViewLayouts.js.map +1 -0
- package/lib/appui-react/icons/cube-faces/SvgCubeFaceBottom.d.ts +7 -0
- package/lib/appui-react/icons/cube-faces/SvgCubeFaceBottom.d.ts.map +1 -0
- package/lib/appui-react/icons/cube-faces/SvgCubeFaceBottom.js +15 -0
- package/lib/appui-react/icons/cube-faces/SvgCubeFaceBottom.js.map +1 -0
- package/lib/appui-react/icons/cube-faces/SvgCubeFaceFront.d.ts +7 -0
- package/lib/appui-react/icons/cube-faces/SvgCubeFaceFront.d.ts.map +1 -0
- package/lib/appui-react/icons/cube-faces/SvgCubeFaceFront.js +15 -0
- package/lib/appui-react/icons/cube-faces/SvgCubeFaceFront.js.map +1 -0
- package/lib/appui-react/icons/cube-faces/SvgCubeFaceIsoLeft.d.ts +7 -0
- package/lib/appui-react/icons/cube-faces/SvgCubeFaceIsoLeft.d.ts.map +1 -0
- package/lib/appui-react/icons/cube-faces/SvgCubeFaceIsoLeft.js +15 -0
- package/lib/appui-react/icons/cube-faces/SvgCubeFaceIsoLeft.js.map +1 -0
- package/lib/appui-react/icons/cube-faces/SvgCubeFaceIsoRight.d.ts +7 -0
- package/lib/appui-react/icons/cube-faces/SvgCubeFaceIsoRight.d.ts.map +1 -0
- package/lib/appui-react/icons/cube-faces/SvgCubeFaceIsoRight.js +15 -0
- package/lib/appui-react/icons/cube-faces/SvgCubeFaceIsoRight.js.map +1 -0
- package/lib/appui-react/icons/cube-faces/SvgCubeFaceLeft.d.ts +7 -0
- package/lib/appui-react/icons/cube-faces/SvgCubeFaceLeft.d.ts.map +1 -0
- package/lib/appui-react/icons/cube-faces/SvgCubeFaceLeft.js +15 -0
- package/lib/appui-react/icons/cube-faces/SvgCubeFaceLeft.js.map +1 -0
- package/lib/appui-react/icons/cube-faces/SvgCubeFaceRear.d.ts +7 -0
- package/lib/appui-react/icons/cube-faces/SvgCubeFaceRear.d.ts.map +1 -0
- package/lib/appui-react/icons/cube-faces/SvgCubeFaceRear.js +15 -0
- package/lib/appui-react/icons/cube-faces/SvgCubeFaceRear.js.map +1 -0
- package/lib/appui-react/icons/cube-faces/SvgCubeFaceRight.d.ts +7 -0
- package/lib/appui-react/icons/cube-faces/SvgCubeFaceRight.d.ts.map +1 -0
- package/lib/appui-react/icons/cube-faces/SvgCubeFaceRight.js +15 -0
- package/lib/appui-react/icons/cube-faces/SvgCubeFaceRight.js.map +1 -0
- package/lib/appui-react/icons/cube-faces/SvgCubeFaceTop.d.ts +7 -0
- package/lib/appui-react/icons/cube-faces/SvgCubeFaceTop.d.ts.map +1 -0
- package/lib/appui-react/icons/cube-faces/SvgCubeFaceTop.js +15 -0
- package/lib/appui-react/icons/cube-faces/SvgCubeFaceTop.js.map +1 -0
- package/lib/appui-react/icons/snaps/SvgSnaps.d.ts +7 -0
- package/lib/appui-react/icons/snaps/SvgSnaps.d.ts.map +1 -0
- package/lib/appui-react/icons/snaps/SvgSnaps.js +14 -0
- package/lib/appui-react/icons/snaps/SvgSnaps.js.map +1 -0
- package/lib/appui-react/icons/snaps/SvgSnapsBisector.d.ts +7 -0
- package/lib/appui-react/icons/snaps/SvgSnapsBisector.d.ts.map +1 -0
- package/lib/appui-react/icons/snaps/SvgSnapsBisector.js +14 -0
- package/lib/appui-react/icons/snaps/SvgSnapsBisector.js.map +1 -0
- package/lib/appui-react/icons/snaps/SvgSnapsCenter.d.ts +7 -0
- package/lib/appui-react/icons/snaps/SvgSnapsCenter.d.ts.map +1 -0
- package/lib/appui-react/icons/snaps/SvgSnapsCenter.js +14 -0
- package/lib/appui-react/icons/snaps/SvgSnapsCenter.js.map +1 -0
- package/lib/appui-react/icons/snaps/SvgSnapsIntersection.d.ts +7 -0
- package/lib/appui-react/icons/snaps/SvgSnapsIntersection.d.ts.map +1 -0
- package/lib/appui-react/icons/snaps/SvgSnapsIntersection.js +14 -0
- package/lib/appui-react/icons/snaps/SvgSnapsIntersection.js.map +1 -0
- package/lib/appui-react/icons/snaps/SvgSnapsMidpoint.d.ts +7 -0
- package/lib/appui-react/icons/snaps/SvgSnapsMidpoint.d.ts.map +1 -0
- package/lib/appui-react/icons/snaps/SvgSnapsMidpoint.js +14 -0
- package/lib/appui-react/icons/snaps/SvgSnapsMidpoint.js.map +1 -0
- package/lib/appui-react/icons/snaps/SvgSnapsNearest.d.ts +7 -0
- package/lib/appui-react/icons/snaps/SvgSnapsNearest.d.ts.map +1 -0
- package/lib/appui-react/icons/snaps/SvgSnapsNearest.js +14 -0
- package/lib/appui-react/icons/snaps/SvgSnapsNearest.js.map +1 -0
- package/lib/appui-react/icons/snaps/SvgSnapsOrigin.d.ts +7 -0
- package/lib/appui-react/icons/snaps/SvgSnapsOrigin.d.ts.map +1 -0
- package/lib/appui-react/icons/snaps/SvgSnapsOrigin.js +14 -0
- package/lib/appui-react/icons/snaps/SvgSnapsOrigin.js.map +1 -0
- package/lib/appui-react/layout/footer/snap-mode/Snap.d.ts.map +1 -1
- package/lib/appui-react/layout/footer/snap-mode/Snap.js +2 -2
- package/lib/appui-react/layout/footer/snap-mode/Snap.js.map +1 -1
- package/lib/appui-react/layout/footer/snap-mode/Snap.scss +4 -0
- package/lib/appui-react/layout/tool-settings/Docked.d.ts +2 -2
- package/lib/appui-react/layout/tool-settings/Docked.d.ts.map +1 -1
- package/lib/appui-react/layout/tool-settings/Docked.js +9 -11
- package/lib/appui-react/layout/tool-settings/Docked.js.map +1 -1
- package/lib/appui-react/layout/widget/Tabs.d.ts.map +1 -1
- package/lib/appui-react/layout/widget/Tabs.js +2 -1
- package/lib/appui-react/layout/widget/Tabs.js.map +1 -1
- package/lib/appui-react/messages/MessageManager.d.ts +1 -2
- package/lib/appui-react/messages/MessageManager.d.ts.map +1 -1
- package/lib/appui-react/messages/MessageManager.js +34 -13
- package/lib/appui-react/messages/MessageManager.js.map +1 -1
- package/lib/appui-react/navigationaids/StandardRotationNavigationAid.js +16 -16
- package/lib/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
- package/lib/appui-react/pickers/ViewSelector.d.ts.map +1 -1
- package/lib/appui-react/pickers/ViewSelector.js +5 -2
- package/lib/appui-react/pickers/ViewSelector.js.map +1 -1
- package/lib/appui-react/redux/FrameworkState.d.ts +5 -2
- package/lib/appui-react/redux/FrameworkState.d.ts.map +1 -1
- package/lib/appui-react/selection/SelectionContextItemDef.d.ts.map +1 -1
- package/lib/appui-react/selection/SelectionContextItemDef.js +21 -20
- package/lib/appui-react/selection/SelectionContextItemDef.js.map +1 -1
- package/lib/appui-react/settings/ui/UiSettingsPage.js +2 -2
- package/lib/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
- package/lib/appui-react/statusbar/StatusBarComposer.d.ts +5 -11
- package/lib/appui-react/statusbar/StatusBarComposer.d.ts.map +1 -1
- package/lib/appui-react/statusbar/StatusBarComposer.js +18 -118
- package/lib/appui-react/statusbar/StatusBarComposer.js.map +1 -1
- package/lib/appui-react/statusfields/SectionsField.js +2 -2
- package/lib/appui-react/statusfields/SectionsField.js.map +1 -1
- package/lib/appui-react/statusfields/SnapMode.d.ts.map +1 -1
- package/lib/appui-react/statusfields/SnapMode.js +21 -30
- package/lib/appui-react/statusfields/SnapMode.js.map +1 -1
- package/lib/appui-react/toolbar/ToolbarItemUtilities.d.ts.map +1 -1
- package/lib/appui-react/toolbar/ToolbarItemUtilities.js +5 -0
- package/lib/appui-react/toolbar/ToolbarItemUtilities.js.map +1 -1
- package/lib/appui-react/tools/CoreToolDefinitions.d.ts.map +1 -1
- package/lib/appui-react/tools/CoreToolDefinitions.js +12 -13
- package/lib/appui-react/tools/CoreToolDefinitions.js.map +1 -1
- package/lib/appui-react/tools/KeyinPaletteTools.d.ts +11 -6
- package/lib/appui-react/tools/KeyinPaletteTools.d.ts.map +1 -1
- package/lib/appui-react/tools/KeyinPaletteTools.js +12 -9
- package/lib/appui-react/tools/KeyinPaletteTools.js.map +1 -1
- package/lib/appui-react/tools/OpenSettingsTool.d.ts +10 -5
- package/lib/appui-react/tools/OpenSettingsTool.d.ts.map +1 -1
- package/lib/appui-react/tools/OpenSettingsTool.js +11 -8
- package/lib/appui-react/tools/OpenSettingsTool.js.map +1 -1
- package/lib/appui-react/tools/RestoreLayoutTool.d.ts +16 -8
- package/lib/appui-react/tools/RestoreLayoutTool.d.ts.map +1 -1
- package/lib/appui-react/tools/RestoreLayoutTool.js +17 -13
- package/lib/appui-react/tools/RestoreLayoutTool.js.map +1 -1
- package/lib/appui-react/widget-panels/Content.d.ts +2 -0
- package/lib/appui-react/widget-panels/Content.d.ts.map +1 -1
- package/lib/appui-react/widget-panels/Content.js +2 -1
- package/lib/appui-react/widget-panels/Content.js.map +1 -1
- package/lib/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
- package/lib/appui-react/widget-panels/Frontstage.js +3 -8
- package/lib/appui-react/widget-panels/Frontstage.js.map +1 -1
- package/lib/appui-react/widget-panels/ModalFrontstageComposer.d.ts.map +1 -1
- package/lib/appui-react/widget-panels/ModalFrontstageComposer.js +2 -2
- package/lib/appui-react/widget-panels/ModalFrontstageComposer.js.map +1 -1
- package/lib/appui-react/widgets/WidgetDef.d.ts +0 -1
- package/lib/appui-react/widgets/WidgetDef.d.ts.map +1 -1
- package/lib/appui-react/widgets/WidgetDef.js +0 -1
- package/lib/appui-react/widgets/WidgetDef.js.map +1 -1
- package/lib/appui-react.d.ts +1 -0
- package/lib/appui-react.d.ts.map +1 -1
- package/lib/appui-react.js +1 -0
- package/lib/appui-react.js.map +1 -1
- package/lib/cjs/appui-react/_variables.scss +11 -0
- package/lib/{appui-react/layout/widget/tools/button/Back.scss → cjs/appui-react/accudraw/AccuDrawDialog.scss} +5 -3
- package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.scss +20 -0
- package/lib/cjs/appui-react/accudraw/AccuDrawInputField.scss +56 -0
- package/lib/cjs/appui-react/accudraw/Calculator.scss +82 -0
- package/lib/cjs/appui-react/accudraw/MenuButton.scss +18 -0
- package/lib/cjs/appui-react/accudraw/SquareButton.scss +30 -0
- package/lib/cjs/appui-react/accudraw/angle.svg +1 -0
- package/lib/cjs/appui-react/accudraw/backspace.svg +9 -0
- package/lib/cjs/appui-react/accudraw/constraint-2d.svg +11 -0
- package/lib/cjs/appui-react/accudraw/distance.svg +1 -0
- package/lib/cjs/appui-react/accudraw/height-2.svg +10 -0
- package/lib/cjs/appui-react/accudraw/height.svg +11 -0
- package/lib/cjs/appui-react/childwindow/ChildWindowRenderer.scss +18 -0
- package/lib/cjs/appui-react/childwindow/ChildWindowWidget.scss +8 -0
- package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.scss +57 -0
- package/lib/cjs/appui-react/content/ContentLayout.scss +106 -0
- package/lib/cjs/appui-react/content/ContentOverlay.scss +19 -0
- package/lib/cjs/appui-react/content/DefaultViewOverlay.scss +41 -0
- package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopup.scss +33 -0
- package/lib/cjs/appui-react/cursor/cursorprompt/CursorPrompt.scss +30 -0
- package/lib/cjs/appui-react/dialog/DialogManagerBase.scss +11 -0
- package/lib/cjs/appui-react/feedback/ElementTooltip.scss +29 -0
- package/lib/cjs/appui-react/feedback/ValidationTextbox.scss +49 -0
- package/lib/cjs/appui-react/frontstage/ModalFrontstage.scss +76 -0
- package/lib/cjs/appui-react/frontstage/ModalFrontstageButton.scss +21 -0
- package/lib/cjs/appui-react/frontstage/ModalSettingsStage.scss +12 -0
- package/lib/cjs/appui-react/layers.scss +11 -0
- package/lib/cjs/appui-react/layout/StandardLayout.scss +92 -0
- package/lib/cjs/appui-react/layout/_prefix.scss +33 -0
- package/lib/cjs/appui-react/layout/_safearea.scss +26 -0
- package/lib/cjs/appui-react/layout/_scrollbar.scss +22 -0
- package/lib/cjs/appui-react/layout/_target.scss +10 -0
- package/lib/cjs/appui-react/layout/_widgetopacity.scss +15 -0
- package/lib/cjs/appui-react/layout/backstage/Backstage.scss +90 -0
- package/lib/cjs/appui-react/layout/backstage/Item.scss +107 -0
- package/lib/cjs/appui-react/layout/backstage/Separator.scss +10 -0
- package/lib/cjs/appui-react/layout/backstage/_variables.scss +32 -0
- package/lib/cjs/appui-react/layout/footer/dialog/Dialog.scss +12 -0
- package/lib/cjs/appui-react/layout/footer/dialog/TitleBar.scss +30 -0
- package/lib/cjs/appui-react/layout/footer/dialog/_variables.scss +8 -0
- package/lib/cjs/appui-react/layout/footer/snap-mode/Panel.scss +19 -0
- package/lib/cjs/appui-react/layout/footer/snap-mode/Snap.scss +50 -0
- package/lib/cjs/appui-react/layout/footer/tool-assistance/Dialog.scss +15 -0
- package/lib/cjs/appui-react/layout/footer/tool-assistance/Instruction.scss +28 -0
- package/lib/cjs/appui-react/layout/footer/tool-assistance/Item.scss +13 -0
- package/lib/cjs/appui-react/layout/footer/tool-assistance/NewDot.scss +11 -0
- package/lib/cjs/appui-react/layout/footer/tool-assistance/Separator.scss +20 -0
- package/lib/cjs/appui-react/layout/outline/PanelOutline.scss +63 -0
- package/lib/cjs/appui-react/layout/outline/SectionOutline.scss +47 -0
- package/lib/cjs/appui-react/layout/outline/TabOutline.scss +18 -0
- package/lib/cjs/appui-react/layout/outline/WidgetOutline.scss +16 -0
- package/lib/cjs/appui-react/layout/outline/_variables.scss +7 -0
- package/lib/cjs/appui-react/layout/popup/Tooltip.scss +22 -0
- package/lib/cjs/appui-react/layout/target/MergeTarget.scss +17 -0
- package/lib/cjs/appui-react/layout/target/PanelTarget.scss +27 -0
- package/lib/cjs/appui-react/layout/target/PanelTargets.scss +52 -0
- package/lib/cjs/appui-react/layout/target/SectionTarget.scss +47 -0
- package/lib/cjs/appui-react/layout/target/SectionTargets.scss +13 -0
- package/lib/cjs/appui-react/layout/target/TabTarget.scss +30 -0
- package/lib/cjs/appui-react/layout/target/TargetContainer.scss +17 -0
- package/lib/cjs/appui-react/layout/target/TitleBarTarget.scss +17 -0
- package/lib/cjs/appui-react/layout/target/WidgetTarget.scss +11 -0
- package/lib/cjs/appui-react/layout/target/_variables.scss +66 -0
- package/lib/cjs/appui-react/layout/tool-settings/Docked.scss +30 -0
- package/lib/cjs/appui-react/layout/tool-settings/Handle.scss +17 -0
- package/lib/cjs/appui-react/layout/tool-settings/Overflow.scss +11 -0
- package/lib/cjs/appui-react/layout/tool-settings/Panel.scss +8 -0
- package/lib/cjs/appui-react/layout/tool-settings/Setting.scss +10 -0
- package/lib/cjs/appui-react/layout/widget/Buttons.scss +10 -0
- package/lib/cjs/appui-react/layout/widget/Content.scss +13 -0
- package/lib/cjs/appui-react/layout/widget/ContentContainer.scss +24 -0
- package/lib/cjs/appui-react/layout/widget/ContentRenderer.scss +18 -0
- package/lib/cjs/appui-react/layout/widget/FloatingTab.scss +36 -0
- package/lib/cjs/appui-react/layout/widget/FloatingWidget.scss +128 -0
- package/lib/cjs/appui-react/layout/widget/Menu.scss +12 -0
- package/lib/cjs/appui-react/layout/widget/MenuTab.scss +59 -0
- package/lib/cjs/appui-react/layout/widget/NavigationArea.scss +57 -0
- package/lib/cjs/appui-react/layout/widget/Overflow.scss +58 -0
- package/lib/cjs/appui-react/layout/widget/PanelWidget.scss +62 -0
- package/lib/cjs/appui-react/layout/widget/Tab.scss +90 -0
- package/lib/cjs/appui-react/layout/widget/TabBar.scss +29 -0
- package/lib/cjs/appui-react/layout/widget/Tabs.scss +10 -0
- package/lib/cjs/appui-react/layout/widget/ToolsArea.scss +51 -0
- package/lib/cjs/appui-react/layout/widget/Widget.scss +12 -0
- package/lib/cjs/appui-react/layout/widget/_variables.scss +50 -0
- package/lib/cjs/appui-react/layout/widget/tools/button/Button.scss +49 -0
- package/lib/cjs/appui-react/layout/widget/tools/button/Expandable.scss +46 -0
- package/lib/cjs/appui-react/layout/widget/tools/button/Icon.scss +54 -0
- package/lib/cjs/appui-react/layout/widget/tools/button/_variables.scss +42 -0
- package/lib/cjs/appui-react/layout/widget-panels/CursorOverlay.scss +25 -0
- package/lib/cjs/appui-react/layout/widget-panels/Expander.scss +37 -0
- package/lib/cjs/appui-react/layout/widget-panels/Grip.scss +141 -0
- package/lib/cjs/appui-react/layout/widget-panels/Panel.scss +258 -0
- package/lib/cjs/appui-react/layout/widget-panels/PanelSections.scss +60 -0
- package/lib/cjs/appui-react/layout/widget-panels/_variables.scss +6 -0
- package/lib/cjs/appui-react/messages/InputField.scss +77 -0
- package/lib/cjs/appui-react/messages/Pointer.scss +42 -0
- package/lib/cjs/appui-react/navigationaids/SheetNavigationAid.scss +50 -0
- package/lib/cjs/appui-react/navigationaids/SheetsModalFrontstage.scss +74 -0
- package/lib/cjs/appui-react/navigationaids/StandardRotationNavigationAid.scss +13 -0
- package/lib/cjs/appui-react/pickers/ListPicker.scss +316 -0
- package/lib/cjs/appui-react/popup/CardPopup.scss +24 -0
- package/lib/cjs/appui-react/popup/KeyinPalettePanel.scss +30 -0
- package/lib/cjs/appui-react/popup/PositionPopup.scss +27 -0
- package/lib/cjs/appui-react/preview/content-always-max-size/useContentAlwaysMaxSize.scss +10 -0
- package/lib/cjs/appui-react/preview/control-widget-visibility/NavigationWidget.scss +17 -0
- package/lib/cjs/appui-react/preview/enable-maximized-widget/useMaximizedWidget.scss +36 -0
- package/lib/cjs/appui-react/preview/horizontal-panel-alignment/useHorizontalPanelAlignment.scss +49 -0
- package/lib/cjs/appui-react/preview/reparent-popout-widgets/PopoutThemeProvider.scss +7 -0
- package/lib/cjs/appui-react/preview/reparent-popout-widgets/ReparentedPopoutWidget.scss +8 -0
- package/lib/cjs/appui-react/settings/quantityformatting/QuantityFormat.scss +120 -0
- package/lib/cjs/appui-react/settings/ui/UiSettingsPage.scss +61 -0
- package/lib/cjs/appui-react/statusbar/Field.scss +20 -0
- package/lib/cjs/appui-react/statusbar/LabelIndicator.scss +18 -0
- package/lib/cjs/appui-react/statusbar/Overflow.scss +15 -0
- package/lib/cjs/appui-react/statusbar/Separator.scss +11 -0
- package/lib/cjs/appui-react/statusbar/StatusBar.scss +89 -0
- package/lib/cjs/appui-react/statusbar/popup/ExpandIndicator.scss +17 -0
- package/lib/cjs/appui-react/statusbar/popup/Popup.scss +12 -0
- package/lib/cjs/appui-react/statusfields/SectionsField.scss +33 -0
- package/lib/cjs/appui-react/statusfields/SelectionCount.scss +23 -0
- package/lib/cjs/appui-react/statusfields/SelectionScope.scss +17 -0
- package/lib/cjs/appui-react/statusfields/ViewAttributes.scss +10 -0
- package/lib/cjs/appui-react/statusfields/message-center/MessageCenterField.scss +24 -0
- package/lib/cjs/appui-react/statusfields/message-center/MessageCenterMessage.scss +28 -0
- package/lib/cjs/appui-react/statusfields/tileloading/TileLoadingIndicator.scss +45 -0
- package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.scss +167 -0
- package/lib/cjs/appui-react/statusfields/toolassistance/accept-point.svg +1 -0
- package/lib/cjs/appui-react/statusfields/toolassistance/cursor-click.svg +1 -0
- package/lib/cjs/appui-react/statusfields/toolassistance/gesture-one-finger-drag.svg +1 -0
- package/lib/cjs/appui-react/statusfields/toolassistance/gesture-one-finger-tap-double.svg +1 -0
- package/lib/cjs/appui-react/statusfields/toolassistance/gesture-one-finger-tap.svg +1 -0
- package/lib/cjs/appui-react/statusfields/toolassistance/gesture-pinch.svg +1 -0
- package/lib/cjs/appui-react/statusfields/toolassistance/gesture-two-finger-drag.svg +1 -0
- package/lib/cjs/appui-react/statusfields/toolassistance/gesture-two-finger-tap.svg +1 -0
- package/lib/cjs/appui-react/statusfields/toolassistance/mouse-click-left-drag.svg +1 -0
- package/lib/cjs/appui-react/statusfields/toolassistance/mouse-click-left.svg +1 -0
- package/lib/cjs/appui-react/statusfields/toolassistance/mouse-click-right-drag.svg +1 -0
- package/lib/cjs/appui-react/statusfields/toolassistance/mouse-click-right.svg +1 -0
- package/lib/cjs/appui-react/statusfields/toolassistance/mouse-click-wheel-drag.svg +1 -0
- package/lib/cjs/appui-react/statusfields/toolassistance/mouse-click-wheel.svg +1 -0
- package/lib/cjs/appui-react/statusfields/toolassistance/touch-cursor-pan.svg +1 -0
- package/lib/cjs/appui-react/statusfields/toolassistance/touch-cursor-point.svg +1 -0
- package/lib/cjs/appui-react/theme/ThemeManager.scss +9 -0
- package/lib/cjs/appui-react/toolbar/new-toolbars/Badge.scss +13 -0
- package/lib/cjs/appui-react/toolbar/new-toolbars/ExpandIndicator.scss +17 -0
- package/lib/cjs/appui-react/toolbar/new-toolbars/Surface.scss +35 -0
- package/lib/cjs/appui-react/toolbar/new-toolbars/ToolGroup.scss +17 -0
- package/lib/cjs/appui-react/uiprovider/DefaultDialogGridContainer.scss +103 -0
- package/lib/cjs/appui-react/widget-panels/DockedBar.scss +18 -0
- package/lib/cjs/appui-react/widget-panels/Frontstage.scss +19 -0
- package/lib/cjs/appui-react/widget-panels/ToolSettings.scss +12 -0
- package/lib/cjs/appui-react/widget-panels/Toolbars.scss +22 -0
- package/lib/cjs/appui-react/widgets/BackstageAppButton.scss +46 -0
- package/lib/esm/appui-react/_variables.scss +11 -0
- package/lib/esm/appui-react/accudraw/AccuDrawDialog.scss +11 -0
- package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.scss +20 -0
- package/lib/esm/appui-react/accudraw/AccuDrawInputField.scss +56 -0
- package/lib/esm/appui-react/accudraw/Calculator.scss +82 -0
- package/lib/esm/appui-react/accudraw/MenuButton.scss +18 -0
- package/lib/esm/appui-react/accudraw/SquareButton.scss +30 -0
- package/lib/esm/appui-react/accudraw/angle.svg +1 -0
- package/lib/esm/appui-react/accudraw/backspace.svg +9 -0
- package/lib/esm/appui-react/accudraw/constraint-2d.svg +11 -0
- package/lib/esm/appui-react/accudraw/distance.svg +1 -0
- package/lib/esm/appui-react/accudraw/height-2.svg +10 -0
- package/lib/esm/appui-react/accudraw/height.svg +11 -0
- package/lib/esm/appui-react/childwindow/ChildWindowRenderer.scss +18 -0
- package/lib/esm/appui-react/childwindow/ChildWindowWidget.scss +8 -0
- package/lib/esm/appui-react/configurableui/ConfigurableUiContent.scss +57 -0
- package/lib/esm/appui-react/content/ContentLayout.scss +106 -0
- package/lib/esm/appui-react/content/ContentOverlay.scss +19 -0
- package/lib/esm/appui-react/content/DefaultViewOverlay.scss +41 -0
- package/lib/esm/appui-react/cursor/cursorpopup/CursorPopup.scss +33 -0
- package/lib/esm/appui-react/cursor/cursorprompt/CursorPrompt.scss +30 -0
- package/lib/esm/appui-react/dialog/DialogManagerBase.scss +11 -0
- package/lib/esm/appui-react/feedback/ElementTooltip.scss +29 -0
- package/lib/esm/appui-react/feedback/ValidationTextbox.scss +49 -0
- package/lib/esm/appui-react/frontstage/ModalFrontstage.scss +76 -0
- package/lib/esm/appui-react/frontstage/ModalFrontstageButton.scss +21 -0
- package/lib/esm/appui-react/frontstage/ModalSettingsStage.scss +12 -0
- package/lib/esm/appui-react/layers.scss +11 -0
- package/lib/esm/appui-react/layout/StandardLayout.scss +92 -0
- package/lib/esm/appui-react/layout/_prefix.scss +33 -0
- package/lib/esm/appui-react/layout/_safearea.scss +26 -0
- package/lib/esm/appui-react/layout/_scrollbar.scss +22 -0
- package/lib/esm/appui-react/layout/_target.scss +10 -0
- package/lib/esm/appui-react/layout/_widgetopacity.scss +15 -0
- package/lib/esm/appui-react/layout/backstage/Backstage.scss +90 -0
- package/lib/esm/appui-react/layout/backstage/Item.scss +107 -0
- package/lib/esm/appui-react/layout/backstage/Separator.scss +10 -0
- package/lib/esm/appui-react/layout/backstage/_variables.scss +32 -0
- package/lib/esm/appui-react/layout/footer/dialog/Dialog.scss +12 -0
- package/lib/esm/appui-react/layout/footer/dialog/TitleBar.scss +30 -0
- package/lib/esm/appui-react/layout/footer/dialog/_variables.scss +8 -0
- package/lib/esm/appui-react/layout/footer/snap-mode/Panel.scss +19 -0
- package/lib/esm/appui-react/layout/footer/snap-mode/Snap.scss +50 -0
- package/lib/esm/appui-react/layout/footer/tool-assistance/Dialog.scss +15 -0
- package/lib/esm/appui-react/layout/footer/tool-assistance/Instruction.scss +28 -0
- package/lib/esm/appui-react/layout/footer/tool-assistance/Item.scss +13 -0
- package/lib/esm/appui-react/layout/footer/tool-assistance/NewDot.scss +11 -0
- package/lib/esm/appui-react/layout/footer/tool-assistance/Separator.scss +20 -0
- package/lib/esm/appui-react/layout/outline/PanelOutline.scss +63 -0
- package/lib/esm/appui-react/layout/outline/SectionOutline.scss +47 -0
- package/lib/esm/appui-react/layout/outline/TabOutline.scss +18 -0
- package/lib/esm/appui-react/layout/outline/WidgetOutline.scss +16 -0
- package/lib/esm/appui-react/layout/outline/_variables.scss +7 -0
- package/lib/esm/appui-react/layout/popup/Tooltip.scss +22 -0
- package/lib/esm/appui-react/layout/target/MergeTarget.scss +17 -0
- package/lib/esm/appui-react/layout/target/PanelTarget.scss +27 -0
- package/lib/esm/appui-react/layout/target/PanelTargets.scss +52 -0
- package/lib/esm/appui-react/layout/target/SectionTarget.scss +47 -0
- package/lib/esm/appui-react/layout/target/SectionTargets.scss +13 -0
- package/lib/esm/appui-react/layout/target/TabTarget.scss +30 -0
- package/lib/esm/appui-react/layout/target/TargetContainer.scss +17 -0
- package/lib/esm/appui-react/layout/target/TitleBarTarget.scss +17 -0
- package/lib/esm/appui-react/layout/target/WidgetTarget.scss +11 -0
- package/lib/esm/appui-react/layout/target/_variables.scss +66 -0
- package/lib/esm/appui-react/layout/tool-settings/Docked.scss +30 -0
- package/lib/esm/appui-react/layout/tool-settings/Handle.scss +17 -0
- package/lib/esm/appui-react/layout/tool-settings/Overflow.scss +11 -0
- package/lib/esm/appui-react/layout/tool-settings/Panel.scss +8 -0
- package/lib/esm/appui-react/layout/tool-settings/Setting.scss +10 -0
- package/lib/esm/appui-react/layout/widget/Buttons.scss +10 -0
- package/lib/esm/appui-react/layout/widget/Content.scss +13 -0
- package/lib/esm/appui-react/layout/widget/ContentContainer.scss +24 -0
- package/lib/esm/appui-react/layout/widget/ContentRenderer.scss +18 -0
- package/lib/esm/appui-react/layout/widget/FloatingTab.scss +36 -0
- package/lib/esm/appui-react/layout/widget/FloatingWidget.scss +128 -0
- package/lib/esm/appui-react/layout/widget/Menu.scss +12 -0
- package/lib/esm/appui-react/layout/widget/MenuTab.scss +59 -0
- package/lib/esm/appui-react/layout/widget/NavigationArea.scss +57 -0
- package/lib/esm/appui-react/layout/widget/Overflow.scss +58 -0
- package/lib/esm/appui-react/layout/widget/PanelWidget.scss +62 -0
- package/lib/esm/appui-react/layout/widget/Tab.scss +90 -0
- package/lib/esm/appui-react/layout/widget/TabBar.scss +29 -0
- package/lib/esm/appui-react/layout/widget/Tabs.scss +10 -0
- package/lib/esm/appui-react/layout/widget/ToolsArea.scss +51 -0
- package/lib/esm/appui-react/layout/widget/Widget.scss +12 -0
- package/lib/esm/appui-react/layout/widget/_variables.scss +50 -0
- package/lib/esm/appui-react/layout/widget/tools/button/Button.scss +49 -0
- package/lib/esm/appui-react/layout/widget/tools/button/Expandable.scss +46 -0
- package/lib/esm/appui-react/layout/widget/tools/button/Icon.scss +54 -0
- package/lib/esm/appui-react/layout/widget/tools/button/_variables.scss +42 -0
- package/lib/esm/appui-react/layout/widget-panels/CursorOverlay.scss +25 -0
- package/lib/esm/appui-react/layout/widget-panels/Expander.scss +37 -0
- package/lib/esm/appui-react/layout/widget-panels/Grip.scss +141 -0
- package/lib/esm/appui-react/layout/widget-panels/Panel.scss +258 -0
- package/lib/esm/appui-react/layout/widget-panels/PanelSections.scss +60 -0
- package/lib/esm/appui-react/layout/widget-panels/_variables.scss +6 -0
- package/lib/esm/appui-react/messages/InputField.scss +77 -0
- package/lib/esm/appui-react/messages/Pointer.scss +42 -0
- package/lib/esm/appui-react/navigationaids/SheetNavigationAid.scss +50 -0
- package/lib/esm/appui-react/navigationaids/SheetsModalFrontstage.scss +74 -0
- package/lib/esm/appui-react/navigationaids/StandardRotationNavigationAid.scss +13 -0
- package/lib/esm/appui-react/pickers/ListPicker.scss +316 -0
- package/lib/esm/appui-react/popup/CardPopup.scss +24 -0
- package/lib/esm/appui-react/popup/KeyinPalettePanel.scss +30 -0
- package/lib/esm/appui-react/popup/PositionPopup.scss +27 -0
- package/lib/esm/appui-react/preview/content-always-max-size/useContentAlwaysMaxSize.scss +10 -0
- package/lib/esm/appui-react/preview/control-widget-visibility/NavigationWidget.scss +17 -0
- package/lib/esm/appui-react/preview/enable-maximized-widget/useMaximizedWidget.scss +36 -0
- package/lib/esm/appui-react/preview/horizontal-panel-alignment/useHorizontalPanelAlignment.scss +49 -0
- package/lib/esm/appui-react/preview/reparent-popout-widgets/PopoutThemeProvider.scss +7 -0
- package/lib/esm/appui-react/preview/reparent-popout-widgets/ReparentedPopoutWidget.scss +8 -0
- package/lib/esm/appui-react/settings/quantityformatting/QuantityFormat.scss +120 -0
- package/lib/esm/appui-react/settings/ui/UiSettingsPage.scss +61 -0
- package/lib/esm/appui-react/statusbar/Field.scss +20 -0
- package/lib/esm/appui-react/statusbar/LabelIndicator.scss +18 -0
- package/lib/esm/appui-react/statusbar/Overflow.scss +15 -0
- package/lib/esm/appui-react/statusbar/Separator.scss +11 -0
- package/lib/esm/appui-react/statusbar/StatusBar.scss +89 -0
- package/lib/esm/appui-react/statusbar/popup/ExpandIndicator.scss +17 -0
- package/lib/esm/appui-react/statusbar/popup/Popup.scss +12 -0
- package/lib/esm/appui-react/statusfields/SectionsField.scss +33 -0
- package/lib/esm/appui-react/statusfields/SelectionCount.scss +23 -0
- package/lib/esm/appui-react/statusfields/SelectionScope.scss +17 -0
- package/lib/esm/appui-react/statusfields/ViewAttributes.scss +10 -0
- package/lib/esm/appui-react/statusfields/message-center/MessageCenterField.scss +24 -0
- package/lib/esm/appui-react/statusfields/message-center/MessageCenterMessage.scss +28 -0
- package/lib/esm/appui-react/statusfields/tileloading/TileLoadingIndicator.scss +45 -0
- package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.scss +167 -0
- package/lib/esm/appui-react/statusfields/toolassistance/accept-point.svg +1 -0
- package/lib/esm/appui-react/statusfields/toolassistance/cursor-click.svg +1 -0
- package/lib/esm/appui-react/statusfields/toolassistance/gesture-one-finger-drag.svg +1 -0
- package/lib/esm/appui-react/statusfields/toolassistance/gesture-one-finger-tap-double.svg +1 -0
- package/lib/esm/appui-react/statusfields/toolassistance/gesture-one-finger-tap.svg +1 -0
- package/lib/esm/appui-react/statusfields/toolassistance/gesture-pinch.svg +1 -0
- package/lib/esm/appui-react/statusfields/toolassistance/gesture-two-finger-drag.svg +1 -0
- package/lib/esm/appui-react/statusfields/toolassistance/gesture-two-finger-tap.svg +1 -0
- package/lib/esm/appui-react/statusfields/toolassistance/mouse-click-left-drag.svg +1 -0
- package/lib/esm/appui-react/statusfields/toolassistance/mouse-click-left.svg +1 -0
- package/lib/esm/appui-react/statusfields/toolassistance/mouse-click-right-drag.svg +1 -0
- package/lib/esm/appui-react/statusfields/toolassistance/mouse-click-right.svg +1 -0
- package/lib/esm/appui-react/statusfields/toolassistance/mouse-click-wheel-drag.svg +1 -0
- package/lib/esm/appui-react/statusfields/toolassistance/mouse-click-wheel.svg +1 -0
- package/lib/esm/appui-react/statusfields/toolassistance/touch-cursor-pan.svg +1 -0
- package/lib/esm/appui-react/statusfields/toolassistance/touch-cursor-point.svg +1 -0
- package/lib/esm/appui-react/theme/ThemeManager.scss +9 -0
- package/lib/esm/appui-react/toolbar/new-toolbars/Badge.scss +13 -0
- package/lib/esm/appui-react/toolbar/new-toolbars/ExpandIndicator.scss +17 -0
- package/lib/esm/appui-react/toolbar/new-toolbars/Surface.scss +35 -0
- package/lib/esm/appui-react/toolbar/new-toolbars/ToolGroup.scss +17 -0
- package/lib/esm/appui-react/uiprovider/DefaultDialogGridContainer.scss +103 -0
- package/lib/esm/appui-react/widget-panels/DockedBar.scss +18 -0
- package/lib/esm/appui-react/widget-panels/Frontstage.scss +19 -0
- package/lib/esm/appui-react/widget-panels/ToolSettings.scss +12 -0
- package/lib/esm/appui-react/widget-panels/Toolbars.scss +22 -0
- package/lib/esm/appui-react/widgets/BackstageAppButton.scss +46 -0
- package/lib/public/locales/en/UiFramework.json +4 -0
- package/package.json +17 -24
|
@@ -39,7 +39,8 @@ export function DockedToolSettings(props) {
|
|
|
39
39
|
const ref = React.useRef(null);
|
|
40
40
|
const width = React.useRef(undefined);
|
|
41
41
|
const handleWidth = React.useRef(undefined);
|
|
42
|
-
const
|
|
42
|
+
const childrenKeys = React.Children.toArray(props.children).map((child, index) => getChildKey(child, index));
|
|
43
|
+
const [overflown, handleContainerResize, handleOverflowResize, getOnEntryResize, handleGapResize,] = useOverflow(childrenKeys);
|
|
43
44
|
const onResize = React.useCallback(() => {
|
|
44
45
|
let gapSize = 0;
|
|
45
46
|
if (ref.current) {
|
|
@@ -181,7 +182,7 @@ export function getOverflown(width, docked, overflowWidth, activeIndex, gapSize
|
|
|
181
182
|
/** Hook that returns a list of overflown children keys.
|
|
182
183
|
* @internal
|
|
183
184
|
*/
|
|
184
|
-
export function useOverflow(
|
|
185
|
+
export function useOverflow(itemKeys, activeItemIndex) {
|
|
185
186
|
const [overflown, setOverflown] = React.useState();
|
|
186
187
|
const entryWidths = React.useRef(new Map());
|
|
187
188
|
const width = React.useRef(undefined);
|
|
@@ -196,25 +197,22 @@ export function useOverflow(children, activeChildIndex) {
|
|
|
196
197
|
return;
|
|
197
198
|
}
|
|
198
199
|
// Calculate overflow.
|
|
199
|
-
const newOverflown = getOverflown(width.current, [...widths.entries()], overflowWidth.current,
|
|
200
|
+
const newOverflown = getOverflown(width.current, [...widths.entries()], overflowWidth.current, activeItemIndex, gapSize.current);
|
|
200
201
|
setOverflown((prevOverflown) => {
|
|
201
202
|
return eqlOverflown(prevOverflown, newOverflown)
|
|
202
203
|
? prevOverflown
|
|
203
204
|
: newOverflown;
|
|
204
205
|
});
|
|
205
|
-
}, [
|
|
206
|
+
}, [activeItemIndex]);
|
|
206
207
|
React.useLayoutEffect(() => {
|
|
207
208
|
const newEntryWidths = new Map();
|
|
208
|
-
const
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
const key = getChildKey(child, i);
|
|
212
|
-
const lastW = entryWidths.current.get(key);
|
|
213
|
-
newEntryWidths.set(key, lastW);
|
|
209
|
+
for (const itemKey of itemKeys) {
|
|
210
|
+
const lastW = entryWidths.current.get(itemKey);
|
|
211
|
+
newEntryWidths.set(itemKey, lastW);
|
|
214
212
|
}
|
|
215
213
|
entryWidths.current = newEntryWidths;
|
|
216
214
|
calculateOverflow();
|
|
217
|
-
}, [
|
|
215
|
+
}, [itemKeys, calculateOverflow]);
|
|
218
216
|
const handleContainerResize = React.useCallback((w) => {
|
|
219
217
|
const calculate = width.current !== w;
|
|
220
218
|
width.current = w;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Docked.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/tool-settings/Docked.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module ToolSettings\n */\n\nimport \"./Docked.scss\";\nimport { assert } from \"@itwin/core-bentley\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { getCssVariableAsNumber } from \"@itwin/core-react\";\nimport { useRefs, useResizeObserver } from \"@itwin/core-react/internal\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { CSSTransition, TransitionGroup } from \"react-transition-group\";\nimport { AnimateDockedToolSettingsContext } from \"../base/NineZone.js\";\nimport { DockedToolSettingsHandle } from \"./Handle.js\";\nimport { DockedToolSettingsOverflow } from \"./Overflow.js\";\nimport { ToolSettingsOverflowPanel } from \"./Panel.js\";\n\n/** @internal */\nexport function onOverflowLabelAndEditorResize() {}\n\n/** This component takes a DockedToolSetting \"wrapper\" component and extract only the label and editor components from it */\nfunction OverflowLabelAndEditor({ wrapper }: { wrapper: React.ReactNode }) {\n assert(React.isValidElement(wrapper));\n const entryValue = React.useMemo<DockedToolSettingsEntryContextArgs>(\n () => ({\n isOverflown: true,\n onResize: onOverflowLabelAndEditorResize,\n }),\n []\n );\n const wrapperChildren = (wrapper as React.ReactElement<any>).props.children;\n return (\n <>\n <DockedToolSettingsEntryContext.Provider value={entryValue}>\n {wrapperChildren &&\n React.Children.map(\n wrapperChildren,\n (child: React.ReactNode) => child\n )}\n </DockedToolSettingsEntryContext.Provider>\n </>\n );\n}\n\n/** Properties of [[DockedToolSettings]] component.\n * @internal\n */\n// eslint-disable-next-line deprecation/deprecation\nexport interface DockedToolSettingsProps extends CommonProps {\n /** Tool settings content. */\n children?: React.ReactNode;\n /** Container for overflown entries. */\n panelContainer?: React.ComponentType<{ children?: React.ReactNode }>;\n}\n\n/** Component that displays tool settings as a bar across the top of the content view.\n * @internal\n */\nexport function DockedToolSettings(props: DockedToolSettingsProps) {\n const [open, setOpen] = React.useState(false);\n const animateToolSettings = React.useContext(\n AnimateDockedToolSettingsContext\n );\n\n const ref = React.useRef<HTMLDivElement>(null);\n const width = React.useRef<number | undefined>(undefined);\n const handleWidth = React.useRef<number | undefined>(undefined);\n const [\n overflown,\n handleContainerResize,\n handleOverflowResize,\n getOnEntryResize,\n handleGapResize,\n ] = useOverflow(props.children);\n const onResize = React.useCallback(() => {\n let gapSize = 0;\n if (ref.current) {\n gapSize = getGapVariable(ref.current);\n handleGapResize(gapSize);\n }\n width.current !== undefined &&\n handleWidth.current !== undefined &&\n handleContainerResize(width.current - handleWidth.current - gapSize);\n }, [handleContainerResize, handleGapResize]);\n const handleHandleResize = React.useCallback(\n (w: number) => {\n handleWidth.current = w;\n onResize();\n },\n [onResize]\n );\n const handleResize = React.useCallback(\n (w: number) => {\n width.current = w;\n onResize();\n },\n [onResize]\n );\n const resizeObserverRef = useResizeObserver(handleResize);\n\n const onOverflowClick = React.useCallback(() => {\n setOpen((prev) => !prev);\n }, []);\n const handleOnClose = React.useCallback(() => {\n setOpen(false);\n }, []);\n const targetRef = React.useRef<HTMLDivElement>(null);\n const refs = useRefs(ref, resizeObserverRef);\n const children = React.useMemo(\n () => React.Children.toArray(props.children),\n [props.children]\n );\n const dockedChildren = children.reduce<Array<[string, React.ReactNode]>>(\n (acc, child, index) => {\n const key = getChildKey(child, index);\n if (!overflown || overflown.indexOf(key) < 0) {\n acc.push([key, child]);\n }\n return acc;\n },\n []\n );\n const overflownChildren = overflown\n ? children.reduce<Array<[string, React.ReactNode]>>((acc, child, index) => {\n const key = getChildKey(child, index);\n if (overflown.indexOf(key) >= 0) {\n acc.push([key, child]);\n }\n return acc;\n }, [])\n : [];\n const PanelContainer = props.panelContainer\n ? props.panelContainer\n : DefaultPanelContainer;\n const className = classnames(\"uifw-toolSettings-docked\", props.className);\n return (\n <div\n data-toolsettings-provider={props.itemId}\n className={className}\n ref={refs}\n style={props.style}\n >\n <DockedToolSettingsHandle onResize={handleHandleResize} />\n {dockedChildren.map(([key, child]) => {\n return (\n <TransitionGroup\n appear={animateToolSettings}\n enter={animateToolSettings}\n key={key}\n >\n <CSSTransition\n in={animateToolSettings}\n timeout={400}\n classNames={{\n appear: \"toolsettings-appear\",\n enter: \"toolsettings-appear\",\n appearActive: \"toolsettings-appear-active\",\n enterActive: \"toolsettings-appear-active\",\n }}\n >\n <DockedToolSettingsEntry\n key={key}\n entryKey={key}\n getOnResize={getOnEntryResize}\n >\n {child}\n </DockedToolSettingsEntry>\n </CSSTransition>\n </TransitionGroup>\n );\n })}\n {(!overflown || overflown.length > 0) && (\n <>\n <DockedToolSettingsOverflow\n onClick={onOverflowClick}\n onResize={handleOverflowResize}\n ref={targetRef}\n />\n {overflownChildren.length > 0 && open && targetRef.current && (\n <ToolSettingsOverflowPanel\n onClose={handleOnClose}\n open\n target={targetRef.current}\n >\n <PanelContainer>\n {overflownChildren.map(([key, child]) => {\n return <OverflowLabelAndEditor key={key} wrapper={child} />;\n })}\n </PanelContainer>\n </ToolSettingsOverflowPanel>\n )}\n </>\n )}\n </div>\n );\n}\n\ninterface DockedToolSettingsEntryProps {\n children?: React.ReactNode;\n entryKey: string;\n getOnResize: (key: string) => (w: number) => void;\n}\n\nfunction DockedToolSettingsEntry({\n children,\n entryKey,\n getOnResize,\n}: DockedToolSettingsEntryProps) {\n const onResize = React.useMemo(\n () => getOnResize(entryKey),\n [getOnResize, entryKey]\n );\n const entry = React.useMemo<DockedToolSettingsEntryContextArgs>(\n () => ({\n isOverflown: false,\n onResize,\n }),\n [onResize]\n );\n return (\n <DockedToolSettingsEntryContext.Provider value={entry}>\n {children}\n </DockedToolSettingsEntryContext.Provider>\n );\n}\n\n/** Returns key of a child. Must be used along with React.Children.toArray to preserve the semantics of children.\n * @internal\n */\nexport function getChildKey(child: React.ReactNode, index: number) {\n if (React.isValidElement(child) && child.key !== null) {\n return child.key.toString();\n }\n return index.toString();\n}\n\n/** Returns a subset of docked entry keys that exceed given width and should be overflown.\n * @internal\n */\nexport function getOverflown(\n width: number,\n docked: ReadonlyArray<readonly [string, number]>,\n overflowWidth: number,\n activeIndex?: number,\n gapSize = 0\n) {\n let settingsWidth = 0;\n\n // Avoid adding gap to first item.\n let firstItem = true;\n const getGapSize = () => {\n if (firstItem) {\n firstItem = false;\n return 0;\n }\n return gapSize;\n };\n\n // Make sure active item is always visible.\n if (activeIndex !== undefined && docked.length > activeIndex) {\n const activeWidth = docked[activeIndex];\n settingsWidth += activeWidth[1] + getGapSize();\n }\n\n let i = 0;\n\n for (; i < docked.length; i++) {\n // Skip active item.\n if (i === activeIndex) continue;\n\n const itemWidth = docked[i][1];\n const newSettingsWidth = settingsWidth + itemWidth + getGapSize();\n\n // Items overflow, add an overflow button.\n if (newSettingsWidth > width) {\n settingsWidth += overflowWidth + getGapSize();\n break;\n }\n\n // Items fit, add an item.\n settingsWidth = newSettingsWidth;\n }\n\n // Remove items until they fit.\n let j = i;\n if (j < docked.length) {\n for (; j > 0; j--) {\n if (j === activeIndex) continue;\n if (settingsWidth <= width) break;\n const itemWidth = docked[j][1];\n settingsWidth -= itemWidth + gapSize;\n }\n }\n\n const overflown = new Array<string>();\n for (i = j; i < docked.length; i++) {\n if (i === activeIndex) continue;\n overflown.push(docked[i][0]);\n }\n return overflown;\n}\n\n/** Hook that returns a list of overflown children keys.\n * @internal\n */\nexport function useOverflow(\n children: React.ReactNode,\n activeChildIndex?: number\n): [\n /** Keys of overflown children. */\n ReadonlyArray<string> | undefined,\n /** Function to update container size. */\n (containerSize: number) => void,\n /** Function to update overflow button size. */\n (overflowButtonSize: number) => void,\n /** Returns a function to update an entry size for a given key. */\n (key: string) => (entrySize: number) => void,\n /** Function to update gap size. */\n (gapSize: number) => void\n] {\n const [overflown, setOverflown] = React.useState<ReadonlyArray<string>>();\n const entryWidths = React.useRef(new Map<string, number | undefined>());\n const width = React.useRef<number | undefined>(undefined);\n const overflowWidth = React.useRef<number | undefined>(undefined);\n const gapSize = React.useRef(0);\n\n const calculateOverflow = React.useCallback(() => {\n const widths = verifiedMapEntries(entryWidths.current);\n if (\n width.current === undefined ||\n widths === undefined ||\n overflowWidth.current === undefined\n ) {\n setOverflown(undefined);\n return;\n }\n\n // Calculate overflow.\n const newOverflown = getOverflown(\n width.current,\n [...widths.entries()],\n overflowWidth.current,\n activeChildIndex,\n gapSize.current\n );\n setOverflown((prevOverflown) => {\n return eqlOverflown(prevOverflown, newOverflown)\n ? prevOverflown\n : newOverflown;\n });\n }, [activeChildIndex]);\n\n React.useLayoutEffect(() => {\n const newEntryWidths = new Map<string, number | undefined>();\n const array = React.Children.toArray(children);\n for (let i = 0; i < array.length; i++) {\n const child = array[i];\n const key = getChildKey(child, i);\n const lastW = entryWidths.current.get(key);\n newEntryWidths.set(key, lastW);\n }\n entryWidths.current = newEntryWidths;\n calculateOverflow();\n }, [children, calculateOverflow]);\n\n const handleContainerResize = React.useCallback(\n (w: number) => {\n const calculate = width.current !== w;\n width.current = w;\n calculate && calculateOverflow();\n },\n [calculateOverflow]\n );\n\n const handleOverflowResize = React.useCallback(\n (w: number) => {\n const calculate = overflowWidth.current !== w;\n overflowWidth.current = w;\n calculate && calculateOverflow();\n },\n [calculateOverflow]\n );\n\n const handleEntryResize = React.useCallback(\n (key: string) => (w: number) => {\n const oldW = entryWidths.current.get(key);\n if (oldW === w) return;\n entryWidths.current.set(key, w);\n calculateOverflow();\n },\n [calculateOverflow]\n );\n\n const handleGapResize = React.useCallback(\n (w: number) => {\n if (gapSize.current === w) return;\n gapSize.current = w;\n calculateOverflow();\n },\n [calculateOverflow]\n );\n\n return [\n overflown,\n handleContainerResize,\n handleOverflowResize,\n handleEntryResize,\n handleGapResize,\n ];\n}\n\ninterface DockedToolSettingsEntryContextArgs {\n readonly isOverflown: boolean;\n readonly onResize: (w: number) => void;\n}\n\nconst DockedToolSettingsEntryContext =\n React.createContext<DockedToolSettingsEntryContextArgs>(null!);\nDockedToolSettingsEntryContext.displayName =\n \"nz:DockedToolSettingsEntryContext\";\n\n/** @internal */\nexport function useToolSettingsEntry() {\n return React.useContext(DockedToolSettingsEntryContext);\n}\n\nfunction verifiedMapEntries<T>(map: Map<string, T | undefined>) {\n for (const [, val] of map) {\n if (val === undefined) return undefined;\n }\n return map as Map<string, T>;\n}\n\nfunction DefaultPanelContainer(props: { children: React.ReactNode }) {\n return (\n <div className=\"uifw-toolSettings-docked_container\">{props.children}</div>\n );\n}\n\n/** @internal */\nexport function eqlOverflown(\n prev: readonly string[] | undefined,\n value: readonly string[]\n) {\n if (!prev) return false;\n if (prev.length !== value.length) return false;\n for (let i = 0; i < prev.length; i++) {\n const p = prev[i];\n const v = value[i];\n if (p !== v) return false;\n }\n return true;\n}\n\nfunction getGapVariable(htmlElement: HTMLElement) {\n // eslint-disable-next-line deprecation/deprecation\n const gap = getCssVariableAsNumber(\"gap\", htmlElement);\n if (isNaN(gap)) return 0;\n return gap;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Docked.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/tool-settings/Docked.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module ToolSettings\n */\n\nimport \"./Docked.scss\";\nimport { assert } from \"@itwin/core-bentley\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { getCssVariableAsNumber } from \"@itwin/core-react\";\nimport { useRefs, useResizeObserver } from \"@itwin/core-react/internal\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { CSSTransition, TransitionGroup } from \"react-transition-group\";\nimport { AnimateDockedToolSettingsContext } from \"../base/NineZone.js\";\nimport { DockedToolSettingsHandle } from \"./Handle.js\";\nimport { DockedToolSettingsOverflow } from \"./Overflow.js\";\nimport { ToolSettingsOverflowPanel } from \"./Panel.js\";\n\n/** @internal */\nexport function onOverflowLabelAndEditorResize() {}\n\n/** This component takes a DockedToolSetting \"wrapper\" component and extract only the label and editor components from it */\nfunction OverflowLabelAndEditor({ wrapper }: { wrapper: React.ReactNode }) {\n assert(React.isValidElement(wrapper));\n const entryValue = React.useMemo<DockedToolSettingsEntryContextArgs>(\n () => ({\n isOverflown: true,\n onResize: onOverflowLabelAndEditorResize,\n }),\n []\n );\n const wrapperChildren = (wrapper as React.ReactElement<any>).props.children;\n return (\n <>\n <DockedToolSettingsEntryContext.Provider value={entryValue}>\n {wrapperChildren &&\n React.Children.map(\n wrapperChildren,\n (child: React.ReactNode) => child\n )}\n </DockedToolSettingsEntryContext.Provider>\n </>\n );\n}\n\n/** Properties of [[DockedToolSettings]] component.\n * @internal\n */\n// eslint-disable-next-line deprecation/deprecation\nexport interface DockedToolSettingsProps extends CommonProps {\n /** Tool settings content. */\n children?: React.ReactNode;\n /** Container for overflown entries. */\n panelContainer?: React.ComponentType<{ children?: React.ReactNode }>;\n}\n\n/** Component that displays tool settings as a bar across the top of the content view.\n * @internal\n */\nexport function DockedToolSettings(props: DockedToolSettingsProps) {\n const [open, setOpen] = React.useState(false);\n const animateToolSettings = React.useContext(\n AnimateDockedToolSettingsContext\n );\n\n const ref = React.useRef<HTMLDivElement>(null);\n const width = React.useRef<number | undefined>(undefined);\n const handleWidth = React.useRef<number | undefined>(undefined);\n const childrenKeys = React.Children.toArray(props.children).map(\n (child, index) => getChildKey(child, index)\n );\n const [\n overflown,\n handleContainerResize,\n handleOverflowResize,\n getOnEntryResize,\n handleGapResize,\n ] = useOverflow(childrenKeys);\n const onResize = React.useCallback(() => {\n let gapSize = 0;\n if (ref.current) {\n gapSize = getGapVariable(ref.current);\n handleGapResize(gapSize);\n }\n width.current !== undefined &&\n handleWidth.current !== undefined &&\n handleContainerResize(width.current - handleWidth.current - gapSize);\n }, [handleContainerResize, handleGapResize]);\n const handleHandleResize = React.useCallback(\n (w: number) => {\n handleWidth.current = w;\n onResize();\n },\n [onResize]\n );\n const handleResize = React.useCallback(\n (w: number) => {\n width.current = w;\n onResize();\n },\n [onResize]\n );\n const resizeObserverRef = useResizeObserver(handleResize);\n\n const onOverflowClick = React.useCallback(() => {\n setOpen((prev) => !prev);\n }, []);\n const handleOnClose = React.useCallback(() => {\n setOpen(false);\n }, []);\n const targetRef = React.useRef<HTMLDivElement>(null);\n const refs = useRefs(ref, resizeObserverRef);\n const children = React.useMemo(\n () => React.Children.toArray(props.children),\n [props.children]\n );\n const dockedChildren = children.reduce<Array<[string, React.ReactNode]>>(\n (acc, child, index) => {\n const key = getChildKey(child, index);\n if (!overflown || overflown.indexOf(key) < 0) {\n acc.push([key, child]);\n }\n return acc;\n },\n []\n );\n const overflownChildren = overflown\n ? children.reduce<Array<[string, React.ReactNode]>>((acc, child, index) => {\n const key = getChildKey(child, index);\n if (overflown.indexOf(key) >= 0) {\n acc.push([key, child]);\n }\n return acc;\n }, [])\n : [];\n const PanelContainer = props.panelContainer\n ? props.panelContainer\n : DefaultPanelContainer;\n const className = classnames(\"uifw-toolSettings-docked\", props.className);\n return (\n <div\n data-toolsettings-provider={props.itemId}\n className={className}\n ref={refs}\n style={props.style}\n >\n <DockedToolSettingsHandle onResize={handleHandleResize} />\n {dockedChildren.map(([key, child]) => {\n return (\n <TransitionGroup\n appear={animateToolSettings}\n enter={animateToolSettings}\n key={key}\n >\n <CSSTransition\n in={animateToolSettings}\n timeout={400}\n classNames={{\n appear: \"toolsettings-appear\",\n enter: \"toolsettings-appear\",\n appearActive: \"toolsettings-appear-active\",\n enterActive: \"toolsettings-appear-active\",\n }}\n >\n <DockedToolSettingsEntry\n key={key}\n entryKey={key}\n getOnResize={getOnEntryResize}\n >\n {child}\n </DockedToolSettingsEntry>\n </CSSTransition>\n </TransitionGroup>\n );\n })}\n {(!overflown || overflown.length > 0) && (\n <>\n <DockedToolSettingsOverflow\n onClick={onOverflowClick}\n onResize={handleOverflowResize}\n ref={targetRef}\n />\n {overflownChildren.length > 0 && open && targetRef.current && (\n <ToolSettingsOverflowPanel\n onClose={handleOnClose}\n open\n target={targetRef.current}\n >\n <PanelContainer>\n {overflownChildren.map(([key, child]) => {\n return <OverflowLabelAndEditor key={key} wrapper={child} />;\n })}\n </PanelContainer>\n </ToolSettingsOverflowPanel>\n )}\n </>\n )}\n </div>\n );\n}\n\ninterface DockedToolSettingsEntryProps {\n children?: React.ReactNode;\n entryKey: string;\n getOnResize: (key: string) => (w: number) => void;\n}\n\nfunction DockedToolSettingsEntry({\n children,\n entryKey,\n getOnResize,\n}: DockedToolSettingsEntryProps) {\n const onResize = React.useMemo(\n () => getOnResize(entryKey),\n [getOnResize, entryKey]\n );\n const entry = React.useMemo<DockedToolSettingsEntryContextArgs>(\n () => ({\n isOverflown: false,\n onResize,\n }),\n [onResize]\n );\n return (\n <DockedToolSettingsEntryContext.Provider value={entry}>\n {children}\n </DockedToolSettingsEntryContext.Provider>\n );\n}\n\n/** Returns key of a child. Must be used along with React.Children.toArray to preserve the semantics of children.\n * @internal\n */\nexport function getChildKey(child: React.ReactNode, index: number) {\n if (React.isValidElement(child) && child.key !== null) {\n return child.key.toString();\n }\n return index.toString();\n}\n\n/** Returns a subset of docked entry keys that exceed given width and should be overflown.\n * @internal\n */\nexport function getOverflown(\n width: number,\n docked: ReadonlyArray<readonly [string, number]>,\n overflowWidth: number,\n activeIndex?: number,\n gapSize = 0\n) {\n let settingsWidth = 0;\n\n // Avoid adding gap to first item.\n let firstItem = true;\n const getGapSize = () => {\n if (firstItem) {\n firstItem = false;\n return 0;\n }\n return gapSize;\n };\n\n // Make sure active item is always visible.\n if (activeIndex !== undefined && docked.length > activeIndex) {\n const activeWidth = docked[activeIndex];\n settingsWidth += activeWidth[1] + getGapSize();\n }\n\n let i = 0;\n\n for (; i < docked.length; i++) {\n // Skip active item.\n if (i === activeIndex) continue;\n\n const itemWidth = docked[i][1];\n const newSettingsWidth = settingsWidth + itemWidth + getGapSize();\n\n // Items overflow, add an overflow button.\n if (newSettingsWidth > width) {\n settingsWidth += overflowWidth + getGapSize();\n break;\n }\n\n // Items fit, add an item.\n settingsWidth = newSettingsWidth;\n }\n\n // Remove items until they fit.\n let j = i;\n if (j < docked.length) {\n for (; j > 0; j--) {\n if (j === activeIndex) continue;\n if (settingsWidth <= width) break;\n const itemWidth = docked[j][1];\n settingsWidth -= itemWidth + gapSize;\n }\n }\n\n const overflown = new Array<string>();\n for (i = j; i < docked.length; i++) {\n if (i === activeIndex) continue;\n overflown.push(docked[i][0]);\n }\n return overflown;\n}\n\n/** Hook that returns a list of overflown children keys.\n * @internal\n */\nexport function useOverflow(\n itemKeys: ReadonlyArray<string>,\n activeItemIndex?: number\n): [\n /** Keys of overflown items. */\n ReadonlyArray<string> | undefined,\n /** Function to update container size. */\n (containerSize: number) => void,\n /** Function to update overflow button size. */\n (overflowButtonSize: number) => void,\n /** Returns a function to update an entry size for a given key. */\n (key: string) => (entrySize: number) => void,\n /** Function to update gap size. */\n (gapSize: number) => void\n] {\n const [overflown, setOverflown] = React.useState<ReadonlyArray<string>>();\n const entryWidths = React.useRef(new Map<string, number | undefined>());\n const width = React.useRef<number | undefined>(undefined);\n const overflowWidth = React.useRef<number | undefined>(undefined);\n const gapSize = React.useRef(0);\n\n const calculateOverflow = React.useCallback(() => {\n const widths = verifiedMapEntries(entryWidths.current);\n if (\n width.current === undefined ||\n widths === undefined ||\n overflowWidth.current === undefined\n ) {\n setOverflown(undefined);\n return;\n }\n\n // Calculate overflow.\n const newOverflown = getOverflown(\n width.current,\n [...widths.entries()],\n overflowWidth.current,\n activeItemIndex,\n gapSize.current\n );\n setOverflown((prevOverflown) => {\n return eqlOverflown(prevOverflown, newOverflown)\n ? prevOverflown\n : newOverflown;\n });\n }, [activeItemIndex]);\n\n React.useLayoutEffect(() => {\n const newEntryWidths = new Map<string, number | undefined>();\n for (const itemKey of itemKeys) {\n const lastW = entryWidths.current.get(itemKey);\n newEntryWidths.set(itemKey, lastW);\n }\n entryWidths.current = newEntryWidths;\n calculateOverflow();\n }, [itemKeys, calculateOverflow]);\n\n const handleContainerResize = React.useCallback(\n (w: number) => {\n const calculate = width.current !== w;\n width.current = w;\n calculate && calculateOverflow();\n },\n [calculateOverflow]\n );\n\n const handleOverflowResize = React.useCallback(\n (w: number) => {\n const calculate = overflowWidth.current !== w;\n overflowWidth.current = w;\n calculate && calculateOverflow();\n },\n [calculateOverflow]\n );\n\n const handleEntryResize = React.useCallback(\n (key: string) => (w: number) => {\n const oldW = entryWidths.current.get(key);\n if (oldW === w) return;\n entryWidths.current.set(key, w);\n calculateOverflow();\n },\n [calculateOverflow]\n );\n\n const handleGapResize = React.useCallback(\n (w: number) => {\n if (gapSize.current === w) return;\n gapSize.current = w;\n calculateOverflow();\n },\n [calculateOverflow]\n );\n\n return [\n overflown,\n handleContainerResize,\n handleOverflowResize,\n handleEntryResize,\n handleGapResize,\n ];\n}\n\ninterface DockedToolSettingsEntryContextArgs {\n readonly isOverflown: boolean;\n readonly onResize: (w: number) => void;\n}\n\nconst DockedToolSettingsEntryContext =\n React.createContext<DockedToolSettingsEntryContextArgs>(null!);\nDockedToolSettingsEntryContext.displayName =\n \"nz:DockedToolSettingsEntryContext\";\n\n/** @internal */\nexport function useToolSettingsEntry() {\n return React.useContext(DockedToolSettingsEntryContext);\n}\n\nfunction verifiedMapEntries<T>(map: Map<string, T | undefined>) {\n for (const [, val] of map) {\n if (val === undefined) return undefined;\n }\n return map as Map<string, T>;\n}\n\nfunction DefaultPanelContainer(props: { children: React.ReactNode }) {\n return (\n <div className=\"uifw-toolSettings-docked_container\">{props.children}</div>\n );\n}\n\n/** @internal */\nexport function eqlOverflown(\n prev: readonly string[] | undefined,\n value: readonly string[]\n) {\n if (!prev) return false;\n if (prev.length !== value.length) return false;\n for (let i = 0; i < prev.length; i++) {\n const p = prev[i];\n const v = value[i];\n if (p !== v) return false;\n }\n return true;\n}\n\nfunction getGapVariable(htmlElement: HTMLElement) {\n // eslint-disable-next-line deprecation/deprecation\n const gap = getCssVariableAsNumber(\"gap\", htmlElement);\n if (isNaN(gap)) return 0;\n return gap;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/Tabs.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,aAAa,CAAC;AACrB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAgB/B,gBAAgB;AAChB,wBAAgB,UAAU,
|
|
1
|
+
{"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/Tabs.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,aAAa,CAAC;AACrB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAgB/B,gBAAgB;AAChB,wBAAgB,UAAU,sBA+FzB;AAED,UAAU,0BAA0B;IAClC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,gBAAgB;AAChB,eAAO,MAAM,sBAAsB,uDAEvB,CAAC;AAGb,gBAAgB;AAChB,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,gBAAgB;AAChB,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,mCAAmC,qBAY3C"}
|
|
@@ -35,7 +35,8 @@ export function WidgetTabs() {
|
|
|
35
35
|
return (React.createElement(WidgetTabProvider, { key: id, id: id, first: index === 0, firstInactive: firstInactive, last: index === array.length - 1, showOnlyTabIcon: showOnlyTabIcon && showWidgetIcon }));
|
|
36
36
|
});
|
|
37
37
|
}, [tabIds, activeTabIndex, showOnlyTabIcon, showWidgetIcon]);
|
|
38
|
-
const
|
|
38
|
+
const childrenKeys = React.Children.toArray(children).map((child, index) => getChildKey(child, index));
|
|
39
|
+
const [overflown, handleResize, handleOverflowResize, handleEntryResize] = useOverflow(childrenKeys, activeTabIndex);
|
|
39
40
|
const horizontal = side && isHorizontalPanelSide(side);
|
|
40
41
|
const handleContainerResize = React.useCallback((w) => {
|
|
41
42
|
if (showWidgetIcon)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tabs.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/Tabs.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,aAAa,CAAC;AACrB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EACL,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAEzE,gBAAgB;AAChB,MAAM,UAAU,UAAU;IACxB,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IACnD,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;IAC/D,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACnB,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1E,MAAM,WAAW,GAAG,SAAS,CAC3B,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,WAAW,CACvD,CAAC;IACF,MAAM,SAAS,GAAG,SAAS,CACzB,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,SAAS,CACrD,CAAC;IACF,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEpE,MAAM,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,WAAW,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAkB,GAAG,EAAE;QACnD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACrC,MAAM,aAAa,GAAG,cAAc,GAAG,CAAC,KAAK,KAAK,CAAC;YACnD,OAAO,CACL,oBAAC,iBAAiB,IAChB,GAAG,EAAE,EAAE,EACP,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,KAAK,KAAK,CAAC,EAClB,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAChC,eAAe,EAAE,eAAe,IAAI,cAAc,GAClD,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC,CAAC;IAC9D,MAAM,CAAC,SAAS,EAAE,YAAY,EAAE,oBAAoB,EAAE,iBAAiB,CAAC,GACtE,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"Tabs.js","sourceRoot":"","sources":["../../../../src/appui-react/layout/widget/Tabs.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Widget\n */\n\nimport \"./Tabs.scss\";\nimport * as React from \"react\";\nimport { assert } from \"@itwin/core-bentley\";\nimport { useResizeObserver } from \"@itwin/core-react/internal\";\nimport { ShowWidgetIconContext } from \"../base/NineZone.js\";\nimport { getChildKey, useOverflow } from \"../tool-settings/Docked.js\";\nimport {\n isHorizontalPanelSide,\n PanelSideContext,\n} from \"../widget-panels/Panel.js\";\nimport { WidgetOverflow } from \"./Overflow.js\";\nimport { WidgetTabProvider } from \"./Tab.js\";\nimport { TitleBarTarget } from \"../target/TitleBarTarget.js\";\nimport { useLayout } from \"../base/LayoutStore.js\";\nimport { WidgetIdContext } from \"./Widget.js\";\nimport { getWidgetState } from \"../state/internal/WidgetStateHelpers.js\";\n\n/** @internal */\nexport function WidgetTabs() {\n const side = React.useContext(PanelSideContext);\n const widgetId = React.useContext(WidgetIdContext);\n const showWidgetIcon = React.useContext(ShowWidgetIconContext);\n assert(!!widgetId);\n const tabIds = useLayout((state) => getWidgetState(state, widgetId).tabs);\n const activeTabId = useLayout(\n (state) => getWidgetState(state, widgetId).activeTabId\n );\n const minimized = useLayout(\n (state) => getWidgetState(state, widgetId).minimized\n );\n const [showOnlyTabIcon, setShowOnlyTabIcon] = React.useState(false);\n\n const activeTabIndex = tabIds.findIndex((id) => id === activeTabId);\n const children = React.useMemo<React.ReactNode>(() => {\n return tabIds.map((id, index, array) => {\n const firstInactive = activeTabIndex + 1 === index;\n return (\n <WidgetTabProvider\n key={id}\n id={id}\n first={index === 0}\n firstInactive={firstInactive}\n last={index === array.length - 1}\n showOnlyTabIcon={showOnlyTabIcon && showWidgetIcon}\n />\n );\n });\n }, [tabIds, activeTabIndex, showOnlyTabIcon, showWidgetIcon]);\n const childrenKeys = React.Children.toArray(children).map((child, index) =>\n getChildKey(child, index)\n );\n const [overflown, handleResize, handleOverflowResize, handleEntryResize] =\n useOverflow(childrenKeys, activeTabIndex);\n const horizontal = side && isHorizontalPanelSide(side);\n const handleContainerResize = React.useCallback(\n (w: number) => {\n if (showWidgetIcon) setShowOnlyTabIcon(tabIds.length * 158 > w); // 158px per text tab\n handleResize && handleResize(w);\n },\n [handleResize, showWidgetIcon, tabIds]\n );\n\n const ref = useResizeObserver(handleContainerResize);\n const childrenArray = React.useMemo(\n () => React.Children.toArray(children),\n [children]\n );\n const tabChildren = childrenArray.reduce<Array<[string, React.ReactNode]>>(\n (acc, child, index) => {\n const key = getChildKey(child, index);\n if (!overflown) {\n acc.push([key, child]);\n return acc;\n }\n if (horizontal && minimized) return acc;\n overflown.indexOf(key) < 0 && acc.push([key, child]);\n return acc;\n },\n []\n );\n const panelChildren =\n tabChildren.length !== childrenArray.length\n ? childrenArray.map<[string, React.ReactNode]>((child, index) => {\n const key = getChildKey(child, index);\n return [key, child];\n })\n : [];\n return (\n <div className=\"nz-widget-tabs\" ref={ref} role=\"tablist\">\n {tabChildren.map(([key, child], index, array) => {\n return (\n <WidgetTabsEntryProvider\n children={child} // eslint-disable-line react/no-children-prop\n key={key}\n id={key}\n lastNotOverflown={\n index === array.length - 1 && panelChildren.length > 0\n }\n getOnResize={handleEntryResize}\n />\n );\n })}\n <TitleBarTarget />\n <WidgetOverflow\n hidden={overflown && panelChildren.length === 0}\n onResize={handleOverflowResize}\n >\n {panelChildren.map(([key, child]) => {\n return <React.Fragment key={key}>{child}</React.Fragment>;\n })}\n </WidgetOverflow>\n </div>\n );\n}\n\ninterface WidgetTabsEntryContextArgs {\n readonly lastNotOverflown: boolean;\n readonly onResize?: (w: number) => void;\n}\n\n/** @internal */\nexport const WidgetTabsEntryContext = React.createContext<\n WidgetTabsEntryContextArgs | undefined\n>(undefined);\nWidgetTabsEntryContext.displayName = \"nz:WidgetTabsEntryContext\";\n\n/** @internal */\nexport interface WidgetTabsEntryContextProviderProps {\n children?: React.ReactNode;\n id: string;\n getOnResize: (id: string) => (w: number) => void;\n lastNotOverflown: boolean;\n}\n\n/** @internal */\nexport function WidgetTabsEntryProvider(\n props: WidgetTabsEntryContextProviderProps\n) {\n return (\n <WidgetTabsEntryContext.Provider\n value={{\n lastNotOverflown: props.lastNotOverflown,\n onResize: props.getOnResize(props.id),\n }}\n >\n {props.children}\n </WidgetTabsEntryContext.Provider>\n );\n}\n"]}
|
|
@@ -8,7 +8,7 @@ import { MessageSeverity, UiEvent } from "@itwin/appui-abstract";
|
|
|
8
8
|
import type { IconSpec } from "@itwin/core-react";
|
|
9
9
|
import type { NotifyMessageDetailsType, NotifyMessageType } from "./ReactNotifyMessageDetails.js";
|
|
10
10
|
import { StatusMessageManager } from "./StatusMessageManager.js";
|
|
11
|
-
import type
|
|
11
|
+
import { type useToaster } from "@itwin/itwinui-react";
|
|
12
12
|
import { BeUiEvent } from "@itwin/core-bentley";
|
|
13
13
|
type Toaster = ReturnType<typeof useToaster>;
|
|
14
14
|
type ToasterSettings = Parameters<Toaster["setSettings"]>;
|
|
@@ -268,7 +268,6 @@ export declare class MessageManager {
|
|
|
268
268
|
static openMessageBox(mbType: MessageBoxType, message: NotifyMessageType, icon: MessageBoxIconType): Promise<MessageBoxValue>;
|
|
269
269
|
/** @internal */
|
|
270
270
|
static showAlertMessageBox(messageDetails: NotifyMessageDetailsType): void;
|
|
271
|
-
private static standardMessageBox;
|
|
272
271
|
/** Setup tool assistance instructions for a tool. The instructions include the main instruction, which includes the current prompt.
|
|
273
272
|
* @param instructions The tool assistance instructions.
|
|
274
273
|
* @public
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageManager.d.ts","sourceRoot":"","sources":["../../../src/appui-react/messages/MessageManager.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAKH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EACV,eAAe,EACf,0BAA0B,EAC1B,cAAc,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,sBAAsB,EAEtB,kBAAkB,EAClB,cAAc,EAEd,qBAAqB,EAEtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAMlD,OAAO,KAAK,EACV,wBAAwB,EACxB,iBAAiB,EAClB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAOjE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"MessageManager.d.ts","sourceRoot":"","sources":["../../../src/appui-react/messages/MessageManager.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAKH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EACV,eAAe,EACf,0BAA0B,EAC1B,cAAc,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,sBAAsB,EAEtB,kBAAkB,EAClB,cAAc,EAEd,qBAAqB,EAEtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAMlD,OAAO,KAAK,EACV,wBAAwB,EACxB,iBAAiB,EAClB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAOjE,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAIhD,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAC7C,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;AAC1D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAavD;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,4CAA4C;IAC5C,OAAO,EAAE,wBAAwB,CAAC;CACnC;AAED;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,uCAAuC;IACvC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC,qEAAqE;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,0BAA0B;IACzC,sDAAsD;IACtD,MAAM,EAAE,OAAO,CAAC;IAChB,mDAAmD;IACnD,WAAW,EAAE,iBAAiB,CAAC;IAC/B,4DAA4D;IAC5D,eAAe,EAAE,iBAAiB,CAAC;IACnC,0CAA0C;IAC1C,QAAQ,EAAE,qBAAqB,CAAC;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,8BAA8B;IAC7C,uDAAuD;IACvD,YAAY,EAAE,0BAA0B,GAAG,SAAS,CAAC;CACtD;AAED;;;GAGG;AAEH,qBAAa,iBAAkB,SAAQ,OAAO,CAAC,qBAAqB,CAAC;CAAG;AAExE;;;GAGG;AAEH,qBAAa,oBAAqB,SAAQ,OAAO,CAAC,EAAE,CAAC;CAAG;AAExD;;;GAGG;AAEH,qBAAa,2BAA4B,SAAQ,OAAO,CAAC,wBAAwB,CAAC;CAAG;AAErF;;;GAGG;AAEH,qBAAa,6BAA8B,SAAQ,OAAO,CAAC,EAAE,CAAC;CAAG;AAEjE;;;GAGG;AAEH,qBAAa,2BAA4B,SAAQ,OAAO,CAAC,0BAA0B,CAAC;CAAG;AAEvF;;;GAGG;AAEH,qBAAa,6BAA8B,SAAQ,OAAO,CAAC,EAAE,CAAC;CAAG;AAEjE;;;GAGG;AAEH,qBAAa,sBAAuB,SAAQ,OAAO,CAAC,EAAE,CAAC;CAAG;AAE1D;;;GAGG;AAEH,qBAAa,0BAA2B,SAAQ,OAAO,CAAC,8BAA8B,CAAC;CAAG;AAmB1F;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAO;IACxC,OAAO,CAAC,MAAM,CAAC,2BAA2B,CAAK;IAC/C,OAAO,CAAC,MAAM,CAAC,SAAS,CAAkC;IAC1D,OAAO,CAAC,MAAM,CAAC,uBAAuB,CACP;IAC/B,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAA2B;IACvD,OAAO,CAAC,MAAM,CAAC,qBAAqB,CAA8B;IAClE,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAqB;IACxD,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAG1B;IAET,kFAAkF;IAElF,gBAAuB,mBAAmB,oBAA2B;IAErE,6FAA6F;IAE7F,gBAAuB,sBAAsB,uBAA8B;IAE3E,6GAA6G;IAC7G,gBAAuB,6BAA6B,8BAChB;IAEpC;;;OAGG;IACH,gBAAuB,+BAA+B,gCAChB;IAEtC,gBAAuB,6BAA6B,8BAChB;IACpC,gBAAuB,+BAA+B,gCAChB;IAEtC,gBAAuB,wBAAwB,yBAChB;IAE/B,gBAAgB;IAChB,gBAAuB,gBAAgB,EAAE,SAAS,CAAC;QACjD,OAAO,EAAE,wBAAwB,CAAC;QAClC,OAAO,CAAC,EAAE,YAAY,CAAC;QACvB,QAAQ,CAAC,EAAE,eAAe,CAAC;QAC3B,mBAAmB,CAAC,EAAE,WAAW,CAAC;QAElC,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;KACpB,CAAC,CAAmB;IAErB;;OAEG;IACH,gBAAuB,4BAA4B,6BAChB;IAEnC,oDAAoD;IACpD,WAAkB,QAAQ,IAAI,QAAQ,CAAC,wBAAwB,EAAE,CAAC,CAEjE;IAED,kCAAkC;IAClC,WAAkB,oBAAoB,IAAI,oBAAoB,CAE7D;IAED,8BAA8B;WAChB,aAAa,IAAI,IAAI;IAWnC,+BAA+B;WACjB,cAAc,IAAI,IAAI;IAIpC,gDAAgD;WAClC,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKrD,uDAAuD;IACvD,WAAkB,0BAA0B,IAAI,MAAM,CAErD;IACD,WAAkB,0BAA0B,CAAC,GAAG,EAAE,MAAM,EAEvD;IAED;;OAEG;WACW,aAAa,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;IAsBpE;;OAEG;WACW,2BAA2B,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAMrE,sFAAsF;IACtF,OAAO,CAAC,MAAM,KAAK,mBAAmB,GASrC;IAED;;;;;;OAMG;WACW,cAAc,CAC1B,OAAO,EAAE,wBAAwB,EACjC,OAAO,CAAC,EAAE,YAAY,EACtB,QAAQ,CAAC,EAAE,eAAe;;;IAyB5B;;OAEG;WACW,UAAU,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;IAiBjE;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAiCnC;;OAEG;WACW,kBAAkB,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;IAMzE,qDAAqD;IACrD,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAQrC;;;;OAIG;WACW,2BAA2B,CACvC,OAAO,EAAE,sBAAsB,GAC9B,OAAO;IAMV;;;;;OAKG;WACW,qBAAqB,CACjC,OAAO,EAAE,iBAAiB,EAC1B,eAAe,EAAE,MAAM,GACtB,OAAO;IAIV;;;;;;;;OAQG;WACW,0BAA0B,CACtC,OAAO,EAAE,iBAAiB,EAC1B,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,OAAO,GACjB,OAAO;IAmBV;;;;OAIG;WACW,kBAAkB,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO;IAM/D;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAKpC;;;;;;;OAOG;WACW,wBAAwB,CACpC,MAAM,EAAE,WAAW,EACnB,WAAW,EAAE,iBAAiB,EAC9B,eAAe,GAAE,iBAAsB,EACvC,QAAQ,wBAA8B;IAUxC;;OAEG;WACW,qBAAqB;IAInC;;OAEG;WACW,iBAAiB;IAI/B,mGAAmG;WACrF,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAchD;;;;OAIG;WACW,sBAAsB,CAClC,OAAO,EAAE,wBAAwB,GAEhC,QAAQ;IAkBX;;;OAGG;WACW,gBAAgB,CAAC,OAAO,EAAE,wBAAwB,GAAG,MAAM;IASzE,wEAAwE;WAC1D,WAAW,CACvB,OAAO,EAAE,wBAAwB,GAChC,eAAe;IA2BlB,2EAA2E;WAC7D,WAAW,CACvB,OAAO,EAAE,wBAAwB,GAChC,kBAAkB;IA2BrB;;;;;OAKG;WACiB,cAAc,CAChC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,eAAe,CAAC;IA4B3B,gBAAgB;WACF,mBAAmB,CAC/B,cAAc,EAAE,wBAAwB,GACvC,IAAI;IAMP;;;OAGG;WACW,iBAAiB,CAC7B,YAAY,EAAE,0BAA0B,GAAG,SAAS;IAKtD;;;;;OAKG;WACW,WAAW,CACvB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,CAAC,EAAE,KAAK,EAChB,OAAO,CAAC,EAAE,cAAc,GACvB,IAAI;IAKP,gBAAgB;WACF,gBAAgB,IAAI,IAAI;CAOvC"}
|
|
@@ -17,8 +17,10 @@ import { UiFramework } from "../UiFramework.js";
|
|
|
17
17
|
import { PointerMessage } from "./Pointer.js";
|
|
18
18
|
import { StatusMessageManager } from "./StatusMessageManager.js";
|
|
19
19
|
import { SvgInfo, SvgStatusError, SvgStatusSuccess, SvgStatusWarning, } from "@itwin/itwinui-icons-react";
|
|
20
|
+
import { Text } from "@itwin/itwinui-react";
|
|
20
21
|
import { BeUiEvent } from "@itwin/core-bentley";
|
|
21
22
|
import { ConfigurableUiActionId } from "../redux/ConfigurableUiState.js";
|
|
23
|
+
import { useTranslation } from "../hooks/useTranslation.js";
|
|
22
24
|
class MessageBoxCallbacks {
|
|
23
25
|
constructor(onFulfilled, onRejected) {
|
|
24
26
|
this.onFulfilled = onFulfilled;
|
|
@@ -457,23 +459,14 @@ export class MessageManager {
|
|
|
457
459
|
const messageBoxCallbacks = new MessageBoxCallbacks(onFulfilled, onRejected);
|
|
458
460
|
// eslint-disable-next-line deprecation/deprecation
|
|
459
461
|
const messageElement = React.createElement(MessageRenderer, { message: message, useSpan: true });
|
|
460
|
-
UiFramework.dialogs.modal.open(
|
|
462
|
+
UiFramework.dialogs.modal.open(
|
|
463
|
+
// eslint-disable-next-line deprecation/deprecation
|
|
464
|
+
React.createElement(StandardMessageBox, { opened: true, messageBoxType: mbType, iconType: icon, title: UiFramework.translate("general.alert"), onResult: messageBoxCallbacks.handleMessageBoxResult }, messageElement));
|
|
461
465
|
});
|
|
462
466
|
}
|
|
463
467
|
/** @internal */
|
|
464
468
|
static showAlertMessageBox(messageDetails) {
|
|
465
|
-
|
|
466
|
-
const content = (React.createElement(React.Fragment, null,
|
|
467
|
-
React.createElement(MessageRenderer, { message: messageDetails.briefMessage, useSpan: true }),
|
|
468
|
-
messageDetails.detailedMessage && (React.createElement("p", null,
|
|
469
|
-
React.createElement(MessageRenderer, { message: messageDetails.detailedMessage, useSpan: true })))));
|
|
470
|
-
UiFramework.dialogs.modal.open(this.standardMessageBox(MessageBoxType.Ok, iconType, UiFramework.translate("general.alert"), content));
|
|
471
|
-
}
|
|
472
|
-
static standardMessageBox(mbType, iconType, title, messageElement, callbacks) {
|
|
473
|
-
const onResult = callbacks !== undefined ? callbacks.handleMessageBoxResult : undefined;
|
|
474
|
-
return (
|
|
475
|
-
// eslint-disable-next-line deprecation/deprecation
|
|
476
|
-
React.createElement(StandardMessageBox, { opened: true, messageBoxType: mbType, iconType: iconType, title: title, onResult: onResult }, messageElement));
|
|
469
|
+
UiFramework.dialogs.modal.open(React.createElement(AlertDialog, { messageDetails: messageDetails }));
|
|
477
470
|
}
|
|
478
471
|
/** Setup tool assistance instructions for a tool. The instructions include the main instruction, which includes the current prompt.
|
|
479
472
|
* @param instructions The tool assistance instructions.
|
|
@@ -530,4 +523,32 @@ MessageManager.onDisplayMessage = new BeUiEvent();
|
|
|
530
523
|
* @public
|
|
531
524
|
*/
|
|
532
525
|
MessageManager.onToolAssistanceChangedEvent = new ToolAssistanceChangedEvent(); // eslint-disable-line deprecation/deprecation
|
|
526
|
+
function AlertDialog({ messageDetails }) {
|
|
527
|
+
const { briefMessage, detailedMessage, priority } = messageDetails;
|
|
528
|
+
const iconType = MessageManager.getIconType(messageDetails);
|
|
529
|
+
const content = (React.createElement(React.Fragment, null,
|
|
530
|
+
React.createElement(Text, { variant: "leading" },
|
|
531
|
+
React.createElement(MessageRenderer, { message: briefMessage, useSpan: true })),
|
|
532
|
+
detailedMessage && (React.createElement("p", null,
|
|
533
|
+
React.createElement(Text, { variant: "body" },
|
|
534
|
+
React.createElement(MessageRenderer, { message: detailedMessage, useSpan: true }))))));
|
|
535
|
+
const { translate } = useTranslation();
|
|
536
|
+
const title = React.useMemo(() => {
|
|
537
|
+
switch (priority) {
|
|
538
|
+
case OutputMessagePriority.Error:
|
|
539
|
+
case OutputMessagePriority.Fatal:
|
|
540
|
+
return translate("general.error");
|
|
541
|
+
case OutputMessagePriority.Warning:
|
|
542
|
+
return translate("general.warning");
|
|
543
|
+
case OutputMessagePriority.Info:
|
|
544
|
+
return translate("general.information");
|
|
545
|
+
case OutputMessagePriority.Success:
|
|
546
|
+
return translate("general.success");
|
|
547
|
+
}
|
|
548
|
+
return translate("general.alert");
|
|
549
|
+
}, [priority, translate]);
|
|
550
|
+
return (
|
|
551
|
+
// eslint-disable-next-line deprecation/deprecation
|
|
552
|
+
React.createElement(StandardMessageBox, { opened: true, messageBoxType: MessageBoxType.Ok, iconType: iconType, title: title }, content));
|
|
553
|
+
}
|
|
533
554
|
//# sourceMappingURL=MessageManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageManager.js","sourceRoot":"","sources":["../../../src/appui-react/messages/MessageManager.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Notification\n */\n\nimport classnames from \"classnames\";\nimport { isEqual } from \"lodash\";\nimport * as React from \"react\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport type {\n MessageBoxValue,\n ToolAssistanceInstructions,\n ToolTipOptions,\n} from \"@itwin/core-frontend\";\nimport {\n ActivityMessageDetails,\n IModelApp,\n MessageBoxIconType,\n MessageBoxType,\n OutputMessageAlert,\n OutputMessagePriority,\n OutputMessageType,\n} from \"@itwin/core-frontend\";\nimport { MessageSeverity, UiEvent } from \"@itwin/appui-abstract\";\nimport type { IconSpec } from \"@itwin/core-react\";\nimport { MessageContainer, MessageRenderer } from \"@itwin/core-react\";\nimport { StandardMessageBox } from \"../dialog/StandardMessageBox.js\";\nimport { ElementTooltip } from \"../feedback/ElementTooltip.js\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport { PointerMessage } from \"./Pointer.js\";\nimport type {\n NotifyMessageDetailsType,\n NotifyMessageType,\n} from \"./ReactNotifyMessageDetails.js\";\nimport { StatusMessageManager } from \"./StatusMessageManager.js\";\nimport {\n SvgInfo,\n SvgStatusError,\n SvgStatusSuccess,\n SvgStatusWarning,\n} from \"@itwin/itwinui-icons-react\";\nimport type { useToaster } from \"@itwin/itwinui-react\";\nimport { BeUiEvent } from \"@itwin/core-bentley\";\nimport { ConfigurableUiActionId } from \"../redux/ConfigurableUiState.js\";\n\ntype Toaster = ReturnType<typeof useToaster>;\ntype ToasterSettings = Parameters<Toaster[\"setSettings\"]>;\ntype ToastOptions = Parameters<Toaster[\"positive\"]>[1];\n\nclass MessageBoxCallbacks {\n constructor(\n public readonly onFulfilled: (result: MessageBoxValue) => void,\n public readonly onRejected: (result: any) => void\n ) {}\n\n public handleMessageBoxResult = (result: MessageBoxValue) => {\n this.onFulfilled(result);\n };\n}\n\n/** [[MessageAddedEvent]] arguments.\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface MessageAddedEventArgs {\n /** Message details for the message added */\n message: NotifyMessageDetailsType;\n}\n\n/** Activity Message Event arguments.\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface ActivityMessageEventArgs {\n /** Current message for the activity */\n message: NotifyMessageType;\n /** Current percentage for the activity */\n percentage: number;\n /** Message details set by calling NotificationManager.setupActivityMessage */\n details?: ActivityMessageDetails;\n /** Indicates whether the activity message popup is being restored */\n restored?: boolean;\n}\n\n/** Input Field Message Event arguments.\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface InputFieldMessageEventArgs {\n /** Target HTML element for the Input Field message */\n target: Element;\n /** Message to be displayed near the input field */\n messageText: NotifyMessageType;\n /** Detailed message to be displayed near the input field */\n detailedMessage: NotifyMessageType;\n /** Priority of the input field message */\n priority: OutputMessagePriority;\n}\n\n/** Tool Assistance Changed event arguments.\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface ToolAssistanceChangedEventArgs {\n /** Tool Assistance instructions for the active tool */\n instructions: ToolAssistanceInstructions | undefined;\n}\n\n/** Message Added Event class.\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class MessageAddedEvent extends UiEvent<MessageAddedEventArgs> {}\n\n/** Messages Updated Event class.\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class MessagesUpdatedEvent extends UiEvent<{}> {}\n\n/** Activity Message Added Event class.\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class ActivityMessageUpdatedEvent extends UiEvent<ActivityMessageEventArgs> {}\n\n/** Activity Message Cancelled Event class.\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class ActivityMessageCancelledEvent extends UiEvent<{}> {}\n\n/** Input Field Message Added Event class\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class InputFieldMessageAddedEvent extends UiEvent<InputFieldMessageEventArgs> {}\n\n/** Input Field Message Removed Event class.\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class InputFieldMessageRemovedEvent extends UiEvent<{}> {}\n\n/** Open Message Center Event class.\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class OpenMessageCenterEvent extends UiEvent<{}> {}\n\n/** Tool Assistance Changed event class\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class ToolAssistanceChangedEvent extends UiEvent<ToolAssistanceChangedEventArgs> {}\n\n/**\n * Keeps track of the current activity message, and updates whenever\n * setupActivityMessageDetails() or setupActivityMessageValues()\n * is called.\n * Used to display tracked progress in ActivityMessage.\n */\nclass OngoingActivityMessage {\n public message: NotifyMessageType = \"\";\n public percentage: number = 0;\n public details: ActivityMessageDetails = new ActivityMessageDetails(\n true,\n true,\n true\n );\n public isRestored: boolean = false;\n}\n\n/** The MessageManager class manages messages and prompts. It is used by the [[AppNotificationManager]] class.\n * @public\n */\nexport class MessageManager {\n private static _maxCachedMessages = 500;\n private static _maxDisplayedStickyMessages = 3;\n private static _messages: NotifyMessageDetailsType[] = [];\n private static _ongoingActivityMessage: OngoingActivityMessage =\n new OngoingActivityMessage();\n private static _lastMessage?: NotifyMessageDetailsType;\n private static _activeMessageManager = new StatusMessageManager();\n private static _animateOutToElement: HTMLElement[] = [];\n private static _toastCloseCallbacks: {\n close: () => void;\n id: string;\n }[] = [];\n\n /** The MessageAddedEvent is fired when a message is added via outputMessage(). */\n // eslint-disable-next-line deprecation/deprecation\n public static readonly onMessageAddedEvent = new MessageAddedEvent();\n\n /** The MessagesUpdatedEvent is fired when a message is added or the messages are cleared. */\n // eslint-disable-next-line deprecation/deprecation\n public static readonly onMessagesUpdatedEvent = new MessagesUpdatedEvent();\n\n /** The ActivityMessageUpdatedEvent is fired when an Activity message updates via outputActivityMessage(). */\n public static readonly onActivityMessageUpdatedEvent =\n new ActivityMessageUpdatedEvent(); // eslint-disable-line deprecation/deprecation\n\n /** The ActivityMessageCancelledEvent is fired when an Activity message is cancelled via\n * endActivityMessage(ActivityMessageEndReason.Cancelled) or\n * by the user clicking the 'Cancel' link.\n */\n public static readonly onActivityMessageCancelledEvent =\n new ActivityMessageCancelledEvent(); // eslint-disable-line deprecation/deprecation\n\n public static readonly onInputFieldMessageAddedEvent =\n new InputFieldMessageAddedEvent(); // eslint-disable-line deprecation/deprecation\n public static readonly onInputFieldMessageRemovedEvent =\n new InputFieldMessageRemovedEvent(); // eslint-disable-line deprecation/deprecation\n\n public static readonly onOpenMessageCenterEvent =\n new OpenMessageCenterEvent(); // eslint-disable-line deprecation/deprecation\n\n /** @internal */\n public static readonly onDisplayMessage: BeUiEvent<{\n message: NotifyMessageDetailsType;\n options?: ToastOptions;\n settings?: ToasterSettings;\n animateOutToElement?: HTMLElement;\n // This is set by toast renderer to expose close function.\n close?: () => void;\n }> = new BeUiEvent();\n\n /** The ToolAssistanceChangedEvent is fired when a tool calls IModelApp.notifications.setToolAssistance().\n * @public\n */\n public static readonly onToolAssistanceChangedEvent =\n new ToolAssistanceChangedEvent(); // eslint-disable-line deprecation/deprecation\n\n /** List of messages as NotifyMessageDetailsType. */\n public static get messages(): Readonly<NotifyMessageDetailsType[]> {\n return this._messages;\n }\n\n /** Manager of active messages. */\n public static get activeMessageManager(): StatusMessageManager {\n return this._activeMessageManager;\n }\n\n /** Clear the message list. */\n public static clearMessages(): void {\n this._messages.splice(0);\n this._activeMessageManager.initialize();\n\n this._toastCloseCallbacks.forEach(({ close }) => close());\n this._toastCloseCallbacks.splice(0);\n\n this.onMessagesUpdatedEvent.emit({});\n this._lastMessage = undefined;\n }\n\n /** Update the message list. */\n public static updateMessages(): void {\n this.onMessagesUpdatedEvent.emit({});\n }\n\n /** Set the maximum number of cached message. */\n public static setMaxCachedMessages(max: number): void {\n this._maxCachedMessages = max;\n this.checkMaxCachedMessages();\n }\n\n /** The maximum number of displayed Sticky messages. */\n public static get maxDisplayedStickyMessages(): number {\n return this._maxDisplayedStickyMessages;\n }\n public static set maxDisplayedStickyMessages(max: number) {\n this._maxDisplayedStickyMessages = max;\n }\n\n /** Output a message and/or alert to the user.\n * @param message Details about the message to output.\n */\n public static outputMessage(message: NotifyMessageDetailsType): void {\n if (message.msgType === OutputMessageType.Pointer) {\n PointerMessage.showMessage(message);\n } else if (message.msgType === OutputMessageType.InputField) {\n if (message.inputField)\n MessageManager.displayInputFieldMessage(\n message.inputField,\n message.briefMessage,\n message.detailedMessage,\n message.priority\n );\n else message.msgType = OutputMessageType.Sticky; // Note: Changing the message.msgType here for InputField without inputField\n } else if (message.msgType === OutputMessageType.Alert) {\n if (message.openAlert === OutputMessageAlert.Balloon)\n message.msgType = OutputMessageType.Sticky;\n // Note: Changing the message.msgType here for Balloon\n else MessageManager.showAlertMessageBox(message);\n }\n\n MessageManager.addMessage(message);\n }\n\n /** Set the element where messages should be animated out to on exit.\n * @param element `HTMLElement` to animate out to.\n */\n public static registerAnimateOutToElement(element: HTMLElement | null) {\n this._animateOutToElement = !element\n ? []\n : [element, ...this._animateOutToElement];\n }\n\n /** Handles disconnected element modal frontstages, revert to last still displayed. */\n private static get animateOutToElement(): HTMLElement | undefined {\n if (this._animateOutToElement.length === 0) {\n return undefined;\n }\n if (this._animateOutToElement[0]?.isConnected) {\n return this._animateOutToElement[0];\n }\n this._animateOutToElement.splice(0, 1);\n return this.animateOutToElement;\n }\n\n /** Display a message.\n * Works only with `Sticky` and `Toast` message types.\n * @param message Details about the message to display.\n * @param options Optionally override individual toast parameters.\n * @param settings Optionally override all toasts settings (i.e. placement or order).\n * @returns Object with reference to the message (i.e. to close it programmatically) if it was displayed.\n */\n public static displayMessage(\n message: NotifyMessageDetailsType,\n options?: ToastOptions,\n settings?: ToasterSettings\n ) {\n if (\n message.msgType !== OutputMessageType.Sticky &&\n message.msgType !== OutputMessageType.Toast\n ) {\n return undefined;\n }\n\n const args: Parameters<\n (typeof MessageManager.onDisplayMessage)[\"emit\"]\n >[0] = {\n message,\n options,\n settings,\n animateOutToElement: this.animateOutToElement,\n };\n this.onDisplayMessage.emit(args);\n return {\n close: () => {\n args.close?.();\n },\n };\n }\n\n /** Output a message and/or alert to the user.\n * @param message Details about the message to output.\n */\n public static addMessage(message: NotifyMessageDetailsType): void {\n const activeMessage = this.activeMessageManager.messages.find((m) =>\n isEqual(message, m.messageDetails)\n );\n if (activeMessage) return;\n\n this.activeMessageManager.add(message);\n this.refreshToastMessages();\n this.onMessageAddedEvent.emit({ message });\n\n if (!isEqual(message, this._lastMessage)) {\n // Add message to message center if it is not the same as the last message.\n this.addToMessageCenter(message);\n this._lastMessage = message;\n }\n }\n\n /**\n * Closes sticky messages that are beyond the limit,\n * opens new toast and sticky messages from the active message manager.\n */\n private static refreshToastMessages() {\n this._toastCloseCallbacks = this._toastCloseCallbacks.filter((t) => {\n if (\n MessageManager.activeMessageManager.messages.some(\n (msg) => t.id === msg.id\n )\n ) {\n return true;\n }\n t.close();\n return false;\n });\n\n const messagesToAdd = MessageManager.activeMessageManager.messages.filter(\n (msg) => !this._toastCloseCallbacks.find((m) => m.id === msg.id)\n );\n messagesToAdd.forEach((msg) => {\n const displayedMessage = MessageManager.displayMessage(\n msg.messageDetails,\n {\n onRemove: () => {\n MessageManager.activeMessageManager.remove(msg.id);\n },\n }\n );\n if (!!displayedMessage)\n this._toastCloseCallbacks.push({\n close: displayedMessage.close,\n id: msg.id,\n });\n });\n }\n\n /** Add a message to the Message Center.\n * @param message Details about the message to output.\n */\n public static addToMessageCenter(message: NotifyMessageDetailsType): void {\n this._messages.push(message);\n this.onMessagesUpdatedEvent.emit({});\n this.checkMaxCachedMessages();\n }\n\n /** Checks number of messages against the maximum. */\n private static checkMaxCachedMessages(): void {\n if (this._messages.length > this._maxCachedMessages) {\n const numToErase = this._maxCachedMessages / 4;\n this._messages.splice(0, numToErase);\n this.onMessagesUpdatedEvent.emit({});\n }\n }\n\n /**\n * Sets details for setting up an Activity message.\n * @param details Details for setup of ActivityMessage\n * @returns true if details is valid and can be used to display ActivityMessage\n */\n public static setupActivityMessageDetails(\n details: ActivityMessageDetails\n ): boolean {\n this._ongoingActivityMessage.details = details;\n this._ongoingActivityMessage.isRestored = details.showDialogInitially;\n return true;\n }\n\n /**\n * Output an activity message to the user.\n * @param message The message text.\n * @param percentComplete The percentage of completion.\n * @return true if the message was displayed, false if the message could not be displayed.\n */\n public static outputActivityMessage(\n message: NotifyMessageType,\n percentComplete: number\n ): boolean {\n return MessageManager.setupActivityMessageValues(message, percentComplete);\n }\n\n /**\n * Sets values on _OngoingActivityMessage to be referenced when displaying\n * an ActivityMessage.\n * @param message Message of the process that ActivityMessage is tracking\n * @param percentage Progress made by activity in percentage\n * @param restored True if original ActivityMessage has been closed and\n * is now being restored from the status bar.\n * @returns true if details is valid and can be used to display ActivityMessage\n */\n public static setupActivityMessageValues(\n message: NotifyMessageType,\n percentage: number,\n restored?: boolean\n ): boolean {\n this._ongoingActivityMessage.message = message;\n this._ongoingActivityMessage.percentage = percentage;\n\n this.onActivityMessageUpdatedEvent.emit({\n message,\n percentage,\n details: this._ongoingActivityMessage.details,\n restored:\n restored !== undefined\n ? restored\n : this._ongoingActivityMessage.isRestored,\n });\n\n this._ongoingActivityMessage.isRestored = false;\n\n return true;\n }\n\n /**\n * Dismisses current ActivityMessage and ends activity if canceled.\n * @param isCompleted True if the activity was completed, false if it was canceled\n * @returns True if both ActivityMessage and activity process are ended.\n */\n public static endActivityMessage(isCompleted: boolean): boolean {\n this.endActivityProcessing(isCompleted);\n this.onActivityMessageCancelledEvent.emit({});\n return true;\n }\n\n /**\n * Ends processing for activity according to message definition.\n * @param isCompleted True if the activity was completed, false if it was canceled\n */\n private static endActivityProcessing(isCompleted: boolean): void {\n if (isCompleted) this._ongoingActivityMessage.details.onActivityCompleted();\n else this._ongoingActivityMessage.details.onActivityCancelled();\n }\n\n /**\n * Displays an input field message near target element.\n * @param target The currently focused or recently focused element to place the\n * input field message near.\n * @param messageText Text to display in the message.\n * @param detailedMessage Optional detailed message text to display.\n * @param priority Optional message priority which controls icon to display.\n */\n public static displayInputFieldMessage(\n target: HTMLElement,\n messageText: NotifyMessageType,\n detailedMessage: NotifyMessageType = \"\",\n priority = OutputMessagePriority.Error\n ) {\n this.onInputFieldMessageAddedEvent.emit({\n target,\n messageText,\n detailedMessage,\n priority,\n });\n }\n\n /**\n * Hides the currently displayed input field message.\n */\n public static hideInputFieldMessage() {\n this.onInputFieldMessageRemovedEvent.emit({});\n }\n\n /**\n * Opens message center.\n */\n public static openMessageCenter() {\n this.onOpenMessageCenterEvent.emit({});\n }\n\n /** Output a prompt to the user. A 'prompt' indicates an action the user should take to proceed. */\n public static outputPrompt(prompt: string): void {\n // eslint-disable-next-line deprecation/deprecation\n if (UiFramework.frameworkState) {\n // eslint-disable-next-line deprecation/deprecation\n UiFramework.dispatchActionToStore(\n // eslint-disable-next-line deprecation/deprecation\n ConfigurableUiActionId.SetToolPrompt,\n prompt,\n true\n );\n return;\n }\n }\n\n /** Extracts the message severity from the message details and returns the corresponding React icon.\n * @param details NotifyMessageDetailsType\n * @returns IconSpec\n * @deprecated in 4.16.0. Use {@link https://itwinui.bentley.com/ iTwinUI icons} instead.\n */\n public static getIconSpecFromDetails(\n details: NotifyMessageDetailsType\n // eslint-disable-next-line deprecation/deprecation\n ): IconSpec {\n const severity = MessageManager.getSeverity(details);\n // eslint-disable-next-line deprecation/deprecation\n let iconSpec: IconSpec = <SvgStatusSuccess />;\n switch (severity) {\n case MessageSeverity.Error:\n case MessageSeverity.Fatal:\n iconSpec = <SvgStatusError />;\n break;\n case MessageSeverity.Warning:\n iconSpec = <SvgStatusWarning />;\n break;\n case MessageSeverity.Information:\n iconSpec = <SvgInfo />;\n break;\n }\n return iconSpec;\n }\n /** Gets an icon CSS class name based on a given NotifyMessageDetailsType.\n * @public\n * @deprecated in 4.16.0. Used internally.\n */\n public static getIconClassName(details: NotifyMessageDetailsType): string {\n const severity = MessageManager.getSeverity(details);\n // eslint-disable-next-line deprecation/deprecation\n const className = MessageContainer.getIconClassName(severity);\n const iconClassName = classnames(\"icon\", \"notifymessage-icon\", className);\n\n return iconClassName;\n }\n\n /** Gets a MessageSeverity based on a given NotifyMessageDetailsType. */\n public static getSeverity(\n details: NotifyMessageDetailsType\n ): MessageSeverity {\n let severity = MessageSeverity.None;\n\n switch (details.priority) {\n case OutputMessagePriority.None:\n severity = MessageSeverity.Success;\n break;\n case OutputMessagePriority.Success:\n severity = MessageSeverity.Success;\n break;\n case OutputMessagePriority.Info:\n severity = MessageSeverity.Information;\n break;\n case OutputMessagePriority.Warning:\n severity = MessageSeverity.Warning;\n break;\n case OutputMessagePriority.Error:\n severity = MessageSeverity.Error;\n break;\n case OutputMessagePriority.Fatal:\n severity = MessageSeverity.Fatal;\n break;\n }\n\n return severity;\n }\n\n /** Gets a MessageBoxIconType based on a given NotifyMessageDetailsType. */\n public static getIconType(\n details: NotifyMessageDetailsType\n ): MessageBoxIconType {\n let iconType = MessageBoxIconType.NoSymbol;\n\n switch (details.priority) {\n case OutputMessagePriority.None:\n iconType = MessageBoxIconType.NoSymbol;\n break;\n case OutputMessagePriority.Success:\n iconType = MessageBoxIconType.Success;\n break;\n case OutputMessagePriority.Info:\n iconType = MessageBoxIconType.Information;\n break;\n case OutputMessagePriority.Warning:\n iconType = MessageBoxIconType.Warning;\n break;\n case OutputMessagePriority.Error:\n iconType = MessageBoxIconType.Critical;\n break;\n case OutputMessagePriority.Fatal:\n iconType = MessageBoxIconType.Critical;\n break;\n }\n\n return iconType;\n }\n\n /** Output a MessageBox and wait for response from the user.\n * @param mbType The MessageBox type.\n * @param message The message to display.\n * @param icon The MessageBox icon type.\n * @return the response from the user.\n */\n public static async openMessageBox(\n mbType: MessageBoxType,\n message: NotifyMessageType,\n icon: MessageBoxIconType\n ): Promise<MessageBoxValue> {\n return new Promise(\n (\n onFulfilled: (result: MessageBoxValue) => void,\n onRejected: (reason: any) => void\n ) => {\n const messageBoxCallbacks = new MessageBoxCallbacks(\n onFulfilled,\n onRejected\n );\n // eslint-disable-next-line deprecation/deprecation\n const messageElement = <MessageRenderer message={message} useSpan />;\n UiFramework.dialogs.modal.open(\n this.standardMessageBox(\n mbType,\n icon,\n UiFramework.translate(\"general.alert\"),\n messageElement,\n messageBoxCallbacks\n )\n );\n }\n );\n }\n\n /** @internal */\n public static showAlertMessageBox(\n messageDetails: NotifyMessageDetailsType\n ): void {\n const iconType = this.getIconType(messageDetails);\n const content = (\n <>\n {/* eslint-disable-next-line deprecation/deprecation */}\n <MessageRenderer message={messageDetails.briefMessage} useSpan />\n {messageDetails.detailedMessage && (\n <p>\n {/* eslint-disable-next-line deprecation/deprecation */}\n <MessageRenderer message={messageDetails.detailedMessage} useSpan />\n </p>\n )}\n </>\n );\n UiFramework.dialogs.modal.open(\n this.standardMessageBox(\n MessageBoxType.Ok,\n iconType,\n UiFramework.translate(\"general.alert\"),\n content\n )\n );\n }\n\n private static standardMessageBox(\n mbType: MessageBoxType,\n iconType: MessageBoxIconType,\n title: string,\n messageElement: React.ReactNode,\n callbacks?: MessageBoxCallbacks\n ): React.ReactNode {\n const onResult =\n callbacks !== undefined ? callbacks.handleMessageBoxResult : undefined;\n return (\n // eslint-disable-next-line deprecation/deprecation\n <StandardMessageBox\n opened={true}\n messageBoxType={mbType}\n iconType={iconType}\n title={title}\n onResult={onResult}\n >\n {messageElement}\n </StandardMessageBox>\n );\n }\n\n /** Setup tool assistance instructions for a tool. The instructions include the main instruction, which includes the current prompt.\n * @param instructions The tool assistance instructions.\n * @public\n */\n public static setToolAssistance(\n instructions: ToolAssistanceInstructions | undefined\n ) {\n MessageManager.onToolAssistanceChangedEvent.emit({ instructions });\n }\n\n /** Show a tooltip window. Saves tooltip location for AccuSnap to test if cursor has moved far enough away to close tooltip.\n * @param htmlElement The HTMLElement that anchors the tooltip.\n * @param message What to display inside the tooltip.\n * @param location An optional location, relative to the origin of htmlElement, for the tooltip. If undefined, center of `htmlElement`.\n * @param options Options that supply additional information about how the tooltip should function.\n */\n public static openToolTip(\n htmlElement: HTMLElement,\n message: NotifyMessageType,\n location?: XAndY,\n options?: ToolTipOptions\n ): void {\n IModelApp.notifications.toolTipLocation.setFrom(location);\n ElementTooltip.showTooltip(htmlElement, message, location, options);\n }\n\n /** @internal */\n public static closeAllMessages(): void {\n ElementTooltip.hideTooltip();\n PointerMessage.hideMessage();\n MessageManager.clearMessages();\n MessageManager.hideInputFieldMessage();\n MessageManager.endActivityMessage(false);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"MessageManager.js","sourceRoot":"","sources":["../../../src/appui-react/messages/MessageManager.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Notification\n */\n\nimport classnames from \"classnames\";\nimport { isEqual } from \"lodash\";\nimport * as React from \"react\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport type {\n MessageBoxValue,\n ToolAssistanceInstructions,\n ToolTipOptions,\n} from \"@itwin/core-frontend\";\nimport {\n ActivityMessageDetails,\n IModelApp,\n MessageBoxIconType,\n MessageBoxType,\n OutputMessageAlert,\n OutputMessagePriority,\n OutputMessageType,\n} from \"@itwin/core-frontend\";\nimport { MessageSeverity, UiEvent } from \"@itwin/appui-abstract\";\nimport type { IconSpec } from \"@itwin/core-react\";\nimport { MessageContainer, MessageRenderer } from \"@itwin/core-react\";\nimport { StandardMessageBox } from \"../dialog/StandardMessageBox.js\";\nimport { ElementTooltip } from \"../feedback/ElementTooltip.js\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport { PointerMessage } from \"./Pointer.js\";\nimport type {\n NotifyMessageDetailsType,\n NotifyMessageType,\n} from \"./ReactNotifyMessageDetails.js\";\nimport { StatusMessageManager } from \"./StatusMessageManager.js\";\nimport {\n SvgInfo,\n SvgStatusError,\n SvgStatusSuccess,\n SvgStatusWarning,\n} from \"@itwin/itwinui-icons-react\";\nimport { Text, type useToaster } from \"@itwin/itwinui-react\";\nimport { BeUiEvent } from \"@itwin/core-bentley\";\nimport { ConfigurableUiActionId } from \"../redux/ConfigurableUiState.js\";\nimport { useTranslation } from \"../hooks/useTranslation.js\";\n\ntype Toaster = ReturnType<typeof useToaster>;\ntype ToasterSettings = Parameters<Toaster[\"setSettings\"]>;\ntype ToastOptions = Parameters<Toaster[\"positive\"]>[1];\n\nclass MessageBoxCallbacks {\n constructor(\n public readonly onFulfilled: (result: MessageBoxValue) => void,\n public readonly onRejected: (result: any) => void\n ) {}\n\n public handleMessageBoxResult = (result: MessageBoxValue) => {\n this.onFulfilled(result);\n };\n}\n\n/** [[MessageAddedEvent]] arguments.\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface MessageAddedEventArgs {\n /** Message details for the message added */\n message: NotifyMessageDetailsType;\n}\n\n/** Activity Message Event arguments.\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface ActivityMessageEventArgs {\n /** Current message for the activity */\n message: NotifyMessageType;\n /** Current percentage for the activity */\n percentage: number;\n /** Message details set by calling NotificationManager.setupActivityMessage */\n details?: ActivityMessageDetails;\n /** Indicates whether the activity message popup is being restored */\n restored?: boolean;\n}\n\n/** Input Field Message Event arguments.\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface InputFieldMessageEventArgs {\n /** Target HTML element for the Input Field message */\n target: Element;\n /** Message to be displayed near the input field */\n messageText: NotifyMessageType;\n /** Detailed message to be displayed near the input field */\n detailedMessage: NotifyMessageType;\n /** Priority of the input field message */\n priority: OutputMessagePriority;\n}\n\n/** Tool Assistance Changed event arguments.\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface ToolAssistanceChangedEventArgs {\n /** Tool Assistance instructions for the active tool */\n instructions: ToolAssistanceInstructions | undefined;\n}\n\n/** Message Added Event class.\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class MessageAddedEvent extends UiEvent<MessageAddedEventArgs> {}\n\n/** Messages Updated Event class.\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class MessagesUpdatedEvent extends UiEvent<{}> {}\n\n/** Activity Message Added Event class.\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class ActivityMessageUpdatedEvent extends UiEvent<ActivityMessageEventArgs> {}\n\n/** Activity Message Cancelled Event class.\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class ActivityMessageCancelledEvent extends UiEvent<{}> {}\n\n/** Input Field Message Added Event class\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class InputFieldMessageAddedEvent extends UiEvent<InputFieldMessageEventArgs> {}\n\n/** Input Field Message Removed Event class.\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class InputFieldMessageRemovedEvent extends UiEvent<{}> {}\n\n/** Open Message Center Event class.\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class OpenMessageCenterEvent extends UiEvent<{}> {}\n\n/** Tool Assistance Changed event class\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class ToolAssistanceChangedEvent extends UiEvent<ToolAssistanceChangedEventArgs> {}\n\n/**\n * Keeps track of the current activity message, and updates whenever\n * setupActivityMessageDetails() or setupActivityMessageValues()\n * is called.\n * Used to display tracked progress in ActivityMessage.\n */\nclass OngoingActivityMessage {\n public message: NotifyMessageType = \"\";\n public percentage: number = 0;\n public details: ActivityMessageDetails = new ActivityMessageDetails(\n true,\n true,\n true\n );\n public isRestored: boolean = false;\n}\n\n/** The MessageManager class manages messages and prompts. It is used by the [[AppNotificationManager]] class.\n * @public\n */\nexport class MessageManager {\n private static _maxCachedMessages = 500;\n private static _maxDisplayedStickyMessages = 3;\n private static _messages: NotifyMessageDetailsType[] = [];\n private static _ongoingActivityMessage: OngoingActivityMessage =\n new OngoingActivityMessage();\n private static _lastMessage?: NotifyMessageDetailsType;\n private static _activeMessageManager = new StatusMessageManager();\n private static _animateOutToElement: HTMLElement[] = [];\n private static _toastCloseCallbacks: {\n close: () => void;\n id: string;\n }[] = [];\n\n /** The MessageAddedEvent is fired when a message is added via outputMessage(). */\n // eslint-disable-next-line deprecation/deprecation\n public static readonly onMessageAddedEvent = new MessageAddedEvent();\n\n /** The MessagesUpdatedEvent is fired when a message is added or the messages are cleared. */\n // eslint-disable-next-line deprecation/deprecation\n public static readonly onMessagesUpdatedEvent = new MessagesUpdatedEvent();\n\n /** The ActivityMessageUpdatedEvent is fired when an Activity message updates via outputActivityMessage(). */\n public static readonly onActivityMessageUpdatedEvent =\n new ActivityMessageUpdatedEvent(); // eslint-disable-line deprecation/deprecation\n\n /** The ActivityMessageCancelledEvent is fired when an Activity message is cancelled via\n * endActivityMessage(ActivityMessageEndReason.Cancelled) or\n * by the user clicking the 'Cancel' link.\n */\n public static readonly onActivityMessageCancelledEvent =\n new ActivityMessageCancelledEvent(); // eslint-disable-line deprecation/deprecation\n\n public static readonly onInputFieldMessageAddedEvent =\n new InputFieldMessageAddedEvent(); // eslint-disable-line deprecation/deprecation\n public static readonly onInputFieldMessageRemovedEvent =\n new InputFieldMessageRemovedEvent(); // eslint-disable-line deprecation/deprecation\n\n public static readonly onOpenMessageCenterEvent =\n new OpenMessageCenterEvent(); // eslint-disable-line deprecation/deprecation\n\n /** @internal */\n public static readonly onDisplayMessage: BeUiEvent<{\n message: NotifyMessageDetailsType;\n options?: ToastOptions;\n settings?: ToasterSettings;\n animateOutToElement?: HTMLElement;\n // This is set by toast renderer to expose close function.\n close?: () => void;\n }> = new BeUiEvent();\n\n /** The ToolAssistanceChangedEvent is fired when a tool calls IModelApp.notifications.setToolAssistance().\n * @public\n */\n public static readonly onToolAssistanceChangedEvent =\n new ToolAssistanceChangedEvent(); // eslint-disable-line deprecation/deprecation\n\n /** List of messages as NotifyMessageDetailsType. */\n public static get messages(): Readonly<NotifyMessageDetailsType[]> {\n return this._messages;\n }\n\n /** Manager of active messages. */\n public static get activeMessageManager(): StatusMessageManager {\n return this._activeMessageManager;\n }\n\n /** Clear the message list. */\n public static clearMessages(): void {\n this._messages.splice(0);\n this._activeMessageManager.initialize();\n\n this._toastCloseCallbacks.forEach(({ close }) => close());\n this._toastCloseCallbacks.splice(0);\n\n this.onMessagesUpdatedEvent.emit({});\n this._lastMessage = undefined;\n }\n\n /** Update the message list. */\n public static updateMessages(): void {\n this.onMessagesUpdatedEvent.emit({});\n }\n\n /** Set the maximum number of cached message. */\n public static setMaxCachedMessages(max: number): void {\n this._maxCachedMessages = max;\n this.checkMaxCachedMessages();\n }\n\n /** The maximum number of displayed Sticky messages. */\n public static get maxDisplayedStickyMessages(): number {\n return this._maxDisplayedStickyMessages;\n }\n public static set maxDisplayedStickyMessages(max: number) {\n this._maxDisplayedStickyMessages = max;\n }\n\n /** Output a message and/or alert to the user.\n * @param message Details about the message to output.\n */\n public static outputMessage(message: NotifyMessageDetailsType): void {\n if (message.msgType === OutputMessageType.Pointer) {\n PointerMessage.showMessage(message);\n } else if (message.msgType === OutputMessageType.InputField) {\n if (message.inputField)\n MessageManager.displayInputFieldMessage(\n message.inputField,\n message.briefMessage,\n message.detailedMessage,\n message.priority\n );\n else message.msgType = OutputMessageType.Sticky; // Note: Changing the message.msgType here for InputField without inputField\n } else if (message.msgType === OutputMessageType.Alert) {\n if (message.openAlert === OutputMessageAlert.Balloon)\n message.msgType = OutputMessageType.Sticky;\n // Note: Changing the message.msgType here for Balloon\n else MessageManager.showAlertMessageBox(message);\n }\n\n MessageManager.addMessage(message);\n }\n\n /** Set the element where messages should be animated out to on exit.\n * @param element `HTMLElement` to animate out to.\n */\n public static registerAnimateOutToElement(element: HTMLElement | null) {\n this._animateOutToElement = !element\n ? []\n : [element, ...this._animateOutToElement];\n }\n\n /** Handles disconnected element modal frontstages, revert to last still displayed. */\n private static get animateOutToElement(): HTMLElement | undefined {\n if (this._animateOutToElement.length === 0) {\n return undefined;\n }\n if (this._animateOutToElement[0]?.isConnected) {\n return this._animateOutToElement[0];\n }\n this._animateOutToElement.splice(0, 1);\n return this.animateOutToElement;\n }\n\n /** Display a message.\n * Works only with `Sticky` and `Toast` message types.\n * @param message Details about the message to display.\n * @param options Optionally override individual toast parameters.\n * @param settings Optionally override all toasts settings (i.e. placement or order).\n * @returns Object with reference to the message (i.e. to close it programmatically) if it was displayed.\n */\n public static displayMessage(\n message: NotifyMessageDetailsType,\n options?: ToastOptions,\n settings?: ToasterSettings\n ) {\n if (\n message.msgType !== OutputMessageType.Sticky &&\n message.msgType !== OutputMessageType.Toast\n ) {\n return undefined;\n }\n\n const args: Parameters<\n (typeof MessageManager.onDisplayMessage)[\"emit\"]\n >[0] = {\n message,\n options,\n settings,\n animateOutToElement: this.animateOutToElement,\n };\n this.onDisplayMessage.emit(args);\n return {\n close: () => {\n args.close?.();\n },\n };\n }\n\n /** Output a message and/or alert to the user.\n * @param message Details about the message to output.\n */\n public static addMessage(message: NotifyMessageDetailsType): void {\n const activeMessage = this.activeMessageManager.messages.find((m) =>\n isEqual(message, m.messageDetails)\n );\n if (activeMessage) return;\n\n this.activeMessageManager.add(message);\n this.refreshToastMessages();\n this.onMessageAddedEvent.emit({ message });\n\n if (!isEqual(message, this._lastMessage)) {\n // Add message to message center if it is not the same as the last message.\n this.addToMessageCenter(message);\n this._lastMessage = message;\n }\n }\n\n /**\n * Closes sticky messages that are beyond the limit,\n * opens new toast and sticky messages from the active message manager.\n */\n private static refreshToastMessages() {\n this._toastCloseCallbacks = this._toastCloseCallbacks.filter((t) => {\n if (\n MessageManager.activeMessageManager.messages.some(\n (msg) => t.id === msg.id\n )\n ) {\n return true;\n }\n t.close();\n return false;\n });\n\n const messagesToAdd = MessageManager.activeMessageManager.messages.filter(\n (msg) => !this._toastCloseCallbacks.find((m) => m.id === msg.id)\n );\n messagesToAdd.forEach((msg) => {\n const displayedMessage = MessageManager.displayMessage(\n msg.messageDetails,\n {\n onRemove: () => {\n MessageManager.activeMessageManager.remove(msg.id);\n },\n }\n );\n if (!!displayedMessage)\n this._toastCloseCallbacks.push({\n close: displayedMessage.close,\n id: msg.id,\n });\n });\n }\n\n /** Add a message to the Message Center.\n * @param message Details about the message to output.\n */\n public static addToMessageCenter(message: NotifyMessageDetailsType): void {\n this._messages.push(message);\n this.onMessagesUpdatedEvent.emit({});\n this.checkMaxCachedMessages();\n }\n\n /** Checks number of messages against the maximum. */\n private static checkMaxCachedMessages(): void {\n if (this._messages.length > this._maxCachedMessages) {\n const numToErase = this._maxCachedMessages / 4;\n this._messages.splice(0, numToErase);\n this.onMessagesUpdatedEvent.emit({});\n }\n }\n\n /**\n * Sets details for setting up an Activity message.\n * @param details Details for setup of ActivityMessage\n * @returns true if details is valid and can be used to display ActivityMessage\n */\n public static setupActivityMessageDetails(\n details: ActivityMessageDetails\n ): boolean {\n this._ongoingActivityMessage.details = details;\n this._ongoingActivityMessage.isRestored = details.showDialogInitially;\n return true;\n }\n\n /**\n * Output an activity message to the user.\n * @param message The message text.\n * @param percentComplete The percentage of completion.\n * @return true if the message was displayed, false if the message could not be displayed.\n */\n public static outputActivityMessage(\n message: NotifyMessageType,\n percentComplete: number\n ): boolean {\n return MessageManager.setupActivityMessageValues(message, percentComplete);\n }\n\n /**\n * Sets values on _OngoingActivityMessage to be referenced when displaying\n * an ActivityMessage.\n * @param message Message of the process that ActivityMessage is tracking\n * @param percentage Progress made by activity in percentage\n * @param restored True if original ActivityMessage has been closed and\n * is now being restored from the status bar.\n * @returns true if details is valid and can be used to display ActivityMessage\n */\n public static setupActivityMessageValues(\n message: NotifyMessageType,\n percentage: number,\n restored?: boolean\n ): boolean {\n this._ongoingActivityMessage.message = message;\n this._ongoingActivityMessage.percentage = percentage;\n\n this.onActivityMessageUpdatedEvent.emit({\n message,\n percentage,\n details: this._ongoingActivityMessage.details,\n restored:\n restored !== undefined\n ? restored\n : this._ongoingActivityMessage.isRestored,\n });\n\n this._ongoingActivityMessage.isRestored = false;\n\n return true;\n }\n\n /**\n * Dismisses current ActivityMessage and ends activity if canceled.\n * @param isCompleted True if the activity was completed, false if it was canceled\n * @returns True if both ActivityMessage and activity process are ended.\n */\n public static endActivityMessage(isCompleted: boolean): boolean {\n this.endActivityProcessing(isCompleted);\n this.onActivityMessageCancelledEvent.emit({});\n return true;\n }\n\n /**\n * Ends processing for activity according to message definition.\n * @param isCompleted True if the activity was completed, false if it was canceled\n */\n private static endActivityProcessing(isCompleted: boolean): void {\n if (isCompleted) this._ongoingActivityMessage.details.onActivityCompleted();\n else this._ongoingActivityMessage.details.onActivityCancelled();\n }\n\n /**\n * Displays an input field message near target element.\n * @param target The currently focused or recently focused element to place the\n * input field message near.\n * @param messageText Text to display in the message.\n * @param detailedMessage Optional detailed message text to display.\n * @param priority Optional message priority which controls icon to display.\n */\n public static displayInputFieldMessage(\n target: HTMLElement,\n messageText: NotifyMessageType,\n detailedMessage: NotifyMessageType = \"\",\n priority = OutputMessagePriority.Error\n ) {\n this.onInputFieldMessageAddedEvent.emit({\n target,\n messageText,\n detailedMessage,\n priority,\n });\n }\n\n /**\n * Hides the currently displayed input field message.\n */\n public static hideInputFieldMessage() {\n this.onInputFieldMessageRemovedEvent.emit({});\n }\n\n /**\n * Opens message center.\n */\n public static openMessageCenter() {\n this.onOpenMessageCenterEvent.emit({});\n }\n\n /** Output a prompt to the user. A 'prompt' indicates an action the user should take to proceed. */\n public static outputPrompt(prompt: string): void {\n // eslint-disable-next-line deprecation/deprecation\n if (UiFramework.frameworkState) {\n // eslint-disable-next-line deprecation/deprecation\n UiFramework.dispatchActionToStore(\n // eslint-disable-next-line deprecation/deprecation\n ConfigurableUiActionId.SetToolPrompt,\n prompt,\n true\n );\n return;\n }\n }\n\n /** Extracts the message severity from the message details and returns the corresponding React icon.\n * @param details NotifyMessageDetailsType\n * @returns IconSpec\n * @deprecated in 4.16.0. Use {@link https://itwinui.bentley.com/ iTwinUI icons} instead.\n */\n public static getIconSpecFromDetails(\n details: NotifyMessageDetailsType\n // eslint-disable-next-line deprecation/deprecation\n ): IconSpec {\n const severity = MessageManager.getSeverity(details);\n // eslint-disable-next-line deprecation/deprecation\n let iconSpec: IconSpec = <SvgStatusSuccess />;\n switch (severity) {\n case MessageSeverity.Error:\n case MessageSeverity.Fatal:\n iconSpec = <SvgStatusError />;\n break;\n case MessageSeverity.Warning:\n iconSpec = <SvgStatusWarning />;\n break;\n case MessageSeverity.Information:\n iconSpec = <SvgInfo />;\n break;\n }\n return iconSpec;\n }\n /** Gets an icon CSS class name based on a given NotifyMessageDetailsType.\n * @public\n * @deprecated in 4.16.0. Used internally.\n */\n public static getIconClassName(details: NotifyMessageDetailsType): string {\n const severity = MessageManager.getSeverity(details);\n // eslint-disable-next-line deprecation/deprecation\n const className = MessageContainer.getIconClassName(severity);\n const iconClassName = classnames(\"icon\", \"notifymessage-icon\", className);\n\n return iconClassName;\n }\n\n /** Gets a MessageSeverity based on a given NotifyMessageDetailsType. */\n public static getSeverity(\n details: NotifyMessageDetailsType\n ): MessageSeverity {\n let severity = MessageSeverity.None;\n\n switch (details.priority) {\n case OutputMessagePriority.None:\n severity = MessageSeverity.Success;\n break;\n case OutputMessagePriority.Success:\n severity = MessageSeverity.Success;\n break;\n case OutputMessagePriority.Info:\n severity = MessageSeverity.Information;\n break;\n case OutputMessagePriority.Warning:\n severity = MessageSeverity.Warning;\n break;\n case OutputMessagePriority.Error:\n severity = MessageSeverity.Error;\n break;\n case OutputMessagePriority.Fatal:\n severity = MessageSeverity.Fatal;\n break;\n }\n\n return severity;\n }\n\n /** Gets a MessageBoxIconType based on a given NotifyMessageDetailsType. */\n public static getIconType(\n details: NotifyMessageDetailsType\n ): MessageBoxIconType {\n let iconType = MessageBoxIconType.NoSymbol;\n\n switch (details.priority) {\n case OutputMessagePriority.None:\n iconType = MessageBoxIconType.NoSymbol;\n break;\n case OutputMessagePriority.Success:\n iconType = MessageBoxIconType.Success;\n break;\n case OutputMessagePriority.Info:\n iconType = MessageBoxIconType.Information;\n break;\n case OutputMessagePriority.Warning:\n iconType = MessageBoxIconType.Warning;\n break;\n case OutputMessagePriority.Error:\n iconType = MessageBoxIconType.Critical;\n break;\n case OutputMessagePriority.Fatal:\n iconType = MessageBoxIconType.Critical;\n break;\n }\n\n return iconType;\n }\n\n /** Output a MessageBox and wait for response from the user.\n * @param mbType The MessageBox type.\n * @param message The message to display.\n * @param icon The MessageBox icon type.\n * @return the response from the user.\n */\n public static async openMessageBox(\n mbType: MessageBoxType,\n message: NotifyMessageType,\n icon: MessageBoxIconType\n ): Promise<MessageBoxValue> {\n return new Promise(\n (\n onFulfilled: (result: MessageBoxValue) => void,\n onRejected: (reason: any) => void\n ) => {\n const messageBoxCallbacks = new MessageBoxCallbacks(\n onFulfilled,\n onRejected\n );\n // eslint-disable-next-line deprecation/deprecation\n const messageElement = <MessageRenderer message={message} useSpan />;\n UiFramework.dialogs.modal.open(\n // eslint-disable-next-line deprecation/deprecation\n <StandardMessageBox\n opened={true}\n messageBoxType={mbType}\n iconType={icon}\n title={UiFramework.translate(\"general.alert\")}\n onResult={messageBoxCallbacks.handleMessageBoxResult}\n >\n {messageElement}\n </StandardMessageBox>\n );\n }\n );\n }\n\n /** @internal */\n public static showAlertMessageBox(\n messageDetails: NotifyMessageDetailsType\n ): void {\n UiFramework.dialogs.modal.open(\n <AlertDialog messageDetails={messageDetails} />\n );\n }\n\n /** Setup tool assistance instructions for a tool. The instructions include the main instruction, which includes the current prompt.\n * @param instructions The tool assistance instructions.\n * @public\n */\n public static setToolAssistance(\n instructions: ToolAssistanceInstructions | undefined\n ) {\n MessageManager.onToolAssistanceChangedEvent.emit({ instructions });\n }\n\n /** Show a tooltip window. Saves tooltip location for AccuSnap to test if cursor has moved far enough away to close tooltip.\n * @param htmlElement The HTMLElement that anchors the tooltip.\n * @param message What to display inside the tooltip.\n * @param location An optional location, relative to the origin of htmlElement, for the tooltip. If undefined, center of `htmlElement`.\n * @param options Options that supply additional information about how the tooltip should function.\n */\n public static openToolTip(\n htmlElement: HTMLElement,\n message: NotifyMessageType,\n location?: XAndY,\n options?: ToolTipOptions\n ): void {\n IModelApp.notifications.toolTipLocation.setFrom(location);\n ElementTooltip.showTooltip(htmlElement, message, location, options);\n }\n\n /** @internal */\n public static closeAllMessages(): void {\n ElementTooltip.hideTooltip();\n PointerMessage.hideMessage();\n MessageManager.clearMessages();\n MessageManager.hideInputFieldMessage();\n MessageManager.endActivityMessage(false);\n }\n}\n\ninterface AlertDialogProps {\n messageDetails: NotifyMessageDetailsType;\n}\n\nfunction AlertDialog({ messageDetails }: AlertDialogProps) {\n const { briefMessage, detailedMessage, priority } = messageDetails;\n const iconType = MessageManager.getIconType(messageDetails);\n const content = (\n <>\n <Text variant=\"leading\">\n {/* eslint-disable-next-line deprecation/deprecation */}\n <MessageRenderer message={briefMessage} useSpan />\n </Text>\n {detailedMessage && (\n <p>\n <Text variant=\"body\">\n {/* eslint-disable-next-line deprecation/deprecation */}\n <MessageRenderer message={detailedMessage} useSpan />\n </Text>\n </p>\n )}\n </>\n );\n\n const { translate } = useTranslation();\n const title = React.useMemo(() => {\n switch (priority) {\n case OutputMessagePriority.Error:\n case OutputMessagePriority.Fatal:\n return translate(\"general.error\");\n case OutputMessagePriority.Warning:\n return translate(\"general.warning\");\n case OutputMessagePriority.Info:\n return translate(\"general.information\");\n case OutputMessagePriority.Success:\n return translate(\"general.success\");\n }\n return translate(\"general.alert\");\n }, [priority, translate]);\n return (\n // eslint-disable-next-line deprecation/deprecation\n <StandardMessageBox\n opened={true}\n messageBoxType={MessageBoxType.Ok}\n iconType={iconType}\n title={title}\n >\n {content}\n </StandardMessageBox>\n );\n}\n"]}
|