patternplate-client
Version:
Universal javascript client application for patternplate
74 lines (69 loc) • 1.98 kB
JavaScript
import React, {PropTypes as t} from 'react';
import join from 'classnames';
import PatternSources from './pattern-sources';
import PatternTools from './pattern-tools';
export default PatternToolbar;
function PatternToolbar(props) {
const className = join('pattern-toolbar', {
'pattern-toolbar--expanded': props.expanded
});
return (
<div className={className}>
<PatternSources
base={props.base}
environment={props.environment}
location={props.location}
onConcernChange={props.onConcernChange}
onFileRequest={props.onFileRequest}
onTypeChange={props.onTypeChange}
sources={props.code}
/>
<PatternTools
activeSource={props.activeSource}
base={props.base}
dependencies={props.dependencies}
dependents={props.dependents}
environment={props.environment}
environments={props.environments}
expanded={props.expanded}
hasCode={props.code.length > 0}
id={props.id}
name={props.name}
location={props.location}
onEnvironmentChange={props.onEnvironmentChange}
/>
</div>
);
}
PatternToolbar.propTypes = {
activeSource: t.string.isRequired,
base: t.string.isRequired,
code: t.arrayOf(t.object).isRequired,
dependencies: t.arrayOf(t.shape({
id: t.string.isRequired,
localName: t.string.isRequired,
name: t.string.isRequired,
version: t.string.isRequired
})).isRequired,
dependents: t.arrayOf(t.shape({
id: t.string.isRequired,
name: t.string.isRequired,
version: t.string.isRequired
})).isRequired,
environment: t.string.isRequired,
environments: t.arrayOf(t.shape({
id: t.string.isRequired,
name: t.string.isRequired
})).isRequired,
expanded: t.bool.isRequired,
id: t.string.isRequired,
location: t.shape({
pathname: t.string.isRequired,
query: t.object.isRequired
}).isRequired,
name: t.string.isRequired,
onConcernChange: t.func.isRequired,
onEnvironmentChange: t.func.isRequired,
onFileRequest: t.func.isRequired,
onTypeChange: t.func.isRequired
};