@@ -320,21 +320,76 @@ <h3 class="mt-5">ATT&CK in Excel</h3>
320320 < h5 class ="fw-bold mb-3 " style ="font-size:1.1rem; "> ATT&CK Excel Files by Version</ h5 >
321321 < ul class ="nav nav-tabs mb-2 " role ="tablist ">
322322 {% set versions = parsed.excel_files_by_version.keys()|list %}
323- {% for version in versions %}
324- {% if loop.first %}
325- < li class ="nav-item ">
326- < a class ="nav-link active " id ="tab-{{ version|replace('.', '-') }} " data-toggle ="tab " href ="#pane-{{ version|replace('.', '-') }} " role ="tab " aria-controls ="pane-{{ version|replace('.', '-') }} " aria-selected ="true ">
327- {{ version }}
328- </ a >
329- </ li >
330- {% else %}
331- < li class ="nav-item ">
332- < a class ="nav-link " id ="tab-{{ version|replace('.', '-') }} " data-toggle ="tab " href ="#pane-{{ version|replace('.', '-') }} " role ="tab " aria-controls ="pane-{{ version|replace('.', '-') }} " aria-selected ="false ">
333- {{ version }}
334- </ a >
335- </ li >
336- {% endif %}
337- {% endfor %}
323+ {% set visible_count = 3 %}
324+ {% if versions|length < = visible_count %}
325+ {% for version in versions %}
326+ {% if loop.first %}
327+ < li class ="nav-item ">
328+ < a class ="nav-link active " id ="tab-{{ version|replace('.', '-') }} " data-toggle ="tab " href ="#pane-{{ version|replace('.', '-') }} " role ="tab " aria-selected ="true ">
329+ {{ version }}
330+ </ a >
331+ </ li >
332+ {% else %}
333+ < li class ="nav-item ">
334+ < a class ="nav-link " id ="tab-{{ version|replace('.', '-') }} " data-toggle ="tab " href ="#pane-{{ version|replace('.', '-') }} " role ="tab " aria-selected ="false ">
335+ {{ version }}
336+ </ a >
337+ </ li >
338+ {% endif %}
339+ {% endfor %}
340+ {% else %}
341+ {% for version in versions[:visible_count] %}
342+ {% if loop.first %}
343+ < li class ="nav-item ">
344+ < a class ="nav-link active " id ="tab-{{ version|replace('.', '-') }} " data-toggle ="tab " href ="#pane-{{ version|replace('.', '-') }} " role ="tab " aria-selected ="true ">
345+ {{ version }}
346+ </ a >
347+ </ li >
348+ {% else %}
349+ < li class ="nav-item ">
350+ < a class ="nav-link " id ="tab-{{ version|replace('.', '-') }} " data-toggle ="tab " href ="#pane-{{ version|replace('.', '-') }} " role ="tab " aria-selected ="false ">
351+ {{ version }}
352+ </ a >
353+ </ li >
354+ {% endif %}
355+ {% endfor %}
356+ < li class ="nav-item dropdown ">
357+ <!-- Localized override for the "Older versions" dropdown so it looks like a page-level dropdown
358+ rather than inheriting the top navigation (.nav/.navbar) styles in style-attack.css.
359+ We intentionally scope the CSS here (template-only change) and add an extra class on
360+ the dropdown menu. -->
361+ < style >
362+ /* Scoped to this dropdown; uses !important to override global navbar rules */
363+ .older-versions-dropdown {
364+ background-color : white !important ;
365+ box-shadow : 0 8px 16px rgba (0 , 0 , 0 , 0.08 );
366+ }
367+ .older-versions-dropdown .dropdown-item {
368+ color : # 39434c !important ;
369+ }
370+ .older-versions-dropdown .dropdown-item .active {
371+ background-color : white !important ;
372+ }
373+ .older-versions-dropdown .dropdown-item : hover ,
374+ .older-versions-dropdown .dropdown-item : focus {
375+ color : # 4f7cac !important ;
376+ }
377+ </ style >
378+
379+ < a class ="nav-link dropdown-toggle " id ="older-versions-dropdown " href ="# " role ="button " data-toggle ="dropdown " aria-haspopup ="true " aria-expanded ="false ">
380+ Older versions
381+ </ a >
382+ < ul class ="dropdown-menu older-versions-dropdown " aria-labelledby ="older-versions-dropdown ">
383+ {% for version in versions[visible_count:] %}
384+ < li >
385+ < a class ="dropdown-item " id ="tab-{{ version|replace('.', '-') }} " data-toggle ="tab " href ="#pane-{{ version|replace('.', '-') }} " role ="tab " aria-selected ="false ">
386+ {{ version }}
387+ </ a >
388+ </ li >
389+ {% endfor %}
390+ </ ul >
391+ </ li >
392+ {% endif %}
338393 </ ul >
339394 < div class ="tab-content card card-body p-3 " style ="background: #f8f9fa; ">
340395 {% for version in versions %}
@@ -371,5 +426,32 @@ <h5 class="fw-bold mb-3" style="font-size:1.1rem;">ATT&CK Excel Files by Version
371426{% block scripts %}
372427{{ super() }}
373428<!--SCRIPTS-->
429+
430+ <!-- Script to manage active states for dropdown tabs -->
431+ < script >
432+ $ ( document ) . ready ( function ( ) {
433+ // Handle tab switching for all tabs (including dropdown items)
434+ $ ( 'a[data-toggle="tab"]' ) . on ( 'shown.bs.tab' , function ( e ) {
435+ var activeTab = $ ( e . target ) ;
436+ var previousTab = $ ( e . relatedTarget ) ;
437+
438+ // Remove active class from all dropdown items
439+ $ ( '.dropdown-item[data-toggle="tab"]' ) . removeClass ( 'active' ) ;
440+
441+ // If the newly active tab is a dropdown item, add active class
442+ if ( activeTab . hasClass ( 'dropdown-item' ) ) {
443+ activeTab . addClass ( 'active' ) ;
444+ }
445+
446+ } ) ;
447+
448+ // Optional: Close dropdown when an item is clicked
449+ $ ( '.dropdown-item[data-toggle="tab"]' ) . on ( 'click' , function ( ) {
450+ $ ( this ) . closest ( '.dropdown' ) . removeClass ( 'show' ) ;
451+ $ ( this ) . closest ( '.dropdown-menu' ) . removeClass ( 'show' ) ;
452+ } ) ;
453+ } ) ;
454+ </ script >
455+
374456< script src ="/theme/scripts/sidebar-load-all.js "> </ script >
375457{% endblock %}
0 commit comments