@@ -16,6 +16,7 @@ interface NonImageDetailsModalState {
1616
1717interface NonImageDetailsModalProps {
1818 mediaItem : MediaContract ,
19+ isLinking ?: boolean ,
1920 onDismiss : ( ) => void
2021}
2122
@@ -65,6 +66,19 @@ export class NonImageDetailsModal extends React.Component<NonImageDetailsModalPr
6566 } ) ;
6667 }
6768
69+ onReferenceUrlChange = ( ) : void => {
70+ if ( ! this . state . errors [ 'downloadUrl' ] && this . state . mediaItem . fileName === 'media.svg' ) {
71+ const newName = this . state . mediaItem . downloadUrl . split ( "/" ) . pop ( ) ;
72+ this . setState ( {
73+ mediaItem : {
74+ ...this . state . mediaItem ,
75+ fileName : newName ,
76+ permalink : '/content/' + newName
77+ }
78+ } )
79+ }
80+ }
81+
6882 validatePermalink = async ( permalink : string ) : Promise < string > => {
6983 if ( permalink === this . props . mediaItem ?. permalink ) return '' ;
7084
@@ -84,8 +98,6 @@ export class NonImageDetailsModal extends React.Component<NonImageDetailsModalPr
8498 return ;
8599 }
86100
87- return ;
88-
89101 await this . mediaService . updateMedia ( this . state . mediaItem ) ;
90102 this . eventManager . dispatchEvent ( 'onSaveChanges' ) ;
91103 this . props . onDismiss ( ) ;
@@ -108,7 +120,13 @@ export class NonImageDetailsModal extends React.Component<NonImageDetailsModalPr
108120 />
109121 < DefaultButton
110122 text = "Discard"
111- onClick = { this . props . onDismiss }
123+ onClick = { async ( ) => {
124+ if ( this . props . isLinking ) {
125+ await this . mediaService . deleteMedia ( this . state . mediaItem ) ;
126+ this . eventManager . dispatchEvent ( 'onSaveChanges' ) ;
127+ }
128+ this . props . onDismiss ( ) ;
129+ } }
112130 />
113131 </ Stack >
114132 </ Stack >
@@ -129,11 +147,22 @@ export class NonImageDetailsModal extends React.Component<NonImageDetailsModalPr
129147 styles = { textFieldStyles }
130148 required
131149 />
132- < CopyableTextField
133- fieldLabel = "Reference URL"
134- showLabel = { true }
135- copyableValue = { this . state . mediaItem . downloadUrl }
136- />
150+ { this . props . isLinking
151+ ? < TextField
152+ label = "Reference URL"
153+ value = { this . state . mediaItem . downloadUrl }
154+ onChange = { ( event , newValue ) => this . onInputChange ( 'downloadUrl' , newValue , URL_REQUIRED ) }
155+ errorMessage = { this . state . errors [ 'downloadUrl' ] ?? '' }
156+ styles = { textFieldStyles }
157+ required
158+ onBlur = { ( ) => this . onReferenceUrlChange ( ) }
159+ />
160+ : < CopyableTextField
161+ fieldLabel = "Reference URL"
162+ showLabel = { true }
163+ copyableValue = { this . state . mediaItem . downloadUrl }
164+ />
165+ }
137166 < TextField
138167 label = "Description"
139168 multiline
0 commit comments