Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
71 changes: 70 additions & 1 deletion src/components/Menu/VersionSwitcher/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ const Option = function({href, title, isActive}) {
);
};

export default function VersionSwitcher({url}) {
export function VersionSwitcher({url}) {
let leftActive = true;
let urlEnd;
const filter = url.includes("/framework")
Expand Down Expand Up @@ -81,3 +81,72 @@ export default function VersionSwitcher({url}) {
</SwitchStyle>
);
}


const lib = directory["lib"].items;
const libLegacy = directory["lib-v1"].items;
const libLegacyPaths = [];
const libPaths = [];
const libItemsAndPaths: [object, string[]][] = [
[lib, libPaths],
[libLegacy, libLegacyPaths],
];
for (const [dirItems, paths] of libItemsAndPaths) {
for (const [_, value] of Object.entries(dirItems)) {
const {items} = value;
items.forEach((item) => {
const {route, filters} = item;
filters.forEach((filter) => {
const path = route + "/q/framework/" + filter + "/";
paths.push(path);
});
paths.push(route);
});
}
}
libLegacyPaths.push("/lib-v1");
libPaths.push("/lib");

export function LibVersionSwitcher({url}) {
let rightActive;
let urlEnd;
const filter = url.includes("/framework")
? "q/framework" + url.split("/framework")[1]
: "";
if (url.includes("/lib-v1")) {
rightActive = false;
urlEnd = url.split("/lib-v1")[1];
} else {
rightActive = true
urlEnd = url.split("/lib")[1];
}

const leftHref = "/lib-v1" + urlEnd;
const leftOption = {
title: "v1",
href: libLegacyPaths.includes(leftHref)
? leftHref
: "/lib-v1/" + filter,
};

const rightHref = "/lib" + urlEnd;
const rightOption = {
title: "v2 (latest)",
href: libPaths.includes(rightHref) ? rightHref : "/lib/" + filter,
};

return (
<SwitchStyle>
<Option
href={leftOption.href}
title={leftOption.title}
isActive={!rightActive}
/>
<Option
href={rightOption.href}
title={rightOption.title}
isActive={rightActive}
/>
</SwitchStyle>
);
}
17 changes: 11 additions & 6 deletions src/components/Menu/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import ExternalLink from "../ExternalLink";
import {DISCORD} from "../../constants/img";
import RepoActions from "./RepoActions";
import FilterSelect from "./FilterSelect";
import VersionSwitcher from "./VersionSwitcher";
import { VersionSwitcher, LibVersionSwitcher } from "./VersionSwitcher";

type MenuProps = {
filters: string[];
Expand Down Expand Up @@ -67,13 +67,15 @@ export default class Menu extends React.Component<MenuProps, MenuState> {

render() {
let showVersionSwitcher = false;
if (
(this.props.url.startsWith("/ui") ||
this.props.url.startsWith("/ui-legacy")) &&
this.props.filterKey !== "react-native" &&
this.props.filterKey !== "flutter"
let showLibVersionSwitcher = false
if ((this.props.url.startsWith("/ui") || this.props.url.startsWith("/ui-legacy")) && this.props.filterKey !== "react-native" && this.props.filterKey !== "flutter"
) {
showVersionSwitcher = true;
}

//TODO: add Android filterkey here to support Android version switcher
if ((this.props.url.startsWith("/lib") || this.props.url.startsWith("/lib-v1")) && this.props.filterKey == 'ios') {
showLibVersionSwitcher = true;
}
if (this.state.isOpen) {
return (
Expand All @@ -95,6 +97,9 @@ export default class Menu extends React.Component<MenuProps, MenuState> {
{showVersionSwitcher && (
<VersionSwitcher url={this.props.url} />
)}
{showLibVersionSwitcher && (
<LibVersionSwitcher url={this.props.url} />
)}
<Directory
filterKey={this.props.filterKey}
url={this.props.url}
Expand Down
Loading