Skip to content

Commit

Permalink
Add defaultTitle as fallback when title is not defined
Browse files Browse the repository at this point in the history
  • Loading branch information
jmurzy committed Mar 24, 2016
1 parent 7759902 commit 372a027
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 2 deletions.
6 changes: 5 additions & 1 deletion src/Helmet.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,9 @@ const getTitleFromPropsList = (propsList) => {
return innermostTemplate.replace(/\%s/g, innermostTitle);
}

return innermostTitle || "";
const innermostDefaultTitle = getInnermostProperty(propsList, "defaultTitle");

return innermostTitle || innermostDefaultTitle || "";
};

const getOnChangeClientState = (propsList) => {
Expand Down Expand Up @@ -336,6 +338,7 @@ const Helmet = (Component) => {
class HelmetWrapper extends React.Component {
/**
* @param {String} title: "Title"
* @param {String} defaultTitle: "Default Title"
* @param {Function} onChangeClientState: "(newState) => console.log(newState)"
* @param {String} titleTemplate: "MySite.com - %s"
* @param {Object} base: {"target": "_blank", "href": "http://mysite.com/"}
Expand All @@ -346,6 +349,7 @@ const Helmet = (Component) => {
*/
static propTypes = {
title: React.PropTypes.string,
defaultTitle: React.PropTypes.string,
onChangeClientState: React.PropTypes.func,
titleTemplate: React.PropTypes.string,
base: React.PropTypes.object,
Expand Down
17 changes: 16 additions & 1 deletion src/test/HelmetTest.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ describe("Helmet", () => {
describe("title", () => {
it("can update page title", () => {
ReactDOM.render(
<Helmet title={"Test Title"} />,
<Helmet title={"Test Title"}
defaultTitle={"Fallback"} />,
container
);

Expand Down Expand Up @@ -68,10 +69,24 @@ describe("Helmet", () => {
expect(document.title).to.equal("Main Title");
});

it("will use defaultTitle if no title is defined", () => {
ReactDOM.render(
<Helmet
title={""}
defaultTitle={"Fallback"}
titleTemplate={"This is a %s of the titleTemplate feature"}
/>,
container
);

expect(document.title).to.equal("Fallback");
});

it("will use a titleTemplate if defined", () => {
ReactDOM.render(
<Helmet
title={"Test"}
defaultTitle={"Fallback"}
titleTemplate={"This is a %s of the titleTemplate feature"}
/>,
container
Expand Down

0 comments on commit 372a027

Please sign in to comment.