@@ -26,7 +26,7 @@ export interface SocialFieldOptions {
2626}
2727
2828export interface SocialFieldData {
29- sites ? : {
29+ sites : {
3030 [ key : string ] : {
3131 id ?: SOCIAL_SITE_IDS ;
3232 username ?: string ;
@@ -54,16 +54,19 @@ export const generateAlignmentTags = (alignment: SOCIAL_FIELD_ALIGNMENT, type: '
5454export const generateSocialTags = ( data : SocialFieldData = { sites : { } } , options : SocialFieldOptions = { } ) => {
5555 const sites = data . sites ? Object . keys ( data . sites ) : [ ] ;
5656 return sites
57+ . filter ( siteId => data . sites [ siteId ] ?. username )
5758 . map (
5859 siteId =>
59- `<a href="${ SOCIAL_SITES [ siteId ] . href ( data . sites [ siteId ] . username ) } " target="_blank">\n<img src=${
60+ `<a href="${ SOCIAL_SITES [ siteId ] . href ( data . sites [ siteId ] . username ! ) } " target="_blank">\n<img src=${
6061 SOCIAL_SITES [ siteId ] . shieldBadge
6162 } alt=${ siteId } style="margin-bottom: 5px;" />\n</a>`,
6263 )
6364 . join ( '\n' ) ;
6465} ;
6566
6667export const generateSocialFieldMarkdown = ( { data, options = { } } : SocialFieldProps ) => {
68+ if ( ! options ) options = { } ;
69+ if ( ! options . alignment ) options . alignment = SOCIAL_FIELD_ALIGNMENT . LEFT ;
6770 return (
6871 `${ generateAlignmentTags ( options . alignment , 'start' ) } ` +
6972 `${ generateSocialTags ( data , options ) } ` +
@@ -90,19 +93,20 @@ export const SocialField = ({
9093 const onChange = ( event : React . ChangeEvent < HTMLTextAreaElement > ) => {
9194 const id = event . target . name ;
9295 const value = event . target . value ;
93- if ( ! localSocialFieldProps . data . sites [ id ] ) localSocialFieldProps . data . sites [ id ] = { } ;
94- if ( value )
96+ if ( localSocialFieldProps ?. data && ! localSocialFieldProps ?. data ?. sites [ id ] )
97+ localSocialFieldProps . data . sites [ id ] = { } ;
98+ if ( localSocialFieldProps . data && value )
9599 localSocialFieldProps . data . sites [ id ] = {
96100 ...localSocialFieldProps . data . sites [ id ] ,
97101 username : value ,
98102 } ;
99- else delete localSocialFieldProps . data . sites [ id ] ;
103+ else if ( localSocialFieldProps . data ) delete localSocialFieldProps . data . sites [ id ] ;
100104 modifyField ( {
101105 ...localSocialFieldProps ,
102106 } ) ;
103107 } ;
104108
105- const changeAlignment = ( alignment : typeof localSocialFieldProps . options . alignment ) => {
109+ const changeAlignment = ( alignment : SOCIAL_FIELD_ALIGNMENT ) => {
106110 const localProps = { ...localSocialFieldProps } ;
107111 if ( ! localProps . options ) localProps . options = { } ;
108112 localProps . options . alignment = alignment ;
@@ -118,10 +122,9 @@ export const SocialField = ({
118122 < TextArea
119123 rows = { 1 }
120124 autoSize = { true }
121- suffix = { site . title }
122125 name = { siteId }
123126 value = {
124- localSocialFieldProps . data . sites [ siteId ]
127+ localSocialFieldProps . data && localSocialFieldProps . data . sites [ siteId ]
125128 ? localSocialFieldProps . data . sites [ siteId ] . username
126129 : ''
127130 }
0 commit comments