Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
b38854e
Unified where the class mud-popover-provider comes from
versile2 Apr 4, 2025
f780f3a
Enhance popover functionality and cleanup code
versile2 Apr 4, 2025
964a66c
save to travel home still optimizing flip methods
versile2 Apr 4, 2025
7dc0d1d
flipping logic check complete
versile2 Apr 4, 2025
17ccef9
Improve readability and maintainability of mudPopover.js
versile2 Apr 5, 2025
4a2ccde
test viewer cases
versile2 Apr 5, 2025
ab2fac0
updated changes, still working on anchorpoint and top section
versile2 Apr 6, 2025
d8aeb36
final adjustments to flipping and mud-list overflow logic
versile2 Apr 7, 2025
97ed340
revert tooltip not in dom
versile2 Apr 7, 2025
11706b5
add overflowpadding to initialize
versile2 Apr 7, 2025
17ebfad
refactor, add overflow from options
versile2 Apr 7, 2025
507e90c
re-ordered initial flow and delayed hide
versile2 Apr 7, 2025
30fdd11
remove extra console messages
versile2 Apr 8, 2025
c7976e2
change to flip margin and get properheight and width from contentnode…
versile2 Apr 8, 2025
b0e1101
state save, reordered a few things for smoother processing
versile2 Apr 8, 2025
e2009e0
change from list to content node, remove extra logging, fix incorrect…
versile2 Apr 8, 2025
5381e01
adjust tests
versile2 Apr 8, 2025
725de88
Merge branch 'MudBlazor:dev' into refactor/popovers
versile2 Apr 8, 2025
4563571
Merge branch 'MudBlazor:dev' into refactor/popovers
versile2 Apr 8, 2025
51c292a
added unit test for partials
versile2 Apr 9, 2025
cc146bf
initial review changes
versile2 Apr 9, 2025
a0ab49f
regression fix for mudmenu, includes a new viewer case
versile2 Apr 11, 2025
86af6b9
removed extra console.log
versile2 Apr 11, 2025
692329c
nit
ScarletKuro Apr 19, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
flipping logic check complete
  • Loading branch information
versile2 committed Apr 4, 2025
commit 7dc0d1d7b1b030a68ec93d02f537116616e6776e
51 changes: 17 additions & 34 deletions src/MudBlazor/TScripts/mudPopover.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ window.mudpopoverHelper = {
baseTooltipZIndex: parseInt(getComputedStyle(document.documentElement)
.getPropertyValue('--mud-zindex-tooltip')) || 1600,

// static set of replacement valus
// static set of replacement values
flipClassReplacements: {
'top': {
'mud-popover-top-left': 'mud-popover-bottom-left',
Expand Down Expand Up @@ -140,7 +140,7 @@ window.mudpopoverHelper = {
offsetY = -selfRect.height;
}

console.log(`top: ${top}, left: ${left}, offsetX: ${offsetX}, offsetY: ${offsetY}`);
// console.log(`top: ${top}, left: ${left}, offsetX: ${offsetX}, offsetY: ${offsetY}`);
return {
top: top, left: left, offsetX: offsetX, offsetY: offsetY
};
Expand All @@ -162,7 +162,7 @@ window.mudpopoverHelper = {
classList.push(item);
}
}
console.log(replacementsList);
// console.log(replacementsList);
return window.mudpopoverHelper.calculatePopoverPosition(classList, boundingRect, selfRect);
},

Expand All @@ -179,7 +179,6 @@ window.mudpopoverHelper = {
if (!popoverContentNode) {
return;
}

const classList = popoverContentNode.classList;

// if the popover isn't open we stop
Expand Down Expand Up @@ -213,7 +212,6 @@ window.mudpopoverHelper = {
let top = postion.top;
let offsetX = postion.offsetX;
let offsetY = postion.offsetY;

// get the top/left/ from popoverContentNode if the popover has been hardcoded for position
if (classList.contains('mud-popover-position-override')) {
left = parseInt(popoverContentNode.style['left']) || left;
Expand All @@ -230,20 +228,9 @@ window.mudpopoverHelper = {
width: selfRect.width,
height: selfRect.height
};
}

}
// flipping logic
// get flip status
let selector = popoverContentNode.getAttribute("data-mudpopover-flip");
console.log(`starting: ${selector}`);
// if there has not been a flip and it's got an onopen class OR
// there is a flip-always class
if ((!selector && classList.contains('mud-popover-overflow-flip-onopen')) ||
classList.contains('mud-popover-overflow-flip-always')) {

// we know it's supposed to flip if able
selector = null;
popoverContentNode.removeAttribute('data-mudpopover-flip');
if (classList.contains('mud-popover-overflow-flip-onopen') || classList.contains('mud-popover-overflow-flip-always')) {

const appBarElements = document.getElementsByClassName("mud-appbar mud-appbar-fixed-top");
let appBarOffset = 0;
Expand All @@ -257,6 +244,10 @@ window.mudpopoverHelper = {
const deltaTop = top - selfRect.height - appBarOffset;
const spaceToTop = top - appBarOffset;
const deltaBottom = window.innerHeight - top - selfRect.height;
//console.log('self-width: ' + selfRect.width + ' | self-height: ' + selfRect.height);
//console.log('left: ' + deltaToLeft + ' | rigth:' + deltaToRight + ' | top: ' + deltaTop + ' | bottom: ' + deltaBottom + ' | spaceToTop: ' + spaceToTop);

let selector = popoverContentNode.mudPopoverFliped;

if (!selector) {
if (classList.contains('mud-popover-top-left')) {
Expand Down Expand Up @@ -335,15 +326,7 @@ window.mudpopoverHelper = {
top = newPosition.top;
offsetX = newPosition.offsetX;
offsetY = newPosition.offsetY;
//console.log(`what now: ${selector} | left: ${left} | top: ${top} | offsetX: ${offsetX} | offsetY: ${offsetY}`);
popoverContentNode.setAttribute('data-mudpopover-flip', 'flipped');

// if we are flip on open then store the true top/left
if (classList.contains('mud-popover-overflow-flip-onopen')) {
console.log(`setting flip top: ${top} | left: ${ left }`);
popoverContentNode.setAttribute('data-flip-left', left);
popoverContentNode.setAttribute('data-flip-top', top);
}
}
else {
// did not flip, ensure the left and top are inside bounds
Expand Down Expand Up @@ -377,6 +360,13 @@ window.mudpopoverHelper = {
if (list && list.offsetHeight > listMaxHeight) {
list.style.maxHeight = (listMaxHeight - listPadding) + 'px';
}
popoverContentNode.removeAttribute('data-mudpopover-flip');
}

if (classList.contains('mud-popover-overflow-flip-onopen')) {
if (!popoverContentNode.mudPopoverFliped) {
popoverContentNode.mudPopoverFliped = selector || 'none';
}
}
}

Expand All @@ -394,14 +384,6 @@ window.mudpopoverHelper = {
offsetY = 0;
}

// if it's been set to flip-onopen get the top/left from the attributes to reapply the offset
if (selector === 'flipped' && classList.contains('mud-popover-overflow-flip-onopen')) {
console.log(`calculated left ${left} | top ${top}`);
left = parseInt(popoverContentNode.getAttribute('data-flip-left')) || left;
top = parseInt(popoverContentNode.getAttribute('data-flip-top')) || top;
console.log(`left: ${left} | top: ${top} | offsetX: ${offsetX} | offsetY: ${offsetY}`);
}

popoverContentNode.style['left'] = (left + offsetX) + 'px';
popoverContentNode.style['top'] = (top + offsetY) + 'px';

Expand Down Expand Up @@ -572,6 +554,7 @@ class MudPopover {
}, delay);

// reset flip status
target.mudPopoverFliped = null;
target.removeAttribute('data-mudpopover-flip');
}
// data ticks is not 0 so let's reposition the popover and overlay
Expand Down