@ -1,11 +1,5 @@
//#region js/news.js
var NEWS_CATEGORY_PARAM = "cat" ;
var NEWS_CATEGORIES = [
"all" ,
"insight" ,
"company" ,
"event"
] ;
function setActiveNav ( ) {
const pageNav = document . querySelector ( "[data-nav]" ) ? . getAttribute ( "data-nav" ) ;
if ( ! pageNav ) return ;
@ -29,35 +23,17 @@ function newsDetailBackToggle() {
}
var featuredSwiper = null ;
function getCategoryFromQuery ( ) {
const cat = new URLSearchParams ( window . location . search ) . get ( NEWS_CATEGORY_PARAM ) ;
if ( ! cat || cat === "all" ) return "all" ;
return NEWS_CATEGORIES . includes ( cat ) ? cat : "all" ;
}
function setCategoryInUrl ( cat ) {
const url = new URL ( window . location . href ) ;
if ( ! cat || cat === "all" ) url . searchParams . delete ( NEWS_CATEGORY_PARAM ) ;
else url . searchParams . set ( NEWS_CATEGORY_PARAM , cat ) ;
window . history . replaceState ( null , "" , url ) ;
return new URLSearchParams ( window . location . search ) . get ( NEWS_CATEGORY_PARAM ) || "" ;
}
function activateTab ( cat ) {
if ( ! cat ) return ;
const catStr = String ( cat ) ;
document . querySelectorAll ( ".n-tabs__item" ) . forEach ( ( btn ) => {
const isActive = ( btn . dataset . cat || "all" ) === cat ;
const isActive = String ( btn . dataset . cat || "" ) === catStr ;
btn . classList . toggle ( "is-active" , isActive ) ;
btn . setAttribute ( "aria-selected" , isActive ? "true" : "false" ) ;
} ) ;
}
function filterNews ( cat ) {
const isMatch = ( itemCat ) => cat === "all" || itemCat === cat ;
document . querySelectorAll ( ".n-featured__slide[data-category]" ) . forEach ( ( slide ) => {
slide . hidden = ! isMatch ( slide . dataset . category ) ;
} ) ;
document . querySelectorAll ( ".n-card[data-category]" ) . forEach ( ( card ) => {
card . hidden = ! isMatch ( card . dataset . category ) ;
} ) ;
const featured = document . querySelector ( ".n-featured" ) ;
if ( ! featured ) return ;
featured . hidden = featured . querySelectorAll ( ".n-featured__slide:not([hidden])" ) . length === 0 ;
}
function updateFeaturedSwiper ( ) {
const root = document . querySelector ( ".n-featured" ) ;
const el = root ? . querySelector ( ".n-featured__swiper" ) ;
@ -83,25 +59,12 @@ function updateFeaturedSwiper() {
}
} ) ;
}
function applyCategory ( cat ) {
activateTab ( cat ) ;
filterNews ( cat ) ;
updateFeaturedSwiper ( ) ;
}
function initNewsTabs ( ) {
const tabs = document . querySelector ( ".n-tabs" ) ;
if ( ! tabs ) return ;
applyCategory ( getCategoryFromQuery ( ) ) ;
tabs . addEventListener ( "click" , ( event ) => {
const btn = event . target . closest ( ".n-tabs__item" ) ;
if ( ! btn ) return ;
const cat = btn . dataset . cat || "all" ;
setCategoryInUrl ( cat ) ;
applyCategory ( cat ) ;
} ) ;
window . addEventListener ( "popstate" , ( ) => {
applyCategory ( getCategoryFromQuery ( ) ) ;
} ) ;
const cat = getCategoryFromQuery ( ) ;
if ( cat ) activateTab ( cat ) ;
updateFeaturedSwiper ( ) ;
}
function newsCardClick ( ) {
$ ( ".n-card, .n-featured" ) . on ( "click" , function ( event ) {