Skip to content

Dashboard App ​

The One Place Suite Dashboard is the central navigation hub that provides access to all suite applications. It dynamically adapts its layout based on the container context and manages feature sideloading.

Overview ​

  • Route: /feature/one-place-suite-dashboard
  • Framework: Angular 19 (Standalone Components)
  • Main Component: DashboardHomeComponent

Features ​

Adaptive Layout ​

The dashboard automatically switches between two layouts:

  1. Center View: Full-width card grid when running as the main feature
  2. Left Navigation Menu: Compact vertical menu when acting as a sidebar

Feature Management ​

  • Opens features in right panel (cols: 12)
  • Supports top features for Client Search
  • Tracks active features with visual indicators
  • Prevents re-initialization when already in position

Key Functionality ​

Layout Detection ​

typescript
private checkAndSetLeftNavMode() {
  const containerWidth = window.innerWidth;
  if (containerWidth < 500) {
    this.setLeftNavMode(true);
  }
}

When container width is less than 500px, the dashboard assumes it's in left menu position.

Feature Navigation ​

typescript
navigateToFeature(feature: DashboardFeatures) {
  // Client Search opens in top panel
  if (feature.featureName === 'Client Search') {
    this.openTopFeature(feature);
    return;
  }
  
  // Other features open in right panel
  this.activeRightFeature = feature.featureName;
  this.moveDashboardToLeftMenu();
  this.openRightFeature(feature);
}

Smart Repositioning ​

typescript
private moveDashboardToLeftMenu() {
  const isAlreadyInLeftMenu = window.innerWidth < 500;
  
  if (!isAlreadyInLeftMenu) {
    // Move dashboard from center to left menu
    ipaSdk.platform.sideload.menuLeftFeature({
      active: true,
      src: '/feature/one-place-suite-dashboard',
      left: 250
    });
  }
  this.setLeftNavMode(true);
}

Prevents unnecessary re-initialization by checking current position.

State Management ​

Observable-Based UI State ​

typescript
private _isLeftNavMode = new BehaviorSubject<boolean>(false);
isLeftNavMode$ = this._isLeftNavMode.asObservable();

Uses RxJS BehaviorSubject for reactive UI updates.

Active Feature Tracking ​

typescript
activeRightFeature: string | null = null;
activeTopFeature: string | null = null;

isFeatureActive(featureName: string): boolean {
  return this.activeRightFeature === featureName || 
         this.activeTopFeature === featureName;
}

Available Features ​

FeaturePositionRoute
Account Visibility ManagerRight/feature/account-visibility-manager-v2
PFM ManagerRight/feature/pfm-manager
Client SearchTop/feature/one-place-client-search
Mobile DistributionRight/feature/cxt-mobile-distribution
One Place DocsRight/feature/one-place-docs
IO DocsRight/feature/io-docs
IPA DocsRight/feature/ipa-docs

Styling ​

Center View ​

  • Card-based grid layout
  • Hover effects with gradient animations
  • Responsive columns (1-3 columns based on screen size)

Left Navigation View ​

  • Vertical menu items
  • Active state indicators
  • Close button for active features
  • Fixed 250px width

Usage Example ​

typescript
// Open Account Visibility Manager
ipaSdk.platform.sideload.centerFeature({
  active: true,
  src: '/feature/one-place-suite-dashboard',
  cols: 12
});

The dashboard will automatically handle feature navigation and layout adaptation.