11/* globals feather:false */
22
3- ( function ( ) {
3+ ( function ( ) {
44 'use strict' ;
55
66 feather . replace ( ) ;
77
8-
98 function clearInput ( ) {
109 var initiators = document . querySelectorAll ( '[data-clear]' ) ;
11- initiators . forEach ( function ( initiator ) {
10+ initiators . forEach ( function ( initiator ) {
1211 initiator . addEventListener ( 'click' ,
13- function ( e ) {
12+ function ( e ) {
1413 var target = e . currentTarget ;
1514 var selector = target . getAttribute ( 'data-clear' ) ;
1615 var input = document . querySelector ( selector ) ;
2120
2221 function confirmSubmit ( ) {
2322 var initiators = document . querySelectorAll ( '[data-confirm]' ) ;
24- initiators . forEach ( function ( initiator ) {
23+ initiators . forEach ( function ( initiator ) {
2524 var form = initiator . form ;
2625 form . addEventListener ( 'submit' ,
2726 function ( e ) {
3635 } ) ;
3736 }
3837
38+ function adjustModalPosition ( ) {
39+ var modalTriggers = document . querySelectorAll ( '.modal-trigger[data-bs-target]' ) ;
40+ modalTriggers . forEach ( function ( modalTrigger ) {
41+ modalTrigger . addEventListener ( 'click' , function ( ) {
42+ var dialogSelector = modalTrigger . dataset . bsTarget + " .modal-dialog" ;
43+
44+ var modalDialog = document . querySelector ( dialogSelector ) ;
45+ if ( ! modalDialog ) { return ; }
46+
47+ modalDialog . style = "position: fixed;" +
48+ "top: " + modalTrigger . getBoundingClientRect ( ) . top + "px;" +
49+ "left: 50%;" +
50+ "min-width: 500px;" +
51+ "transform: translate(-50%, -50%);" ;
52+
53+ var modalContent = document . querySelector ( dialogSelector + " .modal-content" ) ;
54+ if ( ! modalContent ) { return ; }
55+
56+ modalContent . style = "max-height: 300px;" ; // we can't use here vh, due to iframe viewport, viewport is not static when scrollable
57+ } ) ;
58+ } ) ;
59+ }
60+
3961 clearInput ( ) ;
4062 confirmSubmit ( ) ;
41- } ) ( )
63+ adjustModalPosition ( ) ;
64+ } ) ( )
0 commit comments