diff --git a/app/assets/stylesheets/pageflow/themes/default/player_controls/vjs_mapping.scss b/app/assets/stylesheets/pageflow/themes/default/player_controls/vjs_mapping.scss index 002ca81c05..f9b8b74e84 100644 --- a/app/assets/stylesheets/pageflow/themes/default/player_controls/vjs_mapping.scss +++ b/app/assets/stylesheets/pageflow/themes/default/player_controls/vjs_mapping.scss @@ -3,7 +3,7 @@ $vjs-selector-mapping: ( page_with_progress_bar: ".audioPage, .videoPage", - background: ".videoWrapper, .audioPage .backgroundArea", + background: ".page_background-for_page_with_player_controls", background-idle: ".is_idle .videoWrapper, .audioPage.is_idle .backgroundArea", diff --git a/node_package/src/components/PageBackground.jsx b/node_package/src/components/PageBackground.jsx index 58fd085435..1e4502138b 100644 --- a/node_package/src/components/PageBackground.jsx +++ b/node_package/src/components/PageBackground.jsx @@ -1,20 +1,32 @@ -import {Component} from 'react'; +import classNames from 'classnames'; /** * @desc Use inside {@link * pageflow.react.components.PageWrapper|PageWrapper} to build the * default page structure. * + * @prop pageHasPlayerControls + * Set to true if player controls are present on the page. This can + * be used by themes to apply different styles to the background. + * * @alias pageflow.react.components.PageBackground * @class * @since 0.1 */ -export default class extends Component { - render() { - return ( -
- {this.props.children} -
- ); - } +export default function PageBackground(props) { + return ( +
+ {props.children} +
+ ); +} + +PageBackground.propTypes = { + pageHasPlayerControls: React.PropTypes.bool +}; + +function className({pageHasPlayerControls}) { + return classNames('backgroundArea page_background', { + 'page_background-for_page_with_player_controls': pageHasPlayerControls + }); } diff --git a/node_package/src/components/__spec__/PageBackground-spec.jsx b/node_package/src/components/__spec__/PageBackground-spec.jsx new file mode 100644 index 0000000000..ec547bc56e --- /dev/null +++ b/node_package/src/components/__spec__/PageBackground-spec.jsx @@ -0,0 +1,30 @@ +import PageBackground from '../PageBackground'; + +import {expect} from 'support/chai'; +import {shallow} from 'enzyme'; + +describe('PageBackground', () => { + it('has backgroundArea class', () => { + const wrapper = shallow(); + + expect(wrapper).to.have.className('backgroundArea'); + }); + + it('has page_background class', () => { + const wrapper = shallow(); + + expect(wrapper).to.have.className('page_background'); + }); + + it('does not have page_background-for_page_with_player_controls by default', () => { + const wrapper = shallow(); + + expect(wrapper).not.to.have.className('page_background-for_page_with_player_controls'); + }); + + it('has page_background-for_page_with_player_controls if pageHasPlayerControls is true', () => { + const wrapper = shallow(); + + expect(wrapper).to.have.className('page_background-for_page_with_player_controls'); + }); +}); diff --git a/node_package/src/interactivePageBackground/components/Page.jsx b/node_package/src/interactivePageBackground/components/Page.jsx index d08ced8950..4a2284c30e 100644 --- a/node_package/src/interactivePageBackground/components/Page.jsx +++ b/node_package/src/interactivePageBackground/components/Page.jsx @@ -62,7 +62,7 @@ class PageWithInteractiveBackground extends React.Component { onQualityMenuItemClick={this.props.onQualityMenuItemClick} hiddenOnPhone={this.props.textHasBeenHidden && !this.props.textIsHidden} /> - +
{this.props.children}
diff --git a/node_package/src/media/components/Page.jsx b/node_package/src/media/components/Page.jsx index e55fd7c988..d4d53f9fea 100644 --- a/node_package/src/media/components/Page.jsx +++ b/node_package/src/media/components/Page.jsx @@ -36,7 +36,7 @@ export function MediaPage(props) { willAutoplay(props), props.textTracks, playerState)}> - + {props.children}