Skip to content

Latest commit

 

History

History
1978 lines (1098 loc) · 121 KB

CHANGELOG_WORKBENCH.md

File metadata and controls

1978 lines (1098 loc) · 121 KB

17.0.0-beta.9 (2024-05-22)

Bug Fixes

  • workbench/dialog: avoid ExpressionChangedAfterItHasBeenCheckedError when registering dialog header, footer and actions (5554428)
  • workbench/dialog: set initial focus on delayed content (312280e)

Features

  • workbench/message-box: enable microfrontend display in a message box (3e9d88d)

BREAKING CHANGES

  • workbench/message-box: Support for displaying microfrontend in a message box has been added.

    To migrate, update to the latest version of @scion/workbench-client.

17.0.0-beta.8 (2024-05-07)

Bug Fixes

  • workbench/view: fix issues to prevent a view from closing (a280af9), closes #27 #344
  • workbench/view: update view properties when navigating an open view (02a24ff)

Code Refactoring

  • workbench/router: remove blank prefix from navigation extras (446fa51)
  • workbench/router: remove option to close view via workbench router link (88d1704)

Dependencies

  • workbench: require Angular version 17.0.6 or later to fix angular/angular#53239 (dd78d07)

Features

  • workbench/router: control workbench part to navigate views (0bf35a7)
  • workbench/router: provide API to modify the workbench layout (46ea446)
  • workbench/router: support navigation to children of the empty path route (da578a9), closes #487
  • workbench: provide function to set up the SCION Workbench (1a506ef)
  • workbench: support navigation of views in the initial layout (or perspective) (1ffd757), closes #445

BREAKING CHANGES

  • workbench/view: Interface and method for preventing closing of a view have changed.

    To migrate, implement the CanClose instead of the WorkbenchViewPreDestroy interface.

    Before migration:

    class YourComponent implements WorkbenchViewPreDestroy {
      public async onWorkbenchViewPreDestroy(): Promise<boolean> {
        // return `true` to close the view, otherwise `false`.
      }
    }

    After migration:

    class YourComponent implements CanClose {
      public async canClose(): Promise<boolean> {
        // return `true` to close the view, otherwise `false`.
      }
    }
  • workbench/router: Property blankInsertionIndex in WorkbenchNavigationExtras has been renamed.

    To migrate, update to the latest version of @scion/workbench-client and use WorkbenchNavigationExtras.position instead of WorkbenchNavigationExtras.blankInsertionIndex.

  • workbench/router: Property blankPartId in WorkbenchNavigationExtras has been renamed.

    To migrate, use WorkbenchNavigationExtras.partId instead of WorkbenchNavigationExtras.blankPartId.

  • workbench: Views in the initial layout (or perspective) must now be navigated.

    Previously, no explicit navigation was required because views and routes were coupled via route outlet and view id.

    Migrate the layout as follows:

    Explicitly navigate views, passing an empty array of commands and the view id as navigation hint.

    // Before Migration
    provideWorkbench({
      layout: (factory: WorkbenchLayoutFactory) => factory
        .addPart(MAIN_AREA)
        .addPart('left', {relativeTo: MAIN_AREA, align: 'left'})
        .addView('navigator', {partId: 'left', activateView: true}),
    });
    
    // After Migration
    provideWorkbench({
      layout: (factory: WorkbenchLayoutFactory) => factory
        .addPart(MAIN_AREA)
        .addPart('left', {relativeTo: MAIN_AREA, align: 'left'})
        .addView('navigator', {partId: 'left', activateView: true})
        // Navigate view, passing hint to match route.
        .navigateView('navigator', [], {hint: 'navigator'}),
    });

    Migrate the routes as follows:

    • Remove the outlet property;
    • Add canMatchWorkbenchView guard and initialize it with the hint passed to the navigation;
    // Before Migration
    provideRouter([
      {
        path: '',
        outlet: 'navigator',
        loadComponent: () => ...,
      },
    ]);
    
    // After Migration
    provideRouter([
      {
        path: '',
        // Match route only if navigated with specified hint.
        canMatch: [canMatchWorkbenchView('navigator')],
        loadComponent: () => ...,
      },
    ]);
  • workbench: Changed type of view id from string to ViewId.

    If storing the view id in a variable, change its type from string to ViewId.

  • workbench/router: Removed the option to close a view via the wbRouterLink directive.

    The router link can no longer be used to close a view. To close a view, use the WorkbenchView, the WorkbenchRouter, or the WorkbenchService instead.

    Examples:

    // Closing a view via `WorkbenchView` handle
    inject(WorkbenchView).close();
    
    // Closing view(s) via `WorkbenchRouter`
    inject(WorkbenchRouter).navigate(['path/*/view'], {close: true});
    
    // Closing view(s) via `WorkbenchService`
    inject(WorkbenchService).closeViews('view.1', 'view.2');
  • workbench: SCION Workbench requires Angular version 17.0.6 or later to fix angular/angular#53239

17.0.0-beta.7 (2024-03-29)

Bug Fixes

  • workbench/view: do not overwrite CSS classes set in different scopes (02bc372), closes #394
  • workbench/view: handle undefined keydown event key (66358dd)
  • workbench/view: render tab content when dragging view quickly into the window (73645d8)

Code Refactoring

  • workbench/dialog: consolidate API for closing a dialog (40414c4)
  • workbench/view: move navigational state from route data to view handle (3d6a5ca)

Features

  • workbench/dialog: enable microfrontend display in a dialog (11d762b)

BREAKING CHANGES

  • workbench/dialog: The method closeWithError has been removed from the WorkbenchDialog handle. Instead, pass an Error object to the close method.

    Before

    import {WorkbenchDialog} from '@scion/workbench';
    
    inject(WorkbenchDialog).closeWithError('some error');

    After

    import {WorkbenchDialog} from '@scion/workbench';
    
    inject(WorkbenchDialog).close(new Error('some error'));
  • workbench/view: Removed WorkbenchView.cssClasses property for reading CSS classes. Use WorkbenchView.cssClass for both reading and setting CSS class(es) instead.

  • workbench/view: Moving navigational state to the view handle has introduced a breaking change.

    To migrate, read the navigational view state from the view handle instead of the activated route data, as follows: WorkbenchView.state.

17.0.0-beta.6 (2024-03-14)

Bug Fixes

  • workbench: avoid Angular change detection cycle on keyboard event (e99b9a6)
  • workbench: fix moving view to empty main area (3bbe5ca)

17.0.0-beta.5 (2024-02-29)

Bug Fixes

  • workbench/router: support moving empty-path view to new window (acebd4c)
  • workbench/view: display arrow cursor when hovering over context menu items (5f41151)
  • workbench/view: ensure sci-router-outlet of inactive microfrontend view has correct attributes in the DOM (3e6be3f)
  • workbench/view: open view moved via drag & drop after the active view (78dc249)

Features

  • workbench/view: enable dependency injection in context menu action callback (7d8d041)
  • workbench/view: support moving view to different workbench window (408f634)

BREAKING CHANGES

  • workbench/view: Support for programmatically moving view to different workbench window has introduced a breaking change.

    The signature of WorkbenchView#move has changed.

    To migrate:

    • Specify the target part as the first argument, optionally defining the region via options object.
    • Pass new-window instead of blank-window to move the view to a new window.
    • To move a view to a specific workbench window, pass the target workbench id via options object. The target workbench id is available via WORKBENCH_ID DI token in the target application.
    • Note that the built-in view context menu has been renamed from moveBlank to moveToNewWindow, breaking if overriding defaults such as text or accelerators.

17.0.0-beta.4 (2024-01-26)

Bug Fixes

  • workbench/dialog: ensure letters of dialog title are not clipped (b877d55)
  • workbench/dialog: prevent resizing blocked dialog (9561166)
  • workbench/dialog: prevent user interaction when opening a blocked dialog (b433cde)
  • workbench/message-box: align message on the left, not in the center (d5950ce)
  • workbench/message-box: increase padding for better aesthetics (3fef14c)
  • workbench/message-box: wrap title if too long (4bb5b89)

17.0.0-beta.3 (2024-01-23)

Bug Fixes

  • workbench/dialog: consider minimum size in resizing constraints (408676c)
  • workbench/dialog: do not block dialogs of other views (0c1b88e)
  • workbench/dialog: propagate view context (c22222f)
  • workbench/popup: propagate view context (31e9700)
  • workbench/message-box: open message box in a dialog (bdcd02b), closes #438
  • workbench: throw error for objects not available for dependency injection (a36ae5e)

Features

  • workbench/dialog: support custom header and footer (5c6a4d6)

BREAKING CHANGES

  • workbench/message-box: Consolidation of the MessageBox API has introduced a breaking change.

    Refer to the documentation for migration examples: https://github.com/SchweizerischeBundesbahnen/scion-workbench/blob/master/docs/site/howto/how-to-open-message-box.md

    To migrate:

    • MessageBoxService is now WorkbenchMessageBoxService.
    • MessageBoxConfig is now WorkbenchMessageBoxOptions.
    • Signature of WorkbenchMessageBoxService#open method has changed. Pass the message (text or component) as the first argument, not via options object.
    • injector option has been moved to a top-level property (previously MessageBoxConfig#componentConstructOptions).
    • viewContainerRef option has been removed (no replacement).
    • componentInput option has been renamed to inputs with the type changed to a dictionary. Inputs are now available as input properties in the component, previously via MessageBox#input handle.
    • MessageBox handle has been removed. Configure the message box when opening the message box.
    • Registration of custom action handlers has been removed (no replacement).
    • Pressing the Escape key no longer closes the message box for an action with the 'close' key.
  • workbench/dialog: Support for custom header and footer has introduced a breaking change.

    To migrate:

    • Type of WorkbenchDialog.padding is now boolean. Set to false to remove the padding, or set the CSS variable --sci-workbench-dialog-padding for a custom padding.
    • --sci-workbench-dialog-header-divider-color CSS variable has been removed (no replacement).

17.0.0-beta.2 (2023-11-29)

Features

  • workbench/dialog: make dialog resizable (34ce415)

17.0.0-beta.1 (2023-11-21)

Dependencies

  • workbench: update @scion/workbench to Angular 17 (637e8bd), closes #485

Features

  • workbench: provide workbench dialog (34e5acc)

BREAKING CHANGES

  • workbench: Updating @scion/workbench to Angular 17 introduced a breaking change.

    To migrate:

    • update your application to Angular 17.x; for detailed migration instructions, refer to https://v17.angular.io/guide/update-to-latest-version;

    • update @scion/components to version 17; for detailed migration instructions, refer to https://github.com/SchweizerischeBundesbahnen/scion-toolkit/blob/master/CHANGELOG_COMPONENTS.md;

    • If deploying the application in a subdirectory, use a relative directory path for the browser to load the icon files relative to the document base URL (as specified in the <base> HTML tag). Note that using a relative path requires to exclude the icon files from the application build. Depending on building the application with esbuild @angular-devkit/build-angular:application or webpack @angular-devkit/build-angular:browser, different steps are required to exclude the icons from the build.

      Using @angular-devkit/build-angular:application (esbuild)

      Configure the @scion/workbench SCSS module to load the icon font relative to the document base URL:

      @use '@scion/workbench' with (
       $icon-font: (
         directory: 'path/to/font' // no leading slash, typically `assets/fonts`
       )
      );

      Add the path to the externalDependencies build option in the angular.json file:

      "externalDependencies": [
        "path/to/font/scion-workbench-icons.*"
      ]

      Using @angular-devkit/build-angular:browser (webpack)

      Configure the @scion/workbench SCSS module to load the icon font relative to the document base URL:

      @use '@scion/workbench' with (
        $icon-font: (
          directory: '^path/to/font' // no leading slash but with a caret (^), typically `^assets/fonts`
        )
      );

16.0.0-beta.10 (2023-11-08)

Bug Fixes

  • workbench: show splash if instructed by the capability, but only if not navigating to the same capability (54095b3)
  • workbench: do not render divider preceding tab dragged out of its tabbar (390178a)

16.0.0-beta.9 (2023-10-31)

Features

  • workbench: enable microfrontend to display a splash until loaded (7a79065)
  • workbench: enable customizing minimum tab width (4052128)
  • workbench: propagate color scheme to embedded content (276fcf3)

16.0.0-beta.8 (2023-10-10)

Bug Fixes

  • workbench: activate part when activating view (2e2368a)
  • workbench: activate part when microfrontend gains focus (6e05d8c)
  • workbench: allow to focus element outside the context menu when opened (2556b04)
  • workbench: close view list menu when microfrontend gains focus (629cd8d)
  • workbench: detach overlays associated with peripheral views when maximizing the main area (6cf3388)
  • workbench: do not close views that are not closable (cf9993b)

Features

  • workbench: rework tab design and styling of the SCION Workbench (5cbd354), closes #110

BREAKING CHANGES

  • workbench: The new tab design and theming of the SCION Workbench has introduced a breaking change.

    To migrate:

    • update @scion/components to version 16.2.0 or higher
    • update @scion/workbench-client to version 1.0.0-beta.19 or higher
    • The workbench can now be styled using well-defined design tokens instead of undocumented CSS selectors. See How to theme SCION Workbench for a list of supported tokens.
    • The tab height has changed from two lines to one line, not displaying the heading anymore. You can change the tab height back to two lines by setting the --sci-workbench-tab-height design token to 3.5rem.
      :root {
        --sci-workbench-tab-height: 3.5rem;
      }
    • Custom icon font is now configured top-level in @scion/workbench SCSS module. Previously, the custom icon font was configured under the $theme map entry.

      Before:

      @use '@scion/workbench' with (
        $theme: (
          icon-font: (
            filename: 'custom-workbench-icons',
            version: '1.0.0'
          )
        )
      );

      After:

      @use '@scion/workbench' with (
        icon-font: (
          filename: 'custom-workbench-icons',
          version: '1.0.0'
        )
      );
    • Contribution of custom tab component has changed:
      • Close button is now rendered separately and can be removed from the custom tab component.
      • Custom tab component should add a right margin if rendered in the context of a tab or drag image to not overlap the close button.
      • Inject current rendering context using VIEW_TAB_RENDERING_CONTEXT DI token instead of VIEW_TAB_CONTEXT DI token. Supported contexts are tab, list-item and drag-image.

16.0.0-beta.7 (2023-09-26)

Code Refactoring

  • workbench: display start page standalone, not nested in a workbench part (37a1350), closes #492

BREAKING CHANGES

  • workbench: Changing the display of the start page has introduced a breaking change.

    The workbench no longer supports displaying part actions on the start page. Instead, add controls (actions) directly to the start page.

16.0.0-beta.6 (2023-09-20)

Bug Fixes

  • workbench: do not publish changed layout objects until processed a layout change (8286d65)

Features

  • workbench: allow for a layout with an optional main area (ff6697a), closes #443

BREAKING CHANGES

  • workbench: Adding support for optional main area introduced breaking changes.

    The following APIs have changed:

    • renamed MAIN_AREA_PART_ID to MAIN_AREA;
    • changed signature of WorkbenchLayoutFn to take WorkbenchLayoutFactory instead of WorkbenchLayout as argument;
    • layout definitions, if any, must now add the MAIN_AREA part explicitly;
    • changed inputs of wbPartAction directive to take canMatch function instead of view, part and area inputs;

    The following snippets illustrate how a migration could look like:

    Initial layout: Before migration

    import {MAIN_AREA_PART_ID, WorkbenchModule} from '@scion/workbench';
    
    WorkbenchModule.forRoot({
      layout: layout => layout
        .addPart('left', {relativeTo: MAIN_AREA_PART_ID, align: 'left', ratio: .25})
        .addView('navigator', {partId: 'left', activateView: true})
    });

    Initial layout: After migration

    import {MAIN_AREA, WorkbenchLayoutFactory, WorkbenchModule} from '@scion/workbench';
    
    WorkbenchModule.forRoot({
      layout: (factory: WorkbenchLayoutFactory) => factory
        .addPart(MAIN_AREA)
        .addPart('left', {relativeTo: MAIN_AREA, align: 'left', ratio: .25})
        .addView('navigator', {partId: 'left', activateView: true})
    });

    Part Action: Before migration

    <wb-workbench>
      <ng-template wbPartAction area="main">
        <button [wbRouterLink]="'/path/to/view'">
          Open View
        </button>
      </ng-template>
    </wb-workbench>

    Part Action: After migration

    <wb-workbench>
      <ng-template wbPartAction [canMatch]="isPartInMainArea">
        <button [wbRouterLink]="'/path/to/view'">
          Open View
        </button>
      </ng-template>
    </wb-workbench>
    isPartInMainArea = (part: WorkbenchPart): boolean => {
      return part.isInMainArea;
    };

16.0.0-beta.5 (2023-08-24)

Bug Fixes

  • workbench: display perspective also for slow/asynchronous initial navigation (da4bfe5)
  • workbench: display view 'standalone' when moving it to a new window (3d851af), closes #477
  • workbench: ensure menu items in view context-menu to display in full-width (0702fb1)
  • workbench: resolve perspective layout storage issues (754747a), closes #470 #471 #472
  • workbench: support application URL to contain view outlets of views contained the perspective grid (1eead4b), closes #474

Features

  • workbench: allow for navigation to empty path auxiliary routes (5397bee), closes #476
  • workbench: support asynchronous navigation in WorkbenchRouter.ɵnavigate (e82495f)

16.0.0-beta.4 (2023-08-11)

Bug Fixes

  • workbench: fetch icon font for applications deployed in a subdirectory (02db939), closes #466

16.0.0-beta.3 (2023-08-08)

Bug Fixes

  • workbench: fix moving view tabs in the tabbar (cfc8482), closes #444

16.0.0-beta.2 (2023-08-04)

Bug Fixes

  • workbench: allow re-mounting of the workbench component (6fdc142), closes #250

Features

  • workbench: enable users to drag views to the side of the main or peripheral area (5ea3fc9), closes #444

16.0.0-beta.1 (2023-06-08)

Dependencies

  • workbench: update @scion/workbench to Angular 16 (98af801), closes #429

Features

  • workbench: accept passing undefined in optional inputs (b19f428)
  • workbench: comply with basic accessibility rules (ed52668)
  • workbench: mark required inputs as required (e8ccb94)

BREAKING CHANGES

15.0.0-beta.8 (2023-06-08)

Bug Fixes

  • workbench: reset part action list styling (dde93b6)

15.0.0-beta.7 (2023-06-06)

Features

  • workbench: enable action contribution to specific part or area (10b5f6a)

BREAKING CHANGES

  • workbench: Programmatic contribution of part actions has changed.

    To migrate:

    • Specify Portal instead of ComponentRef or TemplateRef.

    • Replace WorkbenchPart.registerPartAction with WorkbenchService.registerPartAction.

      const workbenchService = inject(WorkbenchService);
      
      workbenchService.registerPartAction({
        portal: new ComponentPortal(YourComponent),
        target: {
          partId: ['console', 'navigator'],
        },
      });

15.0.0-beta.6 (2023-05-25)

Bug Fixes

  • workbench/notification: highlight close button on hover (5714503)
  • workbench/viewlist: do not animate opening the menu (d35de9a)
  • workbench/viewlist: do not render top border if opened in the south (cddac34)
  • workbench/viewlist: render active view marker in full height (d68e860)

15.0.0-beta.5 (2023-05-23)

Features

  • workbench: contribute filter field to filter views in the viewlist menu (4bb2781)
  • workbench: list all views in the viewlist menu (bce8fdf)
  • workbench: do not clip view tabs if there are no part actions (86f5412)
  • workbench: provide better user experience when dragging view tabs (23ade70), closes #303
  • workbench: support perspectives and initial view arrangement (3f6fb22), closes #305 #231

BREAKING CHANGES

  • workbench: adding support for perspectives introduced a breaking change.

    The following APIs have changed:

    • WorkbenchViewPart => WorkbenchPart
    • WorkbenchViewPartAction => WorkbenchPartAction
    • ViewPartActionDirective => WorkbenchPartActionDirective
    • WbBeforeDestroy => WorkbenchViewPreDestroy
    • WbBeforeDestroy.wbBeforeDestroy => WorkbenchViewPreDestroy.onWorkbenchViewPreDestroy
    • ViewMenuItemDirective => WorkbenchViewMenuItemDirective
    • WbRouterLinkDirective => WorkbenchRouterLinkDirective
    • WbNavigationExtras => WorkbenchNavigationExtras
    • WorkbenchService.views$ was changed to emit a readonly array of WorkbenchView objects instead of a string array of view ids.
    • WorkbenchService.destroyView => WorkbenchService.closeViews
    • WorkbenchService.registerViewPartAction => WorkbenchService.registerPartAction
    • WorkbenchViewPart.partId => WorkbenchPart.id
    • WorkbenchViewPart.registerViewPartAction => WorkbenchPart.registerPartAction
    • WorkbenchView.viewId => WorkbenchView.id
    • WorkbenchTestingModule.forRoot => WorkbenchTestingModule.forTest
    • WorkbenchTestingModule.forChild => WorkbenchTestingModule
    • Internal DOM structure of SCION Workbench has changed. To migrate custom workbench styling, inspect the new DOM structure.

    The following APIs have been removed:

    • Deprecated Activity API was removed. There is no replacement. Instead, define an initial layout. See the How-To Guide for more information.
    • Method WorkbenchService.activateView was removed. Instead, use the WorkbenchRouter to activate the view.
    • Route data WorkbenchRouteData.part was removed. There is no replacement.

    The selector of the following directives have changed:

    • wbViewPartAction => wbPartAction

15.0.0-beta.4 (2023-04-04)

Bug Fixes

  • workbench/theme: remove Internet Explorer specific icon files (02866e1)
  • workbench: do not display close button of active view in the viewlist menu (de07443)
  • workbench: do not display viewlist menu button while dragging views (3495d63)
  • workbench: focus element which the user clicked to close the viewlist menu (ac2a124)
  • workbench: render larger gap between items in the viewlist menu (ecfe8a4)
  • workbench: update @scion/components to display viewlist menu button only on tab overflow (f169a72), closes scion-toolkit@22baab7

Code Refactoring

  • workbench/theme: rename workbench icon files (a7cbf6b)

Features

  • workbench/theme: invalidate browser cache when workbench icons change (1291bba)
  • workbench/theme: support configuration of a custom path to load workbench icon files (bee949c)
  • workbench: change icon of viewlist menu button to "chevron down" (b7135e5)
  • workbench: highlight active view in the viewlist menu (6589db8)

BREAKING CHANGES

  • workbench/theme: renaming workbench icon files introduced a breaking change.

    To migrate, download the workbench icon files from GitHub, unzip them and place the extracted files in the assets/fonts folder.

15.0.0-beta.3 (2023-02-22)

Bug Fixes

  • workbench/view: fix position of close button in view tabs in development build (34de1e9)

15.0.0-beta.2 (2023-02-16)

Bug Fixes

  • workbench/view: fix position of close button in view tabs (fe4590f)

15.0.0-beta.1 (2023-02-10)

Bug Fixes

  • workbench/router: do not throw error if closing a view via router link (f0d4bde)
  • workbench/router: ignore matrix params to resolve views for navigation (ce133bf), closes #239

Dependencies

  • workbench: update @scion/workbench to Angular 15 (f805faf), closes #347

Features

  • workbench/router: support closing the current view via router link without explicit target (b9f03fd)
  • workbench/router: support closing views that match a pattern (4d39107), closes #240

BREAKING CHANGES

  • workbench: Updating @scion/workbench to Angular 15 introduced a breaking change.

    To migrate:

  • workbench/router: adding support for closing views that match a pattern introduced a breaking change in the Workbench Router API.

    The communication protocol between host and client is backward compatible, so you can upgrade the host and clients independently.

    To migrate:

    • Use close=true instead of closeIfPresent=true in navigation extras to instruct the router to close matching view(s).
    • Matrix parameters do not affect view resolution anymore.
    • The array of commands (path) now supports the asterisk wildcard segment (*) to match view(s) with any value in that segment.
    • To close a specific view, set a view target instead of a path.

    The following snippets illustrate how a migration could look like:

    Close views

    // Before migration: matrix params affect view resolution
    this.workbenchRouter.navigate(['/view', {param: 1}], {target: 'blank'}); // opens view 1
    this.workbenchRouter.navigate(['/view', {param: 2}], {target: 'blank'}); // opens view 2
    this.workbenchRouter.navigate(['/view', {param: 1}], {closeIfPresent: true}); // closes view 1
    this.workbenchRouter.navigate(['/view', {param: 2}], {closeIfPresent: true}); // closes view 2
    
    // After migration: matrix params do not affect view resolution
    this.workbenchRouter.navigate(['/view', {param: 1}], {target: 'blank'}); // opens view 1
    this.workbenchRouter.navigate(['/view', {param: 2}], {target: 'blank'}); // opens view 2
    this.workbenchRouter.navigate(['/view'], {close: true}); // closes view 1 and view 2

    Close views matching a pattern (NEW)

    // Open 4 views
    this.workbenchRouter.navigate(['team', 33, 'user', 11], {target: 'blank'});  // opens view 1
    this.workbenchRouter.navigate(['team', 33, 'user', 12], {target: 'blank'});  // opens view 2
    this.workbenchRouter.navigate(['team', 44, 'user', 11], {target: 'blank'});  // opens view 3
    this.workbenchRouter.navigate(['team', 44, 'user', 12], {target: 'blank'});  // opens view 4
    
    // Closes view 1
    this.workbenchRouter.navigate(['team', 33, 'user', 11], {close: true});
    
    // Closes view 1 and view 2
    this.workbenchRouter.navigate(['team', 33, 'user', '*'], {close: true});
    
    // Closes view 2 and view 4
    this.workbenchRouter.navigate(['team', '*', 'user', 12], {close: true});
    
    // Closes all views
    this.workbenchRouter.navigate(['team', '*', 'user', '*'], {close: true});

    Close view by providing a viewId (NEW)

    this.workbenchRouter.navigate([], {target: 'view.1', close: true});  // commands array has to be empty

    NOTE: The Workbench Router Link uses the exact same API as the Workbench Router, therefore the migration is identical.

  • workbench/router: ignoring matrix params to resolve views for navigation introduced a breaking change in the Workbench Router API.

    The communication protocol between host and client is backward compatible, so you can upgrade the host and clients independently.

    To migrate:

    • Use target=auto instead of activateIfPresent=true in navigation extras.
      Using auto as the navigation target navigates existing view(s) that match the array of commands (path). If not finding a matching view, the navigation opens a new view. This is the default behavior if no target is specified.
    • Use target=blank instead of activateIfPresent=false in navigation extras.
      Using blank as the navigation target always navigates in a new view.
    • Use target=<view.id> instead of setting target=self and selfViewId=<view.id> in navigation extras.
      Setting a view id as the navigation target replaces the specified view, or creates a new view if not found.
    • Use the property activate in navigation extras to instruct the router to activate the view after navigation. Defaults to true if not specified.
    • If using WorkbenchRouterLink directive and pressing CTRL or META (Mac: ⌘, Windows: ⊞), the view is opened in a new view tab but not activated anymore. By setting the property activate=true, this behavior can be overwritten.

    The following snippets illustrate how a migration could look like:

    Navigate existing view(s)

    // Before migration
    this.workbenchRouter.navigate(['/view'], {activateIfPresent: true});
    
    // After migration
    this.workbenchRouter.navigate(['/view']);
    this.workbenchRouter.navigate(['/view'], {target: 'auto'}); // this is equivalent to the above statement

    Open view in new view tab

    // Before migration
    this.workbenchRouter.navigate(['/view'], {activateIfPresent: false});
    
    // After migration
    this.workbenchRouter.navigate(['/view'], {target: 'blank'});

    Replace existing view

    // Before migration
    this.workbenchRouter.navigate(['/view'], {target: 'self', selfViewId: 'view.1'});
    
    // After migration
    this.workbenchRouter.navigate(['/view'], {target: 'view.1'});

    Prevent view activation after navigation (NEW)

    this.workbenchRouter.navigate(['/view'], {target: 'blank', activate: false});

14.0.0-beta.9 (2023-01-31)

Bug Fixes

  • workbench/messagebox: fix registration of MessageBoxService in root injector (47beed6)

14.0.0-beta.8 (2022-12-21)

Bug Fixes

  • workbench/popup: attach popup to the DOM even if the view is inactive (24d7d7c)
  • workbench/popup: do not provide popup config for injection (1656679)

Features

  • workbench/host: enable popup opener to locate popup via CSS class (73a4ee0), closes #358

Dependencies

  • workbench/host: update @scion/microfrontend-platform to version 1.0.0-rc.12 (1f674fa)

14.0.0-beta.7 (2022-12-07)

Bug Fixes

  • workbench/host: destroy SCION Microfrontend Platform when destroying the Angular platform (2f62e66)
  • workbench/host: dispose view-related command handlers on platform shutdown (f784a28)
  • workbench/host: fix zone synchronization when displaying a notification outside of the Angular zone (db78df0)
  • workbench/host: fix zone synchronization when opening a message box outside of the Angular zone (d4e70fe)
  • workbench/host: inject initializers provided under MICROFRONTEND_PLATFORM_POST_STARTUP DI token in the Angular zone (2581190)
  • workbench/host: provide WorkbenchNotificationService for injection (ee89380)
  • workbench/host: register application-specific messaging interceptors before workbench/platform interceptors (3204973)
  • workbench/host: retain focus on element that closed popup due to loss of focus (29c82bf)

Dependencies

  • workbench/host: update @scion/microfrontend-platform to version 1.0.0-rc.11 (34fec1d)

BREAKING CHANGES

  • workbench/host: Updating @scion/microfrontend-platform to version 1.0.0-rc.11 introduced a breaking change.

    More information on how to migrate can be found in the changelog of the SCION Microfrontend Platform.

14.0.0-beta.6 (2022-11-09)

Bug Fixes

  • workbench: resolve view-related data for views that are child of component-less routes (2fb8ae9), closes #357

Features

  • workbench/host: provide lifecycle hook invoked before starting the microfrontend platform (0ee9982)

Dependencies

  • workbench/host: update @scion/microfrontend-platform to version 1.0.0-rc.10 (966ec41)

14.0.0-beta.5 (2022-10-13)

Bug Fixes

  • workbench-client/router: set title/heading as passed to navigation (f182859)

Features

  • workbench-client/router: support named parameters in title/heading of view capability (98f4bbd)

14.0.0-beta.4 (2022-10-11)

Bug Fixes

  • workbench/view: display title/heading of a view as specified in the constructor of the view (74db341)

Features

  • workbench/popup: add 'referrer' to popup handle to provide information about the calling context (edf6f53)
  • workbench/popup: associate sci-router-outlet with provider and capability identity (71176b7)
  • workbench/view: associate sci-router-outlet with provider and capability identity (47f0f96)

14.0.0-beta.3 (2022-10-10)

Dependencies

  • workbench: migrate to the asynchronous Interception API of @scion/microfrontend-platform (ab8df30)

BREAKING CHANGES

14.0.0-beta.2 (2022-10-07)

Bug Fixes

  • workbench/popup: open popup inside Angular zone (2cdd994)
  • workbench/router: navigate inside Angular zone (48e0e1a)

Features

  • workbench/popup: allow positioning of a popup relative to its contextual view or the page viewport (484d9bd), closes #342
  • workbench/router: allow setting CSS classes on a view via router and route data definition (3d46204)

DEPRECATIONS

  • workbench/router: deprecate constants for declaring view title and heading in route data definition

    • Constants for declaring a view's title and heading in its route data definition have been moved to WorkbenchRouteData and the former constants WB_VIEW_TITLE_PARAM, WB_VIEW_HEADING_PARAM and WB_STATE_DATA are deprecated. Deprecated constants will be removed in version 16.
    • Setting a view's title and heading via URL matrix parameters has been deprecated and will be removed in version 16. No replacement is planned.

    To migrate:

    • replace WB_VIEW_TITLE_PARAM with WorkbenchRouteData.title
    • replace WB_VIEW_HEADING_PARAM with WorkbenchRouteData.heading
    • replace WB_STATE_DATA with WorkbenchRouteData.state

14.0.0-beta.1 (2022-09-14)

Bug Fixes

  • workbench: do not display backdrop when opening the view list menu (d80582f)
  • workbench: fix resolution of SASS modules when linking the library via tsconfig path overrides (213d58b)
  • workbench: render view tabs smaller (8d2b66e)

Dependencies

  • workbench: update @scion/workbench to Angular 14 (bd4bcd7), closes #340

BREAKING CHANGES

13.0.0-beta.2 (2022-05-20)

Bug Fixes

  • workbench: support importing the workbench theme without using the tilde as node_modules alias (a4556ac)

Dependencies

  • workbench: migrate to the framework-agnostic package @scion/toolkit (38368e9)

BREAKING CHANGES

  • workbench: Migrating to the framework-agnostic package @scion/toolkit introduced a breaking change.

    Previously, framework-agnostic and Angular-specific tools were published in the same NPM package @scion/toolkit, which often led to confusion and prevented framework-agnostic tools from having a release cycle independent of the Angular project. Therefore, Angular-specific tools have been moved to the NPM package @scion/components. Framework-agnostic tools continue to be released under @scion/toolkit, but now starting with version 1.0.0 instead of pre-release versions.

    To migrate:

    • Install the NPM package @scion/toolkit in version 1.0.0 using the following command: npm install @scion/toolkit@latest --save. Note that the toolkit was previously released as pre-releases of version 13.0.0 or older.
    • Install the NPM module @scion/components in version 13.0.0 using the following command: npm install @scion/components@latest --save
    • If you are using Angular components from the toolkit in your project, for example the <sci-viewport> component, please follow the migration instructions of the SCION Toolkit Changelog. Components of the toolkit have been moved to the NPM package @scion/components.
  • workbench: Adding support to import the workbench theme without using the tilde introduced a breaking change.

    Angular 13 has dropped the tilde support (~) for resolving Sass files located in the node_modules folder. For more information, refer to the Angular migration commit https://github.com/angular/components/commit/f2ff9e3.

    To migrate:

    • In styles.scss, import the SASS module @scion/workbench as follows: @use '@scion/workbench'. It is no longer necessary to include the "theme" mixin because applied as a side effect when importing the module.

      Before the migration:

      @import '~@scion/workbench/theming';
      @include wb-theme();

      After the migration:

      @use '@scion/workbench';

13.0.0-beta.1 (2022-05-02)

Bug Fixes

  • workbench/view: discard parameter if set to undefined (b3b6a14), closes #325
  • workbench/view: preserve position and size of inactive views (c0f869b)

Dependencies

  • workbench: update @scion/workbench to Angular 13 and migrate to RxJS 7.5 (e666841), closes #298

BREAKING CHANGES

12.0.0-beta.3 (2022-03-17)

Bug Fixes

  • workbench/microfrontend-support: do not delegate log messages from @scion/microfrontend-platform to the workbench logger (f514a13)

Dependencies

  • workbench/microfrontend-support: upgrade @scion/microfrontend-platform to v1.0.0-rc.1 (048fabf)

12.0.0-beta.2 (2022-02-11)

Bug Fixes

  • workbench: ensure calling wbBeforeDestroy only for the view to be closed (e25cefb)
  • workbench: set view properties of inactive views upon initial view tab navigation (30d573f)
  • workbench: use transparent backdrop in the view's context menu (236a41a)

Code Refactoring

  • workbench/popup: open popups from within an interceptor (a11fd9d), closes #276
  • workbench/view: open views from within an interceptor (137b8d0)

Features

BREAKING CHANGES

  • workbench: Supporting @scion/microfrontend-platform v1.0.0-beta.20 introduced a breaking change in the configuration of the host application and the host/client communication protocol.

    SCION Microfrontend Platform consolidated the API for configuring the platform, eliminating the different ways to configure the platform. Consequently, SCION Workbench could also simplify its API for enabling microfrontend support.

    Related issue of the SCION Microfrontend Platform: SchweizerischeBundesbahnen/scion-microfrontend-platform/#96

    Host App Migration

    • property WorkbenchModuleConfig.microfrontends has been renamed to WorkbenchModuleConfig.microfrontendPlatform and its type changed from WorkbenchMicrofrontendConfig to MicrofrontendPlatformConfig (provided by @scion/microfrontend-platform);
    • MicrofrontendPlatformConfigLoader has been changed to return an instance of MicrofrontendPlatformConfig instead of the PlatformConfig;
    • DI token POST_MICROFRONTEND_PLATFORM_CONNECT has been renamed to MICROFRONTEND_PLATFORM_POST_STARTUP in order to be consistent with other workbench DI tokens;
    • provide the host's manifest, if any, via MicrofrontendPlatformConfig.host.manifest instead of WorkbenchMicrofrontendConfig.platformHost.manifest; either as URL or object literal
    • register applications in MicrofrontendPlatformConfig.applications instead of WorkbenchMicrofrontendConfig.platform.apps;
    • specify the symbolic name of the host in MicrofrontendPlatformConfig.host.symbolicName instead of WorkbenchMicrofrontendConfig.platformHost.symbolicName;
    • configure properties in MicrofrontendPlatformConfig.properties instead of WorkbenchMicrofrontendConfig.platform.properties;
    • specify global manifestLoadTimeout in MicrofrontendPlatformConfig.manifestLoadTimeout instead of WorkbenchMicrofrontendConfig.platform.manifestLoadTimeout;
    • specify global activatorLoadTimeout in MicrofrontendPlatformConfig.activatorLoadTimeout instead of WorkbenchMicrofrontendConfig.platform.activatorLoadTimeout;
    • the bean MicroApplicationConfig has been removed; you can now obtain the application's symbolic name as following: Beans.get<string>(APP_IDENTITY);
    • the interface ApplicationManifest has been renamed to Manifest;

    For further instructions on how to migrate the host, refer to https://github.com/SchweizerischeBundesbahnen/scion-microfrontend-platform/blob/master/docs/site/changelog/changelog.md#host-app-migration

  • workbench/popup: Opening popups from within an interceptor introduced a breaking change in the host/client communication protocol.

    The communication protocol between host and client HAS CHANGED for opening a popup. You need to update host and affected clients to the new version simultaneously. The API has not changed; the breaking change applies only to the version of @scion/workbench and @scion/workbench-client. To migrate, upgrade to @scion/workbench@12.0.0-beta.2 and @scion/workbench-client@1.0.0-beta.8, respectively.

  • workbench/view: Opening views from within an interceptor introduced a breaking change in the host/client communication protocol.

    The communication protocol between host and client HAS CHANGED for opening a view. You need to update host and affected clients to the new version simultaneously. The API has not changed; the breaking change applies only to the version of @scion/workbench and @scion/workbench-client. To migrate, upgrade to @scion/workbench@12.0.0-beta.2 and @scion/workbench-client@1.0.0-beta.8, respectively.

12.0.0-beta.1 (2021-07-12)

chore

  • update project workspace to Angular 12 (8be4410), closes #277

11.0.0-beta.8 (2021-07-09)

chore

  • compile with TypeScript strict checks enabled (c13e3b6), closes #246

11.0.0-beta.7 (2021-04-13)

Features

  • workbench/core: allow getting a reference to a workbench view (934ec66)
  • workbench/popup: allow registering providers for dependency injection (c2cec23)
  • workbench/popup: allow the host app to provide popup capabilities (a4e74b1), closes #270

BREAKING CHANGES

  • workbench/popup: Adding support for opening a popup of the host app from within a microfrontend introduced a breaking change in the host/client communication protocol.

    The communication protocol between host and client HAS CHANGED for opening a popup. You need to update host and clients to the new version simultaneously. The API has not changed; the breaking change applies only to the version of @scion/workbench and @scion/workbench-client. To migrate, upgrade to @scion/workbench@11.0.0-beta.7 and @scion/workbench-client@1.0.0-beta.6, respectively.

11.0.0-beta.6 (2021-02-12)

Bug Fixes

  • workbench-client/router: provide microfrontends with the most recent view capability (0b8f140)
  • workbench/view: support workbench keystrokes from embedded content (e031f96)

Code Refactoring

  • workbench/popup: configure contextual reference(s) via context object (0591e7a)

Features

  • workbench/message-box: allow controlling which view to block when opening a view-modal message box (3434e5b), closes #251

BREAKING CHANGES

  • workbench/popup: Changed popup config for passing contextual reference(s)

    To migrate: Set a popup's view reference via PopupConfig#context#viewId instead of PopupConfig#viewRef.

11.0.0-beta.5 (2021-02-10)

Features

  • support for merging parameters in self navigation (a984ace), closes #259

11.0.0-beta.4 (2021-02-03)

Bug Fixes

  • workbench/message-box: display message box with properties as set in message box component (496249e), closes #253
  • workbench/notification: display notification with properties as set in notification component (4159a09), closes #253
  • workbench/view: allow setting a microfrontend's view title via matrix param (c86b680)
  • workbench/view: fill content of views loaded from lazy modules vertically and horizontally (24f6038)

Features

  • workbench/microfrontend: upgrade to @scion/microfrontend-platform@1.0.0-beta.11 (11c2f20)

11.0.0-beta.3 (2021-01-25)

Bug Fixes

  • workbench: start microfrontend platform outside the Angular zone (296f6b0)

Code Refactoring

  • workbench-client/message-box: consolidate message box API to be consistent with the popup API (4a386c3)
  • workbench-client/notification: consolidate notification API to be consistent with the message box and popup API (162a70d)

Features

  • workbench-client/message-box: allow messages to be displayed from microfrontends (30aef07)
  • workbench-client/notification: allow notifications to be displayed from microfrontends (4757ac3)
  • workbench-client/popup: allow providing a microfrontend for display in a workbench popup (bc23e65)
  • workbench/popup: allow to open a popup from a screen coordinate and bind it to the lifecycle of a view (864d75c)
  • workbench/startup: export workbench startup lifecycle hooks (321e72b)

BREAKING CHANGES

  • workbench-client/notification: The refactoring of the notification introduced a breaking change as properties were renamed:

    • To display a notification, pass a NotificationConfig instead of a Notification object. The Notification object is now used exclusively as the handle for injection into the notification component. It has the following new methods: setTitle, setSeverity, setDuration, setCssClass.
    • If passing data to the notification component, set it via componentInput config property instead of the input property.
  • workbench-client/message-box: The refactoring of the message box introduced a breaking change as properties were renamed:

    • To display a message box, pass a MessageBoxConfig instead of a MessageBox object. The MessageBox object is now used exclusively as the handle for injection into the message box component. It has the following new methods: setTitle, setSeverity, setActions, setCssClass.
    • If passing data to the message box component, set it via componentInput config property instead of the input property.
  • workbench/popup: consolidated the config for opening a popup in preparation for the microfrontend popup integration

    To migrate:

    • Rename the position property to align. This property is used for aligning the popup relative to its anchor.
    • Remove the closing strategy onLayoutChange as binding a popup to a Workbench view is now supported. This strategy existed only as a workaround to close popups when switching between views.
    • Pass the preferred popup overlay size as PopupSize object literal instead of separate top-level config properties, as follows:
      • PopupConfig.width -> PopupConfig.size.width
      • PopupConfig.height-> PopupConfig.size.height
      • PopupConfig.minWidth -> PopupConfig.size.minWidth
      • PopupConfig.maxWidth -> PopupConfig.size.maxWidth
      • PopupConfig.minHeight -> PopupConfig.size.minHeight
      • PopupConfig.maxHeight-> PopupConfig.size.maxHeight

11.0.0-beta.2 (2020-12-22)

Features

  • workbench-client: provide core workbench API to microfrontends (55fabc3)

BREAKING CHANGES

  • workbench-client: Workbench Microfrontend support introduced the following breaking changes:

    • The workbench component is no longer positioned absolutely but in the normal document flow. To migrate, add the workbench component to your CSS layout and make sure it fills the remaining space vertically and horizontally.
    • Renamed the workbench config from WorkbenchConfig to WorkbenchModuleConfig.
    • Removed the e2e-testing related CSS classes e2e-active and e2e-dirty; to migrate, replace them with active and dirty.
    • Renamed flag to set popup closing strategy from onGridLayoutChange to onLayoutChange

11.0.0-beta.1 (2020-11-17)

Bug Fixes

  • workbench: remove flickering when dropping views (46a9c4d)
  • workbench: wait to navigate until other navigations complete (5448260)

chore

  • application-platform: delete SCION Workbench Application Platform (3468a43), closes #232
  • dimension: delete @scion/dimension module (7c73203)
  • viewport: delete @scion/viewport module (809b028)
  • workbench: update @scion/workbench to Angular 11 (5d45ce3), closes #234

Code Refactoring

  • workbench: refactor the workbench layout as prerequisite for complex layouts with fixed parts (84b764c)

BREAKING CHANGES

  • workbench: Added support for Angular 11.

    To migrate: Migrate your app to Angular 11 as following:

    • Run ng update @angular/cli @angular/core @angular/cdk.
    • Refer to the Angular Update Guide for detailed instructions on how to update Angular: https://update.angular.io/
  • dimension: The dimension was moved from @scion/dimension to @scion/toolkit NPM module.

    SCION Toolkit is a collection of UI components and utilities. The toolkit is published as single NPM library with a separate entry point per tool, allowing for tree shaking away not used tools. Refer to https://github.com/SchweizerischeBundesbahnen/scion-toolkit/blob/master/docs/site/tools/dimension.md for more information about dimension directive. Refer to https://github.com/SchweizerischeBundesbahnen/scion-toolkit/blob/master/docs/site/tools/observable.md for more information about replacement of DimensionService.

    To migrate:

    • Uninstall NPM module @scion/dimension
    • Install NPM module @scion/toolkit
    • Replace ES2015 imports @scion/dimension with @scion/toolkit/dimension
    • Replace usage of DimensionService with fromDimension$ Observable for observing the dimension of a DOM element.
  • viewport: The viewport was moved from @scion/viewport to @scion/toolkit NPM module.

    SCION Toolkit is a collection of UI components and utilities. The toolkit is published as single NPM library with a separate entry point per tool, allowing for tree shaking away not used tools. Refer to https://github.com/SchweizerischeBundesbahnen/scion-toolkit/blob/master/docs/site/tools/viewport.md for more information.

    To migrate:

    • Uninstall NPM module @scion/viewport
    • Install NPM module @scion/toolkit
    • Replace ES2015 imports @scion/viewport with @scion/toolkit/viewport
  • application-platform: The development of the SCION Application Platform was discontinued in favor of the new SCION Microfrontend Platform. SCION Microfrontend Platform is extremely lightweight and does not depend on SCION Workbench and Angular. Microfrontend support for the SCION Workbench will be back soon. We are working on the integration of the new SCION Microfrontend Platform into the workbench to enable a seamless integration of microfrontends as workbench views.

    We have deleted the SCION application platform from our Git repository and deprecated respective NPM modules. This project is discontinued and will no longer be maintained. Its documentation is still online. The following NPM modules are deprecated: @scion/workbench-application-platform, @scion/workbench-application-platform.api, @scion/workbench-application.core, @scion/workbench-application. angular, @scion/mouse-dispatcher, @scion/dimension (moved to @scion/toolkit), @scion/viewport (moved to @scion/toolkit).

    If you still need updates for new Angular versions, please let us know and submit a GitHub issue. Alternatively, micro applications can use the TypeScript module @scion/workbench-application.core instead of @scion/workbench-application.angular. We plan to release the new microfrontend support for the SCION Workbench by the end of 2020 so that you can migrate to Angular 11. Detailed migration instructions for upgrading to the new workbench microfrontend support will follow after its release.

    Refer to https://github.com/SchweizerischeBundesbahnen/scion-microfrontend-platform for more information about SCION Microfrontend Platform.

  • workbench: The refactoring of the workbench layout introduced a breaking change as properties were renamed, dependencies added or removed, and the internal DOM structure changed.

    To migrate:

    • Update the usage of following properties:
      • Property selfViewRef of WbNavigationExtras was renamed to selfViewId
      • Property blankViewPartRef of WbNavigationExtras was renamed to blankPartId
      • Property viewRef of WorkbenchView was renamed to viewId
      • Property viewPart of WorkbenchView was renamed to part
      • Property viewPartRef of WorkbenchViewPart was renamed to partId
      • Property activeViewRef$ of WorkbenchViewPart was renamed to activeViewId$
      • Property activeViewRef of WorkbenchViewPart was renamed to activeViewId
      • Property viewRefs$ of WorkbenchViewPart was renamed to viewIds$
      • Property viewRefs of WorkbenchViewPart was renamed to viewIds
      • Property viewRef of WorkbenchViewPartAction was renamed to viewId
    • Add the dependency @scion/toolkit@10.0.0-beta.3 as required by the workbench
    • Remove the dependencies @scion/dimension and @scion/viewport as tools are now used from @scion/toolkit. Refer to https://github.com/SchweizerischeBundesbahnen/scion-toolkit for more information about its installation and usage.
    • If you rely on the workbench-internal DOM structure to style your app, change CSS selectors as following:
      • Attribute viewpartref of <wb-view-part> was changed to data-partid
      • Attribute viewref of <wb-view> was changed to data-viewid
      • Attribute viewref of <wb-view-tab> was changed to data-viewid
      • DOM element <wb-view-part-grid> was renamed to <wb-parts-layout>
      • DOM element <wb-view-part-sash-box> was renamed to <wb-tree-node>
      • Added <sci-sashbox> as child to <wb-tree-node> element
    • The serialized representation of the layout in the URL changed. For that reason, we renamed the query parameter viewgrid to parts so that the app does not error when loading it from a bookmark into the browser.

0.0.0-beta.35 (2020-07-17)

chore

  • update workbench to Angular 10 (726e5b3), closes #224

BREAKING CHANGES

  • Added support for Angular 10.

To migrate:

0.0.0-beta.34 (2020-07-02)

Bug Fixes

  • remove deep imports to @angular/core (0a3f4d0)
  • set CSS classes to ngClass directive without function call (64e3dde)

0.0.0-beta.33 (2020-02-21)

Features

  • chore: add support for angular 9, drop support for angular < 9 #197

0.0.0-beta.32 (2019-11-13)

Bug Fixes

  • declare the type viewref to be of type string instead of a string literal (7bc15c6), closes #207

0.0.0-beta.31 (2019-11-13)

Features

  • allow a microfrontend to open a view in a specific view outlet (6e44e1a), closes #207

0.0.0-beta.30 (2019-11-11)

Bug Fixes

  • add wildcard support for querying capabilities in the host app (e6bde77), closes #201
  • allow a microfrontend observing capabilities for which it declares an intent (99ccdf5), closes #198 #202
  • remove implicit intent when unregistering a capability (0996a22), closes #200
  • unregister a capability by its type and qualifier instead of its id (6044823), closes #199

0.0.0-beta.29 (2019-11-01)

Bug Fixes

  • provide fallback for the former 'query' property of manifest commands (5431811)
  • show entry point page inside a viewport (818187e), closes #129
  • support wildcard intents when querying capability consumers (2332f10)

Features

  • allow a microfrontend to register activator endpoints invoked at platform startup (a5a97df), closes #190
  • allow querying capabilities matching a given qualifier pattern (16d1fa7), closes #188
  • allow to register and unregister capabilities from inside a microfrontend (782c831), closes #189
  • show metadata of capabilities in dev-tools (0af6db8)

0.0.0-beta.28 (2019-09-13)

Bug Fixes

  • use correct registry in package-lock.json (28c3e05), closes #182

0.0.0-beta.27 (2019-09-13)

Bug Fixes

  • bundle stylesheets with scss-bundle (5e2d141), closes #179

0.0.0-beta.26 (2019-09-10)

Bug Fixes

  • emit the initial element dimension also if using native resize observer (5d88128), closes #169
  • insert new view tab into the tab bar after the active view tab (14d76f0), closes #167
  • match intent with wildcard qualifier key/value(s) (5ea3981), closes #172
  • preserve line-breaks in message box content (0060c11), closes #131
  • support mac command key when opening view in new view tab (b2be851), closes #155

Features

  • add API to query if micro-frontend is running standalone (10c2b45), closes #130
  • add context menu to view tabs and provide menu items for commonly used view tab actions (cd41eb3), closes #174
  • allow defining capabilities with optional qualifier entries (d462512), closes #154 #173
  • allow dragging views to app instances running in different browser tabs or windows (2ee9df3), closes #168
  • provide better feedback to the user when dragging views (78f9c80), closes #164

BREAKING CHANGES

  • removed support for the asterisk (*) wildcard as capability qualifier key: instead, use the question mark (?) as qualifier value to mark the qualifier entry as optional

0.0.0-beta.25 (2019-07-26)

Bug Fixes

  • post the request in request-receive communication when subscribing to the observable (f8a7f8c), closes #160
  • show the view dropdown only if some view tabs overflow (ab57d4b), closes #159

Features

  • activate the most recent view when closing a view (7896583), closes #74
  • control if to use native resize observable unless explicitly specified via options object (0594320), closes #156

0.0.0-beta.24 (2019-07-22)

Bug Fixes

  • observe element dimension changes natively (f53f4b3), closes #156
  • remove 'web-animations-js' polyfill from host-app as it breaks the app (2c55f2f), closes #152

BREAKING CHANGES

  • removed 'viewportChange' output property from <sci-viewport> component.
    Migration: Add the dimension directive [sciDimension] to the viewport and/or viewport client, and/or listen for viewport scroll events with 'scroll' output property.

0.0.0-beta.23 (2019-06-12)

Bug Fixes

Features

BREAKING CHANGES

  • SCION Workbench no longer supports Angular 6 and Angular 7. Migrate your project to run with Angular 8. See Angular Update Guide for detailed instructions on how to upgrade to a newer Angular version.
  • removed WorkbenchRouter.resolve: use Router.navigate and set closeIfPresent in WbNavigationExtras
  • removed WbNavigationExtras.tryActivateView: use WbNavigationExtras.activateIfPresent instead

0.0.0-beta.22 (2019-05-08)

Bug Fixes

  • allow interaction with the platform once navigated away from an application's root page (80ddeab), closes #141

0.0.0-beta.21 (2019-05-01)

Bug Fixes

  • emit the host element's initial size (c41509a), closes #137
  • emit when the dimension changes due to a window orientation change (c04a4f6), closes #137
  • update angular and rxjs dependencies (870b377)

0.0.0-beta.20 (2019-04-24)

Bug Fixes

  • change the iframe url without adding an entry to the browser's history (4ff1a6b), closes #128

Features

  • allow providing custom properties when loading app config via config loader (64219b1), closes #133

BREAKING CHANGES

  • Replaced ApplicationConfigLoader with PlatformConfigLoader to load a remote configuration for the workbench application platform.

To migrate (if loading platform config via config loader):

  • change your loader to implement PlatformConfigLoader instead of ApplicationConfigLoader
  • register your loader in WorkbenchApplicationPlatformModule.forRoot(...) config via platformConfigLoader instead of applicationConfigLoader property
  • change your config json to return a PlatformConfig object instead of an array of ApplicationConfig objects

See https://github.com/SchweizerischeBundesbahnen/scion-workbench/blob/master/resources/site/how-to/workbench-application-platform/how-to-register-applications.md for more information.

0.0.0-beta.19 (2019-03-18)

Bug Fixes

  • match matrix params when resolving views for activation or closing (65ba4f0), closes #120
  • re-export workbench-application-platform.api in workbench-application-platform bundle (34cd8de), closes #118
  • show view tab title of inactive views when reloading the application (f011b5b), closes #121

Features

  • control if an application is allowed to contribute activities (dd9b81c), closes #122

0.0.0-beta.18 (2019-03-15)

Bug Fixes

  • allow using sciDimension directive in 'OnPush' change detection context (cc15561), closes #106

Features

  • allow adding actions to the viewpart action bar (0b31ca3), closes #104
  • allow scheduling tasks in micro or macro task queue (58c643b)
  • allow showing an entry page when no view is showing (cd674d5), closes #105
  • hide activity part if no activities are registered (3d4d92e), closes #107

BREAKING CHANGES

  • Removed input property useTimer because no longer required as now working in the context of 'OnPush' change detection context.

0.0.0-beta.17 (2019-02-25)

Features

  • allow scrollbars to be used in an 'on-push' change detection context (3b876fc), closes #100
  • allow to focus the viewport programmatically (36e1387)
  • export viewport scrollbars as public api (ff865fc), closes #100

0.0.0-beta.16 (2019-02-21)

Features

  • provide API to simplify issuing custom intents from within client (6c88558), closes #96

0.0.0-beta.15 (2019-01-31)

Bug Fixes

  • re-export core module in workbench-application.angular (ac8b58c)
  • remove obsolete http dependency from 'workbench-application-platform' (aea79d7)

0.0.0-beta.14 (2019-01-31)

Bug Fixes

  • declare workbench-application.core as regular dependency of workbench-application.angular (9855241)

0.0.0-beta.13 (2019-01-30)

Bug Fixes

  • compute native scrollbar track size correctly even if not displayed at application startup (e12718c), closes #87
  • do not enter minimize mode when closing views quickly in maximize mode (375dace), closes #24
  • reduce the number of 'mousemove' events dispatched between application windows (44c40f4), closes #86
  • stretch content of <sci-viewport> if it overflows horizontally (31d23d4), closes #77
  • use an overlay to render view drop regions to not flicker while dragging views (c738a1a), closes #79

Features

  • allow giving CSS classes to workbench elements to have stable selectors available in e2e tests (c985816), closes #78
  • allow to display a component in a popup (eeb2390), closes #76
  • contribute 'Workbench Application Platform' to allow integrating content from multiple web applications (84e1f08), closes #80

BREAKING CHANGES

  • Properties of Activity and WbActivityDirective to set the activity label and CSS class(es) have changed as follows:

    • label => itemText
    • cssClass => itemCssClass
  • CSS display property of <sci-viewport> flex container has changed from flex (column nowrap) to grid (one column).

    To migrate:

    • if having a single content child which stretches vertically by using flex: auto, remove that property
    • if having multiple content children with flex: none, wrap them inside a separate flex-container

0.0.0-beta.12 (2018-11-23)

Bug Fixes

  • remove static initializers to be compatible with Angular 6 transpiled with TypeScript 2.x (d5ce02e), closes #26

Code Refactoring

  • extract sci-dimension-module into a separate NPM library (eecccb8), closes #44
  • extract sci-viewport-module into a separate NPM library (a390b54), closes #45

Features

  • add iframes of remote sites beyond workbench grid to not cover other parts of the workbench like sashes or view dropdown menu (b0bf93e), closes #30
  • allow cross-origin communication with remote sites (f492516), closes #31
  • allow programmatic registration of activities (efc1344), closes #28
  • continue scrolling in custom scrollbars even when the cursor enters or goes past the boundary of an iframe (9cb34a5), closes #41
  • control if workbench part content is capable of being moved in the DOM (303d29a), closes #30
  • disable vertical scrolling in workbench viewtab bar (e59ff5e), closes #33
  • provide message box action texts when spawning the message box (f589764), closes #32
  • register activity auxiliary routes only in root injector (0f3c5d4), closes #28
  • register view auxiliary routes via WorkbenchAuxiliaryRoutesRegistrator and set view active state upon view creation (e8718d9), closes #29
  • specify view-list dropdown anchor as ElementRef instead of native element to be compatible with Angular CDK 6 (d8b1c87), closes #42
  • use a separate routing navigate command when closing multiple views all at once (688a3b8), closes #34
  • use CDK overlay for the dropdown showing hidden view tabs (53763e7), closes #42

BREAKING CHANGES

  • Workbench requires @scion/viewport as its peer-dependency which you can install as following: npm install --save @scion/viewport
  • Workbench requires @scion/dimension as its peer-dependency which you can install as following: npm install --save @scion/dimension. Why not use ResizeObserver: Web Performance Working Group is working on a W3C recommendation for natively observing changes to Element’s size. The Web API draft is still work in progress and support limited to Google Chrome and Opera. See https://wicg.github.io/ResizeObserver/
  • Removed content projection from RemoteSiteComponent and added it to workbench part level. If using a remote site, wrap entire part content in a <wb-content-as-overlay> element, which causes it to be added to a top-level workbench DOM element and projected into that component's bounding box. Removed support to use RemoteSiteComponent as a routing component because must be a child of <wb-content-as-overlay> element
  • Message box action texts are no longer specified when importing the workbench module. Instead, message box texts are provided directly when spawning the message box.
  • Removed output property to listen for URL changes because not allowed for cross-origin communication and internally using a timer to detect URL changes (as there is no change event emitted natively and MutationObserver is not applicable). Use message output property instead.
  • Use added visible property over ngIf directive to show or hide an activity based on a conditional <wb-activity [visible]="conditional">

0.0.0-beta.11 (2018-10-26)

Bug Fixes

  • do not enter maximize mode when closing views quickly (3959887)

Features

  • upgrade workbench to run with Angular 7 (ce325a8), closes #26

0.0.0-beta.10 (2018-09-10)

Features

  • Allow lazily-loaded views to inject masked injection tokens (3c212d0)

0.0.0-beta.9 (2018-08-23)

Bug Fixes

  • upgrade dependencies to fix potential security vulnerability in url-parse@1.4.1 (43d70ff)

Features

  • use momentum-based scrolling to continue to scroll after finishing the scroll gesture (4a2f085)

0.0.0-beta.8 (2018-08-22)

Features

  • use native overflow scroll functionality in viewport (8889279)

BREAKING CHANGES

  • Migration if using viewport component and dimension directive Manifest a dependency to SciViewportModule because packaged as separate module

    Remove custom CSS classes specified with viewportCssClass and viewportClientCssClass input properties; instead, CSS flexbox layout with flex-flow 'column nowrap' is applied to the viewport with <ng-content> as its flex item(s); migrate by styling <ng-content> as flex items, or provide your viewport client in a containing block and style it accordingly

    Replace overflowAuto input property with scrollbarStyle input property; by default, scrollbars are displayed on top of the viewport client

    Change selector from wb-viewport to sci-viewport

    Use scrollHeight and scrollWidth to get viewport client dimension

    Rename ViewportComponent to SciViewportComponent if injecting the viewport component

    Manifest a dependency to SciDimensionModule because packaged as separate module

    Change selector from wbDimension to sciDimension

    Rename Dimension to SciDimension which is emitted upon host element's dimension change

    Rename wbDimensionChange output property to sciDimensionChange

    Rename wbDimensionUseTimer input property to sciDimensionUseTimer

0.0.0-beta.7 (2018-08-06)

Bug Fixes

  • allow to navigate relative to the current activated route (#5) (27adf69)
  • fix check which ensures that Workbench.forRoot() is not used in a lazy context (ea3a1b0), closes #5
  • fix wrong typing of injected content children (5a446fd)
  • Render correct actions in the activity part header (86b77f1), closes #9

Features

  • Allow initial navigation to a conditionally registered activity (065f7ce), closes #8
  • Display component of currently activated activity (f59a74d), closes angular/angular#25313 #10
  • use Router instead of DefaultUrlSerializer to parse URL (eedc5dc), closes #5

0.0.0-beta.6 (2018-07-24)

Bug Fixes

  • make parameter 'extras' of method 'WorkbenchRouter.navigate(any[], WbNavigationExtras)' optional (b971447)

0.0.0-beta.5 (2018-07-24)

Features

0.0.0-beta.4 (2018-07-19)

Features

  • update project dependencies due to potential security vulnerability in one of the dependencies (1fd83a4)

0.0.0-beta.3 (2018-07-19)

Bug Fixes

  • add missing exports to 'public_api' (1266e85)

Features

  • rename CSS class for workbench icon font from 'wb-font' to 'wb-icons' (94d3b2b)

0.0.0-beta.2 (2018-07-17)

Features

  • specify workbench icon font top-level in 'index.scss' (6d3884b)

0.0.0-beta.1 (2018-07-17)

Bug Fixes

  • load workbench icon font relative to base href (f538223)

0.0.0-beta.0 (2018-07-17)

Features

  • contribute @scion/workbench source (a4c81bc)
  • generate library skeleton for @scion/workbench library (39eaa35)
  • generate project skeleton for scion libraries (5e57ac9)