この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは。データアナリティクス事業本部 サービスソリューション部の北川です。
Mantineとは
Mantineは、ReactのUIライブラリになります。
基本的な使用方法については、以下のブログで書いています。
今回は、最近のMantineのバージョンアップによって追加されたコンポーネントやフックを試してみました。
8月にも似たようなエントリを投稿したのですが、その時のバージョンは5.1でした。2022年の12月、投稿時点では、v5.9が最新になります。
use-eye-dropper hook
useEyeDropper()
を使用すると、カーソル上の色を選択できます。
import { useState } from "react";
import { ActionIcon, Group, ColorSwatch, Text } from "@mantine/core";
import { useEyeDropper } from "@mantine/hooks";
import { Box } from "@chakra-ui/react";
const Drop = () => {
const [color, setColor] = useState("");
const { supported, open } = useEyeDropper();
const pickColor = async () => {
try {
const { sRGBHex } = await open();
setColor(sRGBHex);
} catch (e) {
console.log("e", e);
}
};
if (!supported) {
return (
<Text ta="center">EyeDropper API is not supported in your browser</Text>
);
}
console.log("color", color);
return (
<Box m="40" border="1px" p="5">
<Group>
<ActionIcon variant="default" onClick={pickColor}></ActionIcon>
{color ? (
<Group spacing="xs">
<ColorSwatch color={color} />
<Text>Picked color: {color}</Text>
</Group>
) : (
<Text>Click the button to pick color</Text>
)}
</Group>
<Group>
<Box mt="3" w="10" h="10" bg="blue"></Box>
<Box mt="3" w="10" h="10" bg="red"></Box>
</Group>
</Box>
);
};
export default Drop;
ColorInput
また、カラーピッカーのフォームタグを実装するColorInput
コンポーネントもあります。
AppShell alt layout
管理画面レイアウトを簡単に作成できるAppShellというコンポーネントにlayout
にalt属性を指定することで、サイドバーを優先したレイアウトに変更できるようになります。
- 通常のAppShell
- layoutにaltを指定
use-favicon hook
ファビコンを切り替えるフックです。使い所は難しいですが、面白い機能です。
import { useState } from "react";
import { useFavicon } from "@mantine/hooks";
import { Group, Button } from "@mantine/core";
const Demo = () => {
const [favicon, setFavicon] = useState("");
const setTwitterFavicon = () => setFavicon("https://twitter.com/favicon.ico");
const setMantineFavicon = () => setFavicon("https://mantine.dev/favicon.svg");
useFavicon(favicon);
return (
<Group p="xl">
<Button onClick={setTwitterFavicon}>Twitter favicon</Button>
<Button onClick={setMantineFavicon}>Mantine favicon</Button>
</Group>
);
};
export default Demo;
まとめ
今回は、mantineの最近のバージョンアップで追加された機能について触ってみました。 Mantineは、既にNext.js v13用のテンプレートが存在していたり、バージョンアップが頻繁にされているので、今後も楽しみです。
ではまた。