diff options
| author | Igor Minar | 2011-08-14 03:24:09 -0700 |
|---|---|---|
| committer | Igor Minar | 2011-08-19 00:59:44 -0700 |
| commit | 4c8eaa1eb05ba98d30ff83f4420d6fcd69045d99 (patch) | |
| tree | dc2cf6febf4af2dc081e81355451fc728c792e69 | |
| parent | 4ba35eb97e8b7b9cf255e556fa0b86c892e76b1b (diff) | |
| download | angular.js-4c8eaa1eb05ba98d30ff83f4420d6fcd69045d99.tar.bz2 | |
refactor(jqLite): remove jqLite show/hide support
it turns out that even with our tricks, jqLite#show is not usable in
practice and definitely not on par with jQuery. so rather than
introducing half-baked apis which introduce issues, I'm removing them.
I also removed show/hide uses from docs, since they are not needed.
Breaks jqLite.hide/jqLite.show which are no longer available.
| -rw-r--r-- | docs/src/templates/doc_widgets.css | 6 | ||||
| -rw-r--r-- | docs/src/templates/doc_widgets.js | 2 | ||||
| -rw-r--r-- | src/Angular.js | 1 | ||||
| -rw-r--r-- | src/directives.js | 4 | ||||
| -rw-r--r-- | src/jqLite.js | 28 | ||||
| -rw-r--r-- | test/jqLiteSpec.js | 56 |
6 files changed, 2 insertions, 95 deletions
diff --git a/docs/src/templates/doc_widgets.css b/docs/src/templates/doc_widgets.css index e308ed11..6b702644 100644 --- a/docs/src/templates/doc_widgets.css +++ b/docs/src/templates/doc_widgets.css @@ -1,9 +1,3 @@ -@namespace doc url("http://docs.angularjs.org/"); - -doc\:example { - display: none; -} - ul.doc-example { list-style-type: none; position: relative; diff --git a/docs/src/templates/doc_widgets.js b/docs/src/templates/doc_widgets.js index 1fce70a2..0be15101 100644 --- a/docs/src/templates/doc_widgets.js +++ b/docs/src/templates/doc_widgets.js @@ -23,7 +23,6 @@ angular.widget('doc:example', function(element){ this.descend(true); //compile the example code - element.hide(); //jQuery find() methods in this widget contain primitive selectors on purpose so that we can use //jqlite instead. jqlite's find() method currently supports onlt getElementsByTagName! @@ -53,7 +52,6 @@ element.html(''); element.append(tabs); - element.show(); var script = (exampleSrc.match(/<script[^\>]*>([\s\S]*)<\/script>/) || [])[1] || ''; try { diff --git a/src/Angular.js b/src/Angular.js index c26b799a..60f6e868 100644 --- a/src/Angular.js +++ b/src/Angular.js @@ -64,7 +64,6 @@ var _undefined = undefined, $boolean = 'boolean', $console = 'console', $date = 'date', - $display = 'display', $element = 'element', $function = 'function', $length = 'length', diff --git a/src/directives.js b/src/directives.js index 64a06359..70398c81 100644 --- a/src/directives.js +++ b/src/directives.js @@ -738,7 +738,7 @@ angularDirective("ng:class-even", ngClass(function(i){return i % 2 === 1;})); angularDirective("ng:show", function(expression, element){ return function(element){ this.$onEval(function(){ - toBoolean(this.$eval(expression)) ? element.show() : element.hide(); + element.css('display', toBoolean(this.$eval(expression)) ? '' : 'none'); }, element); }; }); @@ -779,7 +779,7 @@ angularDirective("ng:show", function(expression, element){ angularDirective("ng:hide", function(expression, element){ return function(element){ this.$onEval(function(){ - toBoolean(this.$eval(expression)) ? element.hide() : element.show(); + element.css('display', toBoolean(this.$eval(expression)) ? 'none' : ''); }, element); }; }); diff --git a/src/jqLite.js b/src/jqLite.js index 3d7319a8..f8cd9a1f 100644 --- a/src/jqLite.js +++ b/src/jqLite.js @@ -47,8 +47,6 @@ * - [text()](http://api.jquery.com/text/) * - [trigger()](http://api.jquery.com/trigger/) * - [eq()](http://api.jquery.com/eq/) - * - [show()](http://api.jquery.com/show/) - * - [hide()](http://api.jquery.com/hide/) * * ## Additionally these methods extend the jQuery and are available in both jQuery and jQuery lite * version: @@ -456,32 +454,6 @@ forEach({ return element.getElementsByTagName(selector); }, - hide: function(element) { - if (element.style) { - if(element.style.display !=="none" && !JQLiteData(element,"olddisplay")) { - JQLiteData( element, "olddisplay", element.style.display); - } - element.style.display = "none"; - } - }, - - show: function(element) { - if(element.style) { - var display = element.style.display; - if ( display === "" || display === "none" ) { - - // restore the original value overwritten by hide if present or default to nothing (which - // will let browser correctly choose between 'inline' or 'block') - element.style.display = JQLiteData(element, "olddisplay") || ""; - - // if the previous didn't make the element visible then there are some cascading rules that - // are still hiding it, so let's default to 'block', which might be incorrect in case of - // elmenents that should be 'inline' by default, but oh well :-) - if (!isVisible([element])) element.style.display = "block"; - } - } - }, - clone: JQLiteClone }, function(fn, name){ /** diff --git a/test/jqLiteSpec.js b/test/jqLiteSpec.js index 11b9db93..309fb243 100644 --- a/test/jqLiteSpec.js +++ b/test/jqLiteSpec.js @@ -511,62 +511,6 @@ describe('jqLite', function(){ }); - describe('hide', function() { - var element; - - afterEach(function() { - if (element) dealoc(element); - }); - - it('should hide the element', function() { - element = jqLite('<div></div>'); - expect(isCssVisible(element)).toBe(true); - element.hide(); - expect(isCssVisible(element)).toBe(false); - }); - }); - - - describe('show', function() { - var element; - - afterEach(function() { - if (element) dealoc(element); - element.remove(); - }); - - - it('should show the element ', function() { - element = jqLite('<div></div>'); - element[0].style.display = 'none'; - expect(isCssVisible(element)).toBe(false); - element.show(); - expect(isCssVisible(element)).toBe(true); - }); - - - it('should show previously hidden element and preserve the display value', function() { - element = jqLite('<div style="display:inline">xx</div>'); - jqLite(document.body).append(element); - element.hide(); - expect(isCssVisible(element)).toBe(false); - element.show(); - expect(element[0].style.display).toBe('inline'); - expect(isCssVisible(element)).toBe(true); - - element[0].style.display = 'block'; - element.hide(); - expect(isCssVisible(element)).toBe(false); - element.show(); - expect(isCssVisible(element)).toBe(true); - - // this totally doesn't make sense, it should be 'block', but jquery (1.4.2+1.6.2) behaves - // this way. - expect(element[0].style.display).toBe('inline'); - }); - }); - - describe('eq', function() { it('should select the nth element ', function() { var element = jqLite('<div><span>aa</span></div><div><span>bb</span></div>'); |
