From a8dee13560044ee5556780670553894a1e0b4f4c Mon Sep 17 00:00:00 2001 From: Dan Leech Date: Wed, 15 Apr 2026 14:55:06 +0100 Subject: [PATCH 1/2] Keyboard hint moved to bottom --- demo/js/planning.js | 2 +- plugins/beta/scale-bar/src/scaleBar.scss | 1 + src/App/components/Viewport/Viewport.jsx | 20 +-- .../components/Viewport/Viewport.module.scss | 2 + src/App/components/Viewport/Viewport.test.jsx | 49 ++----- src/App/hooks/useLayoutMeasurements.js | 137 +++++++++--------- src/App/layout/Layout.jsx | 2 +- src/App/layout/layout.module.scss | 8 - 8 files changed, 91 insertions(+), 130 deletions(-) diff --git a/demo/js/planning.js b/demo/js/planning.js index 0fa09350..7b59b391 100755 --- a/demo/js/planning.js +++ b/demo/js/planning.js @@ -36,7 +36,7 @@ const interactPlugin = createInteractPlugin({ backgroundColor: { outdoor: '#0b0c0c', dark: '#ffffff' }, foregroundColor: { outdoor: '#ffff', dark: '#0b0c0c' } }, - // interactionModes: ['selectMarker'], // e.g. ['selectMarker'], ['selectFeature'], ['placeMarker'], or combinations + interactionModes: ['placeMarker'], // e.g. ['selectMarker'], ['selectFeature'], ['placeMarker'], or combinations // multiSelect: true }) diff --git a/plugins/beta/scale-bar/src/scaleBar.scss b/plugins/beta/scale-bar/src/scaleBar.scss index bcfcf31d..45e0c025 100755 --- a/plugins/beta/scale-bar/src/scaleBar.scss +++ b/plugins/beta/scale-bar/src/scaleBar.scss @@ -7,6 +7,7 @@ .im-c-scale-bar { position: relative; margin-left: auto; + margin-bottom: 1px; // Account for halo text-align: right; padding-bottom: 5px; color: var(--map-overlay-foreground-color); diff --git a/src/App/components/Viewport/Viewport.jsx b/src/App/components/Viewport/Viewport.jsx index a6166dfe..d294bbbd 100755 --- a/src/App/components/Viewport/Viewport.jsx +++ b/src/App/components/Viewport/Viewport.jsx @@ -2,6 +2,7 @@ import React, { useRef, useEffect, useState } from 'react' import { EVENTS as events } from '../../../config/events.js' import { createPortal } from 'react-dom' import { useConfig } from '../../store/configContext.js' + import { useApp } from '../../store/appContext.js' import { useMap } from '../../store/mapContext.js' import { MapController } from './MapController.jsx' @@ -14,9 +15,10 @@ import { Markers } from '../Markers/Markers' // eslint-disable-next-line camelcase, react/jsx-pascal-case // sonarjs/disable-next-line function-name -export const Viewport = ({ keyboardHintPortalRef }) => { +export const Viewport = () => { const { id, mapProvider, mapLabel, keyboardHintText } = useConfig() const { interfaceType, mode, previousMode, layoutRefs, safeZoneInset } = useApp() + const { appContainerRef } = layoutRefs const { mapSize } = useMap() const mapContainerRef = useRef(null) @@ -49,18 +51,6 @@ export const Viewport = ({ keyboardHintPortalRef }) => { } }, [mode]) - // Toggle external class based on keyboard hint - useEffect(() => { - const mainEl = layoutRefs.mainRef?.current - if (!mainEl) { - return undefined - } - - mainEl.classList.toggle('im-o-app__main--keyboard-hint-visible', showHint) - - return () => mainEl?.classList.remove('im-o-app__main--keyboard-hint-visible') - }, [showHint]) - return ( <> @@ -74,14 +64,14 @@ export const Viewport = ({ keyboardHintPortalRef }) => { onBlur={handleBlur} ref={layoutRefs.viewportRef} > - {showHint && keyboardHintPortalRef?.current && createPortal( + {showHint && appContainerRef?.current && createPortal(