Backport #23576 by @wxiaoguang When doing the refactoring: * #22950 I added some debug mode code (assertShown) to help to catch bugs, it did catch some bugs like: * #23074 If it has been proved that there is no more bugs, this assertion could be removed easily and clearly. Feel free to decide when to remove it (feel free to convert it from Draft to Ready for Review).
This commit is contained in:
parent
8abfbe2165
commit
026167f854
@ -1,23 +1,3 @@
|
||||
function getComputedStyleProperty(el, prop) {
|
||||
const cs = el ? window.getComputedStyle(el) : null;
|
||||
return cs ? cs[prop] : null;
|
||||
}
|
||||
|
||||
function isShown(el) {
|
||||
return getComputedStyleProperty(el, 'display') !== 'none';
|
||||
}
|
||||
|
||||
function assertShown(el, expectShown) {
|
||||
if (window.config.runModeIsProd) return;
|
||||
|
||||
// to help developers to catch display bugs, this assertion can be removed after next release cycle or if it has been proved that there is no bug.
|
||||
if (expectShown && !isShown(el)) {
|
||||
throw new Error('element is hidden but should be shown');
|
||||
} else if (!expectShown && isShown(el)) {
|
||||
throw new Error('element is shown but should be hidden');
|
||||
}
|
||||
}
|
||||
|
||||
function elementsCall(el, func, ...args) {
|
||||
if (typeof el === 'string' || el instanceof String) {
|
||||
el = document.querySelectorAll(el);
|
||||
@ -41,16 +21,10 @@ function elementsCall(el, func, ...args) {
|
||||
function toggleShown(el, force) {
|
||||
if (force === true) {
|
||||
el.classList.remove('gt-hidden');
|
||||
assertShown(el, true);
|
||||
} else if (force === false) {
|
||||
el.classList.add('gt-hidden');
|
||||
assertShown(el, false);
|
||||
} else if (force === undefined) {
|
||||
const wasShown = window.config.runModeIsProd ? undefined : isShown(el);
|
||||
el.classList.toggle('gt-hidden');
|
||||
if (wasShown !== undefined) {
|
||||
assertShown(el, !wasShown);
|
||||
}
|
||||
} else {
|
||||
throw new Error('invalid force argument');
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user