Skip to content

Commit 259fece

Browse files
aquaductapeMilo
authored andcommitted
style function that uses signals returns css object instead of string, this enables iframe style pointer-events to be set by style instead of class and not be overridden when signal updates
1 parent 4933321 commit 259fece

File tree

2 files changed

+17
-9
lines changed

2 files changed

+17
-9
lines changed

packages/solid-repl/src/components/gridResizer.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,15 +49,14 @@ export const GridResizer: Component<{
4949
createEffect(() => {
5050
if (isDragging()) {
5151
// Fixes Firefox issue where dragging cursor fails to emit events to overlay, and instead to iframe, resulting in resizer bar not moving.
52-
// use class instead of style because style attribute, when tracked, value is reset. Related to https://github.com/solidjs/solid/issues/1938
53-
document.querySelectorAll('iframe').forEach((el) => el.classList.add('pointer-events-none'));
52+
document.querySelectorAll('iframe').forEach((el) => (el.style.pointerEvents = 'none'));
5453

5554
window.addEventListener('mousemove', onMouseMove);
5655
window.addEventListener('mouseup', onResizeEnd);
5756
window.addEventListener('touchmove', onTouchMove);
5857
window.addEventListener('touchend', onResizeEnd);
5958
} else {
60-
document.querySelectorAll('iframe').forEach((el) => el.classList.remove('pointer-events-none'));
59+
document.querySelectorAll('iframe').forEach((el) => (el.style.pointerEvents = ''));
6160

6261
window.removeEventListener('mousemove', onMouseMove);
6362
window.removeEventListener('mouseup', onResizeEnd);

packages/solid-repl/src/components/preview.tsx

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Component, Show, createEffect, createMemo, createSignal, onCleanup, untrack } from 'solid-js';
1+
import { Component, JSX, Show, createEffect, createMemo, createSignal, onCleanup, untrack } from 'solid-js';
22
import { useZoom } from '../hooks/useZoom';
33
import { GridResizer } from './gridResizer';
44

@@ -262,12 +262,21 @@ export const Preview: Component<Props> = (props) => {
262262
window.addEventListener('message', messageListener);
263263
onCleanup(() => window.removeEventListener('message', messageListener));
264264

265-
const styleScale = () => {
266-
if (zoomState.scale === 100 || !zoomState.scaleIframe) return '';
265+
const styleScale = (): JSX.CSSProperties => {
266+
if (zoomState.scale === 100 || !zoomState.scaleIframe) return {};
267267

268-
return `width: ${zoomState.scale}%; height: ${zoomState.scale}%; transform: scale(${
269-
zoomState.zoom / 100
270-
}); transform-origin: 0 0;`;
268+
const sizePercentage = `${zoomState.scale}%`;
269+
const width = sizePercentage;
270+
const height = sizePercentage;
271+
const transform = `scale(${zoomState.zoom / 100})`;
272+
const transformOrigin = `0 0`;
273+
274+
return {
275+
width,
276+
height,
277+
transform,
278+
'transform-origin': transformOrigin,
279+
};
271280
};
272281

273282
const [iframeHeight, setIframeHeight] = createSignal<number>(0.625);

0 commit comments

Comments
 (0)