1
- import React from 'react' ;
2
- import PropTypes from 'prop-types' ;
3
- import { injectIntl , intlShape } from '@edx/frontend-platform/i18n' ;
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, intl,
13
- } ) => {
22
+ activeTabSlug = undefined ,
23
+ className = null ,
24
+ tabs,
25
+ } :CourseTabsNavigationProps ) => {
14
26
const { show } = useCoursewareSearchState ( ) ;
27
+ const intl = useIntl ( ) ;
15
28
16
29
return (
17
30
< div id = "courseTabsNavigation" className = { classNames ( 'course-tabs-navigation' , className ) } >
@@ -20,15 +33,15 @@ const CourseTabsNavigation = ({
20
33
className = "nav-underline-tabs"
21
34
aria-label = { intl . formatMessage ( messages . courseMaterial ) }
22
35
>
23
- { tabs . map ( ( { url, title, slug } ) => (
36
+ < PluginSlot id = "course_tab_links_slot" > { tabs . map ( ( { url, title, slug } ) => (
24
37
< a
25
38
key = { slug }
26
39
className = { classNames ( 'nav-item flex-shrink-0 nav-link' , { active : slug === activeTabSlug } ) }
27
40
href = { url }
28
41
>
29
42
{ title }
30
43
</ a >
31
- ) ) }
44
+ ) ) } </ PluginSlot >
32
45
</ Tabs >
33
46
</ div >
34
47
< div className = "course-tabs-navigation__search-toggle" >
@@ -39,20 +52,4 @@ const CourseTabsNavigation = ({
39
52
) ;
40
53
} ;
41
54
42
- CourseTabsNavigation . propTypes = {
43
- activeTabSlug : PropTypes . string ,
44
- className : PropTypes . string ,
45
- tabs : PropTypes . arrayOf ( PropTypes . shape ( {
46
- title : PropTypes . string . isRequired ,
47
- slug : PropTypes . string . isRequired ,
48
- url : PropTypes . string . isRequired ,
49
- } ) ) . isRequired ,
50
- intl : intlShape . isRequired ,
51
- } ;
52
-
53
- CourseTabsNavigation . defaultProps = {
54
- activeTabSlug : undefined ,
55
- className : null ,
56
- } ;
57
-
58
- export default injectIntl ( CourseTabsNavigation ) ;
55
+ export default CourseTabsNavigation ;
0 commit comments