mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-10-12 06:54:04 +00:00
BUG: issue fix for dropdown reposition errror
This commit is contained in:
@@ -64,8 +64,6 @@ export function buildTagHeaderFilterExpression(selectedTagOptions) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function buildTagOptionsFromRows(rows, field = "tags") {
|
export function buildTagOptionsFromRows(rows, field = "tags") {
|
||||||
let options = [];
|
|
||||||
|
|
||||||
let parsedTags = [
|
let parsedTags = [
|
||||||
...new Map(
|
...new Map(
|
||||||
getRawTagValuesFromRows(rows, field)
|
getRawTagValuesFromRows(rows, field)
|
||||||
@@ -82,7 +80,7 @@ export function buildTagOptionsFromRows(rows, field = "tags") {
|
|||||||
done: tag.done,
|
done: tag.done,
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
.map((obj) => [JSON.stringify(obj), obj]),
|
.map((obj) => [obj.value, obj]),
|
||||||
).values(),
|
).values(),
|
||||||
];
|
];
|
||||||
if (!Array.isArray(parsedTags)) return;
|
if (!Array.isArray(parsedTags)) return;
|
||||||
@@ -184,6 +182,7 @@ export function customTagFilter(cell, onRendered, success, cancel, params) {
|
|||||||
input.style.width = "100%";
|
input.style.width = "100%";
|
||||||
input.type = "text";
|
input.type = "text";
|
||||||
let dropdownMenu = null;
|
let dropdownMenu = null;
|
||||||
|
let suppressScrollCloseUntil = 0;
|
||||||
|
|
||||||
Object.defineProperty(container, "value", {
|
Object.defineProperty(container, "value", {
|
||||||
get: () => input.value,
|
get: () => input.value,
|
||||||
@@ -221,11 +220,27 @@ export function customTagFilter(cell, onRendered, success, cancel, params) {
|
|||||||
activeTagDropdownCleanup = null;
|
activeTagDropdownCleanup = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
window.removeEventListener("scroll", positionDropdown, true);
|
window.removeEventListener("scroll", handleScroll, true);
|
||||||
window.removeEventListener("resize", positionDropdown);
|
window.removeEventListener("resize", positionDropdown);
|
||||||
document.removeEventListener("mousedown", handleOutsideClick, true);
|
document.removeEventListener("mousedown", handleOutsideClick, true);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const suppressScrollClose = () => {
|
||||||
|
suppressScrollCloseUntil = Date.now() + 300;
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleScroll = (event) => {
|
||||||
|
const target = event.target;
|
||||||
|
const isDropdownScroll =
|
||||||
|
target instanceof Node && dropdownMenu?.contains(target);
|
||||||
|
|
||||||
|
if (isDropdownScroll || Date.now() < suppressScrollCloseUntil) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
closeDropdown();
|
||||||
|
};
|
||||||
|
|
||||||
const handleOutsideClick = (event) => {
|
const handleOutsideClick = (event) => {
|
||||||
if (
|
if (
|
||||||
dropdownMenu?.contains(event.target) ||
|
dropdownMenu?.contains(event.target) ||
|
||||||
@@ -265,13 +280,14 @@ export function customTagFilter(cell, onRendered, success, cancel, params) {
|
|||||||
dropdownMenu.addEventListener("mousedown", (event) => {
|
dropdownMenu.addEventListener("mousedown", (event) => {
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
});
|
});
|
||||||
|
dropdownMenu.addEventListener("click", suppressScrollClose, true);
|
||||||
|
|
||||||
document.body.appendChild(dropdownMenu);
|
document.body.appendChild(dropdownMenu);
|
||||||
activeTagDropdownCleanup = closeDropdown;
|
activeTagDropdownCleanup = closeDropdown;
|
||||||
|
|
||||||
positionDropdown();
|
positionDropdown();
|
||||||
|
|
||||||
window.addEventListener("scroll", positionDropdown, true);
|
window.addEventListener("scroll", handleScroll, true);
|
||||||
window.addEventListener("resize", positionDropdown);
|
window.addEventListener("resize", positionDropdown);
|
||||||
document.addEventListener("mousedown", handleOutsideClick, true);
|
document.addEventListener("mousedown", handleOutsideClick, true);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
node_modules
|
node_modules
|
||||||
.env
|
.env
|
||||||
.env.*
|
.env.*
|
||||||
!.env.example
|
!.env.example
|
||||||
|
/cypress/videos
|
||||||
|
/cypress/screenshots
|
||||||
|
/results
|
||||||
Reference in New Issue
Block a user