@@ -6,10 +6,24 @@ import "./story.css";
66import React , { createRef } from "react" ;
77import { ComponentStory , ComponentMeta } from "@storybook/react" ;
88
9- import CascadeForms , { CascadeFormProps , FormActions , FormState , FormItem , OnChangeFn } from "./CascadeForms" ;
9+ import CascadeForms , { ControlRenderProps , CascadeFormProps , FormActions , FormState , FormItem , OnChangeFn } from "./CascadeForms" ;
1010import FORM from "./form1.json" ;
1111
12- import { Button , Checkbox , InputGroup , RadioGroup , Switch } from "@blueprintjs/core" ;
12+ import { Button , Callout , Checkbox , EditableText , InputGroup , RadioGroup , Switch } from "@blueprintjs/core" ;
13+
14+
15+ const CustomCtrl = ( props :ControlRenderProps ) => {
16+ const { item, formState, onChange } = props ;
17+ console . log ( "Custom !" ) ;
18+ return (
19+ < div className = "customCtrl" >
20+ < Callout intent = "warning" >
21+ Enter some chars..
22+ </ Callout >
23+ < EditableText value = { formState [ item . id ] ?. value } multiline = { true } minLines = { 5 } onChange = { ( text ) => onChange ( item . id , text || "" ) } />
24+ </ div >
25+ ) ;
26+ } ;
1327
1428const onRender = ( formState :FormState , item :FormItem , onChange :OnChangeFn ) => {
1529 console . log ( "onRender" , formState ) ;
@@ -20,6 +34,8 @@ const onRender = (formState:FormState,item:FormItem,onChange:OnChangeFn) => {
2034 return < Checkbox value = { formState [ item . id ] ?. value || false } label = { item . title } onChange = { ( ev ) => onChange ( item . id , ev . target . checked ) } /> ;
2135 case "radio" :
2236 return < Switch checked = { formState [ item . id ] ?. value || false } label = { item . title } onChange = { ( ev ) => onChange ( item . id , ev . target . checked ) } /> ;
37+ case "custom" :
38+ return < CustomCtrl formState = { formState } item = { item } onChange = { onChange } /> ;
2339 default :
2440 return < div className = "default" > { item . title } </ div > ;
2541 }
0 commit comments