@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
33import Tabs from '@mui/material/Tabs' ;
44import Tab from '@mui/material/Tab' ;
55import { styled } from '@mui/material/styles' ;
6- import { Collapsible , color , PreviewPrompt , Purpose , UiLayout } from '@pie-lib/render-ui' ;
6+ import { Collapsible , color , PreviewPrompt , Purpose , UiLayout , transformDataHeadings } from '@pie-lib/render-ui' ;
77
88const PassagesContainer = styled ( 'div' ) ( {
99 flexGrow : 1 ,
@@ -172,24 +172,27 @@ class StimulusTabs extends React.Component {
172172 }
173173
174174 renderTab ( tab , disabledTabs ) {
175+ const { baseHeadingLevel } = this . props ;
176+ const clampedLevel = ! ! baseHeadingLevel ? Math . min ( 6 , Math . max ( 1 , baseHeadingLevel ) ) : undefined ;
177+ const TitleTag = ! ! baseHeadingLevel ? `h${ clampedLevel } ` : 'h2' ; // default to h2 if no base level is provided - this was the previous behavior
178+ const textLevel = ! ! baseHeadingLevel ? Math . min ( 6 , Math . max ( 1 , clampedLevel + 1 ) ) : undefined ; // promote text headings one level above title
179+
175180 return (
176181 < Passage key = { tab . id } id = { `tabpanel-${ tab . id } ` } role = "tabpanel" aria-labelledby = { `button-${ tab . id } ` } >
177182 { this . renderInstructions ( tab . teacherInstructions , disabledTabs ) }
178183
179- { ( tab . title || tab . subtitle ) && (
180- < h2 >
181- { tab . title && (
182- < Purpose purpose = "passage-title" >
183- < PassageTitle dangerouslySetInnerHTML = { { __html : this . parsedText ( tab . title ) } } />
184- </ Purpose >
185- ) }
186- { tab . subtitle && (
187- < Purpose purpose = "passage-subtitle" >
188- < PassageSubtitle dangerouslySetInnerHTML = { { __html : this . parsedText ( tab . subtitle ) } }
189- />
190- </ Purpose >
191- ) }
192- </ h2 >
184+ { tab . title && (
185+ < Purpose purpose = "passage-title" >
186+ < TitleTag >
187+ < PassageTitle dangerouslySetInnerHTML = { { __html : this . parsedText ( tab . title ) } } />
188+ </ TitleTag >
189+ </ Purpose >
190+ ) }
191+
192+ { tab . subtitle && (
193+ < Purpose purpose = "passage-subtitle" >
194+ < PassageSubtitle dangerouslySetInnerHTML = { { __html : this . parsedText ( tab . subtitle ) } } />
195+ </ Purpose >
193196 ) }
194197
195198 { tab . author && (
@@ -200,11 +203,7 @@ class StimulusTabs extends React.Component {
200203
201204 { tab . text && (
202205 < Purpose purpose = "passage-text" >
203- < div
204- key = { tab . id }
205- className = "text"
206- dangerouslySetInnerHTML = { { __html : this . parsedText ( tab . text ) } }
207- />
206+ < div key = { tab . id } className = "text" dangerouslySetInnerHTML = { { __html : ! ! baseHeadingLevel ? transformDataHeadings ( tab . text , textLevel ) : tab . text } } />
208207 </ Purpose >
209208 ) }
210209 </ Passage >
@@ -283,6 +282,7 @@ StimulusTabs.propTypes = {
283282 ) . isRequired ,
284283 disabledTabs : PropTypes . bool ,
285284 model : PropTypes . object ,
285+ baseHeadingLevel : PropTypes . number ,
286286} ;
287287
288288export default StimulusTabs ;
0 commit comments