documentation-site/components/version-selector.jsx (62 lines of code) (raw):
/*
Copyright (c) Uber Technologies, Inc.
This source code is licensed under the MIT license found in the
LICENSE file in the root directory of this source tree.
*/
/* eslint-env browser */
import * as React from "react";
import ChevronDown from "baseui/icon/chevron-down";
import { StatefulPopover, PLACEMENT as PopoverPlacement } from "baseui/popover";
import { StatefulMenu, NestedMenus } from "baseui/menu";
import { Button, KIND } from "baseui/button";
import pkg from "../../package.json";
const { version } = pkg;
const currentMajor = parseInt(version.split(".")[0], 10);
const majors = [...Array(8).keys()].map((i) => i + currentMajor - 8);
const majorVersions = majors.reverse().map((version) => ({
label: `v${version}`,
}));
const majorVersionsToDisplay = majorVersions.map((version) => {
const { label } = version;
return {
label,
originalVersionNumber: label,
};
});
const VersionSelector = () => {
return (
<StatefulPopover
placement={PopoverPlacement.bottomLeft}
focusLock
// eslint-disable-next-line jsx-a11y/no-autofocus
autoFocus
content={({ close }) => (
<NestedMenus>
<StatefulMenu
items={majorVersionsToDisplay}
onItemSelect={({ item }) => {
window.open(`https://${item.label}.baseweb.design`);
close();
}}
overrides={{
List: {
style: {
width: "100px",
},
},
}}
/>
</NestedMenus>
)}
>
<Button
size="compact"
kind={KIND.tertiary}
endEnhancer={() => <ChevronDown size={20} title="" />}
>
v{version}
</Button>
</StatefulPopover>
);
};
export default VersionSelector;