From 06304887fd7a9c790dd778a8e90965266367baf6 Mon Sep 17 00:00:00 2001 From: Sherod Taylor Date: Tue, 16 Jun 2015 14:39:19 -0400 Subject: [PATCH] [fixed] Link module adds extra space --- modules/Link.js | 4 ++-- modules/__tests__/Link-test.js | 44 ++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/modules/Link.js b/modules/Link.js index 11d892c6d5..446dec8b8e 100644 --- a/modules/Link.js +++ b/modules/Link.js @@ -81,8 +81,8 @@ export var Link = React.createClass({ // ignore if rendered outside of the context of a router, simplifies unit testing if (router && router.isActive(to, query)) { - if (props.activeClassName) - props.className += ` ${props.activeClassName}`; + if (props.activeClassName) + props.className += props.className !== '' ? ` ${props.activeClassName}` : props.activeClassName; if (props.activeStyle) Object.assign(props.style, props.activeStyle); diff --git a/modules/__tests__/Link-test.js b/modules/__tests__/Link-test.js index 9928837ec7..e35411a4dd 100644 --- a/modules/__tests__/Link-test.js +++ b/modules/__tests__/Link-test.js @@ -114,6 +114,50 @@ describe('A ', function () { }); }); + describe('when its route is active and className is empty', function () { + it('it shouldn\'t have an active class', function (done) { + var LinkWrapper = React.createClass({ + render() { + return ( +
+ Link + {this.props.children} +
+ ); + } + }); + + var a, steps = [ + function () { + a = div.querySelector('a'); + expect(a.className).toEqual('dontKillMe'); + this.transitionTo('hello'); + }, + function () { + expect(a.className).toEqual('dontKillMe'); + done(); + } + ]; + + function execNextStep() { + try { + steps.shift().apply(this, arguments); + } catch (error) { + done(error); + } + } + + render(( + + + + + + + ), div, execNextStep); + }); + }); + describe('when its route is active', function () { it('has its activeClassName', function (done) { var LinkWrapper = React.createClass({