Fix some mobile styles
This commit is contained in:
parent
5453b0513f
commit
24c634d40a
|
|
@ -24,6 +24,10 @@
|
||||||
padding: 0 72px 72px;
|
padding: 0 72px 72px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.content.menuContent {
|
||||||
|
padding-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
.editable {
|
.editable {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
min-height: 100%;
|
min-height: 100%;
|
||||||
|
|
|
||||||
|
|
@ -29,11 +29,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.closed {
|
.closed {
|
||||||
width: 32px;
|
|
||||||
min-width: 32px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.closed[data-controlled] {
|
|
||||||
width: 0;
|
width: 0;
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
border: none;
|
border: none;
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,7 @@ export const Editor = () => {
|
||||||
return (
|
return (
|
||||||
<div class={styles.editor}>
|
<div class={styles.editor}>
|
||||||
{currentStory && <div class={styles.title}>{currentStory.title}</div>}
|
{currentStory && <div class={styles.title}>{currentStory.title}</div>}
|
||||||
<div class={styles.content} ref={contentRef}>
|
<div class={clsx(styles.content, currentTab === 'menu' && styles.menuContent)} ref={contentRef}>
|
||||||
{currentTab === "menu" && (
|
{currentTab === "menu" && (
|
||||||
<Menu />
|
<Menu />
|
||||||
)}
|
)}
|
||||||
|
|
|
||||||
|
|
@ -1,43 +1,29 @@
|
||||||
import clsx from "clsx";
|
import clsx from "clsx";
|
||||||
import type { ComponentChildren } from "preact";
|
import type { ComponentChildren } from "preact";
|
||||||
import { useBool } from "@common/hooks/useBool";
|
|
||||||
import styles from '../assets/sidebar.module.css';
|
import styles from '../assets/sidebar.module.css';
|
||||||
import { PanelLeftClose, PanelLeftOpen, PanelRightClose, PanelRightOpen } from "lucide-preact";
|
import { PanelLeftClose, PanelLeftOpen, PanelRightClose, PanelRightOpen } from "lucide-preact";
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
side: 'left' | 'right';
|
side: 'left' | 'right';
|
||||||
children?: ComponentChildren;
|
children?: ComponentChildren;
|
||||||
open?: boolean;
|
open: boolean;
|
||||||
onToggle?: () => void;
|
onToggle: () => void;
|
||||||
onCollapseChanged?: (collapsed: boolean) => void;
|
|
||||||
class?: string;
|
class?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const Sidebar = ({ side, children, open: controlledOpen, onToggle, onCollapseChanged, class: className }: Props) => {
|
export const Sidebar = ({ side, children, open, onToggle, class: className }: Props) => {
|
||||||
const internalOpen = useBool(true);
|
|
||||||
const isControlled = controlledOpen !== undefined;
|
|
||||||
const isOpen = isControlled ? controlledOpen : internalOpen.value;
|
|
||||||
|
|
||||||
const handleToggle = () => {
|
|
||||||
if (isControlled) {
|
|
||||||
onToggle?.();
|
|
||||||
} else {
|
|
||||||
internalOpen.toggle();
|
|
||||||
}
|
|
||||||
onCollapseChanged?.(!isOpen);
|
|
||||||
};
|
|
||||||
|
|
||||||
const isLeft = side === 'left';
|
const isLeft = side === 'left';
|
||||||
const IconComponent = isLeft
|
const IconComponent = isLeft
|
||||||
? (isOpen ? PanelLeftClose : PanelLeftOpen)
|
? (open ? PanelLeftClose : PanelLeftOpen)
|
||||||
: (isOpen ? PanelRightClose : PanelRightOpen);
|
: (open ? PanelRightClose : PanelRightOpen);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div class={clsx(styles.sidebar, isOpen ? styles.open : styles.closed, className)} data-side={side} data-controlled={isControlled || undefined}>
|
<div class={clsx(styles.sidebar, open ? styles.open : styles.closed, className)} data-side={side}>
|
||||||
<button class={clsx(styles.toggle, isControlled && styles.toggleMobile)} onClick={handleToggle}>
|
<button class={styles.toggle} onClick={onToggle}>
|
||||||
<IconComponent size={16} />
|
<IconComponent size={16} />
|
||||||
</button>
|
</button>
|
||||||
{isOpen && (
|
{open && (
|
||||||
<div class={styles.content}>
|
<div class={styles.content}>
|
||||||
{children}
|
{children}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue