File tree Expand file tree Collapse file tree 3 files changed +10
-11
lines changed Expand file tree Collapse file tree 3 files changed +10
-11
lines changed Original file line number Diff line number Diff line change 1
1
---
2
2
// Scripts and types
3
3
import type { ContentTree } from ' @scripts/types' ;
4
+ import { isActivePage } from ' @scripts/is-active-page' ;
4
5
5
6
interface Props {
6
7
content: ContentTree ;
@@ -9,12 +10,8 @@ interface Props {
9
10
10
11
const { content, paddingClass } = Astro .props ;
11
12
const activeSlug = Astro .url .pathname ;
12
-
13
- const isActivePage = () => {
14
- return content .slug === activeSlug || content .slug .slice (0 , - 1 ) === activeSlug ;
15
- };
16
13
---
17
14
18
15
<li class ={ ` nav-item nav-item-blue ` } >
19
- <a class ={ ` nav-link ${paddingClass } ${isActivePage () ? ' active active-page' : ' ' } ` } href ={ content .slug } >{ content .data .title } </a >
16
+ <a class ={ ` nav-link ${paddingClass } ${isActivePage (content . slug , activeSlug ) ? ' active active-page' : ' ' } ` } href ={ content .slug } >{ content .data .title } </a >
20
17
</li >
Original file line number Diff line number Diff line change 1
1
---
2
2
// Scripts and types
3
3
import type { ContentTree } from ' @scripts/types' ;
4
+ import { isActivePage } from ' @scripts/is-active-page' ;
4
5
import { slugId } from ' @scripts/helpers' ;
5
6
6
7
// Components
@@ -75,7 +76,7 @@ const isActiveChild = (doc: ContentTree) => {
75
76
}
76
77
77
78
// Check if the current document's slug matches the activeSlug
78
- if (currentDoc .slug === activeSlug || currentDoc . slug . slice ( 0 , - 1 ) === activeSlug ) {
79
+ if (isActivePage ( currentDoc .slug , activeSlug ) ) {
79
80
return true ;
80
81
}
81
82
@@ -90,16 +91,12 @@ const isActiveChild = (doc: ContentTree) => {
90
91
// If the activeSlug is not found in any document, return false
91
92
return false ;
92
93
};
93
-
94
- const isActivePage = (doc : ContentTree ) => {
95
- return doc .slug === activeSlug || doc .slug .slice (0 , - 1 ) === activeSlug ;
96
- };
97
94
---
98
95
99
96
{ content .filter (doc => doc .data .showInSidebar === true ).map (doc => (
100
97
doc .children && doc .children .length > 0 ? (
101
98
<li class = { ` nav-item nav-item-blue ${isActiveChild (doc ) ? ' active' : ' ' } ` } >
102
- <div class = { ` nav-link nav-link-collapse d-flex ${isActiveChild (doc ) ? ' active' : ' ' } ${isActivePage (doc ) ? ' active-page' : ' ' } ` } >
99
+ <div class = { ` nav-link nav-link-collapse d-flex ${isActiveChild (doc ) ? ' active' : ' ' } ${isActivePage (doc . slug , activeSlug ) ? ' active-page' : ' ' } ` } >
103
100
<button class = { ` btn btn-collapse rounded-0 border-0 ${listPaddingClass (doc .data .depth )} ${isActiveChild (doc ) ? ' ' : ' collapsed' } ` } type = " button" data-bs-toggle = " collapse" aria-expanded = { ` ${isActiveChild (doc ) ? ' true' : ' false' } ` } aria-controls = { slugId (` id-${doc .slug } ` )} aria-label = " collapse or expand navigation" data-bs-target = { slugId (` #id-${doc .slug } ` )} ></button >
104
101
<a href = { doc .slug } >{ doc .data .title } </a >
105
102
</div >
Original file line number Diff line number Diff line change
1
+ import type { ContentTree } from '@scripts/types' ;
2
+
3
+ export const isActivePage = ( passedSlug : string | ContentTree [ ] , activeSlug : string ) => {
4
+ return passedSlug === activeSlug || `${ passedSlug } /` === activeSlug || passedSlug . slice ( 0 , - 1 ) === activeSlug ;
5
+ } ;
You can’t perform that action at this time.
0 commit comments