Add loading spinner component (#1580)

This commit is contained in:
Matt Irvine
2018-06-07 17:54:48 -07:00
committed by GitHub
parent 44de602e52
commit a5b4eeb932
9 changed files with 266 additions and 7 deletions

View File

@@ -137,6 +137,13 @@ class ModelBuilderImpl implements sqlops.ModelBuilder {
return builder;
}
loadingComponent(): sqlops.LoadingComponentBuilder {
let id = this.getNextComponentId();
let builder = new LoadingComponentBuilder(new LoadingComponentWrapper(this._proxy, this._handle, id));
this._componentBuilders.set(id, builder);
return builder;
}
getComponentBuilder<T extends sqlops.Component>(component: ComponentWrapper, id: string): ComponentBuilderImpl<T> {
let componentBuilder: ComponentBuilderImpl<T> = new ComponentBuilderImpl<T>(component);
this._componentBuilders.set(id, componentBuilder);
@@ -299,6 +306,13 @@ class ToolbarContainerBuilder extends ContainerBuilderImpl<sqlops.ToolbarContain
}
}
class LoadingComponentBuilder extends ComponentBuilderImpl<sqlops.LoadingComponent> implements sqlops.LoadingComponentBuilder {
withItem(component: sqlops.Component) {
this.component().component = component;
return this;
}
}
class InternalItemConfig {
constructor(private _component: ComponentWrapper, public config: any) { }
@@ -761,6 +775,30 @@ class ButtonWrapper extends ComponentWrapper implements sqlops.ButtonComponent {
}
}
class LoadingComponentWrapper extends ComponentWrapper implements sqlops.LoadingComponent {
constructor(proxy: MainThreadModelViewShape, handle: number, id: string) {
super(proxy, handle, ModelComponentTypes.LoadingComponent, id);
this.properties = {};
this.loading = true;
}
public get loading(): boolean {
return this.properties['loading'];
}
public set loading(value: boolean) {
this.setProperty('loading', value);
}
public get component(): sqlops.Component {
return this.items[0];
}
public set component(value: sqlops.Component) {
this.addItem(value);
}
}
class ModelViewImpl implements sqlops.ModelView {
public onClosedEmitter = new Emitter<any>();