parent
284dd85a99
commit
f96c13d616
@ -0,0 +1 @@ |
||||
export { default } from './page-container.component' |
@ -1,18 +0,0 @@ |
||||
import React, { Component } from 'react' |
||||
import PropTypes from 'prop-types' |
||||
|
||||
export default class PageContainerContent extends Component { |
||||
|
||||
static propTypes = { |
||||
children: PropTypes.node.isRequired, |
||||
}; |
||||
|
||||
render () { |
||||
return ( |
||||
<div className="page-container__content"> |
||||
{this.props.children} |
||||
</div> |
||||
); |
||||
} |
||||
|
||||
} |
@ -0,0 +1 @@ |
||||
export { default } from './page-container-footer.component' |
@ -1,35 +0,0 @@ |
||||
import React, { Component } from 'react' |
||||
import PropTypes from 'prop-types' |
||||
|
||||
export default class PageContainerHeader extends Component { |
||||
|
||||
static propTypes = { |
||||
title: PropTypes.string, |
||||
subtitle: PropTypes.string, |
||||
onClose: PropTypes.func, |
||||
}; |
||||
|
||||
render () { |
||||
const { title, subtitle, onClose } = this.props |
||||
|
||||
return ( |
||||
<div className="page-container__header"> |
||||
|
||||
<div className="page-container__title"> |
||||
{title} |
||||
</div> |
||||
|
||||
<div className="page-container__subtitle"> |
||||
{subtitle} |
||||
</div> |
||||
|
||||
<div |
||||
className="page-container__header-close" |
||||
onClick={() => onClose()} |
||||
/> |
||||
|
||||
</div> |
||||
); |
||||
} |
||||
|
||||
} |
@ -0,0 +1 @@ |
||||
export { default } from './page-container-header.component' |
@ -0,0 +1,57 @@ |
||||
import React, { Component } from 'react' |
||||
import PropTypes from 'prop-types' |
||||
|
||||
export default class PageContainerHeader extends Component { |
||||
|
||||
static propTypes = { |
||||
title: PropTypes.string.isRequired, |
||||
subtitle: PropTypes.string, |
||||
onClose: PropTypes.func, |
||||
showBackButton: PropTypes.bool, |
||||
onBackButtonClick: PropTypes.func, |
||||
backButtonStyles: PropTypes.object, |
||||
backButtonString: PropTypes.string, |
||||
}; |
||||
|
||||
renderHeaderRow () { |
||||
const { showBackButton, onBackButtonClick, backButtonStyles, backButtonString } = this.props |
||||
|
||||
return showBackButton && ( |
||||
<div className="page-container__header-row"> |
||||
<span |
||||
className="page-container__back-button" |
||||
onClick={onBackButtonClick} |
||||
style={backButtonStyles} |
||||
> |
||||
{ backButtonString || 'Back' } |
||||
</span> |
||||
</div> |
||||
) |
||||
} |
||||
|
||||
render () { |
||||
const { title, subtitle, onClose } = this.props |
||||
|
||||
return ( |
||||
<div className="page-container__header"> |
||||
|
||||
{ this.renderHeaderRow() } |
||||
|
||||
<div className="page-container__title"> |
||||
{title} |
||||
</div> |
||||
|
||||
<div className="page-container__subtitle"> |
||||
{subtitle} |
||||
</div> |
||||
|
||||
<div |
||||
className="page-container__header-close" |
||||
onClick={() => onClose()} |
||||
/> |
||||
|
||||
</div> |
||||
) |
||||
} |
||||
|
||||
} |
@ -1,18 +1,72 @@ |
||||
import React, { Component } from 'react' |
||||
import PropTypes from 'prop-types' |
||||
|
||||
import PageContainerHeader from './page-container-header' |
||||
import PageContainerFooter from './page-container-footer' |
||||
|
||||
export default class PageContainer extends Component { |
||||
|
||||
static propTypes = { |
||||
children: PropTypes.node.isRequired, |
||||
// PageContainerHeader props
|
||||
title: PropTypes.string.isRequired, |
||||
subtitle: PropTypes.string, |
||||
onClose: PropTypes.func, |
||||
showBackButton: PropTypes.bool, |
||||
onBackButtonClick: PropTypes.func, |
||||
backButtonStyles: PropTypes.object, |
||||
backButtonString: PropTypes.string, |
||||
// Content props
|
||||
ContentComponent: PropTypes.func, |
||||
contentComponentProps: PropTypes.object, |
||||
// PageContainerFooter props
|
||||
onCancel: PropTypes.func, |
||||
cancelText: PropTypes.string, |
||||
onSubmit: PropTypes.func, |
||||
submitText: PropTypes.string, |
||||
disabled: PropTypes.bool, |
||||
}; |
||||
|
||||
render () { |
||||
const { |
||||
title, |
||||
subtitle, |
||||
onClose, |
||||
showBackButton, |
||||
onBackButtonClick, |
||||
backButtonStyles, |
||||
backButtonString, |
||||
ContentComponent, |
||||
contentComponentProps, |
||||
onCancel, |
||||
cancelText, |
||||
onSubmit, |
||||
submitText, |
||||
disabled, |
||||
} = this.props |
||||
|
||||
return ( |
||||
<div className="page-container"> |
||||
{this.props.children} |
||||
<PageContainerHeader |
||||
title={title} |
||||
subtitle={subtitle} |
||||
onClose={onClose} |
||||
showBackButton={showBackButton} |
||||
onBackButtonClick={onBackButtonClick} |
||||
backButtonStyles={backButtonStyles} |
||||
backButtonString={backButtonString} |
||||
/> |
||||
<div className="page-container__content"> |
||||
<ContentComponent { ...contentComponentProps } /> |
||||
</div> |
||||
<PageContainerFooter |
||||
onCancel={onCancel} |
||||
cancelText={cancelText} |
||||
onSubmit={onSubmit} |
||||
submitText={submitText} |
||||
disabled={disabled} |
||||
/> |
||||
</div> |
||||
); |
||||
) |
||||
} |
||||
|
||||
} |
||||
|
Loading…
Reference in new issue