@@ -969,34 +969,52 @@ $(document).on('click', 'a', function (e) {
969969 }
970970} ) ;
971971
972- function showSpinner ( stringKey = 'Loading' ) {
973- let text = isEmpty ( stringKey ) ? "Loading..." : getString ( stringKey || "Loading" ) ;
972+ function resolveSpinnerTarget ( explicitTarget = null ) {
973+ if ( explicitTarget ) {
974+ return $ ( explicitTarget ) ;
975+ }
976+
977+ // Active tab pane
978+ const activeTab = $ ( ".tab-pane.active .spinnerTarget" ) . first ( ) ;
979+ if ( activeTab . length ) {
980+ return activeTab ;
981+ }
982+
983+ // Visible container fallback
984+ const visibleTarget = $ ( ".spinnerTarget:visible" ) . first ( ) ;
985+ if ( visibleTarget . length ) {
986+ return visibleTarget ;
987+ }
988+
989+ return $ ( ) ;
990+ }
991+
992+ function showSpinner ( stringKey = "Loading" , target = null ) {
993+ let text = isEmpty ( stringKey )
994+ ? "Loading..."
995+ : getString ( stringKey || "Loading" ) ;
974996
975997 if ( ! text || ! text . trim ( ) ) {
976- text = "Loading..."
998+ text = "Loading..." ;
977999 }
9781000
9791001 const spinner = $ ( "#loadingSpinner" ) ;
980- const target = $ ( ".spinnerTarget" ) . first ( ) ; // Only use the first one if multiple exist
1002+ const resolvedTarget = resolveSpinnerTarget ( target ) ;
9811003
9821004 $ ( "#loadingSpinnerText" ) . text ( text ) ;
9831005
984- if ( target . length ) {
985- // Position relative to target
986- const offset = target . offset ( ) ;
987- const width = target . outerWidth ( ) ;
988- const height = target . outerHeight ( ) ;
1006+ if ( resolvedTarget . length ) {
1007+ const offset = resolvedTarget . offset ( ) ;
9891008
9901009 spinner . css ( {
9911010 position : "absolute" ,
9921011 top : offset . top ,
9931012 left : offset . left ,
994- width : width ,
995- height : height ,
1013+ width : resolvedTarget . outerWidth ( ) ,
1014+ height : resolvedTarget . outerHeight ( ) ,
9961015 zIndex : 9999
9971016 } ) ;
9981017 } else {
999- // Fullscreen fallback
10001018 spinner . css ( {
10011019 position : "fixed" ,
10021020 top : 0 ,
@@ -1013,6 +1031,12 @@ function showSpinner(stringKey = 'Loading') {
10131031 } ) ;
10141032}
10151033
1034+ function hideSpinner ( ) {
1035+ $ ( "#loadingSpinner" )
1036+ . removeClass ( "visible" )
1037+ . fadeOut ( animationTime ) ;
1038+ }
1039+
10161040function hideSpinner ( ) {
10171041 clearTimeout ( spinnerTimeout ) ;
10181042 const spinner = $ ( "#loadingSpinner" ) ;
0 commit comments