Merge pull request #444 from robintown/wt-small
Adapt walkie-talkie layout to hide controls at small sizes
This commit is contained in:
commit
631e63a0b5
3 changed files with 90 additions and 68 deletions
|
@ -1,17 +1,28 @@
|
||||||
.pttButton {
|
.pttButton {
|
||||||
width: 100vw;
|
width: 100vw;
|
||||||
height: 100vh;
|
aspect-ratio: 1;
|
||||||
max-height: 232px;
|
max-height: min(232px, calc(100vh - 16px));
|
||||||
max-width: 232px;
|
max-width: min(232px, calc(100vw - 16px));
|
||||||
border-radius: 116px;
|
border-radius: 116px;
|
||||||
color: var(--primary-content);
|
color: var(--primary-content);
|
||||||
border: 6px solid var(--accent);
|
border: 6px solid var(--accent);
|
||||||
background-color: #21262c;
|
background-color: #21262c;
|
||||||
position: relative;
|
position: relative;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
|
margin: 4px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.micIcon {
|
||||||
|
max-height: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.avatar {
|
||||||
|
/* Remove explicit size to allow avatar to scale with the button */
|
||||||
|
width: unset !important;
|
||||||
|
height: unset !important;
|
||||||
|
}
|
||||||
|
|
||||||
.talking {
|
.talking {
|
||||||
background-color: var(--accent);
|
background-color: var(--accent);
|
||||||
cursor: unset;
|
cursor: unset;
|
||||||
|
|
|
@ -41,6 +41,7 @@
|
||||||
|
|
||||||
.talkingInfo {
|
.talkingInfo {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
flex-shrink: 0;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
|
|
|
@ -113,6 +113,7 @@ export const PTTCallView: React.FC<Props> = ({
|
||||||
useModalTriggerState();
|
useModalTriggerState();
|
||||||
const [containerRef, bounds] = useMeasure({ polyfill: ResizeObserver });
|
const [containerRef, bounds] = useMeasure({ polyfill: ResizeObserver });
|
||||||
const facepileSize = bounds.width < 800 ? "sm" : "md";
|
const facepileSize = bounds.width < 800 ? "sm" : "md";
|
||||||
|
const showControls = bounds.height > 500;
|
||||||
const pttButtonSize = 232;
|
const pttButtonSize = 232;
|
||||||
|
|
||||||
const { audioOutput } = useMediaHandler();
|
const { audioOutput } = useMediaHandler();
|
||||||
|
@ -172,6 +173,7 @@ export const PTTCallView: React.FC<Props> = ({
|
||||||
// https://github.com/vector-im/element-call/issues/328
|
// https://github.com/vector-im/element-call/issues/328
|
||||||
show={false}
|
show={false}
|
||||||
/>
|
/>
|
||||||
|
{showControls && (
|
||||||
<Header className={styles.header}>
|
<Header className={styles.header}>
|
||||||
<LeftNav>
|
<LeftNav>
|
||||||
<RoomSetupHeaderInfo
|
<RoomSetupHeaderInfo
|
||||||
|
@ -183,7 +185,10 @@ export const PTTCallView: React.FC<Props> = ({
|
||||||
</LeftNav>
|
</LeftNav>
|
||||||
<RightNav />
|
<RightNav />
|
||||||
</Header>
|
</Header>
|
||||||
|
)}
|
||||||
<div className={styles.center}>
|
<div className={styles.center}>
|
||||||
|
{showControls && (
|
||||||
|
<>
|
||||||
<div className={styles.participants}>
|
<div className={styles.participants}>
|
||||||
<p>{`${participants.length} ${
|
<p>{`${participants.length} ${
|
||||||
participants.length > 1 ? "people" : "person"
|
participants.length > 1 ? "people" : "person"
|
||||||
|
@ -209,9 +214,12 @@ export const PTTCallView: React.FC<Props> = ({
|
||||||
{!isEmbedded && <HangupButton onPress={onLeave} />}
|
{!isEmbedded && <HangupButton onPress={onLeave} />}
|
||||||
<InviteButton onPress={() => inviteModalState.open()} />
|
<InviteButton onPress={() => inviteModalState.open()} />
|
||||||
</div>
|
</div>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
|
||||||
<div className={styles.pttButtonContainer}>
|
<div className={styles.pttButtonContainer}>
|
||||||
{activeSpeakerUserId ? (
|
{showControls &&
|
||||||
|
(activeSpeakerUserId ? (
|
||||||
<div className={styles.talkingInfo}>
|
<div className={styles.talkingInfo}>
|
||||||
<h2>
|
<h2>
|
||||||
{!activeSpeakerIsLocalUser && (
|
{!activeSpeakerIsLocalUser && (
|
||||||
|
@ -225,7 +233,7 @@ export const PTTCallView: React.FC<Props> = ({
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
<div className={styles.talkingInfo} />
|
<div className={styles.talkingInfo} />
|
||||||
)}
|
))}
|
||||||
<PTTButton
|
<PTTButton
|
||||||
enabled={!feedbackModalState.isOpen}
|
enabled={!feedbackModalState.isOpen}
|
||||||
showTalkOverError={showTalkOverError}
|
showTalkOverError={showTalkOverError}
|
||||||
|
@ -241,6 +249,7 @@ export const PTTCallView: React.FC<Props> = ({
|
||||||
enqueueNetworkWaiting={enqueueTalkingExpected}
|
enqueueNetworkWaiting={enqueueTalkingExpected}
|
||||||
setNetworkWaiting={setTalkingExpected}
|
setNetworkWaiting={setTalkingExpected}
|
||||||
/>
|
/>
|
||||||
|
{showControls && (
|
||||||
<p className={styles.actionTip}>
|
<p className={styles.actionTip}>
|
||||||
{getPromptText(
|
{getPromptText(
|
||||||
networkWaiting,
|
networkWaiting,
|
||||||
|
@ -253,6 +262,7 @@ export const PTTCallView: React.FC<Props> = ({
|
||||||
connected
|
connected
|
||||||
)}
|
)}
|
||||||
</p>
|
</p>
|
||||||
|
)}
|
||||||
{userMediaFeeds.map((callFeed) => (
|
{userMediaFeeds.map((callFeed) => (
|
||||||
<PTTFeed
|
<PTTFeed
|
||||||
key={callFeed.userId}
|
key={callFeed.userId}
|
||||||
|
@ -260,7 +270,7 @@ export const PTTCallView: React.FC<Props> = ({
|
||||||
audioOutputDevice={audioOutput}
|
audioOutputDevice={audioOutput}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
{isAdmin && (
|
{isAdmin && showControls && (
|
||||||
<Toggle
|
<Toggle
|
||||||
isSelected={talkOverEnabled}
|
isSelected={talkOverEnabled}
|
||||||
onChange={setTalkOverEnabled}
|
onChange={setTalkOverEnabled}
|
||||||
|
@ -271,7 +281,7 @@ export const PTTCallView: React.FC<Props> = ({
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{inviteModalState.isOpen && (
|
{inviteModalState.isOpen && showControls && (
|
||||||
<InviteModal roomId={roomId} {...inviteModalProps} />
|
<InviteModal roomId={roomId} {...inviteModalProps} />
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Add table
Reference in a new issue