mirror of
https://github.com/yude-jp/yude.jp
synced 2024-11-16 10:32:40 +09:00
70 lines
2.6 KiB
JavaScript
70 lines
2.6 KiB
JavaScript
import React from "react";
|
|
import Popper from "popper.js";
|
|
import { useRouter } from 'next/router'
|
|
import Link from 'next/link';
|
|
|
|
const Dropdown = ({ color }) => {
|
|
const router = useRouter()
|
|
const { locale, locales, defaultLocale, pathname } = router
|
|
|
|
// dropdown props
|
|
const [dropdownPopoverShow, setDropdownPopoverShow] = React.useState(false);
|
|
const btnDropdownRef = React.createRef();
|
|
const popoverDropdownRef = React.createRef();
|
|
const openDropdownPopover = () => {
|
|
new Popper(btnDropdownRef.current, popoverDropdownRef.current, {
|
|
placement: "bottom-start"
|
|
});
|
|
setDropdownPopoverShow(true);
|
|
};
|
|
const closeDropdownPopover = () => {
|
|
setDropdownPopoverShow(false);
|
|
};
|
|
// bg colors
|
|
let bgColor;
|
|
color === "white"
|
|
? (bgColor = "bg-gray-800")
|
|
: (bgColor = "bg-" + color + "-500");
|
|
return (
|
|
<>
|
|
|
|
<div className="relative inline-block text-left mr-2 float-right">
|
|
<button type="button" className="inline-flex justify-center w-full rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-100 focus:ring-indigo-500" id="options-menu" aria-haspopup="true" aria-expanded="true"
|
|
style={{ transition: "all .15s ease" }}
|
|
ref={btnDropdownRef}
|
|
onClick={() => {
|
|
dropdownPopoverShow
|
|
? closeDropdownPopover()
|
|
: openDropdownPopover();
|
|
}}
|
|
>
|
|
言語 / Languages
|
|
<svg className="-mr-1 ml-2 h-5 w-3" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
|
|
<path fillRule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clipRule="evenodd" />
|
|
</svg>
|
|
</button>
|
|
|
|
|
|
<div ref={popoverDropdownRef} className={
|
|
(dropdownPopoverShow ? "block " : "hidden ") + "origin-top-right absolute right-0 mt-2 w-40 rounded-md shadow-lg bg-white ring-1 ring-black ring-opacity-5"}>
|
|
<div className="py-1" role="menu" aria-orientation="vertical" aria-labelledby="options-menu">
|
|
<Link href="#" locale="ja-JP">
|
|
<a href="#" className="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 hover:text-gray-900" role="menuitem">日本語</a>
|
|
</Link>
|
|
<Link href="#" locale="en-US">
|
|
<a href="#" className="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 hover:text-gray-900" role="menuitem">English</a>
|
|
</Link>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</>
|
|
);
|
|
};
|
|
|
|
export default function LangSelector() {
|
|
return (
|
|
<>
|
|
<Dropdown color="white" />
|
|
</>
|
|
);
|
|
} |