mirror of
https://github.com/AppFlowy-IO/AppFlowy-Web.git
synced 2026-03-13 10:00:26 +08:00
fix: database block can not get editorDom and scrollContainer (#36)
This commit is contained in:
@@ -27,17 +27,17 @@ export const DatabaseBlock = memo(
|
||||
const [doc, setDoc] = useState<YDoc | null>(null);
|
||||
|
||||
useEffect(() => {
|
||||
if (!viewId) return;
|
||||
void (async () => {
|
||||
if(!viewId) return;
|
||||
void (async() => {
|
||||
try {
|
||||
const view = await loadView?.(viewId);
|
||||
|
||||
if (!view) {
|
||||
if(!view) {
|
||||
throw new Error('View not found');
|
||||
}
|
||||
|
||||
setDoc(view);
|
||||
} catch (e) {
|
||||
} catch(e) {
|
||||
setNotFound(true);
|
||||
}
|
||||
})();
|
||||
@@ -48,8 +48,8 @@ export const DatabaseBlock = memo(
|
||||
const [iidName, setIidName] = useState<string>('');
|
||||
|
||||
useEffect(() => {
|
||||
const updateVisibleViewIds = async (meta: View | null) => {
|
||||
if (!meta) {
|
||||
const updateVisibleViewIds = async(meta: View | null) => {
|
||||
if(!meta) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ export const DatabaseBlock = memo(
|
||||
|
||||
viewIds.unshift(meta.view_id);
|
||||
|
||||
if (!viewIds.includes(viewId)) {
|
||||
if(!viewIds.includes(viewId)) {
|
||||
setSelectedViewId(viewIds[0]);
|
||||
} else {
|
||||
setSelectedViewId(viewId);
|
||||
@@ -67,22 +67,22 @@ export const DatabaseBlock = memo(
|
||||
setVisibleViewIds(viewIds);
|
||||
};
|
||||
|
||||
void (async () => {
|
||||
void (async() => {
|
||||
try {
|
||||
const meta = await loadViewMeta?.(viewId, updateVisibleViewIds);
|
||||
|
||||
if (meta) {
|
||||
if(meta) {
|
||||
await updateVisibleViewIds(meta);
|
||||
}
|
||||
} catch (e) {
|
||||
} catch(e) {
|
||||
setNotFound(true);
|
||||
}
|
||||
})();
|
||||
}, [loadViewMeta, viewId]);
|
||||
|
||||
const handleNavigateToRow = useCallback(
|
||||
async (rowId: string) => {
|
||||
if (!viewId) return;
|
||||
async(rowId: string) => {
|
||||
if(!viewId) return;
|
||||
await navigateToView?.(viewId, rowId);
|
||||
},
|
||||
[navigateToView, viewId],
|
||||
@@ -96,17 +96,17 @@ export const DatabaseBlock = memo(
|
||||
|
||||
return database?.get(YjsDatabaseKey.views)?.get(selectedViewId);
|
||||
}, [doc, selectedViewId]);
|
||||
const handleRendered = useCallback(async (height: number) => {
|
||||
const handleRendered = useCallback(async(height: number) => {
|
||||
const container = containerRef.current;
|
||||
|
||||
if (!container) return;
|
||||
if (height > 0) {
|
||||
if(!container) return;
|
||||
if(height > 0) {
|
||||
container.style.height = `${height}px`;
|
||||
}
|
||||
|
||||
const layout = Number(selectedView?.get(YjsDatabaseKey.layout));
|
||||
|
||||
if (layout !== DatabaseViewLayout.Calendar) {
|
||||
if(layout !== DatabaseViewLayout.Calendar) {
|
||||
container.style.maxHeight = '550px';
|
||||
}
|
||||
|
||||
@@ -115,11 +115,15 @@ export const DatabaseBlock = memo(
|
||||
const [scrollLeft, setScrollLeft] = useState(0);
|
||||
|
||||
useEffect(() => {
|
||||
|
||||
const layout = Number(selectedView?.get(YjsDatabaseKey.layout));
|
||||
const editorDom = ReactEditor.toDOMNode(editor, editor);
|
||||
const scrollContainer = getScrollParent(editorDom) as HTMLElement;
|
||||
const layout = Number(selectedView?.get(YjsDatabaseKey.layout));
|
||||
|
||||
if(!editorDom || !scrollContainer) return;
|
||||
|
||||
const onResize = () => {
|
||||
|
||||
const scrollRect = scrollContainer.getBoundingClientRect();
|
||||
|
||||
setScrollLeft(Math.max(editorDom.getBoundingClientRect().left - scrollRect.left, layout === DatabaseViewLayout.Grid ? 64 : 0));
|
||||
@@ -142,7 +146,7 @@ export const DatabaseBlock = memo(
|
||||
contentEditable={readOnly ? false : undefined}
|
||||
className={`relative w-full cursor-pointer`}
|
||||
onMouseEnter={() => {
|
||||
if (variant === UIVariant.App) {
|
||||
if(variant === UIVariant.App) {
|
||||
|
||||
setShowActions(true);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user