@@ -14,6 +14,13 @@ const TypographyLabel = styled(Typography)(({ theme }) => ({
1414 fontSize : '0.9em' ,
1515} ) ) ;
1616
17+ const InlineButton = styled ( 'a' ) ( ( { theme } ) => ( {
18+ cursor : 'pointer' ,
19+ ':hover' : {
20+ 'textDecoration' : 'underline'
21+ }
22+ } ) ) ;
23+
1724interface WorkflowInstantiationPreviewProps {
1825 workflow : WorkflowInstantiation ,
1926 meta ?: boolean ,
@@ -24,6 +31,7 @@ export const WorkflowInstantiationPreview = ({workflow:wf, meta=false,minimal=fa
2431 const [ valuesMap , setValuesMap ] = useState < Record < string , VariableBinding > > ( { } ) ;
2532 const [ hasArray , setHasArray ] = useState < boolean > ( false ) ;
2633 const [ table , setTable ] = useState < { [ varName : string ] : string [ ] } > ( { } ) ;
34+ const [ showMore , setShowMore ] = useState < Record < string , boolean > > ( { } ) ;
2735
2836 useEffect ( ( ) => {
2937 if ( wf && wf . dataBindings ) {
@@ -92,17 +100,29 @@ export const WorkflowInstantiationPreview = ({workflow:wf, meta=false,minimal=fa
92100
93101 const renderWorkflowVariableBinding = ( binding :VariableBinding ) => {
94102 let values = valuesMap [ binding . variable ] ? valuesMap [ binding . variable ] . binding : binding . binding ;
103+ let show = showMore [ binding . variable ] || false ;
95104 if ( ! values || values . length === 0 )
96105 return ;
97106 if ( binding . isArray ) {
98107 return < span style = { { color :"rgba(0, 0, 0, 0.87)" } } >
99108 [
100- { values . filter ( ( _ , i ) => i < 3 ) . map ( ( v , i ) => < span key = { v + i } >
101- { renderSingleBinding ( binding , v ) }
102- { i !== values . length - 1 && ", " }
103- </ span > ) }
104- { values . length >= 3 &&
105- < i > and { values . length - 3 } more</ i > }
109+ { ( show || values . length <= 3 ) ?
110+ < >
111+ { values . map ( ( v , i ) => < span key = { v + i } >
112+ { renderSingleBinding ( binding , v ) }
113+ { i !== values . length - 1 && ", " }
114+ </ span > ) }
115+ { values . length > 3 && ( < InlineButton onClick = { ( ) => setShowMore ( ( m ) => ( { ...m , [ binding . variable ] : ! show } ) ) } > (show less)</ InlineButton > ) }
116+ </ >
117+ :
118+ < >
119+ { values . filter ( ( _ , i ) => i < 3 ) . map ( ( v , i ) => < span key = { v + i } >
120+ { renderSingleBinding ( binding , v ) }
121+ { i !== values . length - 1 && ", " }
122+ </ span > ) }
123+ { values . length > 3 && ( < InlineButton onClick = { ( ) => setShowMore ( ( m ) => ( { ...m , [ binding . variable ] : ! show } ) ) } > and { values . length - 3 } more</ InlineButton > ) }
124+ </ >
125+ }
106126 ]
107127 < span style = { { marginLeft : '5px' , color : 'darkgray' , fontWeight : 'bold' } } > (List)</ span >
108128 </ span >
0 commit comments