@@ -151,18 +151,25 @@ removeModal <- function(session = getDefaultReactiveDomain()) {
151151# ' }
152152# ' @export
153153modalDialog <- function (... , title = NULL , footer = modalButton(" Dismiss" ),
154- size = c(" m" , " s" , " l" ), easyClose = FALSE , fade = TRUE ) {
154+ size = c(" m" , " s" , " l" , " xl " ), easyClose = FALSE , fade = TRUE ) {
155155
156156 size <- match.arg(size )
157157
158- cls <- if (fade ) " modal fade" else " modal"
159- div(id = " shiny-modal" , class = cls , tabindex = " -1" ,
160- `data-backdrop` = if (! easyClose ) " static" ,
161- `data-keyboard` = if (! easyClose ) " false" ,
158+ backdrop <- if (! easyClose ) " static"
159+ keyboard <- if (! easyClose ) " false"
160+ div(
161+ id = " shiny-modal" ,
162+ class = " modal" ,
163+ class = if (fade ) " fade" ,
164+ tabindex = " -1" ,
165+ `data-backdrop` = backdrop ,
166+ `data-bs-backdrop` = backdrop ,
167+ `data-keyboard` = keyboard ,
168+ `data-bs-keyboard` = keyboard ,
162169
163170 div(
164171 class = " modal-dialog" ,
165- class = switch (size , s = " modal-sm" , m = NULL , l = " modal-lg" ),
172+ class = switch (size , s = " modal-sm" , m = NULL , l = " modal-lg" , xl = " modal-xl " ),
166173 div(class = " modal-content" ,
167174 if (! is.null(title )) div(class = " modal-header" ,
168175 tags $ h4(class = " modal-title" , title )
@@ -171,14 +178,25 @@ modalDialog <- function(..., title = NULL, footer = modalButton("Dismiss"),
171178 if (! is.null(footer )) div(class = " modal-footer" , footer )
172179 )
173180 ),
174- tags $ script(" $('#shiny-modal').modal().focus();" )
181+ tags $ script(
182+ " if (window.bootstrap) {
183+ var modal = new bootstrap.Modal(document.getElementById('shiny-modal'));
184+ modal.show();
185+ } else {
186+ $('#shiny-modal').modal().focus();
187+ }"
188+ )
175189 )
176190}
177191
178192# ' @export
179193# ' @rdname modalDialog
180194modalButton <- function (label , icon = NULL ) {
181- tags $ button(type = " button" , class = " btn btn-default" ,
182- `data-dismiss` = " modal" , validateIcon(icon ), label
195+ tags $ button(
196+ type = " button" ,
197+ class = " btn btn-default" ,
198+ `data-dismiss` = " modal" ,
199+ `data-bs-dismiss` = " modal" ,
200+ validateIcon(icon ), label
183201 )
184202}
0 commit comments