@paperbits/core
Version:
Paperbits core components.
44 lines (39 loc) • 1.91 kB
text/typescript
import { ViewManager, IContextCommand, IComponent } from "@paperbits/common/ui";
import { WidgetContext } from "@paperbits/common/editing";
import { IVisibilityContextCommandProvider } from "./visibilityContextCommandProvider";
import { SecurityModelEditor } from "./securityModelEditor";
export class RoleBasedSecurityModelEditorProvider implements IVisibilityContextCommandProvider {
constructor(private readonly viewManager: ViewManager) { }
private createStandardVisibilityCommand(callback: IContextCommand["callback"], overrides?: Partial<Exclude<IContextCommand, "callback">>): IContextCommand {
return {
controlType: "toolbox-button",
tooltip: "Change access",
iconClass: "paperbits-icon paperbits-a-security",
position: "top right",
color: "#607d8b",
...overrides,
callback,
};
}
private createSecurityModelEditorComponent(context: WidgetContext, componentSelector: string): IComponent {
const securityModelEditorParams: SecurityModelEditor = {
securityModel: context.binding.model.security,
onChange: (securityModel): void => {
context.binding.model.security = securityModel;
context.binding.applyChanges(context.model);
},
};
return {
name: componentSelector,
params: securityModelEditorParams,
};
}
public create(context: WidgetContext): IContextCommand {
return this.createStandardVisibilityCommand(() =>
this.viewManager.openViewAsPopup({
heading: `Access control`,
component: this.createSecurityModelEditorComponent(context, "role-based-security-model-editor"),
resizing: "vertically horizontally",
}));
}
}