@@ -21,6 +21,7 @@ interface PostMetadataFormProps {
2121 seriesId ?: string ;
2222 tags : string [ ] ;
2323 isPrivate : boolean ;
24+ sendToSubscribers : boolean ;
2425 } ;
2526}
2627
@@ -37,7 +38,8 @@ const PostMetadataForm = ({
3738} : PostMetadataFormProps ) => {
3839 const [ tagInput , setTagInput ] = useState < string > ( '' ) ;
3940
40- const { title, subTitle, seriesId, tags, isPrivate } = formData ;
41+ const { title, subTitle, seriesId, tags, isPrivate, sendToSubscribers } =
42+ formData ;
4143 const selectOptions = series . map ( ( s ) => ( {
4244 value : s . _id ,
4345 label : s . title ,
@@ -67,7 +69,15 @@ const PostMetadataForm = ({
6769 } ;
6870
6971 const handlePublicChange = ( e : ChangeEvent < HTMLInputElement > ) => {
70- onFieldChange ( 'isPrivate' , e . target . checked ) ;
72+ const newIsPrivate = e . target . checked ;
73+ onFieldChange ( 'isPrivate' , newIsPrivate ) ;
74+ if ( newIsPrivate ) {
75+ onFieldChange ( 'sendToSubscribers' , false ) ;
76+ }
77+ } ;
78+
79+ const handleSendToSubscribersChange = ( e : ChangeEvent < HTMLInputElement > ) => {
80+ onFieldChange ( 'sendToSubscribers' , e . target . checked ) ;
7181 } ;
7282
7383 return (
@@ -161,6 +171,21 @@ const PostMetadataForm = ({
161171 />
162172 </ label >
163173 </ div >
174+ { /* 구독자에게 발행 체크박스 */ }
175+ < div className = { 'flex items-center gap-2' } >
176+ < label
177+ className = { `inline-flex items-center text-nowrap gap-2 cursor-pointer ${ isPrivate ? 'opacity-50' : '' } ` }
178+ >
179+ < span className = { 'font-bold text-default' } > 구독자에게 발행</ span >
180+ < input
181+ type = "checkbox"
182+ checked = { sendToSubscribers }
183+ onChange = { handleSendToSubscribersChange }
184+ disabled = { isPrivate }
185+ className = "w-4 h-4 text-blue-600 bg-gray-100 border-gray-300 rounded focus:ring-blue-500 dark:focus:ring-blue-600 dark:ring-offset-gray-800 focus:ring-2 dark:bg-gray-700 dark:border-gray-600 disabled:opacity-50"
186+ />
187+ </ label >
188+ </ div >
164189 </ div >
165190
166191 < button
0 commit comments