From f5173c958a1abcded0b7f9ac795a119ac85b426a Mon Sep 17 00:00:00 2001 From: Kevin Ness <46825870+nekevss@users.noreply.github.com> Date: Thu, 3 Jul 2025 22:52:19 -0500 Subject: [PATCH 1/4] Add a filter option to conformance page --- .../cards/TestGrid/index.tsx | 39 +++++++++++---- .../components/SuiteDataContainer/index.tsx | 4 +- .../components/SuiteDisplay/index.tsx | 4 +- .../components/SuiteSelector/index.tsx | 49 ++++++++++++++----- .../conformance/ResultsDisplay/index.tsx | 23 ++++++++- .../conformance/ResultsDisplay/nav.tsx | 48 +++++++++++++++++- src/components/conformance/types.ts | 8 +++ src/components/conformance/utils.ts | 3 ++ 8 files changed, 151 insertions(+), 27 deletions(-) diff --git a/src/components/conformance/ResultsDisplay/components/SuiteDataContainer/cards/TestGrid/index.tsx b/src/components/conformance/ResultsDisplay/components/SuiteDataContainer/cards/TestGrid/index.tsx index 333fd14d..17f142d1 100644 --- a/src/components/conformance/ResultsDisplay/components/SuiteDataContainer/cards/TestGrid/index.tsx +++ b/src/components/conformance/ResultsDisplay/components/SuiteDataContainer/cards/TestGrid/index.tsx @@ -5,6 +5,7 @@ import { TestResult, SuiteResult, ConformanceState, + FilterOption, } from "@site/src/components/conformance/types"; import Heading from "@theme/Heading"; import styles from "./styles.module.css"; @@ -32,6 +33,7 @@ export default function TestsGrid(props: TestsGridProps): JSX.Element { setHoverName(name)} /> @@ -44,16 +46,31 @@ export default function TestsGrid(props: TestsGridProps): JSX.Element { type GridProps = { tests: TestResult[]; esFlag: string | null; + filterOption: FilterOption; selectTest: (test: string) => void; setHoverValue: (test: string | undefined) => void; }; +function applyFilter(filter: FilterOption, outcome: TestOutcome): boolean { + switch (filter) { + case FilterOption.Passed: + return outcome == TestOutcome.Passed; + case FilterOption.Ignored: + return outcome == TestOutcome.Ignored; + case FilterOption.Failed: + return outcome == TestOutcome.Failed || outcome == TestOutcome.Panic; + default: + return true; + } +} + function Grid(props: GridProps): JSX.Element { return ( <> {props.esFlag ? props.tests .filter((test) => test.edition <= SpecEdition[props.esFlag]) + .filter((test) => applyFilter(props.filterOption, test.result)) .map((test) => { return ( ); }) - : props.tests.map((test) => { - return ( - - ); - })} + : props.tests + .filter((test) => applyFilter(props.filterOption, test.result)) + .map((test) => { + return ( + + ); + })} ); } diff --git a/src/components/conformance/ResultsDisplay/components/SuiteDataContainer/index.tsx b/src/components/conformance/ResultsDisplay/components/SuiteDataContainer/index.tsx index 75068a6e..329a31cf 100644 --- a/src/components/conformance/ResultsDisplay/components/SuiteDataContainer/index.tsx +++ b/src/components/conformance/ResultsDisplay/components/SuiteDataContainer/index.tsx @@ -15,7 +15,9 @@ type SuiteDataProps = { setSelectedTest: (string) => void; }; -export default function SuiteDataContainer(props: SuiteDataProps): JSX.Element { +export default function SuiteDataContainer( + props: SuiteDataProps, +): JSX.Element { // Set the user's selected test to be displayed in the ViewPort. const selectTest = (testName: string) => { props.setSelectedTest(testName); diff --git a/src/components/conformance/ResultsDisplay/components/SuiteDisplay/index.tsx b/src/components/conformance/ResultsDisplay/components/SuiteDisplay/index.tsx index 4e8997fb..7f66430f 100644 --- a/src/components/conformance/ResultsDisplay/components/SuiteDisplay/index.tsx +++ b/src/components/conformance/ResultsDisplay/components/SuiteDisplay/index.tsx @@ -16,7 +16,9 @@ type SuiteDisplayProps = { setSelectedTest: (string) => void; }; -export default function SuiteDisplay(props: SuiteDisplayProps): JSX.Element { +export default function SuiteDisplay( + props: SuiteDisplayProps, +): JSX.Element { return (
{props.currentSuite.suites ? ( diff --git a/src/components/conformance/ResultsDisplay/components/SuiteSelector/index.tsx b/src/components/conformance/ResultsDisplay/components/SuiteSelector/index.tsx index cb202ad8..e757221d 100644 --- a/src/components/conformance/ResultsDisplay/components/SuiteSelector/index.tsx +++ b/src/components/conformance/ResultsDisplay/components/SuiteSelector/index.tsx @@ -1,6 +1,7 @@ import React from "react"; import { ConformanceState, + FilterOption, SortOption, SuiteResult, TestStats, @@ -35,6 +36,7 @@ export default function SuiteSelector(props: SelectorProps): JSX.Element { key={suite.name} suite={suite} esFlag={props.state.ecmaScriptVersion} + filterOption={props.state.filterOption ?? FilterOption.None} navigateToSuite={props.navigateToSuite} /> ); @@ -46,6 +48,7 @@ export default function SuiteSelector(props: SelectorProps): JSX.Element { type SuiteItemProps = { suite: SuiteResult; esFlag: string | null; + filterOption: FilterOption; navigateToSuite: (string) => void; }; @@ -64,26 +67,48 @@ function SuiteItem(props: SuiteItemProps): JSX.Element { ? (props.suite.versionedStats?.[props.esFlag] ?? props.suite.stats) : props.suite.stats } + filterOption={props.filterOption} />
); } -function SuiteStatistics(props): JSX.Element { +type StatProps = { + testResults: TestStats; + filterOption: FilterOption; +}; + +function SuiteStatistics({ + testResults, + filterOption, +}: StatProps): JSX.Element { + const [filter, setFilter] = React.useState(filterOption); + + React.useEffect(() => { + setFilter(filterOption); + }, [filterOption]); + + let passed = + filter == FilterOption.None || filter == FilterOption.Passed + ? testResults.passed + : 0; + + let ignored = + filter == FilterOption.None || filter == FilterOption.Ignored + ? testResults.ignored + : 0; + + let failed = + filter == FilterOption.None || filter == FilterOption.Failed + ? `${testResults.total - testResults.passed - testResults.ignored} (${testResults.panic}\u26A0)` + : 0; + return (

- - {props.testResults.passed}{" "} - - /{" "} - - {props.testResults.ignored}{" "} - - /{" "} - {`${props.testResults.total - props.testResults.passed - props.testResults.ignored} (${props.testResults.panic}\u26A0)`} + {passed} /{" "} + {ignored} /{" "} + {failed}

); diff --git a/src/components/conformance/ResultsDisplay/index.tsx b/src/components/conformance/ResultsDisplay/index.tsx index 040169af..e2a208be 100644 --- a/src/components/conformance/ResultsDisplay/index.tsx +++ b/src/components/conformance/ResultsDisplay/index.tsx @@ -5,6 +5,7 @@ import { VersionItem, SuiteResult, ConformanceState, + FilterOption, } from "@site/src/components/conformance/types"; import ResultNavigation from "./nav"; import { @@ -27,7 +28,7 @@ export default function ResultsDisplay(props: ResultsProps): JSX.Element { ); // Refs - const activeResults = React.useRef(); + const activeResults = React.useRef(undefined); // History handling const history = useHistory(); @@ -103,6 +104,7 @@ export default function ResultsDisplay(props: ResultsProps): JSX.Element { newPath, props.state.ecmaScriptVersion, props.state.sortOption, + props.state.filterOption, ), ); }; @@ -119,6 +121,7 @@ export default function ResultsDisplay(props: ResultsProps): JSX.Element { slicedPath, props.state.ecmaScriptVersion, props.state.sortOption, + props.state.filterOption, ), ); }; @@ -137,6 +140,7 @@ export default function ResultsDisplay(props: ResultsProps): JSX.Element { props.state.testPath, nulledFlag, props.state.sortOption, + props.state.filterOption, ), ); }; @@ -158,6 +162,21 @@ export default function ResultsDisplay(props: ResultsProps): JSX.Element { ); }; + // Sets the filter option. + // + // This filters the tests shown in the selection cards and tests grid + const setFilterOption = (option: string) => { + pushStateToHistory( + createState( + props.state.version, + props.state.testPath, + props.state.ecmaScriptVersion, + props.state.sortOption, + option as FilterOption, + ), + ); + }; + // Sets a selected test. const setSelectedTest = (test: string | undefined) => { pushStateToHistory( @@ -167,6 +186,7 @@ export default function ResultsDisplay(props: ResultsProps): JSX.Element { props.state.testPath, props.state.ecmaScriptVersion, props.state.sortOption, + props.state.filterOption, test, ), ); @@ -189,6 +209,7 @@ export default function ResultsDisplay(props: ResultsProps): JSX.Element { sliceNavToIndex={sliceNavToIndex} setEcmaScriptFlag={setEcmaScriptFlag} setSortOption={setSortOption} + setFilterOption={setFilterOption} /> {currentSuite ? ( void; setEcmaScriptFlag: (string) => void; setSortOption: (string) => void; + setFilterOption: (string) => void; }; -export default function ResultNavigation(props: ResultsNavProps): JSX.Element { +export default function ResultNavigation( + props: ResultsNavProps, +): JSX.Element { return (
@@ -25,6 +28,10 @@ export default function ResultNavigation(props: ResultsNavProps): JSX.Element { sortValue={props.state.sortOption} setSortOption={props.setSortOption} /> +
); } + +type FilterProps = { + filterOption: FilterOption; + setFilterOption: (string) => void; +}; + +function FilterDropdown(props: FilterProps): JSX.Element { + const [filterValue, setFilterValue] = React.useState( + props.filterOption ?? FilterOption.None, + ); + + React.useEffect(() => { + setFilterValue(props.filterOption); + }, [props.filterOption]); + + const handlefilterSelection = (e) => { + setFilterValue(e.target.value); + props.setFilterOption(e.target.value); + }; + + return ( +
+ + Filter: + + +
+ ); +} diff --git a/src/components/conformance/types.ts b/src/components/conformance/types.ts index 5824eb25..8d126965 100644 --- a/src/components/conformance/types.ts +++ b/src/components/conformance/types.ts @@ -7,6 +7,7 @@ export type ConformanceState = { testPath: string[]; ecmaScriptVersion: string | undefined; sortOption: string; + filterOption: FilterOption; selectedTest: string | undefined; }; @@ -27,6 +28,13 @@ export type SortOption = { callback: (a: SuiteResult, b: SuiteResult) => number; }; +export enum FilterOption { + None = "none", + Passed = "passed", + Failed = "failed", + Ignored = "ignored", +} + // The below types are specific to test result types. export type ResultInfo = { diff --git a/src/components/conformance/utils.ts b/src/components/conformance/utils.ts index 75903d36..33a2d30c 100644 --- a/src/components/conformance/utils.ts +++ b/src/components/conformance/utils.ts @@ -1,5 +1,6 @@ import { ConformanceState, + FilterOption, ResultInfo, SortOption, SpecEdition, @@ -69,6 +70,7 @@ export function createState( testPath?: string[], ecmaScriptVersion?: string, sortOption?: string, + filterOption?: FilterOption, selectedTest?: string, ): ConformanceState { testPath = testPath ? testPath : [version.tagName]; @@ -79,6 +81,7 @@ export function createState( testPath, ecmaScriptVersion, sortOption, + filterOption, selectedTest, }; } From 43cacce9f21114d2e87b42f86ab08825405bbc4d Mon Sep 17 00:00:00 2001 From: Kevin Ness <46825870+nekevss@users.noreply.github.com> Date: Thu, 3 Jul 2025 22:53:55 -0500 Subject: [PATCH 2/4] npm run format --- .../ResultsDisplay/components/SuiteDataContainer/index.tsx | 4 +--- .../ResultsDisplay/components/SuiteDisplay/index.tsx | 4 +--- src/components/conformance/ResultsDisplay/nav.tsx | 4 +--- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/src/components/conformance/ResultsDisplay/components/SuiteDataContainer/index.tsx b/src/components/conformance/ResultsDisplay/components/SuiteDataContainer/index.tsx index 329a31cf..75068a6e 100644 --- a/src/components/conformance/ResultsDisplay/components/SuiteDataContainer/index.tsx +++ b/src/components/conformance/ResultsDisplay/components/SuiteDataContainer/index.tsx @@ -15,9 +15,7 @@ type SuiteDataProps = { setSelectedTest: (string) => void; }; -export default function SuiteDataContainer( - props: SuiteDataProps, -): JSX.Element { +export default function SuiteDataContainer(props: SuiteDataProps): JSX.Element { // Set the user's selected test to be displayed in the ViewPort. const selectTest = (testName: string) => { props.setSelectedTest(testName); diff --git a/src/components/conformance/ResultsDisplay/components/SuiteDisplay/index.tsx b/src/components/conformance/ResultsDisplay/components/SuiteDisplay/index.tsx index 7f66430f..4e8997fb 100644 --- a/src/components/conformance/ResultsDisplay/components/SuiteDisplay/index.tsx +++ b/src/components/conformance/ResultsDisplay/components/SuiteDisplay/index.tsx @@ -16,9 +16,7 @@ type SuiteDisplayProps = { setSelectedTest: (string) => void; }; -export default function SuiteDisplay( - props: SuiteDisplayProps, -): JSX.Element { +export default function SuiteDisplay(props: SuiteDisplayProps): JSX.Element { return (
{props.currentSuite.suites ? ( diff --git a/src/components/conformance/ResultsDisplay/nav.tsx b/src/components/conformance/ResultsDisplay/nav.tsx index a625b107..a6f8f996 100644 --- a/src/components/conformance/ResultsDisplay/nav.tsx +++ b/src/components/conformance/ResultsDisplay/nav.tsx @@ -14,9 +14,7 @@ type ResultsNavProps = { setFilterOption: (string) => void; }; -export default function ResultNavigation( - props: ResultsNavProps, -): JSX.Element { +export default function ResultNavigation(props: ResultsNavProps): JSX.Element { return (
From b56f12413407b322a4de90c86a2c24c2ea70781d Mon Sep 17 00:00:00 2001 From: Kevin Ness <46825870+nekevss@users.noreply.github.com> Date: Thu, 3 Jul 2025 22:55:33 -0500 Subject: [PATCH 3/4] JSX.Element => React.ReactNode --- src/components/HomepageFeatures/index.tsx | 4 ++-- src/components/conformance/HeroBanner/index.tsx | 4 +++- .../SuiteDataContainer/cards/TestGrid/index.tsx | 6 +++--- .../SuiteDataContainer/cards/TestViewer/index.tsx | 2 +- .../components/SuiteDataContainer/index.tsx | 4 +++- .../ResultsDisplay/components/SuiteDisplay/index.tsx | 4 +++- .../components/SuiteSelector/index.tsx | 6 +++--- src/components/conformance/ResultsDisplay/index.tsx | 8 ++++++-- src/components/conformance/ResultsDisplay/nav.tsx | 12 +++++++----- src/components/conformance/VersionSelector/index.tsx | 4 ++-- src/components/conformance/index.tsx | 2 +- src/components/home/index.tsx | 2 +- 12 files changed, 35 insertions(+), 23 deletions(-) diff --git a/src/components/HomepageFeatures/index.tsx b/src/components/HomepageFeatures/index.tsx index c6ed438a..19be2150 100644 --- a/src/components/HomepageFeatures/index.tsx +++ b/src/components/HomepageFeatures/index.tsx @@ -9,7 +9,7 @@ import Heading from "@theme/Heading"; type FeatureItem = { title: string; Svg: React.ComponentType>; - description: JSX.Element; + description: React.ReactNode; }; const FeatureList: FeatureItem[] = [ @@ -52,7 +52,7 @@ function Feature({ title, description }: FeatureItem) { ); } -export default function HomepageFeatures(): JSX.Element { +export default function HomepageFeatures(): React.ReactNode { return (
diff --git a/src/components/conformance/HeroBanner/index.tsx b/src/components/conformance/HeroBanner/index.tsx index 2a47a713..aad13a2a 100644 --- a/src/components/conformance/HeroBanner/index.tsx +++ b/src/components/conformance/HeroBanner/index.tsx @@ -18,7 +18,9 @@ interface BannerProps { focusItems: VersionItem[]; } -export default function ConformanceHeroBanner(props: BannerProps): JSX.Element { +export default function ConformanceHeroBanner( + props: BannerProps, +): React.ReactNode { return (
{props.focusItems.map((item) => { diff --git a/src/components/conformance/ResultsDisplay/components/SuiteDataContainer/cards/TestGrid/index.tsx b/src/components/conformance/ResultsDisplay/components/SuiteDataContainer/cards/TestGrid/index.tsx index 17f142d1..58650b53 100644 --- a/src/components/conformance/ResultsDisplay/components/SuiteDataContainer/cards/TestGrid/index.tsx +++ b/src/components/conformance/ResultsDisplay/components/SuiteDataContainer/cards/TestGrid/index.tsx @@ -17,7 +17,7 @@ type TestsGridProps = { selectTest: (string) => void; }; -export default function TestsGrid(props: TestsGridProps): JSX.Element { +export default function TestsGrid(props: TestsGridProps): React.ReactNode { const [hoverName, setHoverName] = React.useState(); const cardBodyClass = "card__body " + styles.gridStyle; @@ -64,7 +64,7 @@ function applyFilter(filter: FilterOption, outcome: TestOutcome): boolean { } } -function Grid(props: GridProps): JSX.Element { +function Grid(props: GridProps): React.ReactNode { return ( <> {props.esFlag @@ -103,7 +103,7 @@ type GridItemProps = { setHoverValue: (test: string | undefined) => void; }; -function GridItem(props: GridItemProps): JSX.Element { +function GridItem(props: GridItemProps): React.ReactNode { let testResult: string; switch (props.test.result) { case TestOutcome.Passed: diff --git a/src/components/conformance/ResultsDisplay/components/SuiteDataContainer/cards/TestViewer/index.tsx b/src/components/conformance/ResultsDisplay/components/SuiteDataContainer/cards/TestViewer/index.tsx index d6265d59..46de3903 100644 --- a/src/components/conformance/ResultsDisplay/components/SuiteDataContainer/cards/TestViewer/index.tsx +++ b/src/components/conformance/ResultsDisplay/components/SuiteDataContainer/cards/TestViewer/index.tsx @@ -10,7 +10,7 @@ type TestViewerProps = { backToGrid: () => void; }; -export default function TestViewer(props: TestViewerProps): JSX.Element { +export default function TestViewer(props: TestViewerProps): React.ReactNode { const [testContent, setTestContent] = React.useState(null); // path constants diff --git a/src/components/conformance/ResultsDisplay/components/SuiteDataContainer/index.tsx b/src/components/conformance/ResultsDisplay/components/SuiteDataContainer/index.tsx index 75068a6e..932000fa 100644 --- a/src/components/conformance/ResultsDisplay/components/SuiteDataContainer/index.tsx +++ b/src/components/conformance/ResultsDisplay/components/SuiteDataContainer/index.tsx @@ -15,7 +15,9 @@ type SuiteDataProps = { setSelectedTest: (string) => void; }; -export default function SuiteDataContainer(props: SuiteDataProps): JSX.Element { +export default function SuiteDataContainer( + props: SuiteDataProps, +): React.ReactNode { // Set the user's selected test to be displayed in the ViewPort. const selectTest = (testName: string) => { props.setSelectedTest(testName); diff --git a/src/components/conformance/ResultsDisplay/components/SuiteDisplay/index.tsx b/src/components/conformance/ResultsDisplay/components/SuiteDisplay/index.tsx index 4e8997fb..877931a1 100644 --- a/src/components/conformance/ResultsDisplay/components/SuiteDisplay/index.tsx +++ b/src/components/conformance/ResultsDisplay/components/SuiteDisplay/index.tsx @@ -16,7 +16,9 @@ type SuiteDisplayProps = { setSelectedTest: (string) => void; }; -export default function SuiteDisplay(props: SuiteDisplayProps): JSX.Element { +export default function SuiteDisplay( + props: SuiteDisplayProps, +): React.ReactNode { return (
{props.currentSuite.suites ? ( diff --git a/src/components/conformance/ResultsDisplay/components/SuiteSelector/index.tsx b/src/components/conformance/ResultsDisplay/components/SuiteSelector/index.tsx index e757221d..46d03ba7 100644 --- a/src/components/conformance/ResultsDisplay/components/SuiteSelector/index.tsx +++ b/src/components/conformance/ResultsDisplay/components/SuiteSelector/index.tsx @@ -16,7 +16,7 @@ type SelectorProps = { navigateToSuite: (string) => void; }; -export default function SuiteSelector(props: SelectorProps): JSX.Element { +export default function SuiteSelector(props: SelectorProps): React.ReactNode { const option: SortOption[] = availableSortingOptions.filter( (v) => v.id === props.state.sortOption, ); @@ -52,7 +52,7 @@ type SuiteItemProps = { navigateToSuite: (string) => void; }; -function SuiteItem(props: SuiteItemProps): JSX.Element { +function SuiteItem(props: SuiteItemProps): React.ReactNode { return (
{ diff --git a/src/components/conformance/ResultsDisplay/index.tsx b/src/components/conformance/ResultsDisplay/index.tsx index e2a208be..998abbda 100644 --- a/src/components/conformance/ResultsDisplay/index.tsx +++ b/src/components/conformance/ResultsDisplay/index.tsx @@ -21,8 +21,7 @@ type ResultsProps = { state: ConformanceState; }; -export default function ResultsDisplay(props: ResultsProps): JSX.Element { - const location = useLocation(); +export default function ResultsDisplay(props: ResultsProps): React.ReactNode { const [currentSuite, setCurrentSuite] = React.useState( null, ); @@ -167,6 +166,11 @@ export default function ResultsDisplay(props: ResultsProps): JSX.Element { // This filters the tests shown in the selection cards and tests grid const setFilterOption = (option: string) => { pushStateToHistory( + createSearchParams( + props.state.version, + props.state.testPath, + props.state.selectedTest, + ), createState( props.state.version, props.state.testPath, diff --git a/src/components/conformance/ResultsDisplay/nav.tsx b/src/components/conformance/ResultsDisplay/nav.tsx index a6f8f996..e6623c21 100644 --- a/src/components/conformance/ResultsDisplay/nav.tsx +++ b/src/components/conformance/ResultsDisplay/nav.tsx @@ -14,7 +14,9 @@ type ResultsNavProps = { setFilterOption: (string) => void; }; -export default function ResultNavigation(props: ResultsNavProps): JSX.Element { +export default function ResultNavigation( + props: ResultsNavProps, +): React.ReactNode { return (
@@ -77,7 +79,7 @@ type BreadCrumbItemProps = { sliceNavToIndex: (number) => void; }; -function BreadCrumbItem(props: BreadCrumbItemProps): JSX.Element { +function BreadCrumbItem(props: BreadCrumbItemProps): React.ReactNode { return (
  • void; }; -function EcmaScriptVersionDropdown(props: DropDownProps): JSX.Element { +function EcmaScriptVersionDropdown(props: DropDownProps): React.ReactNode { const [dropdownValue, setDropdownValue] = React.useState( props.esVersionValue ? props.esVersionValue : "", ); @@ -139,7 +141,7 @@ type SortProps = { setSortOption: (string) => void; }; -function SortingDropdown(props: SortProps): JSX.Element { +function SortingDropdown(props: SortProps): React.ReactNode { const [sortValue, setSortValue] = React.useState( props.sortValue ? props.sortValue : "alpha", ); @@ -179,7 +181,7 @@ type FilterProps = { setFilterOption: (string) => void; }; -function FilterDropdown(props: FilterProps): JSX.Element { +function FilterDropdown(props: FilterProps): React.ReactNode { const [filterValue, setFilterValue] = React.useState( props.filterOption ?? FilterOption.None, ); diff --git a/src/components/conformance/VersionSelector/index.tsx b/src/components/conformance/VersionSelector/index.tsx index 2e3fe0da..259ee0fe 100644 --- a/src/components/conformance/VersionSelector/index.tsx +++ b/src/components/conformance/VersionSelector/index.tsx @@ -11,7 +11,7 @@ interface SelectorProps { availableVersions: VersionItem[]; } -export default function VersionSelector(props: SelectorProps): JSX.Element { +export default function VersionSelector(props: SelectorProps): React.ReactNode { return (
    {props.availableVersions.map((version) => { @@ -25,7 +25,7 @@ type VersionProps = { version: VersionItem; }; -function Version(props: VersionProps): JSX.Element { +function Version(props: VersionProps): React.ReactNode { const history = useHistory(); return ( diff --git a/src/components/conformance/index.tsx b/src/components/conformance/index.tsx index ec1c16f6..6f4f06dc 100644 --- a/src/components/conformance/index.tsx +++ b/src/components/conformance/index.tsx @@ -9,7 +9,7 @@ type ViewProps = { records: VersionItem[]; }; -export default function ConformanceView(props: ViewProps): JSX.Element { +export default function ConformanceView(props: ViewProps): React.ReactNode { return ( <> diff --git a/src/components/home/index.tsx b/src/components/home/index.tsx index 83ddb80e..7354dadd 100644 --- a/src/components/home/index.tsx +++ b/src/components/home/index.tsx @@ -36,7 +36,7 @@ function HomepageHeader() { ); } -export default function Home({ recentPosts }): JSX.Element { +export default function Home({ recentPosts }): React.ReactNode { const { siteConfig } = useDocusaurusContext(); return ( From dbbc90eda3faec38c28f02eaa3b7e6aba2ea8341 Mon Sep 17 00:00:00 2001 From: Kevin Ness <46825870+nekevss@users.noreply.github.com> Date: Sat, 5 Jul 2025 17:02:17 -0500 Subject: [PATCH 4/4] Fix bug with filter not persisting when sortOption was selected --- src/components/conformance/ResultsDisplay/index.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/conformance/ResultsDisplay/index.tsx b/src/components/conformance/ResultsDisplay/index.tsx index 998abbda..d90d773f 100644 --- a/src/components/conformance/ResultsDisplay/index.tsx +++ b/src/components/conformance/ResultsDisplay/index.tsx @@ -157,6 +157,7 @@ export default function ResultsDisplay(props: ResultsProps): React.ReactNode { props.state.testPath, props.state.ecmaScriptVersion, option, + props.state.filterOption, ), ); };