11import React from 'react' ;
2- import PropTypes from 'prop-types' ;
3- import { useIntl } from '@edx/frontend-platform/i18n' ;
42import classNames from 'classnames' ;
5-
6- import messages from './messages' ;
7- import Tabs from '../generic/tabs/Tabs' ;
3+ import { useIntl } from '@edx/frontend-platform/i18n' ;
4+ import { CourseTabLinksSlot } from '../plugin-slots/CourseTabLinksSlot' ;
85import { CoursewareSearch , CoursewareSearchToggle } from '../course-home/courseware-search' ;
96import { useCoursewareSearchState } from '../course-home/courseware-search/hooks' ;
107
8+ import Tabs from '../generic/tabs/Tabs' ;
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+ }
20+
1121const CourseTabsNavigation = ( {
12- activeTabSlug, className, tabs,
13- } ) => {
22+ activeTabSlug = undefined ,
23+ className = null ,
24+ tabs,
25+ } :CourseTabsNavigationProps ) => {
1426 const intl = useIntl ( ) ;
1527 const { show } = useCoursewareSearchState ( ) ;
1628
@@ -23,15 +35,7 @@ const CourseTabsNavigation = ({
2335 className = "nav-underline-tabs"
2436 aria-label = { intl . formatMessage ( messages . courseMaterial ) }
2537 >
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+ < CourseTabLinksSlot tabs = { tabs } activeTabSlug = { activeTabSlug } />
3539 </ Tabs >
3640 </ div >
3741 < div className = "search-toggle" >
@@ -44,19 +48,4 @@ const CourseTabsNavigation = ({
4448 ) ;
4549} ;
4650
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-
6251export default CourseTabsNavigation ;
0 commit comments