Skip to content

Commit b407a15

Browse files
eyelidlessnessspwoodcock
authored andcommitted
web-forms (fix): ensure isSmallImage is recomputed when uploading 2+ images
1 parent 90cb469 commit b407a15

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

packages/web-forms/src/components/controls/Upload/UploadImagePreview.vue

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import type { ObjectURL } from '@getodk/common/lib/web-compat/url.ts';
33
import { createObjectURL, revokeObjectURL } from '@getodk/common/lib/web-compat/url.ts';
44
import type { UploadNode } from '@getodk/xforms-engine';
55
import Button from 'primevue/button';
6-
import { computed, ref, watchEffect } from 'vue';
6+
import { computed, ref, triggerRef, watchEffect } from 'vue';
77
88
export interface UploadImagePreviewProps {
99
readonly question: UploadNode;
@@ -28,6 +28,18 @@ const onPreviewLoad = (event: Event) => {
2828
const previewImage = event.target as HTMLImageElement;
2929
3030
loadedDimensions.value = previewImage;
31+
32+
/**
33+
* Ensures `isSmallImage` will be recomputed if `previewImage` has already
34+
* been assigned to `loadedDimensions.value` by a prior upload.
35+
*
36+
* TODO: it would be nice to find (or build?) something equivalent to Solid's
37+
* {@link https://docs.solidjs.com/reference/basic-reactivity/create-signal#equals | `equals` option},
38+
* which would allow specifying this behavior directly on `loadedDimensions`
39+
* (and would allow customizing it e.g. to recompute specifically if an
40+
* `HTMLImageElement` is assigned).
41+
*/
42+
triggerRef(loadedDimensions);
3143
};
3244
3345
const SMALL_IMAGE_SIZE = 300;

0 commit comments

Comments
 (0)