diff --git a/Docs/Delegators/Delegator.Fx.Reveal.md b/Docs/Delegators/Delegator.Fx.Reveal.md new file mode 100644 index 0000000..8552e84 --- /dev/null +++ b/Docs/Delegators/Delegator.Fx.Reveal.md @@ -0,0 +1,26 @@ +Delegator Triggers: Reveal, Dissolve, Nix, ToggleReveal +======================= + +Provides delegated links to use [Fx.Reveal](http://mootools.net/docs/more/Fx/Fx.Reveal) on a given target. + +### Examples + +
+ Toggle parent + Toggle self + Reveal Parent + Reveal Self + Dissolve parent + Dissolve self + nix parent + Nix self +
+\ + Toggle parent\ + Toggle self\ + Reveal Parent\ + Reveal Self\ + Dissolve parent\ + Dissolve self\ + nix parent\ + Nix self\ +
' + ); + + var del = new Delegator(); + var getEls = function(){ + var clone = dom.clone(true, true); + del.attach(clone); + return { + dom: clone, + toggleParent: clone.getElement('a#toggleParent'), + toggleSelf: clone.getElement('a#toggleSelf'), + revealParent: clone.getElement('a#revealParent'), + revealSelf: clone.getElement('a#revealSelf'), + dissolveParent: clone.getElement('a#dissolveParent'), + dissolveSelf: clone.getElement('a#dissolveSelf'), + nixParent: clone.getElement('a#nixParent'), + nixSelf: clone.getElement('a#nixSelf') + }; + }; + + describe('Delegator.FxReveal', function(){ + // parent toggle + it('should toggle the reveal: parent > hidden', function(){ + var els = getEls(); + expect(els.dom.getStyle('display')).toBe('block'); + del.trigger('toggleReveal', els.toggleParent, 'click'); + waits(35); + (function(){ + expect(els.dom.getStyle('display')).toBe('none'); + }).delay(30); + }); + + it('should toggle the reveal: parent > visible', function(){ + var els = getEls(); + els.dom.setStyle('display', 'none') + del.trigger('toggleReveal', els.toggleParent, 'click'); + waits(35); + (function(){ + expect(els.dom.getStyle('display')).toBe('block'); + }).delay(30); + }); + + + // self toggle + it('should toggle the reveal: self > hidden', function(){ + var els = getEls(); + expect(els.toggleSelf.getStyle('display')).toBe('block'); + del.trigger('toggleReveal', els.toggleSelf, 'click'); + waits(35); + (function(){ + expect(els.toggleSelf.getStyle('display')).toBe('none'); + }).delay(30); + }); + + it('should toggle the reveal: self > visible', function(){ + var els = getEls(); + els.toggleSelf.setStyle('display', 'none') + del.trigger('toggleReveal', els.toggleSelf, 'click'); + waits(35); + (function(){ + expect(els.toggleSelf.getStyle('display')).toBe('block'); + }).delay(30); + }); + + // parent reveal + it('should not reveal: parent is visible already', function(){ + var els = getEls(); + expect(els.dom.getStyle('display')).toBe('block'); + del.trigger('reveal', els.revealParent, 'click'); + waits(35); + (function(){ + expect(els.dom.getStyle('display')).toBe('block'); + }).delay(30); + }); + + it('should reveal: parent > visible', function(){ + var els = getEls(); + els.dom.setStyle('display', 'none') + del.trigger('reveal', els.revealParent, 'click'); + waits(35); + (function(){ + expect(els.dom.getStyle('display')).toBe('block'); + }).delay(30); + }); + + // self reveal + it('should not reveal: self is visible already', function(){ + var els = getEls(); + del.trigger('reveal', els.revealSelf, 'click'); + waits(35); + (function(){ + expect(els.revealSelf.getStyle('display')).toBe('block'); + }).delay(30); + }); + + it('should reveal: self > visible', function(){ + var els = getEls(); + els.revealSelf.setStyle('display', 'none') + del.trigger('reveal', els.revealSelf, 'click'); + waits(35); + (function(){ + expect(els.revealSelf.getStyle('display')).toBe('block'); + }).delay(30); + }); + + // parent dissolve + it('should not dissolve: parent is hidden already', function(){ + var els = getEls(); + els.dom.setStyle('display', 'none'); + del.trigger('dissolve', els.dissolveParent, 'click'); + waits(35); + (function(){ + expect(els.dom.getStyle('display')).toBe('none'); + }).delay(30); + }); + + it('should dissolve: parent > hidden', function(){ + var els = getEls(); + del.trigger('dissolve', els.dissolveParent, 'click'); + waits(35); + (function(){ + expect(els.dom.getStyle('display')).toBe('none'); + }).delay(30); + }); + + // parent dissolve + it('should dissolve: self > hidden', function(){ + var els = getEls(); + del.trigger('dissolve', els.dissolveSelf, 'click'); + waits(35); + (function(){ + expect(els.dissolveSelf.getStyle('display')).toBe('none'); + }).delay(30); + }); + + it('should dissolve: self > hidden', function(){ + var els = getEls(); + del.trigger('dissolve', els.dissolveSelf, 'click'); + waits(35); + (function(){ + expect(els.dissolveSelf.getStyle('display')).toBe('none'); + }).delay(30); + }); + + // nix + it('should nix: self', function(){ + var els = getEls(); + del.trigger('nix', els.nixSelf, 'click'); + waits(35); + (function(){ + expect(els.nixSelf.getParent()).toBeNull(); + }).delay(30); + }); + + it('should nix: parent', function(){ + var els = getEls(); + els.dom.inject(document.body).setStyle('display', 'none'); + del.trigger('nix', els.nixParent, 'click'); + waits(35); + (function(){ + expect(els.dom.getParent()).toBeNull(); + }).delay(30); + }); + + }); +})(); \ No newline at end of file diff --git a/Tests/Specs/package.yml b/Tests/Specs/package.yml index cf43769..3088743 100644 --- a/Tests/Specs/package.yml +++ b/Tests/Specs/package.yml @@ -19,4 +19,5 @@ sources: - "more-behaviors/Delegators/Delegator.AddRemoveClass.js" - "more-behaviors/Delegators/Delegator.Ajax.js" - "more-behaviors/Delegators/Delegator.CheckAllOrNone.js" + - "more-behaviors/Delegators/Delegator.FxReveal.js" - "more-behaviors/Delegators/Delegator.SubmitLink.js" \ No newline at end of file diff --git a/package.yml b/package.yml index 9af690e..bbcb60b 100644 --- a/package.yml +++ b/package.yml @@ -23,4 +23,5 @@ sources: - "Source/Delegators/Delegator.AddRemoveClass.js" - "Source/Delegators/Delegator.Ajax.js" - "Source/Delegators/Delegator.CheckAllOrNone.js" + - "Source/Delegators/Delegator.FxReveal.js" - "Source/Delegators/Delegator.SubmitLink.js"