19.0.0-beta.1 (2024-12-13)
- workbench: update @scion/workbench to Angular 19 (e3f358f)
- workbench: remove deprecated workbench modules (df3eb4e)
-
workbench: Updating
@scion/workbench
to Angular 19 introduced a breaking change.To migrate:
- Update your application to Angular 19; for detailed migration instructions, refer to https://v19.angular.dev/update-guide;
-
workbench: Removing deprecated workbench modules introduced the following breaking changes.
The following APIs have been removed:
WorkbenchModule.forRoot
=> register SCION Workbench providers usingprovideWorkbench
function and import standalone components and directives instead;WorkbenchModule.forChild
=> no replacement; import standalone workbench components and directives instead;WorkbenchTestingModule.forTest
=> no replacement; useprovideWorkbench
instead;provideWorkbenchForTest
=> no replacement; useprovideWorkbench
instead;
18.0.0-beta.10 (2024-12-09)
- workbench/view: do not scroll the active tab into view when opening or closing an inactive tab (a5d4d7e)
- workbench/view: scroll the active tab into view when navigating the active tab (d10d25b)
- workbench: improve drag experience when dragging tabs in the tabbar (0ae78eb)
18.0.0-beta.9 (2024-11-25)
- workbench/view: invoke
CanClose
guard in view injection context (07ba936), closes #578 - workbench/view: prevent
CanClose
guard from blocking workbench navigation (12e9e91), closes #558 - workbench/view: prevent closing views with a pending
CanClose
guard (4326a63)
- workbench/view: add functional
CanClose
guard, deprecate class-based guard (c2ee531)
-
workbench/view: The class-based
CanClose
guard has been deprecated in favor of a functional guard that can be registered onWorkbenchView.canClose
.Migrate by registering a callback on
WorkbenchView.canClose
instead of implementing theCanClose
interface.Before migration:
import {CanClose} from '@scion/workbench'; import {Component} from '@angular/core'; @Component({}) export class ViewComponent implements CanClose { public canClose(): boolean { return true; } }
After migration:
import {Component, inject} from '@angular/core'; import {WorkbenchView} from '@scion/workbench'; @Component({}) export class ViewComponent { constructor() { inject(WorkbenchView).canClose(() => { return true; }); } }
18.0.0-beta.8 (2024-10-28)
- workbench/popup: ensure the popup anchor not leaving view boundaries (c629f49)
- workbench/view: ensure view overlays align with view boundaries when view position changes (2998295)
- workbench: prevent tracking unwanted dependencies in effects (7a7eaf8)
-
workbench: SCION Workbench requires
@scion/toolkit
version1.6.0
or later. -
workbench: SCION Workbench requires
@scion/components
version18.1.1
or later. -
workbench: Calling following workbench methods in a reactive (tracking) context (e.g.,
effect
) now throws an error. Migrate by using Angular'suntracked()
function.WorkbenchRouter.navigate
WorkbenchService.registerPerspective
WorkbenchService.switchPerspective
WorkbenchService.resetPerspective
WorkbenchService.closeViews
WorkbenchService.switchTheme
WorkbenchService.registerPartAction
WorkbenchService.registerViewMenuItem
WorkbenchLauncher.launch
WorkbenchDialogService.open
WorkbenchMessageBoxService.open
NotificationService.notify
PopupService.open
WorkbenchPart.activate
WorkbenchView.activate
WorkbenchView.close
WorkbenchView.move
WorkbenchView.registerMenuItem
WorkbenchDialog.close
Popup.close
Migration Example
import {effect, inject, untracked} from '@angular/core'; import {WorkbenchRouter} from '@scion/workbench'; const workbenchRouter = inject(WorkbenchRouter); // Before effect(() => { if (someSignal()) { workbenchRouter.navigate(['path/to/view']); } }); // After effect(() => { if (someSignal()) { untracked(() => workbenchRouter.navigate(['path/to/view'])); } });
18.0.0-beta.7 (2024-10-11)
- workbench/dialog: enable updating dialog properties in an Angular effect (7da2418)
- workbench/view: enable updating view properties in an Angular effect (a7d3594)
- workbench: position document root as required by
@scion/toolkit
(0d2f6c2)
18.0.0-beta.6 (2024-09-11)
- workbench/messagebox: display message if opened from a
CanClose
guard of a microfrontend view (b0829b3), closes #591 - workbench/view: restore scroll position when switching views (9265951), closes #588
- workbench: disable change detection during navigation to prevent inconsistent layout rendering (68ecca7)
- workbench/popup: support returning result on focus loss (ce5089e)
- workbench/view: enable translation of built-in context menu (9bfdf74)
- workbench/popup: The method
closeWithError
has been removed from thePopup
handle. Instead, pass anError
object to theclose
method.
Before migration:
import {inject} from '@angular/core';
import {Popup} from '@scion/workbench';
inject(Popup).closeWithError('some error');
After migration:
import {inject} from '@angular/core';
import {Popup} from '@scion/workbench';
inject(Popup).close(new Error('some error'));
18.0.0-beta.5 (2024-09-02)
- workbench/perspective: support browser back navigation after switching perspective (5777728), closes #579
-
workbench/perspective: The active perspective is now set after navigation completes (previously before navigation), so it is unavailable during route resolution/activation. Route guards (like
canMatch
) should use thecanMatchWorkbenchPerspective
function instead ofWorkbenchService
orWorkbenchPerspective
to determine the perspective’s activation state.Migration Example:
Before:
import {Route} from '@angular/router'; import {inject} from '@angular/core'; import {WorkbenchService} from '@scion/workbench'; const route: Route = { canMatch: [() => inject(WorkbenchService).activePerspective()?.id === 'perspective'], // or canMatch: [() => inject(WorkbenchService).perspectives().find(perspective => perspective.id === 'perspective')?.active()], };
After:
import {Route} from '@angular/router'; import {canMatchWorkbenchPerspective} from '@scion/workbench'; const route: Route = { canMatch: [canMatchWorkbenchPerspective('perspective')], };
18.0.0-beta.4 (2024-08-28)
- workbench/view: update view properties between route deactivation and route activation (5526eec)
- workbench/router: activate part only if specified by the navigation (51ba3bb)
- workbench/popup: render popup at the correct position when activating view (a13e93f)
- workbench/layout: debounce storing workbench layout (076c241)
- workbench/layout: do not display "Not Found" page when closing a view (03681b5)
- workbench/layout: serialize properties with a
null
value (49905f6)
- workbench/perspective: provide active perspective via
WorkbenchService
(ee6d22b) - workbench/view: enable passing data to an empty-path navigation (3b65d9b)
- workbench: change
WorkbenchService
properties to signals to integrate with Angular reactive contexts (17280b3) - workbench/perspective: change
WorkbenchPerspective
properties to signals to integrate with Angular reactive contexts (df6603a) - workbench/part: change
WorkbenchPart
properties to signals to integrate with Angular reactive contexts (6aa6cd1) - workbench/view: change
WorkbenchView
properties to signals to integrate with Angular reactive contexts (4498b52) - workbench/dialog: change
WorkbenchDialog
properties to signals to integrate with Angular reactive contexts (53ab8bb)
-
workbench: Migrating
WorkbenchService
properties to signals has introduced a breaking change.Migrate reading of
WorkbenchService
properties as follows:WorkbenchService.layout
=>WorkbenchService.layout()
WorkbenchService.layout$
=>WorkbenchService.layout()
WorkbenchService.parts
=>WorkbenchService.parts()
WorkbenchService.parts$
=>WorkbenchService.parts()
WorkbenchService.perspectives
=>WorkbenchService.perspectives()
WorkbenchService.perspectives$
=>WorkbenchService.perspectives()
WorkbenchService.theme$
=>WorkbenchService.theme()
WorkbenchService.views
=>WorkbenchService.views()
WorkbenchService.views$
=>WorkbenchService.views()
-
workbench/perspective: Migrating
WorkbenchPerspective
properties to signals has introduced a breaking change.Migrate reading of
WorkbenchPerspective
properties as follows:WorkbenchPerspective.active
=>WorkbenchPerspective.active()
WorkbenchPerspective.active$
=>WorkbenchPerspective.active()
-
workbench/part: Migrating
WorkbenchPart
properties to signals has introduced a breaking change.Migrate reading of
WorkbenchPart
properties as follows:WorkbenchPart.actions
=>WorkbenchPart.actions()
WorkbenchPart.actions$
=>WorkbenchPart.actions()
WorkbenchPart.active
=>WorkbenchPart.active()
WorkbenchPart.active$
=>WorkbenchPart.active()
WorkbenchPart.activeViewId
=>WorkbenchPart.activeViewId()
WorkbenchPart.activeViewId$
=>WorkbenchPart.activeViewId()
WorkbenchPart.viewIds$
=>WorkbenchPart.viewIds()
WorkbenchPart.viewIds
=>WorkbenchPart.viewIds()
-
workbench/view: Migrating
WorkbenchView
properties to signals has introduced a breaking change.The breaking change refers to reading property values. Writable properties are still updated through value assignment. Some properties have also been renamed for consistency reasons.
Migrate reading of
WorkbenchView
properties as follows:WorkbenchView.active
=>WorkbenchView.active()
WorkbenchView.active$
=>WorkbenchView.active()
WorkbenchView.cssClass
=>WorkbenchView.cssClass()
WorkbenchView.closable
=>WorkbenchView.closable()
WorkbenchView.dirty
=>WorkbenchView.dirty()
WorkbenchView.first
=>WorkbenchView.first()
WorkbenchView.heading
=>WorkbenchView.heading()
WorkbenchView.last
=>WorkbenchView.last()
WorkbenchView.navigationHint
=>WorkbenchView.navigationHint()
WorkbenchView.part
=>WorkbenchView.part()
WorkbenchView.position
=>WorkbenchView.position()
WorkbenchView.urlSegments
=>WorkbenchView.urlSegments()
WorkbenchView.scrolledIntoView
=>WorkbenchView.scrolledIntoView()
WorkbenchView.state
=>WorkbenchView.navigationState()
WorkbenchView.title
=>WorkbenchView.title()
-
workbench/dialog: Migrating
WorkbenchDialog
properties to signals has introduced a breaking change.The breaking change refers to reading property values. Writable properties are still updated through value assignment.
Migrate reading of
WorkbenchDialog
properties as follows:WorkbenchDialog.closable
=>WorkbenchDialog.closable()
WorkbenchDialog.cssClass
=>WorkbenchDialog.cssClass()
WorkbenchDialog.padding
=>WorkbenchDialog.padding()
WorkbenchDialog.resizable
=>WorkbenchDialog.resizable()
WorkbenchDialog.size.height
=>WorkbenchDialog.size.height()
WorkbenchDialog.size.width
=>WorkbenchDialog.size.width()
WorkbenchDialog.size.maxHeight
=>WorkbenchDialog.size.maxHeight()
WorkbenchDialog.size.minHeight
=>WorkbenchDialog.size.minHeight()
WorkbenchDialog.size.maxWidth
=>WorkbenchDialog.size.maxWidth()
WorkbenchDialog.size.minWidth
=>WorkbenchDialog.size.minWidth()
WorkbenchDialog.title
=>WorkbenchDialog.title()
- Setting an observable as dialog title is no longer supported. Instead, manually subscribe to the observable and set the title.
18.0.0-beta.3 (2024-06-21)
- workbench/perspective: create default perspective if no perspective exists (7010623)
- workbench/view: align microfrontend with view bounds when moving it to another part of the same size (e57f0d0)
- workbench/view: do not error when initializing view in
ngOnInit
(1374260) - workbench/view: initialize microfrontend loaded into inactive view (764f89e)
- workbench/perspective: activate first view of each part if not specified (161d05d)
- workbench/perspective: enable micro app to contribute perspective (f20f607), closes #449
- workbench/view: display "Not Found" page if microfrontend is not available (93be385)
- workbench/perspective: The return type of the function to select the initial perspective has changed. To migrate, return the perspective id instead of the perspective instance.
- workbench: SCION Workbench requires
@scion/microfrontend-platform
version1.3.0
or later. - workbench: SCION Workbench requires
@scion/workbench-client
version1.0.0-beta.24
or later.
18.0.0-beta.2 (2024-06-13)
- workbench: change default icon font directory from
/assets/fonts
to/fonts
(d347dae)
-
workbench: The default icon font directory has changed from
/assets/fonts
to/fonts
.To migrate:
- Move the
fonts
folder from/src/assets
to/public
. - Include content of the
public
folder in angular.json:"assets": [ { "glob": "**/*", "input": "public" } ]
- Alternatively, to not change the folder structure, you can configure a custom path to the icon font directory in your
styles.scss
:use '@scion/workbench' with ( $icon-font: ( directory: 'assets/fonts' ) );
- Move the
18.0.0-beta.1 (2024-06-10)
- workbench: update @scion/workbench to Angular 18 (d39fa85)
-
workbench: Updating
@scion/workbench
to Angular 18 introduced a breaking change.To migrate:
- update your application to Angular 18; for detailed migration instructions, refer to https://v18.angular.dev/update-guide;
- update @scion/components to version 18; for detailed migration instructions, refer to https://github.com/SchweizerischeBundesbahnen/scion-toolkit/blob/master/CHANGELOG_COMPONENTS.md;
17.0.0-beta.9 (2024-05-22)
- workbench/dialog: avoid
ExpressionChangedAfterItHasBeenCheckedError
when registering dialog header, footer and actions (5554428) - workbench/dialog: set initial focus on delayed content (312280e)
- workbench/message-box: enable microfrontend display in a message box (3e9d88d)
-
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)
- 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)
- workbench/router: remove
blank
prefix from navigation extras (446fa51) - workbench/router: remove option to close view via workbench router link (88d1704)
- 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
-
workbench/view: Interface and method for preventing closing of a view have changed.
To migrate, implement the
CanClose
instead of theWorkbenchViewPreDestroy
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
inWorkbenchNavigationExtras
has been renamed.To migrate, update to the latest version of
@scion/workbench-client
and useWorkbenchNavigationExtras.position
instead ofWorkbenchNavigationExtras.blankInsertionIndex
. -
workbench/router: Property
blankPartId
inWorkbenchNavigationExtras
has been renamed.To migrate, use
WorkbenchNavigationExtras.partId
instead ofWorkbenchNavigationExtras.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: () => ..., }, ]);
- Remove the
-
workbench: Changed type of view id from
string
toViewId
.If storing the view id in a variable, change its type from
string
toViewId
. -
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
, theWorkbenchRouter
, or theWorkbenchService
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)
- 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)
- workbench/dialog: consolidate API for closing a dialog (40414c4)
- workbench/view: move navigational state from route data to view handle (3d6a5ca)
- workbench/dialog: enable microfrontend display in a dialog (11d762b)
-
workbench/dialog: The method
closeWithError
has been removed from theWorkbenchDialog
handle. Instead, pass anError
object to theclose
method.import {WorkbenchDialog} from '@scion/workbench'; inject(WorkbenchDialog).closeWithError('some error');
import {WorkbenchDialog} from '@scion/workbench'; inject(WorkbenchDialog).close(new Error('some error'));
-
workbench/view: Removed
WorkbenchView.cssClasses
property for reading CSS classes. UseWorkbenchView.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)
- 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)
- 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)
- workbench/view: enable dependency injection in context menu action callback (7d8d041)
- workbench/view: support moving view to different workbench window (408f634)
-
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 ofblank-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
tomoveToNewWindow
, breaking if overriding defaults such as text or accelerators.
17.0.0-beta.4 (2024-01-26)
- 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)
- 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)
- workbench/dialog: support custom header and footer (5c6a4d6)
-
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 nowWorkbenchMessageBoxService
.MessageBoxConfig
is nowWorkbenchMessageBoxOptions
.- 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 (previouslyMessageBoxConfig#componentConstructOptions
).viewContainerRef
option has been removed (no replacement).componentInput
option has been renamed toinputs
with the type changed to a dictionary. Inputs are now available as input properties in the component, previously viaMessageBox#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 nowboolean
. Set tofalse
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).
- Type of
17.0.0-beta.2 (2023-11-29)
- workbench/dialog: make dialog resizable (34ce415)
17.0.0-beta.1 (2023-11-21)
- workbench: provide workbench dialog (34e5acc)
-
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 theangular.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)
- 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)
- 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)
- 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)
-
workbench: The new tab design and theming of the SCION Workbench has introduced a breaking change.
To migrate:
- update
@scion/components
to version16.2.0
or higher - update
@scion/workbench-client
to version1.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 to3.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.@use '@scion/workbench' with ( $theme: ( icon-font: ( filename: 'custom-workbench-icons', version: '1.0.0' ) ) );
@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 ofVIEW_TAB_CONTEXT
DI token. Supported contexts aretab
,list-item
anddrag-image
.
- update
16.0.0-beta.7 (2023-09-26)
-
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)
- workbench: do not publish changed layout objects until processed a layout change (8286d65)
-
workbench: Adding support for optional main area introduced breaking changes.
The following APIs have changed:
- renamed
MAIN_AREA_PART_ID
toMAIN_AREA
; - changed signature of
WorkbenchLayoutFn
to takeWorkbenchLayoutFactory
instead ofWorkbenchLayout
as argument; - layout definitions, if any, must now add the
MAIN_AREA
part explicitly; - changed inputs of
wbPartAction
directive to takecanMatch
function instead ofview
,part
andarea
inputs;
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}) });
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}) });
<wb-workbench> <ng-template wbPartAction area="main"> <button [wbRouterLink]="'/path/to/view'"> Open View </button> </ng-template> </wb-workbench>
<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; };
- renamed
16.0.0-beta.5 (2023-08-24)
- 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
- 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)
16.0.0-beta.3 (2023-08-08)
16.0.0-beta.2 (2023-08-04)
- 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)
- workbench: accept passing
undefined
in optional inputs (b19f428) - workbench: comply with basic accessibility rules (ed52668)
- workbench: mark required inputs as required (e8ccb94)
-
workbench: Removing compatibility of deprecated router API introduced a breaking change in client applications.
To migrate applications using @scion/workbench-client:
- update @scion/workbench-client to version
1.0.0-beta.17
or greater
- update @scion/workbench-client to version
-
workbench: Updating
@scion/workbench
to Angular 16 introduced a breaking change.To migrate:
- update your application to Angular 16.x; for detailed migration instructions, refer to https://v16.angular.io/guide/update-to-latest-version;
- update @scion/components to version 16; for detailed migration instructions, refer to https://github.com/SchweizerischeBundesbahnen/scion-toolkit/blob/master/CHANGELOG_COMPONENTS.md;
15.0.0-beta.8 (2023-06-08)
- workbench: reset part action list styling (dde93b6)
15.0.0-beta.7 (2023-06-06)
- workbench: enable action contribution to specific part or area (10b5f6a)
-
workbench: Programmatic contribution of part actions has changed.
To migrate:
-
Specify
Portal
instead ofComponentRef
orTemplateRef
. -
Replace
WorkbenchPart.registerPartAction
withWorkbenchService.registerPartAction
.const workbenchService = inject(WorkbenchService); workbenchService.registerPartAction({ portal: new ComponentPortal(YourComponent), target: { partId: ['console', 'navigator'], }, });
-
15.0.0-beta.6 (2023-05-25)
- 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)
- 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
-
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 ofWorkbenchView
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 theWorkbenchRouter
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)
- 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
- workbench/theme: rename workbench icon files (a7cbf6b)
- 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)
-
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)
- workbench/view: fix position of close button in view tabs in development build (34de1e9)
15.0.0-beta.2 (2023-02-16)
- workbench/view: fix position of close button in view tabs (fe4590f)
15.0.0-beta.1 (2023-02-10)
- 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
- 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
-
workbench: Updating
@scion/workbench
to Angular 15 introduced a breaking change.To migrate:
- update your application to Angular 15.x; for detailed migration instructions, refer to https://v15.angular.io/guide/update-to-latest-version;
- update @scion/components to version 15; for detailed migration instructions, refer to https://github.com/SchweizerischeBundesbahnen/scion-toolkit/blob/master/CHANGELOG_COMPONENTS.md;
-
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 ofcloseIfPresent=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.
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.
- Use
-
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 ofactivateIfPresent=true
in navigation extras.
Usingauto
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 ofactivateIfPresent=false
in navigation extras.
Usingblank
as the navigation target always navigates in a new view. - Use
target=<view.id>
instead of settingtarget=self
andselfViewId=<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 totrue
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.
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});
- Use
14.0.0-beta.9 (2023-01-31)
- workbench/messagebox: fix registration of MessageBoxService in root injector (47beed6)
14.0.0-beta.8 (2022-12-21)
- workbench/popup: attach popup to the DOM even if the view is inactive (24d7d7c)
- workbench/popup: do not provide popup config for injection (1656679)
- workbench/host: update
@scion/microfrontend-platform
to version1.0.0-rc.12
(1f674fa)
14.0.0-beta.7 (2022-12-07)
- 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)
- workbench/host: update
@scion/microfrontend-platform
to version1.0.0-rc.11
(34fec1d)
-
workbench/host: Updating
@scion/microfrontend-platform
to version1.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)
- workbench: resolve view-related data for views that are child of component-less routes (2fb8ae9), closes #357
- workbench/host: provide lifecycle hook invoked before starting the microfrontend platform (0ee9982)
- workbench/host: update
@scion/microfrontend-platform
to version1.0.0-rc.10
(966ec41)
14.0.0-beta.5 (2022-10-13)
- workbench-client/router: set title/heading as passed to navigation (f182859)
- workbench-client/router: support named parameters in title/heading of view capability (98f4bbd)
14.0.0-beta.4 (2022-10-11)
- workbench/view: display title/heading of a view as specified in the constructor of the view (74db341)
- 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)
- workbench: migrate to the asynchronous Interception API of
@scion/microfrontend-platform
(ab8df30)
-
workbench: Updating
@scion/microfrontend-platform
to version1.0.0-rc.7
introduced a breaking change.To migrate, refer to the changelog of the SCION Microfrontend Platform: https://github.com/SchweizerischeBundesbahnen/scion-microfrontend-platform/blob/master/CHANGELOG.md#100-rc7-2022-10-07
14.0.0-beta.2 (2022-10-07)
- workbench/popup: open popup inside Angular zone (2cdd994)
- workbench/router: navigate inside Angular zone (48e0e1a)
- 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)
-
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 constantsWB_VIEW_TITLE_PARAM
,WB_VIEW_HEADING_PARAM
andWB_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
withWorkbenchRouteData.title
- replace
WB_VIEW_HEADING_PARAM
withWorkbenchRouteData.heading
- replace
WB_STATE_DATA
withWorkbenchRouteData.state
- Constants for declaring a view's title and heading in its route data definition have been moved to
14.0.0-beta.1 (2022-09-14)
- 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)
-
workbench: Updating
@scion/workbench
to Angular 14 introduced a breaking change.To migrate:
- update your application to Angular 14.x; for detailed migration instructions, refer to https://v14.angular.io/guide/update-to-latest-version;
- update @scion/components to version 14; for detailed migration instructions, refer to https://github.com/SchweizerischeBundesbahnen/scion-toolkit/blob/master/CHANGELOG_COMPONENTS.md;
13.0.0-beta.2 (2022-05-20)
- workbench: support importing the workbench theme without using the tilde as
node_modules
alias (a4556ac)
- workbench: migrate to the framework-agnostic package
@scion/toolkit
(38368e9)
-
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 version1.0.0
instead of pre-release versions.To migrate:
- Install the NPM package
@scion/toolkit
in version1.0.0
using the following command:npm install @scion/toolkit@latest --save
. Note that the toolkit was previously released as pre-releases of version13.0.0
or older. - Install the NPM module
@scion/components
in version13.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
.
- Install the NPM package
-
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 thenode_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)
- workbench/view: discard parameter if set to
undefined
(b3b6a14), closes #325 - workbench/view: preserve position and size of inactive views (c0f869b)
-
workbench: Updating
@scion/workbench
to Angular 13 and RxJS 7.5 introduced a breaking change.To migrate:
- update your application to Angular 13; for detailed migration instructions, refer to https://github.com/angular/angular/blob/master/CHANGELOG.md;
- migrate your application to RxJS 7.5; for detailed migration instructions, refer to https://rxjs.dev/6-to-7-change-summary;
- update @scion/toolkit to version 13; for detailed migration instructions, refer to https://github.com/SchweizerischeBundesbahnen/scion-toolkit/blob/master/CHANGELOG.md;
- removed option in
MessageBoxConfig
to configure a customcomponentFactoryResolver
as not needed in Angular 13 anymore; - removed option in
NotificationConfig
to configure a customcomponentFactoryResolver
as not needed in Angular 13 anymore; - removed option in
PopupConfig
to configure a customcomponentFactoryResolver
as not needed in Angular 13 anymore;
12.0.0-beta.3 (2022-03-17)
- workbench/microfrontend-support: do not delegate log messages from @scion/microfrontend-platform to the workbench logger (f514a13)
- workbench/microfrontend-support: upgrade @scion/microfrontend-platform to v1.0.0-rc.1 (048fabf)
12.0.0-beta.2 (2022-02-11)
- 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)
- workbench/popup: open popups from within an interceptor (a11fd9d), closes #276
- workbench/view: open views from within an interceptor (137b8d0)
- workbench: allow adding css classes to menu items (791485a)
- workbench: allow controlling which view params to persist in the URL (dcb5ee1), closes #278
- workbench: migrate to @scion/microfrontend-platform v1.0.0-beta.20 (24dfec2), closes SchweizerischeBundesbahnen/scion-microfrontend-platform/#96
-
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
- property
WorkbenchModuleConfig.microfrontends
has been renamed toWorkbenchModuleConfig.microfrontendPlatform
and its type changed fromWorkbenchMicrofrontendConfig
toMicrofrontendPlatformConfig
(provided by @scion/microfrontend-platform); MicrofrontendPlatformConfigLoader
has been changed to return an instance ofMicrofrontendPlatformConfig
instead of thePlatformConfig
;- DI token
POST_MICROFRONTEND_PLATFORM_CONNECT
has been renamed toMICROFRONTEND_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 ofWorkbenchMicrofrontendConfig.platformHost.manifest
; either as URL or object literal - register applications in
MicrofrontendPlatformConfig.applications
instead ofWorkbenchMicrofrontendConfig.platform.apps
; - specify the symbolic name of the host in
MicrofrontendPlatformConfig.host.symbolicName
instead ofWorkbenchMicrofrontendConfig.platformHost.symbolicName
; - configure properties in
MicrofrontendPlatformConfig.properties
instead ofWorkbenchMicrofrontendConfig.platform.properties
; - specify global
manifestLoadTimeout
inMicrofrontendPlatformConfig.manifestLoadTimeout
instead ofWorkbenchMicrofrontendConfig.platform.manifestLoadTimeout
; - specify global
activatorLoadTimeout
inMicrofrontendPlatformConfig.activatorLoadTimeout
instead ofWorkbenchMicrofrontendConfig.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 toManifest
;
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
- property
-
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)
11.0.0-beta.8 (2021-07-09)
11.0.0-beta.7 (2021-04-13)
- 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
-
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)
- workbench-client/router: provide microfrontends with the most recent view capability (0b8f140)
- workbench/view: support workbench keystrokes from embedded content (e031f96)
- workbench/popup: configure contextual reference(s) via context object (0591e7a)
- workbench/message-box: allow controlling which view to block when opening a view-modal message box (3434e5b), closes #251
-
workbench/popup: Changed popup config for passing contextual reference(s)
To migrate: Set a popup's view reference via
PopupConfig#context#viewId
instead ofPopupConfig#viewRef
.
11.0.0-beta.5 (2021-02-10)
11.0.0-beta.4 (2021-02-03)
- 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)
- workbench/microfrontend: upgrade to @scion/microfrontend-platform@1.0.0-beta.11 (11c2f20)
11.0.0-beta.3 (2021-01-25)
- workbench: start microfrontend platform outside the Angular zone (296f6b0)
- 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)
- 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)
-
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 aNotification
object. TheNotification
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 theinput
property.
- To display a notification, pass a
-
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 aMessageBox
object. TheMessageBox
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 theinput
property.
- To display a message box, pass a
-
workbench/popup: consolidated the config for opening a popup in preparation for the microfrontend popup integration
To migrate:
- Rename the
position
property toalign
. 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
- Rename the
11.0.0-beta.2 (2020-12-22)
- workbench-client: provide core workbench API to microfrontends (55fabc3)
-
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
toWorkbenchModuleConfig
. - Removed the e2e-testing related CSS classes
e2e-active
ande2e-dirty
; to migrate, replace them withactive
anddirty
. - Renamed flag to set popup closing strategy from
onGridLayoutChange
toonLayoutChange
11.0.0-beta.1 (2020-11-17)
- workbench: remove flickering when dropping views (46a9c4d)
- workbench: wait to navigate until other navigations complete (5448260)
- 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
- workbench: refactor the workbench layout as prerequisite for complex layouts with fixed parts (84b764c)
-
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/
- Run
-
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
withfromDimension$
Observable for observing the dimension of a DOM element.
- Uninstall NPM module
-
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
- Uninstall NPM module
-
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
ofWbNavigationExtras
was renamed toselfViewId
- Property
blankViewPartRef
ofWbNavigationExtras
was renamed toblankPartId
- Property
viewRef
ofWorkbenchView
was renamed toviewId
- Property
viewPart
ofWorkbenchView
was renamed topart
- Property
viewPartRef
ofWorkbenchViewPart
was renamed topartId
- Property
activeViewRef$
ofWorkbenchViewPart
was renamed toactiveViewId$
- Property
activeViewRef
ofWorkbenchViewPart
was renamed toactiveViewId
- Property
viewRefs$
ofWorkbenchViewPart
was renamed toviewIds$
- Property
viewRefs
ofWorkbenchViewPart
was renamed toviewIds
- Property
viewRef
ofWorkbenchViewPartAction
was renamed toviewId
- Property
- 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 todata-partid
- Attribute
viewref
of<wb-view>
was changed todata-viewid
- Attribute
viewref
of<wb-view-tab>
was changed todata-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
- Attribute
- The serialized representation of the layout in the URL changed. For that reason, we renamed the query parameter
viewgrid
toparts
so that the app does not error when loading it from a bookmark into the browser.
- Update the usage of following properties:
0.0.0-beta.35 (2020-07-17)
- Added support for Angular 10.
To migrate:
- run
ng update @angular/cli @angular/core @angular/cdk
to migrate your app to Angular 10. For more information, see https://angular.io/guide/updating-to-version-10.
0.0.0-beta.34 (2020-07-02)
- 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)
- chore: add support for angular 9, drop support for angular < 9 #197
0.0.0-beta.32 (2019-11-13)
0.0.0-beta.31 (2019-11-13)
0.0.0-beta.30 (2019-11-11)
- 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)
- 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)
- 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)
0.0.0-beta.27 (2019-09-13)
0.0.0-beta.26 (2019-09-10)
- 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
- 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
- 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)
- 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
- 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)
- observe element dimension changes natively (f53f4b3), closes #156
- remove 'web-animations-js' polyfill from host-app as it breaks the app (2c55f2f), closes #152
- 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)
- 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 setcloseIfPresent
inWbNavigationExtras
- removed WbNavigationExtras.tryActivateView: use
WbNavigationExtras.activateIfPresent
instead
0.0.0-beta.22 (2019-05-08)
- 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)
- 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)
- Replaced
ApplicationConfigLoader
withPlatformConfigLoader
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 ofApplicationConfigLoader
- register your loader in
WorkbenchApplicationPlatformModule.forRoot(...)
config viaplatformConfigLoader
instead ofapplicationConfigLoader
property - change your config json to return a
PlatformConfig
object instead of an array ofApplicationConfig
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)
- 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
0.0.0-beta.18 (2019-03-15)
- 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
- 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)
- 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)
0.0.0-beta.15 (2019-01-31)
- 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)
- declare
workbench-application.core
as regular dependency ofworkbench-application.angular
(9855241)
0.0.0-beta.13 (2019-01-30)
- 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
- 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
-
Properties of
Activity
andWbActivityDirective
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 fromflex
(column nowrap) togrid
(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
- if having a single content child which stretches vertically by using
0.0.0-beta.12 (2018-11-23)
- remove static initializers to be compatible with Angular 6 transpiled with TypeScript 2.x (d5ce02e), closes #26
- extract
sci-dimension-module
into a separate NPM library (eecccb8), closes #44 - extract
sci-viewport-module
into a separate NPM library (a390b54), closes #45
- 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
- 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 useRemoteSiteComponent
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). Usemessage
output property instead. - Use added
visible
property overngIf
directive to show or hide an activity based on a conditional <wb-activity [visible]="conditional">
0.0.0-beta.11 (2018-10-26)
- do not enter maximize mode when closing views quickly (3959887)
0.0.0-beta.10 (2018-09-10)
- Allow lazily-loaded views to inject masked injection tokens (3c212d0)
0.0.0-beta.9 (2018-08-23)
- upgrade dependencies to fix potential security vulnerability in
url-parse@1.4.1
(43d70ff)
- use momentum-based scrolling to continue to scroll after finishing the scroll gesture (4a2f085)
0.0.0-beta.8 (2018-08-22)
- use native overflow scroll functionality in viewport (8889279)
-
Migration if using viewport component and dimension directive Manifest a dependency to
SciViewportModule
because packaged as separate moduleRemove custom CSS classes specified with
viewportCssClass
andviewportClientCssClass
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 accordinglyReplace
overflowAuto
input property withscrollbarStyle
input property; by default, scrollbars are displayed on top of the viewport clientChange selector from
wb-viewport
tosci-viewport
Use
scrollHeight
andscrollWidth
to get viewport client dimensionRename
ViewportComponent
toSciViewportComponent
if injecting the viewport componentManifest a dependency to
SciDimensionModule
because packaged as separate moduleChange selector from
wbDimension
tosciDimension
Rename
Dimension
toSciDimension
which is emitted upon host element's dimension changeRename
wbDimensionChange
output property tosciDimensionChange
Rename
wbDimensionUseTimer
input property tosciDimensionUseTimer
0.0.0-beta.7 (2018-08-06)
- 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
- 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 ofDefaultUrlSerializer
to parse URL (eedc5dc), closes #5
0.0.0-beta.6 (2018-07-24)
- make parameter 'extras' of method 'WorkbenchRouter.navigate(any[], WbNavigationExtras)' optional (b971447)
0.0.0-beta.5 (2018-07-24)
- allow to navigate to view/activity routes of lazy loaded modules (e6054b6), closes #23459 #13869 #20114 #5
0.0.0-beta.4 (2018-07-19)
- update project dependencies due to potential security vulnerability in one of the dependencies (1fd83a4)
0.0.0-beta.3 (2018-07-19)
- add missing exports to 'public_api' (1266e85)
- rename CSS class for workbench icon font from 'wb-font' to 'wb-icons' (94d3b2b)
0.0.0-beta.2 (2018-07-17)
- specify workbench icon font top-level in 'index.scss' (6d3884b)
0.0.0-beta.1 (2018-07-17)
- load workbench icon font relative to base href (f538223)