1
- import React from 'react' ;
2
- import PropTypes from 'prop-types' ;
3
1
import { useIntl } from '@edx/frontend-platform/i18n' ;
2
+ import { PluginSlot } from '@openedx/frontend-plugin-framework' ;
4
3
import classNames from 'classnames' ;
5
-
6
- import messages from './messages' ;
7
- import Tabs from '../generic/tabs/Tabs' ;
4
+ import React from 'react' ;
8
5
import { CoursewareSearch , CoursewareSearchToggle } from '../course-home/courseware-search' ;
9
6
import { useCoursewareSearchState } from '../course-home/courseware-search/hooks' ;
7
+ import Tabs from '../generic/tabs/Tabs' ;
8
+
9
+ import messages from './messages' ;
10
+
11
+ interface CourseTabsNavigationProps {
12
+ activeTabSlug ?: string ;
13
+ className ?: string | null ;
14
+ tabs : Array < {
15
+ title : string ;
16
+ slug : string ;
17
+ url : string ;
18
+ } > ;
19
+ }
10
20
11
21
const CourseTabsNavigation = ( {
12
- activeTabSlug, className, tabs,
13
- } ) => {
22
+ activeTabSlug = undefined ,
23
+ className = null ,
24
+ tabs,
25
+ } :CourseTabsNavigationProps ) => {
14
26
const intl = useIntl ( ) ;
15
27
const { show } = useCoursewareSearchState ( ) ;
16
28
@@ -23,15 +35,17 @@ const CourseTabsNavigation = ({
23
35
className = "nav-underline-tabs"
24
36
aria-label = { intl . formatMessage ( messages . courseMaterial ) }
25
37
>
26
- { tabs . map ( ( { url, title, slug } ) => (
27
- < a
28
- key = { slug }
29
- className = { classNames ( 'nav-item flex-shrink-0 nav-link' , { active : slug === activeTabSlug } ) }
30
- href = { url }
31
- >
32
- { title }
33
- </ a >
34
- ) ) }
38
+ < PluginSlot id = "course_tab_links_slot" >
39
+ { tabs . map ( ( { url, title, slug } ) => (
40
+ < a
41
+ key = { slug }
42
+ className = { classNames ( 'nav-item flex-shrink-0 nav-link' , { active : slug === activeTabSlug } ) }
43
+ href = { url }
44
+ >
45
+ { title }
46
+ </ a >
47
+ ) ) }
48
+ </ PluginSlot >
35
49
</ Tabs >
36
50
</ div >
37
51
< div className = "search-toggle" >
@@ -44,19 +58,4 @@ const CourseTabsNavigation = ({
44
58
) ;
45
59
} ;
46
60
47
- CourseTabsNavigation . propTypes = {
48
- activeTabSlug : PropTypes . string ,
49
- className : PropTypes . string ,
50
- tabs : PropTypes . arrayOf ( PropTypes . shape ( {
51
- title : PropTypes . string . isRequired ,
52
- slug : PropTypes . string . isRequired ,
53
- url : PropTypes . string . isRequired ,
54
- } ) ) . isRequired ,
55
- } ;
56
-
57
- CourseTabsNavigation . defaultProps = {
58
- activeTabSlug : undefined ,
59
- className : null ,
60
- } ;
61
-
62
61
export default CourseTabsNavigation ;
0 commit comments