Browse Source

fix post editor

imwald
Silberengel 1 week ago
parent
commit
905e0e7e8a
  1. 4
      src/components/PostEditor/PostContent.tsx
  2. 12
      src/components/PostEditor/PostTextarea/index.tsx
  3. 13
      src/index.css

4
src/components/PostEditor/PostContent.tsx

@ -3379,7 +3379,7 @@ export default function PostContent({
</div> </div>
)} )}
<div className={cn(isSmallScreen && 'flex min-h-0 min-w-0 flex-1 flex-col')}> <div className={cn(isSmallScreen && 'flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden')}>
<PostTextarea <PostTextarea
ref={textareaRef} ref={textareaRef}
text={text} text={text}
@ -3391,7 +3391,7 @@ export default function PostContent({
isPoll isPoll
? 'min-h-20' ? 'min-h-20'
: isSmallScreen : isSmallScreen
? 'min-h-[min(42vh,20rem)]' ? 'min-h-0'
: 'min-h-52', : 'min-h-52',
isDiscussionThread && threadErrors.content && 'border-destructive' isDiscussionThread && threadErrors.content && 'border-destructive'
)} )}

12
src/components/PostEditor/PostTextarea/index.tsx

@ -180,9 +180,10 @@ const PostTextarea = forwardRef<
() => () =>
cn( cn(
'border rounded-lg p-3 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring', 'border rounded-lg p-3 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring',
isSmallScreen && 'min-h-0 flex-1 overflow-y-auto overscroll-y-contain',
className className
), ),
[className] [className, isSmallScreen]
) )
const editor = useEditor({ const editor = useEditor({
@ -325,7 +326,7 @@ const PostTextarea = forwardRef<
value={activeTab} value={activeTab}
onValueChange={setActiveTab} onValueChange={setActiveTab}
className={cn( className={cn(
isSmallScreen ? 'flex min-h-0 flex-1 flex-col gap-2' : 'space-y-2' isSmallScreen ? 'flex min-h-0 flex-1 flex-col gap-2 overflow-hidden' : 'space-y-2'
)} )}
> >
<div className="flex min-w-0 shrink-0 flex-col gap-2"> <div className="flex min-w-0 shrink-0 flex-col gap-2">
@ -348,12 +349,15 @@ const PostTextarea = forwardRef<
forceMount forceMount
className={cn( className={cn(
'mt-0 data-[state=inactive]:hidden focus-visible:ring-0 focus-visible:ring-offset-0', 'mt-0 data-[state=inactive]:hidden focus-visible:ring-0 focus-visible:ring-offset-0',
isSmallScreen && 'flex min-h-0 flex-1 flex-col' isSmallScreen && 'flex min-h-0 flex-1 flex-col overflow-hidden'
)} )}
> >
{editor ? ( {editor ? (
<EditorContent <EditorContent
className={cn('tiptap', isSmallScreen && 'flex min-h-0 flex-1 flex-col')} className={cn(
'tiptap',
isSmallScreen && 'flex min-h-0 flex-1 flex-col overflow-hidden'
)}
editor={editor} editor={editor}
/> />
) : ( ) : (

13
src/index.css

@ -103,8 +103,17 @@
} }
@media (max-width: 768px) { @media (max-width: 768px) {
.tiptap .ProseMirror { /* Mobile composer: scroll inside the bordered editor instead of painting past it. */
min-height: min(42vh, 20rem); .tiptap.flex-col {
min-height: 0;
}
.tiptap.flex-col .ProseMirror {
min-height: 0;
max-height: 100%;
overflow-y: auto;
overscroll-behavior-y: contain;
-webkit-overflow-scrolling: touch;
overflow-wrap: anywhere;
} }
} }

Loading…
Cancel
Save