mirror of
https://github.com/ascribe/onion.git
synced 2025-02-14 21:10:27 +01:00
refactor breadcrumbs to attributes
This commit is contained in:
parent
6dab66ec61
commit
406cee5bd3
@ -11,7 +11,6 @@ let Navigation = Router.Navigation;
|
|||||||
|
|
||||||
let SlidesContainer = React.createClass({
|
let SlidesContainer = React.createClass({
|
||||||
propTypes: {
|
propTypes: {
|
||||||
breadcrumbs: React.PropTypes.arrayOf(React.PropTypes.string),
|
|
||||||
children: React.PropTypes.arrayOf(React.PropTypes.element),
|
children: React.PropTypes.arrayOf(React.PropTypes.element),
|
||||||
forwardProcess: React.PropTypes.bool.isRequired
|
forwardProcess: React.PropTypes.bool.isRequired
|
||||||
},
|
},
|
||||||
@ -135,15 +134,31 @@ let SlidesContainer = React.createClass({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
renderBreadCrumbs() {
|
extractBreadcrumbs() {
|
||||||
if (this.props.breadcrumbs) {
|
let breadcrumbs = [];
|
||||||
let numSlides = this.props.breadcrumbs.length;
|
|
||||||
|
ReactAddons.Children.map(this.props.children, (child) => {
|
||||||
|
breadcrumbs.push(child.props['data-slide-title']);
|
||||||
|
});
|
||||||
|
|
||||||
|
return breadcrumbs;
|
||||||
|
},
|
||||||
|
|
||||||
|
renderBreadcrumbs() {
|
||||||
|
let breadcrumbs = this.extractBreadcrumbs();
|
||||||
|
let numOfChildren = React.Children.count(this.props.children);
|
||||||
|
|
||||||
|
// check if every child/slide has a title,
|
||||||
|
// otherwise do not display the breadcrumbs at all
|
||||||
|
if(breadcrumbs.length === numOfChildren) {
|
||||||
|
let numSlides = breadcrumbs.length;
|
||||||
let columnWidth = Math.floor(12 / numSlides);
|
let columnWidth = Math.floor(12 / numSlides);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="row" style={{width: this.state.containerWidth}}>
|
<div className="row" style={{width: this.state.containerWidth}}>
|
||||||
<div className="col-md-8 col-md-offset-2 col-sm-10 col-sm-offset-1 col-xs-12">
|
<div className="col-md-8 col-md-offset-2 col-sm-10 col-sm-offset-1 col-xs-12">
|
||||||
<div className="no-margin row ascribe-breadcrumb-container">
|
<div className="no-margin row ascribe-breadcrumb-container">
|
||||||
{this.props.breadcrumbs.map((breadcrumb, i) => {
|
{breadcrumbs.map((breadcrumb, i) => {
|
||||||
return (
|
return (
|
||||||
<Col
|
<Col
|
||||||
className="no-padding"
|
className="no-padding"
|
||||||
@ -151,7 +166,7 @@ let SlidesContainer = React.createClass({
|
|||||||
key={i}>
|
key={i}>
|
||||||
<div className="ascribe-breadcrumb">
|
<div className="ascribe-breadcrumb">
|
||||||
<a className={this.state.slideNum === i ? 'active' : ''}>
|
<a className={this.state.slideNum === i ? 'active' : ''}>
|
||||||
{this.props.breadcrumbs[i]}
|
{breadcrumb}
|
||||||
<span className={i === numSlides - 1 ? 'invisible' : '' + 'pull-right glyphicon glyphicon-chevron-right'}>
|
<span className={i === numSlides - 1 ? 'invisible' : '' + 'pull-right glyphicon glyphicon-chevron-right'}>
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
@ -163,8 +178,9 @@ let SlidesContainer = React.createClass({
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
} else {
|
||||||
return null;
|
return null;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
// Since we need to give the slides a width, we need to call ReactAddons.addons.cloneWithProps
|
// Since we need to give the slides a width, we need to call ReactAddons.addons.cloneWithProps
|
||||||
@ -186,7 +202,7 @@ let SlidesContainer = React.createClass({
|
|||||||
<div
|
<div
|
||||||
className="container ascribe-sliding-container-wrapper"
|
className="container ascribe-sliding-container-wrapper"
|
||||||
ref="containerWrapper">
|
ref="containerWrapper">
|
||||||
{this.renderBreadCrumbs()}
|
{this.renderBreadcrumbs()}
|
||||||
<div
|
<div
|
||||||
className="container ascribe-sliding-container"
|
className="container ascribe-sliding-container"
|
||||||
style={{
|
style={{
|
||||||
|
@ -138,9 +138,8 @@ let CylandRegisterPiece = React.createClass({
|
|||||||
return (
|
return (
|
||||||
<SlidesContainer
|
<SlidesContainer
|
||||||
ref="slidesContainer"
|
ref="slidesContainer"
|
||||||
breadcrumbs={['Register work', 'Additional details', 'Loan']}
|
|
||||||
forwardProcess={true}>
|
forwardProcess={true}>
|
||||||
<div>
|
<div data-slide-title="Register work">
|
||||||
<Row className="no-margin">
|
<Row className="no-margin">
|
||||||
<Col xs={12} sm={10} md={8} smOffset={1} mdOffset={2}>
|
<Col xs={12} sm={10} md={8} smOffset={1} mdOffset={2}>
|
||||||
<RegisterPieceForm
|
<RegisterPieceForm
|
||||||
@ -167,7 +166,7 @@ let CylandRegisterPiece = React.createClass({
|
|||||||
</Col>
|
</Col>
|
||||||
</Row>
|
</Row>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div data-slide-title="Additional details">
|
||||||
<Row className="no-margin">
|
<Row className="no-margin">
|
||||||
<Col xs={12} sm={10} md={8} smOffset={1} mdOffset={2}>
|
<Col xs={12} sm={10} md={8} smOffset={1} mdOffset={2}>
|
||||||
<CylandAdditionalDataForm
|
<CylandAdditionalDataForm
|
||||||
@ -176,7 +175,7 @@ let CylandRegisterPiece = React.createClass({
|
|||||||
</Col>
|
</Col>
|
||||||
</Row>
|
</Row>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div data-slide-title="Loan">
|
||||||
<Row className="no-margin">
|
<Row className="no-margin">
|
||||||
<Col xs={12} sm={10} md={8} smOffset={1} mdOffset={2}>
|
<Col xs={12} sm={10} md={8} smOffset={1} mdOffset={2}>
|
||||||
<LoanForm
|
<LoanForm
|
||||||
|
Loading…
Reference in New Issue
Block a user