@paperbits/forms
Version:
Paperbits components for form builder.
33 lines (26 loc) • 1.05 kB
text/typescript
import { IModelBinder } from "@paperbits/common/editing";
import { SubmitModel } from "./submitModel";
import { Contract } from "@paperbits/common";
import { SubmitContract } from "./submitContract";
export class SubmitModelBinder implements IModelBinder<SubmitModel> {
public canHandleContract(contract: Contract): boolean {
return contract.type === "input:submit";
}
public canHandleModel(model: Object): boolean {
return model instanceof SubmitModel;
}
public async contractToModel(contract: SubmitContract): Promise<SubmitModel> {
const model = new SubmitModel();
model.label = contract.label;
model.styles = contract.styles || { appearance: "components/button/default" };
return model;
}
public modelToContract(model: SubmitModel): Contract {
const contract: SubmitContract = {
type: "input:submit",
label: model.label,
styles: model.styles
};
return contract;
}
}