Copybara bot | be50d49 | 2023-11-30 00:16:42 +0100 | [diff] [blame] | 1 | define( [ |
| 2 | "../../core", |
| 3 | "../../core/isAttached" |
| 4 | |
| 5 | // css is assumed |
| 6 | ], function( jQuery, isAttached ) { |
| 7 | "use strict"; |
| 8 | |
| 9 | // isHiddenWithinTree reports if an element has a non-"none" display style (inline and/or |
| 10 | // through the CSS cascade), which is useful in deciding whether or not to make it visible. |
| 11 | // It differs from the :hidden selector (jQuery.expr.pseudos.hidden) in two important ways: |
| 12 | // * A hidden ancestor does not force an element to be classified as hidden. |
| 13 | // * Being disconnected from the document does not force an element to be classified as hidden. |
| 14 | // These differences improve the behavior of .toggle() et al. when applied to elements that are |
| 15 | // detached or contained within hidden ancestors (gh-2404, gh-2863). |
| 16 | return function( elem, el ) { |
| 17 | |
| 18 | // isHiddenWithinTree might be called from jQuery#filter function; |
| 19 | // in that case, element will be second argument |
| 20 | elem = el || elem; |
| 21 | |
| 22 | // Inline style trumps all |
| 23 | return elem.style.display === "none" || |
| 24 | elem.style.display === "" && |
| 25 | |
| 26 | // Otherwise, check computed style |
| 27 | // Support: Firefox <=43 - 45 |
| 28 | // Disconnected elements can have computed display: none, so first confirm that elem is |
| 29 | // in the document. |
| 30 | isAttached( elem ) && |
| 31 | |
| 32 | jQuery.css( elem, "display" ) === "none"; |
| 33 | }; |
| 34 | } ); |