@@ -103,11 +103,12 @@ export default {
103103 } ,
104104 intent : {
105105 control : "select" ,
106- options : { "Not set" : undefined , ...Definitions } ,
106+ options : [ undefined , ...Object . values ( Definitions ) ] ,
107107 } ,
108108 highlightColor : {
109109 control : "select" ,
110- options : {
110+ options : [ "Not set" , "Default" , "Alternate" , "Default + alternate" , "Custom (red)" , "Default + Custom (red)" , "Custom (green) + alternate" , "Custom (purple) + custom (yellow)" ] ,
111+ mapping : {
111112 "Not set" : undefined ,
112113 Default : "default" ,
113114 Alternate : "alternate" ,
@@ -118,8 +119,8 @@ export default {
118119 "Custom (purple) + custom (yellow)" : [ "purple" , "yellow" ] ,
119120 } ,
120121 } ,
121- content : { control : "none" } ,
122- footerContent : { control : "none" } ,
122+ content : { control : false } ,
123+ footerContent : { control : false } ,
123124 isConnectable : { table : { disable : true } } ,
124125 targetPosition : { table : { disable : true } } ,
125126 sourcePosition : { table : { disable : true } } ,
@@ -128,17 +129,52 @@ export default {
128129 } ,
129130} as Meta < typeof NodeContent > ;
130131
132+ let forcedUpdateKey = 0 ; // @see https://github.com/storybookjs/storybook/issues/13375#issuecomment-1291011856
131133const NodeContentExample = ( args : any ) => {
132134 const [ reactflowInstance , setReactflowInstance ] = useState ( null ) ;
133135 const [ elements , setElements ] = useState ( [ ] as Elements ) ;
134136
137+ const defaultElement = {
138+ id : "example-1" ,
139+ type : "default" ,
140+ data : args ,
141+ position : { x : 50 , y : 50 } ,
142+ } ;
143+
135144 useEffect ( ( ) => {
145+ const sizeReset = { }
146+ if ( args . resizeMaxDimensions && args . resizeDirections ) {
147+ sizeReset [ "onNodeResize" ] = ( dimensions ) => {
148+ // eslint-disable-next-line no-console
149+ console . log ( "call onNodeResize method" )
150+ if ( args . onNodeResize ) {
151+ args . onNodeResize ( dimensions ) ;
152+ }
153+ if ( dimensions ?. width || dimensions ?. height ) {
154+ sizeReset [ "menuButtons" ] = < IconButton name = "item-reset" onClick = { ( ) => {
155+ // eslint-disable-next-line no-console
156+ console . log ( "reset size" ) ;
157+ setElements ( [
158+ {
159+ ...defaultElement ,
160+ data : { ...defaultElement . data , ...sizeReset , ...{ nodeDimensions : { } } } ,
161+ } ,
162+ ] as Elements ) ;
163+
164+ } } /> ;
165+ }
166+ setElements ( [
167+ {
168+ ...defaultElement ,
169+ data : { ...defaultElement . data , ...sizeReset , ...{ nodeDimensions : dimensions } } ,
170+ } ,
171+ ] as Elements ) ;
172+ }
173+ }
136174 setElements ( [
137175 {
138- id : "example-1" ,
139- type : "default" ,
140- data : args ,
141- position : { x : 50 , y : 50 } ,
176+ ...defaultElement ,
177+ data : { ...defaultElement . data , ...sizeReset } ,
142178 } ,
143179 ] as Elements ) ;
144180 } , [ args ] ) ;
@@ -165,7 +201,7 @@ const NodeContentExample = (args: any) => {
165201 ) ;
166202} ;
167203
168- const Template : StoryFn < typeof NodeContent > = ( args ) => < NodeContentExample { ...args } /*some comment*/ /> ;
204+ const Template : StoryFn < typeof NodeContent > = ( args ) => < NodeContentExample { ...args } /*some comment*/ key = { ++ forcedUpdateKey } /> ;
169205
170206export const Default = Template . bind ( { } ) ;
171207Default . args = {
0 commit comments