Skip to content

Conversation

@tzi
Copy link
Contributor

@tzi tzi commented Oct 20, 2025

Description:

The old modal design had 2 big responsive design:

  • In tiny devices, the content overflows horizontally
  • When resizing our screen (or rotating our device) the design wasn’t updated: modal not centered and sometimes off-screen.
  • When the content was updated, the design wan’t updated either: modal not centered and sometimes content hidden behind a scroll

Plugin/Submodule update

2 PRs are open in plugin/submodule to update UI screenshots:

Visits log | desktop

ℹ️ Better vertical centering, and more intuitive scroll

before after
Screenshot 2025-10-20 at 16 08 06 Screenshot 2025-10-20 at 16 06 03

Visits log | mobile

ℹ️ No content outside of the screen.

before after
Screenshot 2025-10-20 at 16 30 57 Screenshot 2025-10-20 at 16 25 43

Performance | desktop

ℹ️ Better vertical centering.

before after
Screenshot 2025-10-20 at 16 08 01 Screenshot 2025-10-20 at 16 05 55

Performance | mobile

ℹ️ Vertical centering always up to date

before after
Screenshot 2025-10-20 at 17 58 50 Screenshot 2025-10-20 at 17 56 04

Row evolution | desktop

ℹ️ No hidden content.

before after
Screenshot 2025-10-20 at 16 07 48 Screenshot 2025-10-20 at 16 06 09

Row evolution | mobile

ℹ️ Vertical centering always up to date

before after
Screenshot 2025-10-20 at 17 58 59 Screenshot 2025-10-20 at 17 56 26

Profile modale

ℹ️ Vertical centering always up to date

The 2-columns layout is now responsive

before after
Screenshot 2025-11-10 at 15 33 44 Screenshot 2025-11-10 at 15 32 51

I had to make a lot of small fixes. For example, action liste used inline-block elements as wrapper that made it hard to control the children width. By fixing it, it changed all actions list inside the app, fixing bugs and spacing in all cases. For example:

before after
Screenshot 2025-11-10 at 15 31 21 Screenshot 2025-11-10 at 15 31 38

Checklist

  • [NA] I have understood, reviewed, and tested all AI outputs before use
  • [NA] All AI instructions respect security, IP, and privacy rules

Review

// sometimes the modal can be displayed outside of the current viewport, in this case
// we scroll to it to make sure it's visible. this isn't a perfect workaround, since it
// doesn't center the modal.g
var self = this;
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ Variable not used. That was already he case before my development.

Comment on lines -111 to -121
var centerPopover = function () {
if (container !== false) {
$('.ui-dialog').css({margin: '0 0'});
container.dialog("option", "position", {my: 'center', at: 'center', of: '.ui-widget-overlay', collision: 'fit'});
// in some cases jQuery UI fails to place the dialog correctly and set the top values to something negative
if ($('.ui-dialog').position().top < 0) {
$('.ui-dialog').css('top', '0');
}
$('.ui-dialog').css({margin: '15px 0'});
}
};
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ I was able to keep a perfect centering in pure CSS, so I removed this calculation. Since the width/height measurement is blocking the browser, it is a performance gain.


@media (max-width: 600px) {
padding: 15px;
}
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ Remove the left padding that was here to display the icon. Make it smaller in the same time

display: block;
margin-bottom: 0.5em;
text-align: center;
}
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ Make the icon on top instead on the left of the message on mobile. It will take less space.

@media (max-width: 600px) {
position: static;
display: block;
}
Copy link
Contributor Author

@tzi tzi Oct 20, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ Avoid stacking the link on top of the content.

before after
Image Image

@tzi tzi requested a review from sgiehl October 20, 2025 14:51
@tzi tzi added Needs Review c: Design / UI For issues that impact Matomo's user interface or the design overall. Enhancement For new feature suggestions that enhance Matomo's capabilities or add a new report, new API etc. labels Oct 20, 2025
@tzi tzi requested a review from a team October 21, 2025 12:52
z-index: 1001;
inset: 15px !important;
margin: auto;
width: min-content;
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ Tag Manager modals do not have explicit width defined with style attribute.
So we are setting a default width here, to keep a small modal in these cases.

@tzi tzi force-pushed the ux-287 branch 2 times, most recently from cfeda93 to e463739 Compare October 27, 2025 09:38
@tzi tzi force-pushed the ux-287 branch 9 times, most recently from 937cb7b to 6f2ed13 Compare October 28, 2025 08:36
@tzi tzi added Pull Request WIP Indicates the current pull request is still work in progress and not ready yet for a review. and removed Needs Review labels Oct 28, 2025
@tzi tzi force-pushed the ux-287 branch 3 times, most recently from 6009781 to 467cc66 Compare October 29, 2025 08:05
Comment on lines 185 to 189
ol.actionList > li.collapsed-content-item::after {
border-right: 2px solid #d2d2d2;
width: 26px;
left: -34px;
}
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

without the double border with
Image Image

@tzi tzi force-pushed the ux-287 branch 2 times, most recently from cb9acb0 to 668a4cf Compare November 12, 2025 14:29
const $triggerItem = $(e.target).closest('li');
const $root = $triggerItem.parent();
const actionsToDisplayCollapsed = +piwik.visitorLogActionsToDisplayCollapsed;
const isExpanded = $triggerItem.toggleClass('expanded collapsed').hasClass('expanded');
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ One time, bu non-reproductible, I’ve got the link label messed up.
By having an explicit state here, I assure that everything is always consistent.

});
const currentIndex = $actions.index(this);
if (currentIndex === actionsToDisplayCollapsed - 1) {
$(this).toggleClass('last-collapsed-action', !isExpanded);
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ Adding this to avoid having a thread that goes nowhere after the last visible item when an action list is collapsed.

{% set previousAction = false %}
{% for actionGroup in actionGroups %}
{% if actionGroup.pageviewAction is not empty %}
{{ postEvent('Live.renderAction', actionGroup.pageviewAction, previousAction, visitInfo) }}
Copy link
Contributor Author

@tzi tzi Nov 12, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ This file contains only whitespace (indentation / extra lines) refactoring because I couldn’t follow.

@tzi tzi force-pushed the ux-287 branch 3 times, most recently from 72bcefd to 199151f Compare November 13, 2025 00:00
Comment on lines +65 to +66
$li.addClass('last-collapsed-content');
$li.prev().removeClass('last-collapsed-content');
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ Small clean up to have an explicit code that add a class on the last collapsed content.

@tzi tzi requested a review from michalkleiner November 13, 2025 07:09
michalkleiner
michalkleiner previously approved these changes Nov 14, 2025
Copy link
Contributor

@michalkleiner michalkleiner left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for all the additional changes and the adjustments to the timelines 👍

@tzi tzi changed the title Make the old modal system responsive and always centered without JS Make the old modal system responsive and always centered without JS, ux-287 Nov 17, 2025
@michalkleiner michalkleiner changed the title Make the old modal system responsive and always centered without JS, ux-287 Make the old modal system responsive and always centred without JS Nov 17, 2025
@michalkleiner michalkleiner merged commit e1e415e into 5.x-dev Nov 17, 2025
71 of 75 checks passed
@michalkleiner michalkleiner deleted the ux-287 branch November 17, 2025 20:48
@sgiehl sgiehl added this to the 5.6.0 milestone Nov 21, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

c: Design / UI For issues that impact Matomo's user interface or the design overall. Enhancement For new feature suggestions that enhance Matomo's capabilities or add a new report, new API etc.

Development

Successfully merging this pull request may close these issues.

3 participants