@@ -32,17 +32,21 @@ document.addEventListener('DOMContentLoaded', () => {
3232 abstracts . forEach ( abstract => {
3333 const content = abstract . querySelector ( '.abstract-content' ) ;
3434 const button = abstract . querySelector ( '.toggle-button' ) ;
35+ const fadeOverlay = abstract . querySelector ( '.fade-overlay' ) ;
36+
3537
3638 // Function to determine if the content is truncated
3739 const isTruncated = ( ) => {
3840 return content . scrollHeight > content . clientHeight ;
3941 } ;
4042
41- // Show or hide the toggle button based on truncation
43+ // Show or hide the toggle button and fade overlay based on truncation
4244 if ( isTruncated ( ) ) {
4345 button . classList . remove ( 'hidden' ) ;
46+ fadeOverlay . classList . remove ( 'hidden' ) ;
4447 } else {
4548 button . classList . add ( 'hidden' ) ;
49+ fadeOverlay . classList . add ( 'hidden' ) ;
4650 }
4751 } ) ;
4852
@@ -52,38 +56,46 @@ document.addEventListener('DOMContentLoaded', () => {
5256 button . addEventListener ( 'click' , ( ) => {
5357 const abstract = button . closest ( '.abstract-wrapper' ) ;
5458 const content = abstract . querySelector ( '.abstract-content' ) ;
59+ const fadeOverlay = abstract . querySelector ( '.fade-overlay' ) ;
5560
5661 // Toggle the line-clamp class
57- content . classList . toggle ( 'line-clamp-[10 ]' ) ;
62+ content . classList . toggle ( 'line-clamp-[8 ]' ) ;
5863
59- // Update button text based on the new state
60- const isExpanded = ! content . classList . contains ( 'line-clamp-[10]' ) ;
61- const buttonText = button . querySelector ( '.button-text' ) ;
62- buttonText . textContent = isExpanded ? 'Show Less' : 'Show More' ;
64+ if ( content . classList . contains ( 'line-clamp-[8]' ) ) {
65+ // If content is clamped, show the fade overlay and set button to "Show More"
66+ fadeOverlay . classList . remove ( 'hidden' ) ;
67+ button . querySelector ( '.button-text' ) . textContent = 'Show More' ;
68+ } else {
69+ // If content is expanded, hide the fade overlay and set button to "Show Less"
70+ fadeOverlay . classList . add ( 'hidden' ) ;
71+ button . querySelector ( '.button-text' ) . textContent = 'Show Less' ;
72+ }
6373 } ) ;
6474 } ) ;
6575
66- // Re-evaluate button visibility on window resize for responsiveness
76+ // Re-evaluate on window resize
6777 window . addEventListener ( 'resize' , ( ) => {
6878 abstracts . forEach ( abstract => {
6979 const content = abstract . querySelector ( '.abstract-content' ) ;
7080 const button = abstract . querySelector ( '.toggle-button' ) ;
81+ const fadeOverlay = abstract . querySelector ( '.fade-overlay' ) ;
7182
72- // Reset line-clamp to accurately measure
73- content . classList . add ( 'line-clamp-[10 ]' ) ;
74- // content .classList.remove('line-clamp-none '); // Ensure no conflicting classes
83+ // Reset line-clamp to check truncation accurately
84+ content . classList . add ( 'line-clamp-[8 ]' ) ;
85+ fadeOverlay . classList . add ( 'hidden ') ;
7586
76- // Determine truncation
7787 if ( content . scrollHeight > content . clientHeight ) {
7888 button . classList . remove ( 'hidden' ) ;
89+ fadeOverlay . classList . remove ( 'hidden' ) ;
90+
91+ // Reset content to clamped state if it was expanded
92+ if ( ! content . classList . contains ( 'line-clamp-[8]' ) ) {
93+ content . classList . add ( 'line-clamp-[8]' ) ;
94+ button . querySelector ( '.button-text' ) . textContent = 'Show More' ;
95+ }
7996 } else {
8097 button . classList . add ( 'hidden' ) ;
81- }
82-
83- // If content is not truncated, ensure it is not expanded
84- if ( ! content . classList . contains ( 'line-clamp-[10]' ) && ! button . classList . contains ( 'hidden' ) ) {
85- content . classList . add ( 'line-clamp-[10]' ) ;
86- button . querySelector ( '.button-text' ) . textContent = 'Show More' ;
98+ fadeOverlay . classList . add ( 'hidden' ) ;
8799 }
88100 } ) ;
89101 } ) ;
0 commit comments