11import type { OcParameter } from '../../../types' ;
22
33const componentParameters = ( {
4- parameters
4+ parameters,
5+ currentValues
56} : {
67 parameters ?: Record < string , OcParameter > ;
8+ currentValues ?: Record < string , string > ;
79} ) => {
810 if ( ! parameters ) {
911 return (
@@ -16,32 +18,94 @@ const componentParameters = ({
1618
1719 const parameterRow = ( param : OcParameter , paramName : string ) => {
1820 const mandatory = param . mandatory ? 'mandatory' : 'optional' ;
21+ const defaultValue =
22+ param . default !== undefined ? String ( param . default ) : '' ;
23+ const exampleValue =
24+ param . example !== undefined ? String ( param . example ) : '' ;
25+ const currentValue =
26+ currentValues ?. [ paramName ] || defaultValue || exampleValue ;
27+
28+ const renderInput = ( ) => {
29+ switch ( param . type ) {
30+ case 'number' :
31+ return (
32+ < input
33+ type = "number"
34+ class = "parameter-input"
35+ name = { paramName }
36+ data-parameter = { paramName }
37+ value = { currentValue }
38+ placeholder = { param . example || '' }
39+ />
40+ ) ;
41+ case 'boolean' : {
42+ const isChecked = String ( currentValue ) === 'true' ;
43+ return (
44+ < input
45+ type = "checkbox"
46+ class = "parameter-input"
47+ name = { paramName }
48+ data-parameter = { paramName }
49+ checked = { isChecked }
50+ />
51+ ) ;
52+ }
53+ default :
54+ return (
55+ < input
56+ type = "text"
57+ class = "parameter-input"
58+ name = { paramName }
59+ data-parameter = { paramName }
60+ value = { currentValue }
61+ placeholder = {
62+ typeof param . default !== 'undefined'
63+ ? String ( param . default )
64+ : param . example || ''
65+ }
66+ />
67+ ) ;
68+ }
69+ } ;
70+
1971 return (
2072 < div class = "row" >
2173 < div class = "parameter" >
22- < span class = "bold" > { paramName } </ span >
74+ < span safe class = "bold" >
75+ { paramName }
76+ </ span >
2377 < span >
2478 ({ param . type } , { mandatory } )
2579 </ span >
2680 </ div >
2781 < div class = "parameter-description" >
28- { param . description && (
82+ { ! ! param . description && (
2983 < >
30- < span > { param . description } </ span >
84+ < span safe > { param . description } </ span >
3185 < br />
3286 < br />
3387 </ >
3488 ) }
35- < span class = "bold" > Example:</ span >
36- < span > { param . example } </ span >
37- { ! param . mandatory && param . default && (
89+ { param . type !== 'boolean' && ! ! param . example && (
3890 < >
91+ < span class = "bold" > Example:</ span >
92+ < span > { param . example } </ span >
3993 < br />
4094 < br />
95+ </ >
96+ ) }
97+ { ! param . mandatory && ! ! param . default && (
98+ < >
4199 < span class = "bold" > Default:</ span >
42- < span > { param . default } </ span >
100+ < span safe > { String ( param . default ) } </ span >
101+ < br />
102+ < br />
43103 </ >
44104 ) }
105+ < span class = "bold" >
106+ { param . type === 'boolean' ? 'Enabled:' : 'Value:' }
107+ </ span >
108+ { renderInput ( ) }
45109 </ div >
46110 </ div >
47111 ) ;
@@ -51,10 +115,6 @@ const componentParameters = ({
51115 < div >
52116 < h3 > Parameters</ h3 >
53117 < div id = "plugins" class = "table" >
54- < div class = "row header" >
55- < div class = "parameter" > Parameters</ div >
56- < div class = "parameter-description" />
57- </ div >
58118 { Object . keys ( parameters ) . map ( ( parameterName ) =>
59119 parameterRow ( parameters [ parameterName ] , parameterName )
60120 ) }
0 commit comments