element-call/src/settings/SettingsModal.jsx

96 lines
2.5 KiB
React
Raw Normal View History

2021-12-07 01:34:10 +00:00
import React from "react";
2022-01-06 00:54:13 +00:00
import { Modal } from "../Modal";
2021-12-07 01:34:10 +00:00
import styles from "./SettingsModal.module.css";
2022-01-06 00:54:13 +00:00
import { TabContainer, TabItem } from "../Tabs";
import { ReactComponent as AudioIcon } from "../icons/Audio.svg";
import { ReactComponent as VideoIcon } from "../icons/Video.svg";
import { ReactComponent as DeveloperIcon } from "../icons/Developer.svg";
2022-01-06 01:27:01 +00:00
import { SelectInput } from "../input/SelectInput";
2021-12-07 01:34:10 +00:00
import { Item } from "@react-stately/collections";
import { useMediaHandler } from "./useMediaHandler";
2022-01-06 01:27:01 +00:00
import { FieldRow, InputField } from "../input/Input";
2021-12-07 01:34:10 +00:00
export function SettingsModal({
client,
setShowInspector,
showInspector,
...rest
}) {
const {
audioInput,
audioInputs,
setAudioInput,
videoInput,
videoInputs,
setVideoInput,
} = useMediaHandler(client);
return (
<Modal
title="Settings"
isDismissable
2021-12-10 18:54:18 +00:00
mobileFullScreen
2021-12-07 01:34:10 +00:00
className={styles.settingsModal}
{...rest}
>
<TabContainer className={styles.tabContainer}>
<TabItem
title={
<>
<AudioIcon width={16} height={16} />
<span>Audio</span>
</>
}
>
<SelectInput
label="Microphone"
selectedKey={audioInput}
onSelectionChange={setAudioInput}
>
{audioInputs.map(({ deviceId, label }) => (
<Item key={deviceId}>{label}</Item>
))}
</SelectInput>
</TabItem>
<TabItem
title={
<>
<VideoIcon width={16} height={16} />
<span>Video</span>
</>
}
>
<SelectInput
label="Webcam"
selectedKey={videoInput}
onSelectionChange={setVideoInput}
>
{videoInputs.map(({ deviceId, label }) => (
<Item key={deviceId}>{label}</Item>
))}
</SelectInput>
</TabItem>
<TabItem
title={
<>
<DeveloperIcon width={16} height={16} />
<span>Developer</span>
</>
}
>
<FieldRow>
<InputField
id="showInspector"
name="inspector"
label="Show Call Inspector"
type="checkbox"
checked={showInspector}
onChange={(e) => setShowInspector(e.target.checked)}
/>
</FieldRow>
</TabItem>
</TabContainer>
</Modal>
);
}