@eclipse-scout/core
Version:
Eclipse Scout runtime
62 lines (53 loc) • 2.24 kB
text/typescript
/*
* Copyright (c) 2010, 2023 BSI Business Systems Integration AG
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*/
import {BrowserField, BrowserFieldExternalWindowStateChangeEvent, BrowserFieldMessageEvent, Event, FormFieldAdapter, RemoteEvent} from '../../../index';
export class BrowserFieldAdapter extends FormFieldAdapter {
declare widget: BrowserField;
constructor() {
super();
this._addRemoteProperties(['location']);
}
protected _onWidgetMessage(event: BrowserFieldMessageEvent) {
this._send('postMessage', {
data: event.data,
origin: event.origin
});
}
protected _onWidgetExternalWindowStateChange(event: BrowserFieldExternalWindowStateChangeEvent) {
this._send('externalWindowStateChange', {
windowState: event.windowState
});
}
protected override _onWidgetEvent(event: Event<BrowserField>) {
if (event.type === 'message') {
this._onWidgetMessage(event as BrowserFieldMessageEvent);
} else if (event.type === 'externalWindowStateChange') {
this._onWidgetExternalWindowStateChange(event as BrowserFieldExternalWindowStateChangeEvent);
} else {
super._onWidgetEvent(event);
}
}
protected _onModelPostMessage(event: RemoteEvent) {
this.widget.postMessage(event.message, event.targetOrigin);
}
override onModelAction(event: RemoteEvent) {
if (event.type === 'postMessage') {
this._onModelPostMessage(event);
} else {
super.onModelAction(event);
}
}
protected override _orderPropertyNamesOnSync(newProperties: Record<string, any>): string[] {
// IE won't show scrollbars if the location is set before scrollBarEnabled is set to true.
// Rendering the location again after setting the scrollBarEnabled property as done in IFrame.js doesn't seem to work.
// It looks like the scrollBarEnabled property cannot be changed anymore once the location is set, even if location is unset and set again.
return Object.keys(newProperties).sort(this._createPropertySortFunc(['scrollBarEnabled', 'location']));
}
}