Skip to content

fix: restore Maps interactions after the Vue 3 migration#1627

Open
DeBaschdi wants to merge 9 commits into
nextcloud:masterfrom
DeBaschdi:fix/1614-search-directions-settings
Open

fix: restore Maps interactions after the Vue 3 migration#1627
DeBaschdi wants to merge 9 commits into
nextcloud:masterfrom
DeBaschdi:fix/1614-search-directions-settings

Conversation

@DeBaschdi

@DeBaschdi DeBaschdi commented Jul 15, 2026

Copy link
Copy Markdown

Summary

  • restore Vue 3 component bindings used by search, directions, settings, favorites, and navigation
  • prevent invalid My Maps IDs and the accidental /m/noIcon request
  • allow PageController construction without a user ID while keeping authenticated actions guarded

Validation

  • production Webpack build
  • Psalm static analysis
  • targeted ESLint and PHP syntax checks
  • PHPUnit: 4 tests, 8 assertions
  • LF and git diff --check verification

AI (if applicable)

  • The content of this PR was partly or fully generated using AI

Fixes #1181
Fixes #1309
Fixes #1356
Fixes #1596
Fixes #1614
Fixes #1628

Signed-off-by: Bastian Kleinschmidt <debaschdi@googlemail.com>
Signed-off-by: Bastian Kleinschmidt <debaschdi@googlemail.com>
Signed-off-by: Bastian Kleinschmidt <debaschdi@googlemail.com>
@DeBaschdi
DeBaschdi force-pushed the fix/1614-search-directions-settings branch from 9507509 to 27437b4 Compare July 15, 2026 05:40
@DeBaschdi DeBaschdi changed the title Fix/1614/1596 search directions settings fix: restore search, directions, and settings interactions Jul 15, 2026
@jancborchardt

Copy link
Copy Markdown
Member

Very very cool!!

Did some smoke testing and some minor interface issues came up. Let me know if that's at all related here or separate. :) Mostly missing icons:

Missing icons in nav, menus and "Clear POIs" button

Screenshot From 2026-07-15 17-56-58

Missing icons for further overlay switcher and location toggle

Screenshot From 2026-07-15 17-57-05

Missing icons for favorite sidebar

Screenshot From 2026-07-15 17-59-52

Missing icon on favorite marker on map

It's there in the left nav though.
Screenshot From 2026-07-15 18-00-25


A local review with Claude Opus 4.8 pointed out these things:

  1. Incomplete migration — src/components/map/PlaceContactPopup.vue:22 still uses old inputLabel="FN" on an NcSelect. Functionally works (uses v-model), but inputLabel is now dead → contact multiselect loses accessible label. Same bug class as this PR; worth folding in. (Also same file line 23 in the "add contact address" flow.)
  2. Behavior change — SearchField.onOptionSelected now sets this.mySelectedOption = option unconditionally, including for type === 'query' options (before: only on the non-query branch). After firing an OSM text search the field's selected-option now shows the raw query string.

The content of this PR was partly or fully generated using AI

Note that it would be good to add this info to the commits as per the contribution guidelines. Just a simple line with the proper trailer which lists the tool and model+version is enough :)
https://github.com/nextcloud/.github/blob/master/CONTRIBUTING.md#ai-assisted-contributions

@jancborchardt

Copy link
Copy Markdown
Member

Oh and while we're at it, you could also set the max-version to 36 or so? :)

@DeBaschdi

Copy link
Copy Markdown
Author

I'll take another look to see what might be wrong with the icons.

Copy link
Copy Markdown

I tested the Maps settings portion locally on Nextcloud 33.0.3 / Maps 1.7.1 / Chrome 150 by applying the equivalent compiled-bundle changes.

Confirmed working after the modelValue / update:modelValue conversion:

  • Track my position toggles correctly
  • Display time filter slider toggles correctly and displays the slider

There is still a UX/behavior problem with Open geo links in this PR: the component is bound to :model-value="false", so it can never appear checked. Its handler is a one-shot navigator.registerProtocolHandler(...) action rather than a persisted boolean setting. In my browser test it continued to look nonfunctional because the checkbox immediately remains unchecked even after clicking.

I recommend changing that third control to an NcButton, for example Register Maps to open geo links, and showing success/error feedback around registerProtocolHandler. That would accurately represent it as an action rather than a stateful setting.

@DeBaschdi DeBaschdi changed the title fix: restore search, directions, and settings interactions fix: restore Maps interactions after the Vue 3 migration Jul 20, 2026
Signed-off-by: Bastian Kleinschmidt <debaschdi@googlemail.com>
Signed-off-by: Bastian Kleinschmidt <debaschdi@googlemail.com>
Signed-off-by: Bastian Kleinschmidt <debaschdi@googlemail.com>
Signed-off-by: Bastian Kleinschmidt <debaschdi@googlemail.com>
Signed-off-by: Bastian Kleinschmidt <debaschdi@googlemail.com>
@DeBaschdi

Copy link
Copy Markdown
Author

Thanks @jancborchardt and @menached for the detailed testing and feedback.

Feedback from @jancborchardt

The remaining review findings have been addressed:

  • PlaceContactPopup now uses the current NcSelect API, including a stable option key and an accessible combobox label.
  • Selecting an OSM text-query option no longer leaves the raw query displayed as the selected value.
  • the declared maximum supported Nextcloud version has been raised to 36.

These changes are contained in:

  • dd2d27a3 — preserve map search behavior with NcSelect
  • 4c1578ab — make the contact address popup usable
  • 18270b92 — declare support for Nextcloud 36

Regarding the missing navigation, menu, layer-control and favorite icons: I could not reproduce these with the complete build on Nextcloud 34, so I have not changed the general icon handling and am not claiming those as fixed. The only icon-related change replaces the broken fallback marker used while placing a contact address.

Feedback from @menached

The geo-link control is now represented as an action instead of a stateful setting:

  • the permanently unchecked checkbox has been replaced with a Register Maps to open geo links button
  • registration is only requested when the button is clicked
  • success, unsupported-browser and error feedback is shown to the user
  • the automatic registration attempt during every page load has been removed

This is contained in:

  • dba8f9d2 — make geo link registration an explicit action

Additional fixes found during local testing

While testing the review changes, several related problems were found and fixed:

The additional popup and contact fixes are contained in:

  • ae1475bf — restore search result popup actions
  • 4c1578ab — make the contact address popup usable

Validation

  • production Webpack build with Node 22
  • generated main bundle syntax check
  • manual smoke testing on Nextcloud 34
  • LF and git diff --check verification

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

3 participants