Skip to content

Commit 15bceff

Browse files
authored
Merge pull request #55 from topcoder-platform/TCA-352_text-not-visible
Tca 352 text not visible
2 parents 3acfee6 + 1f02742 commit 15bceff

File tree

3 files changed

+47
-7
lines changed

3 files changed

+47
-7
lines changed

client/src/components/layouts/prism-night.css

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
*/
77

88
.dark-palette code[class*='language-'],
9-
.dark-palette pre[class*='language-'] {
9+
.dark-palette code[class*='language-'],
10+
pre[class*='language-'].dark-palette {
1011
color: var(--secondary-color);
1112
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
1213
font-size: 1em;
@@ -28,11 +29,13 @@
2829
text-shadow: none;
2930
}
3031

32+
pre[class*='language-'].dark-palette code[class*='language-'],
3133
.dark-palette pre[class*='language-'] code[class*='language-'] {
3234
color: var(--quaternary-color);
3335
}
3436

3537
/* Code blocks */
38+
pre[class*='language-'].dark-palette,
3639
.dark-palette pre[class*='language-'] {
3740
padding: 1em;
3841
margin: 0.5em 0;
@@ -47,12 +50,15 @@ padding in night mode */
4750
}
4851

4952
.dark-palette :not(pre) > code[class*='language-'],
53+
pre[class*='language-'].dark-palette,
5054
.dark-palette pre[class*='language-'] {
5155
background: var(--primary-background);
5256
}
5357

5458
.dark-palette pre[class*='language-']::selection,
59+
pre[class*='language-'].dark-palette::selection,
5560
.dark-palette pre[class*='language-'] ::selection,
61+
pre[class*='language-'].dark-palette ::selection,
5662
.dark-palette code[class*='language-']::selection,
5763
.dark-palette code[class*='language-'] ::selection {
5864
background: var(--selection-color);

client/src/templates/Challenges/components/prism-formatted.tsx

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,53 @@ import React, { useRef, useEffect } from 'react';
44
interface PrismFormattedProps {
55
className?: string;
66
text: string;
7+
lineNumbers?: boolean;
8+
darkTheme?: boolean;
79
}
810

9-
function PrismFormatted({ className, text }: PrismFormattedProps): JSX.Element {
11+
/**
12+
* Add css formatting classes to the <pre> elements based on showLineNumbers and darkTheme params
13+
* @param container
14+
* @param showLineNumbers
15+
* @param darkTheme
16+
*/
17+
const addFormattingClassesForPres = (
18+
container: HTMLElement,
19+
showLineNumbers = true,
20+
darkTheme = true
21+
) => {
22+
const codeBlocks: HTMLElement[] = [].slice.call(
23+
container.querySelectorAll('[class*="language-"]')
24+
);
25+
// we want to formatt the <pre> element, not the <code>, get parent if current element is not PRE
26+
const preElements: HTMLPreElement[] = codeBlocks.map(
27+
c => (c.nodeName === 'PRE' ? c : c.parentElement) as HTMLPreElement
28+
);
29+
30+
for (const pre of preElements) {
31+
pre.classList.toggle('line-numbers', showLineNumbers);
32+
pre.classList.toggle('dark-palette', darkTheme);
33+
}
34+
};
35+
36+
function PrismFormatted({
37+
className,
38+
text,
39+
...props
40+
}: PrismFormattedProps): JSX.Element {
1041
const instructionsRef = useRef<HTMLDivElement>(null);
1142

1243
useEffect(() => {
1344
// Just in case 'current' has not been created, though it should have been.
1445
if (instructionsRef.current) {
46+
addFormattingClassesForPres(
47+
instructionsRef.current,
48+
props.lineNumbers,
49+
props.darkTheme
50+
);
1551
Prism.highlightAllUnder(instructionsRef.current);
1652
}
17-
}, []);
53+
}, [props.darkTheme, props.lineNumbers]);
1854

1955
return (
2056
<div

client/src/templates/Challenges/video/Show.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@ class ShowVideo extends Component<ShowVideoProps, ShowVideoState> {
202202
const blockNameTitle = `${t(
203203
`intro:${superBlock}.blocks.${block}.title`
204204
)} - ${title}`;
205+
205206
return (
206207
<Hotkeys
207208
executeChallenge={() => this.handleSubmit(solution)}
@@ -245,10 +246,7 @@ class ShowVideo extends Component<ShowVideoProps, ShowVideoState> {
245246
className='video-description'
246247
>
247248
<ChallengeDescription description={description} />
248-
<PrismFormatted
249-
className={'dark-palette line-numbers'}
250-
text={text}
251-
/>
249+
<PrismFormatted text={text} />
252250
<Spacer />
253251
<ObserveKeys>
254252
<div className='video-quiz-options'>

0 commit comments

Comments
 (0)