How to use @bentley/ui-ninezone - 10 common examples

To help you get started, we’ve selected a few @bentley/ui-ninezone examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github imodeljs / imodeljs / ui / framework / src / ui-framework / toolbar / GroupItem.tsx View on Github external
constructor(groupItemProps: GroupItemProps, onItemExecuted?: OnItemExecutedFunc) {
    super(groupItemProps, onItemExecuted);

    this.groupId = (groupItemProps.groupId !== undefined) ? groupItemProps.groupId : "";
    if (groupItemProps.groupId)
      this.groupId = groupItemProps.groupId;
    else {
      GroupItemDef._sId++;
      this.groupId = GroupItemDef.groupIdPrefix + GroupItemDef._sId;
    }

    this.directionExplicit = (groupItemProps.direction !== undefined);
    this.direction = (groupItemProps.direction !== undefined) ? groupItemProps.direction : Direction.Bottom;
    this.itemsInColumn = (groupItemProps.itemsInColumn !== undefined) ? groupItemProps.itemsInColumn : 7;
    this._panelLabel = PropsHelper.getStringSpec(groupItemProps.panelLabel, groupItemProps.paneLabelKey); // tslint:disable-line: deprecation
    this.items = groupItemProps.items;
    this.defaultActiveItemId = groupItemProps.defaultActiveItemId;
  }
github imodeljs / imodeljs / ui / framework / src / ui-framework / statusbar / StatusBar.tsx View on Github external
private getActivityMessage(): React.ReactNode {
    // istanbul ignore next
    if (!this.state.activityMessageInfo)
      return null;

    const messageDetails = this.state.activityMessageInfo.details;
    const percentComplete = UiFramework.translate("activityCenter.percentComplete");
    const cancelMessage = UiCore.translate("dialog.cancel");
    return (
      
        }
      >
        
                {cancelMessage}
                <span>&nbsp;</span>
                
                  <i>
                </i><i>
               :
              
                <i></i></i>
github imodeljs / imodeljs / ui / framework / src / ui-framework / frontstage / FrontstageComposer.tsx View on Github external
private initializeFrontstageLayout(nineZone: NineZoneManagerProps) {
    const nestedPanelsManager = FrontstageManager.NineZoneManager.getNestedPanelsManager();
    nestedPanelsManager.getPanelsManager("inner").getPanelManager(StagePanelType.Top).minSize = 20;
    nestedPanelsManager.getPanelsManager("inner").getPanelManager(StagePanelType.Top).collapseOffset = 0;
    nestedPanelsManager.getPanelsManager("inner").getPanelManager(StagePanelType.Bottom).minSize = 20;
    nestedPanelsManager.getPanelsManager("inner").getPanelManager(StagePanelType.Bottom).collapseOffset = 0;
    nestedPanelsManager.getPanelsManager("outer").getPanelManager(StagePanelType.Top).minSize = 20;
    nestedPanelsManager.getPanelsManager("outer").getPanelManager(StagePanelType.Top).collapseOffset = 0;
    nestedPanelsManager.getPanelsManager("outer").getPanelManager(StagePanelType.Bottom).minSize = 20;
    nestedPanelsManager.getPanelsManager("outer").getPanelManager(StagePanelType.Bottom).collapseOffset = 0;

    widgetZoneIds.forEach((zoneId: WidgetZoneId) => {
      const zoneDef = this.getZoneDef(zoneId);
      if (!zoneDef || zoneDef.zoneState === ZoneState.Off)
        return;

      if (!zoneDef.allowsMerging)
        this.setZoneAllowsMerging(zoneId, false);

      if (zoneDef.mergeWithZone)
        this.mergeZones(zoneId, zoneDef.mergeWithZone);

      const zoneProps = nineZone.zones.zones[zoneId];
      // istanbul ignore else
      if (zoneProps.widgets.length >= 1) {
github imodeljs / imodeljs / ui / framework / src / ui-framework / frontstage / Frontstage.tsx View on Github external
private cloneStagePanelElement(panelDef: StagePanelDef | undefined, runtimeProps: FrontstageRuntimeProps): React.ReactNode {
    if (!this.state.isUiVisible && UiShowHideManager.showHidePanels)
      return null;

    if (panelDef) {
      const { location } = panelDef;
      const panelElement = Frontstage.getStagePanelElement(location, this.props);

      // istanbul ignore else
      if (panelElement && React.isValidElement(panelElement)) {
        const panelKey = getNestedStagePanelKey(panelDef.location);
        const panels = runtimeProps.nineZone.nested.panels[panelKey.id];
        const panel = StagePanelsManager.getPanel(panelKey.type, panels);
        const draggedWidget = runtimeProps.nineZone.zones.draggedWidget;

        const panelRuntimeProps: StagePanelRuntimeProps = {
          draggedWidgetId: draggedWidget ? draggedWidget.id : undefined,
          getWidgetContentRef: this._getContentRef,
          isInFooterMode: runtimeProps.nineZone.zones.isInFooterMode,
          isTargeted: !!runtimeProps.nineZone.zones.target,
          panel,
          panelDef,
          stagePanelChangeHandler: runtimeProps.stagePanelChangeHandler,
          widgetChangeHandler: runtimeProps.widgetChangeHandler,
          widgets: runtimeProps.nineZone.zones.widgets,
          widgetTabs: runtimeProps.widgetTabs,
          zoneDefProvider: runtimeProps.zoneDefProvider,
        };
github imodeljs / imodeljs / ui / framework / src / ui-framework / zones / Zone.tsx View on Github external
public render(): React.ReactNode {
    const { runtimeProps } = this.props;

    if (!runtimeProps)
      return null;

    const { zoneDef } = runtimeProps;

    let widgetElement: React.ReactNode;
    // istanbul ignore else
    if (runtimeProps.zone.widgets.length === 1) {
      if (zoneDef.isToolSettings &amp;&amp; isToolSettingsWidgetManagerProps(runtimeProps.widget) &amp;&amp; runtimeProps.widget.mode === ToolSettingsWidgetMode.TitleBar) {
        const widgetDef = zoneDef.getSingleWidgetDef();
        const isClosed = widgetDef ? (widgetDef.state === WidgetState.Closed || widgetDef.state === WidgetState.Hidden) : false;
        return (
github imodeljs / imodeljs / test-apps / ui-test-app / src / frontend / tools / AnalysisAnimationToolSettings.tsx View on Github external
{UiFramework.translate("tools.AnalysisAnimation.ToolSettings.duration")}
          <input id="animationDuration" value="{(this.state.animationDuration" step="1" max="30" min="1" type="number">
          {UiFramework.translate("tools.AnalysisAnimation.ToolSettings.seconds")}
        
        <div>
          <input checked="{this.state.isLooping}" type="checkbox" id="animationLoop">
          {UiFramework.translate("tools.AnalysisAnimation.ToolSettings.loop")}
        </div>
        <div>
          <input id="animationSlider" value="{this.state.elapsedTime.toString()}" max="{this.state.animationDuration.toString()}" min="0" type="range">
        </div>
        <div>
          
                }
                /&gt;
                }
                /&gt;
</div>
github imodeljs / imodeljs / test-apps / ui-test-app / src / frontend / appui / frontstages / Frontstage4.tsx View on Github external
private getNavigationWidget(): React.ReactNode {

    const horizontalToolbar =
      
            
            
             ModalDialogManager.openDialog(this.modalDialog())} /&gt;
             ModalDialogManager.openDialog(this.radialMenu())} /&gt;
             ModalDialogManager.openDialog(this.testPopup())} /&gt;
          
        }
      /&gt;;

    const verticalToolbar =
github imodeljs / imodeljs / test-apps / ui-test-app / src / frontend / appui / frontstages / Frontstage3.tsx View on Github external
private getNavigationWidget(): React.ReactNode {

    const horizontalToolbar =
      
            
            
            
          
        }
      /&gt;;

    const verticalToolbar =
github imodeljs / imodeljs / test-apps / ui-test-app / src / frontend / appui / frontstages / Frontstage2.tsx View on Github external
,
              ,
            ]}
          /&gt;
        }
      /&gt;
    );
  }
}

/** Define a ToolWidget with Buttons to display in the TopLeft zone.
 */
class FrontstageToolWidget extends React.Component {
  private _horizontalToolbar =
    
          
          
          
        
      }
    /&gt;;

  private _verticalToolbar =
github imodeljs / imodeljs / test-apps / ui-test-app / src / frontend / appui / frontstages / Frontstage1.tsx View on Github external
labelKey: "SampleApp:buttons.switchLayout",
      execute: async () =&gt; {
        const activeFrontstageDef = FrontstageManager.activeFrontstageDef;
        if (activeFrontstageDef) {
          const contentLayout = ContentLayoutManager.findLayout("TwoHalvesHorizontal");
          if (contentLayout &amp;&amp; activeFrontstageDef.contentGroup) {
            await ContentLayoutManager.setActiveLayout(contentLayout, activeFrontstageDef.contentGroup);
          }
        }
      },
    });
  }

  private _horizontalToolbar =
    
          
          
          
          
          
        
      }
    /&gt;;

  private _verticalToolbar =