@@ -27,6 +27,7 @@ interface IModalDialogAttributes {
27
27
warning ?: boolean
28
28
actions ?: ModalAction [ ]
29
29
className ?: string
30
+ discardAsPrimary ?: boolean
30
31
}
31
32
interface ModalInput {
32
33
type : EditAttributeType
@@ -56,6 +57,7 @@ export function ModalDialog({
56
57
onDiscard,
57
58
onSecondary,
58
59
secondaryText,
60
+ discardAsPrimary,
59
61
} : React . PropsWithChildren < IModalDialogAttributes > ) : JSX . Element | null {
60
62
const { t } = useTranslation ( )
61
63
const inputResult = useRef < ModalInputResult > (
@@ -114,7 +116,7 @@ export function ModalDialog({
114
116
e . stopPropagation ( )
115
117
116
118
if ( isAcceptKey ( e . code ) ) {
117
- handleAccept ( e )
119
+ discardAsPrimary ? handleDiscard ( e ) : handleAccept ( e )
118
120
} else if ( isDismissKey ( e . code ) ) {
119
121
handleDiscard ( e )
120
122
}
@@ -213,7 +215,13 @@ export function ModalDialog({
213
215
>
214
216
{ secondaryText && (
215
217
< button
216
- className = "btn btn-secondary cancel-btn"
218
+ className = { ClassNames (
219
+ 'btn' ,
220
+ discardAsPrimary ? 'btn-primary' : 'btn-secondary' ,
221
+ 'discard-btn' ,
222
+ { 'btn-warn' : discardAsPrimary && warning }
223
+ ) }
224
+ autoFocus = { discardAsPrimary }
217
225
onClick = { handleSecondary }
218
226
onKeyDown = { preventClickOnEnter }
219
227
onKeyUp = { emulateClick }
@@ -244,11 +252,11 @@ export function ModalDialog({
244
252
} )
245
253
) }
246
254
< button
247
- className = { ClassNames ( 'btn btn-primary' , {
255
+ className = { ClassNames ( 'btn' , ! discardAsPrimary ? ' btn-primary' : 'btn-secondary ', {
248
256
right : secondaryText !== undefined ,
249
- 'btn-warn' : warning ,
257
+ 'btn-warn' : ! discardAsPrimary && warning ,
250
258
} ) }
251
- autoFocus
259
+ autoFocus = { ! discardAsPrimary }
252
260
onClick = { handleAccept }
253
261
onKeyDown = { preventClickOnEnter }
254
262
onKeyUp = { emulateClick }
@@ -288,6 +296,8 @@ export interface ModalDialogQueueItem {
288
296
actions ?: ModalAction [ ]
289
297
/** Is a critical decition/information */
290
298
warning ?: boolean
299
+ /** Discard as primary */
300
+ discardAsPrimary ?: boolean
291
301
}
292
302
interface IModalDialogGlobalContainerProps { }
293
303
interface IModalDialogGlobalContainerState {
@@ -386,6 +396,7 @@ class ModalDialogGlobalContainer0 extends React.Component<
386
396
actions = { actions }
387
397
show = { true }
388
398
warning = { onQueue . warning }
399
+ discardAsPrimary = { onQueue . discardAsPrimary }
389
400
>
390
401
{ _ . isString ( onQueue . message ) ? this . renderString ( onQueue . message ) : onQueue . message }
391
402
</ ModalDialog >
0 commit comments