11"use client" ;
22
3- import React , { ChangeEvent , useCallback , useEffect , useState } from "react" ;
3+ import React , {
4+ ChangeEvent ,
5+ Fragment ,
6+ useCallback ,
7+ useEffect ,
8+ useState ,
9+ } from "react" ;
410import { HeaderEditorComponent } from "@/features/encoder/components/header-editor.component" ;
511import {
612 CardComponent ,
713 CardComponentProps ,
814} from "@/features/common/components/card/card.component" ;
915import { PayloadEditorComponent } from "@/features/encoder/components/payload-editor.component" ;
10- import { TokenEncoderEncodingFormatPickerComponent } from "@/features/encoder/components/token-encoder-encoding-format-picker.component" ;
1116import { TokenEncoderKeyFormatPickerComponent } from "@/features/encoder/components/token-encoder-key-format-picker.component" ;
1217import { SigningSecretEditorComponent } from "@/features/encoder/components/signing-secret-editor.component" ;
1318import { SigningPrivateKeyEditorComponent } from "@/features/encoder/components/signing-private-key-editor.component" ;
@@ -28,6 +33,7 @@ import {
2833import { dataTestidDictionary } from "@/libs/testing/data-testid.dictionary" ;
2934import { CardToolbarComponent } from "@/features/common/components/card-toolbar/card-toolbar.component" ;
3035import { CardToolbarClearButtonComponent } from "@/features/common/components/card-toolbar-buttons/card-toolbar-clear-button/card-toolbar-clear-button.component" ;
36+ import { EncodingFormatToggleSwitchComponent } from "@/features/decoder/components/encoding-format-toggle-swith/encoding-format-toggle-switch" ;
3137
3238type HeaderInputComponentProps = {
3339 languageCode : string ;
@@ -41,32 +47,32 @@ export const TokenEncoderInputComponent: React.FC<
4147 const headerErrors$ = useEncoderStore ( ( state ) =>
4248 state . headerErrors && state . headerErrors . length > 0
4349 ? state . headerErrors
44- : null ,
50+ : null
4551 ) ;
4652 const headerWarnings$ = useEncoderStore ( ( state ) =>
4753 state . headerWarnings && state . headerWarnings . length > 0
4854 ? state . headerWarnings
49- : null ,
55+ : null
5056 ) ;
5157 const payloadErrors$ = useEncoderStore ( ( state ) =>
5258 state . payloadErrors && state . payloadErrors . length > 0
5359 ? state . payloadErrors
54- : null ,
60+ : null
5561 ) ;
5662 const signingErrors$ = useEncoderStore ( ( state ) =>
5763 state . signingErrors && state . signingErrors . length > 0
5864 ? state . signingErrors
59- : null ,
65+ : null
6066 ) ;
6167 const controlledHeader$ = useEncoderStore ( ( state ) => state . controlledHeader ) ;
6268 const controlledPayload$ = useEncoderStore (
63- ( state ) => state . controlledPayload ,
69+ ( state ) => state . controlledPayload
6470 ) ;
6571 const controlledSymmetricSecretKey$ = useEncoderStore (
66- ( state ) => state . controlledSymmetricSecretKey ,
72+ ( state ) => state . controlledSymmetricSecretKey
6773 ) ;
6874 const controlledAsymmetricPrivateKey$ = useEncoderStore (
69- ( state ) => state . controlledAsymmetricPrivateKey ,
75+ ( state ) => state . controlledAsymmetricPrivateKey
7076 ) ;
7177
7278 const [ header , setHeader ] = useState < string > ( DEFAULT_HEADER ) ;
@@ -95,28 +101,28 @@ export const TokenEncoderInputComponent: React.FC<
95101 } , [ controlledAsymmetricPrivateKey$ ] ) ;
96102
97103 const handleHeaderChange$ = useEncoderStore (
98- ( state ) => state . handleHeaderChange ,
104+ ( state ) => state . handleHeaderChange
99105 ) ;
100106 const resetControlledHeader$ = useEncoderStore (
101- ( state ) => state . resetControlledHeader ,
107+ ( state ) => state . resetControlledHeader
102108 ) ;
103109 const handlePayloadChange$ = useEncoderStore (
104- ( state ) => state . handlePayloadChange ,
110+ ( state ) => state . handlePayloadChange
105111 ) ;
106112 const resetControlledPayload$ = useEncoderStore (
107- ( state ) => state . resetControlledPayload ,
113+ ( state ) => state . resetControlledPayload
108114 ) ;
109115 const handleSymmetricSecretKeyChange$ = useEncoderStore (
110- ( state ) => state . handleSymmetricSecretKeyChange ,
116+ ( state ) => state . handleSymmetricSecretKeyChange
111117 ) ;
112118 const resetControlledSymmetricSecretKey$ = useEncoderStore (
113- ( state ) => state . resetControlledSymmetricSecretKey ,
119+ ( state ) => state . resetControlledSymmetricSecretKey
114120 ) ;
115121 const handleAsymmetricPrivateKeyChange$ = useEncoderStore (
116- ( state ) => state . handleAsymmetricPrivateKeyChange ,
122+ ( state ) => state . handleAsymmetricPrivateKeyChange
117123 ) ;
118124 const resetControlledAsymmetricPrivateKey$ = useEncoderStore (
119- ( state ) => state . resetControlledAsymmetricPrivateKey ,
125+ ( state ) => state . resetControlledAsymmetricPrivateKey
120126 ) ;
121127
122128 const clearHeader = async ( ) => {
@@ -153,7 +159,7 @@ export const TokenEncoderInputComponent: React.FC<
153159
154160 handleHeaderChange$ ( cleanValue ) ;
155161 } ,
156- [ handleHeaderChange$ ] ,
162+ [ handleHeaderChange$ ]
157163 ) ;
158164
159165 const handlePayloadChange = useCallback (
@@ -164,11 +170,11 @@ export const TokenEncoderInputComponent: React.FC<
164170
165171 handlePayloadChange$ ( cleanValue ) ;
166172 } ,
167- [ handlePayloadChange$ ] ,
173+ [ handlePayloadChange$ ]
168174 ) ;
169175
170176 const handleSymmetricSecretKeyChange = async (
171- e : ChangeEvent < HTMLTextAreaElement > ,
177+ e : ChangeEvent < HTMLTextAreaElement >
172178 ) => {
173179 const key = e . target . value ;
174180
@@ -180,7 +186,7 @@ export const TokenEncoderInputComponent: React.FC<
180186 } ;
181187
182188 const handleAsymmetricPrivateKeyChange = async (
183- e : ChangeEvent < HTMLTextAreaElement > ,
189+ e : ChangeEvent < HTMLTextAreaElement >
184190 ) => {
185191 const key = e . target . value ;
186192
@@ -197,6 +203,7 @@ export const TokenEncoderInputComponent: React.FC<
197203 languageCode : languageCode ,
198204 title : dictionary . headerEditor . title ,
199205 compactTitle : dictionary . headerEditor . compactTitle ,
206+ hasHeaderIcon : true ,
200207 children : (
201208 < HeaderEditorComponent
202209 header = { header }
@@ -219,7 +226,7 @@ export const TokenEncoderInputComponent: React.FC<
219226 </ CardToolbarComponent >
220227 ) ,
221228 } ,
222- options : { noPadding : true } ,
229+ options : { noPadding : false } ,
223230 } ,
224231 {
225232 id : dataTestidDictionary . encoder . payloadEditor . id ,
@@ -232,6 +239,7 @@ export const TokenEncoderInputComponent: React.FC<
232239 handlePayloadChange = { handlePayloadChange }
233240 />
234241 ) ,
242+ hasHeaderIcon : true ,
235243 messages : {
236244 success : [ dictionary . payloadEditor . successMessage ] ,
237245 errors : payloadErrors$ ,
@@ -247,22 +255,23 @@ export const TokenEncoderInputComponent: React.FC<
247255 </ CardToolbarComponent >
248256 ) ,
249257 } ,
250- options : { noPadding : true } ,
258+ options : { noPadding : false } ,
251259 } ,
252260 ] ;
253261
254262 if ( isHmacAlg ( alg$ ) || isDigitalSignatureAlg ( alg$ ) ) {
255263 cards . push ( {
256264 id : dataTestidDictionary . encoder . secretKeyEditor . id ,
257265 languageCode : languageCode ,
266+ hasHeaderIcon : true ,
258267 title : isHmacAlg ( alg$ )
259268 ? dictionary . signatureEditor . title . secret
260269 : dictionary . signatureEditor . title . privateKey ,
261270 compactTitle : isHmacAlg ( alg$ )
262271 ? dictionary . signatureEditor . compactTitle . secret
263272 : dictionary . signatureEditor . compactTitle . privateKey ,
264273 options : {
265- noPadding : true ,
274+ noPadding : false ,
266275 } ,
267276 children : (
268277 < >
@@ -307,13 +316,6 @@ export const TokenEncoderInputComponent: React.FC<
307316 />
308317 </ CardToolbarComponent >
309318 ) ,
310- footer : isHmacAlg ( alg$ ) ? (
311- < TokenEncoderEncodingFormatPickerComponent
312- languageCode = { languageCode }
313- />
314- ) : (
315- < TokenEncoderKeyFormatPickerComponent languageCode = { languageCode } />
316- ) ,
317319 } ,
318320 } ) ;
319321 }
@@ -322,7 +324,26 @@ export const TokenEncoderInputComponent: React.FC<
322324 < >
323325 < div heap-ignore = "true" className = { styles . encoderCards } >
324326 { cards . map ( ( props ) => (
325- < CardComponent key = { props . title } { ...props } />
327+ < Fragment key = { props . title } >
328+ { props . id === dataTestidDictionary . encoder . secretKeyEditor . id ? (
329+ < div className = { styles . headline_container } >
330+ < h4 className = { styles . headline } > { props . compactTitle } </ h4 >
331+ { isHmacAlg ( alg$ ) ? (
332+ < EncodingFormatToggleSwitchComponent
333+ languageCode = { languageCode }
334+ isEncoding
335+ />
336+ ) : (
337+ < TokenEncoderKeyFormatPickerComponent
338+ languageCode = { languageCode }
339+ />
340+ ) }
341+ </ div >
342+ ) : (
343+ < h4 className = { styles . headline } > { props . compactTitle } </ h4 >
344+ ) }
345+ < CardComponent { ...props } />
346+ </ Fragment >
326347 ) ) }
327348 </ div >
328349 < div heap-ignore = "true" className = { styles . encoderCardTabs } >
0 commit comments