diff --git a/packages/web/src/formview/FormView.svelte b/packages/web/src/formview/FormView.svelte index e8f6e5136..1abafb1ff 100644 --- a/packages/web/src/formview/FormView.svelte +++ b/packages/web/src/formview/FormView.svelte @@ -36,6 +36,7 @@ import { getActiveTabId } from '../stores'; import contextMenu from '../utility/contextMenu'; import createReducer from '../utility/createReducer'; + import resizeObserver from '../utility/resizeObserver'; export let config; export let setConfig; @@ -159,6 +160,8 @@ function createMenu() { return [{ command: 'dataForm.switchToTable' }]; } + + $: console.log('rowHeight', rowHeight);
@@ -167,27 +170,20 @@ {#each chunk as col, rowIndex} - {#if chunkIndex == 0 && rowIndex == 0} - - {:else} - - {/if} + + { - console.log('LOAD ROW'); if (isLoadingData) return; let newLoadedRow = false; if (formDisplay.config.formViewKeyRequested || formDisplay.config.formViewKey) { diff --git a/packages/web/src/utility/resizeObserver.ts b/packages/web/src/utility/resizeObserver.ts new file mode 100644 index 000000000..cd5b47a96 --- /dev/null +++ b/packages/web/src/utility/resizeObserver.ts @@ -0,0 +1,47 @@ +import _ from 'lodash'; + +export default function resizeObserver(node, observerEnabled) { + const measure = () => { + const rect = node.getBoundingClientRect(); + + node.dispatchEvent( + new CustomEvent('resize', { + detail: { + width: rect.width, + height: rect.height, + }, + }) + ); + }; + + let resizeObserver = null; + + function doUpdate() { + if (observerEnabled && !resizeObserver) { + resizeObserver = new window['ResizeObserver'](() => { + measure(); + }); + resizeObserver.observe(node); + } + if (!observerEnabled && resizeObserver) { + resizeObserver.disconnect(); + resizeObserver = null; + } + } + + doUpdate(); + if (observerEnabled) measure(); + + return { + destroy() { + if (resizeObserver) { + resizeObserver.disconnect(); + resizeObserver = null; + } + }, + update(value) { + observerEnabled = value; + doUpdate(); + }, + }; +}
- - + { + // @ts-ignore + if (rowHeight == 1) rowHeight = e.detail.height; + }} + > +
{#if col.foreignKey} -