@@ -3,16 +3,15 @@ import styles from './Draft.module.css'
33import { useLocation } from 'react-router-dom' ;
44import TitleCard from '../../components/DraftCards/TitleCard'
55import SectionCard from '../../components/DraftCards/SectionCard'
6- import { DraftedDocument } from '../../api'
76import { Document , Packer , Paragraph , TextRun } from 'docx' ;
87import { saveAs } from 'file-saver' ;
98import { AppStateContext } from "../../state/AppProvider" ;
9+ import { CommandBarButton , Stack } from '@fluentui/react' ;
1010
1111
1212const Draft = ( ) : JSX . Element => {
1313 const appStateContext = useContext ( AppStateContext )
1414 const location = useLocation ( ) ;
15- const { generateContentOnLoad } = location . state as { generateContentOnLoad : Boolean } ;
1615 const [ title , setTitle ] = useState ( '' ) ;
1716
1817 // get draftedDocument from context
@@ -65,23 +64,51 @@ const Draft = (): JSX.Element => {
6564 } ) ;
6665
6766 Packer . toBlob ( doc ) . then ( blob => {
68- saveAs ( blob , `DraftTemplate-${ title } .docx` ) ;
67+ saveAs ( blob , `DraftTemplate-${ sanitizeTitle ( title ) } .docx` ) ;
6968 } ) ;
7069 } ;
7170
7271 const handleTitleChange = ( newTitle : string ) => {
7372 setTitle ( newTitle ) ;
7473 } ;
7574
75+ function sanitizeTitle ( title : string ) : string {
76+ return title . replace ( / [ ^ a - z A - Z 0 - 9 ] / g, '' ) ;
77+ }
78+
7679 return (
7780 < div className = { styles . container } >
7881 < div style = { { display : 'flex' , justifyContent : 'start' , alignItems : 'center' } } >
7982 < h4 > Draft Document</ h4 >
80- < button onClick = { exportToWord } style = { { marginLeft : 'auto' } } > Export to Word</ button >
8183 </ div >
8284
8385 < TitleCard onTitleChange = { handleTitleChange } />
8486 { ( sections ?? [ ] ) . map ( ( _ , index ) => ( < SectionCard key = { index } sectionIdx = { index } /> ) ) }
87+ < Stack >
88+ < CommandBarButton
89+ role = "button"
90+ styles = { {
91+ icon : {
92+ color : '#FFFFFF'
93+ } ,
94+ iconDisabled : {
95+ color : '#BDBDBD !important'
96+ } ,
97+ root : {
98+ color : '#FFFFFF' ,
99+ background : '#1367CF'
100+ } ,
101+ rootDisabled : {
102+ background : '#F0F0F0'
103+ }
104+ } }
105+ className = { styles . exportDocumentIcon }
106+ iconProps = { { iconName : 'WordDocument' } }
107+ onClick = { exportToWord } //Update for Document Generation
108+ aria-label = "export document"
109+ text = "Export Document"
110+ />
111+ </ Stack >
85112 </ div >
86113 )
87114}
0 commit comments