Skip to content

Commit

Permalink
fixed more layout to new design #153
Browse files Browse the repository at this point in the history
  • Loading branch information
ivaosthu authored and ivarconr committed Feb 20, 2020
1 parent a5b5481 commit cd6fde6
Show file tree
Hide file tree
Showing 9 changed files with 125 additions and 54 deletions.
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
},
"dependencies": {},
"devDependencies": {
"babel-eslint": "^7.0.0",
"eslint": "^3.4.0",
"eslint-config-finn": "1.0.0-alpha.11",
"eslint-config-finn-react": "^1.0.0-alpha.2",
Expand Down
2 changes: 1 addition & 1 deletion packages/unleash-frontend-next/index.html
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<!doctype html>
<html>
<head>
<title>Unleash UI</title>
<title>Unleash Admin</title>
<link rel="stylesheet" href="/static/bundle.css" />
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700" rel="stylesheet">
Expand Down
10 changes: 10 additions & 0 deletions packages/unleash-frontend-next/src/.eslintrc
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{
"parser": "babel-eslint",
"extends": [
"finn",
"finn-react",
Expand All @@ -8,5 +9,14 @@
"browser": true,
"commonjs": true,
"es6": true
},
"parserOptions": {
"ecmaVersion": 7,
"ecmaFeatures": {
"experimentalObjectRestSpread": true,
"classes":true,
"spread":true,
"restParams": true
}
}
}
6 changes: 2 additions & 4 deletions packages/unleash-frontend-next/src/App.jsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React, { Component } from 'react';
import { Layout, Panel, NavDrawer, AppBar, IconButton } from 'react-toolbox';
import { Layout, Panel, NavDrawer, AppBar } from 'react-toolbox';
import style from './style';

import Navigation from './Navigation';
Expand All @@ -17,9 +17,7 @@ export default class App extends Component {
render () {
return (
<div className={style.container}>
<AppBar>
<IconButton icon="menu" onClick={ this.toggleDrawerActive }/>
</AppBar>
<AppBar title="Unleash Admin" leftIcon="menu" onLeftIconClick={this.toggleDrawerActive} />
<Layout>
<NavDrawer active={this.state.drawerActive} permanentAt="sm" style={{ width: '200px' }}>
<Navigation />
Expand Down
27 changes: 20 additions & 7 deletions packages/unleash-frontend-next/src/Navigation.jsx
Original file line number Diff line number Diff line change
@@ -1,19 +1,32 @@
import React, { Component } from 'react';
import { Link } from 'react-router';
import { ListSubHeader, List, ListItem, ListDivider } from 'react-toolbox';

export default class UnleashNav extends Component {
static contextTypes = {
router: React.PropTypes.object,
}

render () {
const createListItem = (path, caption) =>
<ListItem to={this.context.router.createHref(path)} caption={caption}
className={this.context.router.isActive(path) ? 'active' : 'inactive'} />;

return (
<List selectable ripple>
<Link to="/"><ListItem selectable className="active" caption="Feature Toggles" /></Link>
<Link to="/strategies"><ListItem selectable caption="Strategies" /></Link>
<Link to="/history"><ListItem selectable caption="Event History" /></Link>
<Link to="/archive"><ListItem selectable caption="Archive" /></Link>
{createListItem('/features', 'Feature Toggles')}
{createListItem('/strategies', 'Strategies')}
{createListItem('/history', 'Event History')}
{createListItem('/archive', 'Archived Toggles')}

<ListDivider />

<ListSubHeader Resources/>
<Link to="/archive"><ListItem selectable caption="Documentation" /></Link>
<a href="https:/finn-no/unleash/" target="_blank"><ListItem selectable caption="GitHub" /></a>

{createListItem('/docs', 'Documentation')}
<a href="https:/finn-no/unleash/" target="_blank">
<ListItem caption="GitHub" />
</a>

<ListDivider />
<ListItem selectable={false} ripple="false">
<p>A product by <a href="https://finn.no" target="_blank">FINN.no</a></p>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,36 +1,65 @@
import { React, PropTypes } from 'react';
import React, { PropTypes } from 'react';
import { connect } from 'react-redux';
import { Input, Switch, Button } from 'react-toolbox';
import { addFeatureToggle } from '../../store/actions';


let AddFeatureToggle = ({ dispatch }) => {
let input;

return (
<div>
<form onSubmit={e => {
e.preventDefault();
if (!input.value.trim()) {
return;
}
dispatch(addFeatureToggle(input.value));
input.value = '';
}}>
<input ref={node => {
input = node;
}} />
<button type="submit">
Add Feature Toggle.
</button>
</form>
</div>
);
};
AddFeatureToggle = connect()(AddFeatureToggle);

AddFeatureToggle.propTypes = {
dispatch: PropTypes.func.isRequired,
};


export default AddFeatureToggle;
class AddFeatureToggle extends React.Component {
constructor () {
super();
this.state = { name: '', description: '', enabled: false };
}

static propTypes () {
return {
dispatch: PropTypes.func.isRequired,
};
}

onSubmit = (evt) => {
evt.preventDefault();
this.props.dispatch(addFeatureToggle(this.state.name, this.state.enabled));
};

handleChange = (key, value) => {
const change = {};
change[name] = value;

const newState = Object.assign({}, this.state, change);
this.setState(newState);
};

render () {
return (
<div>
<form onSubmit={this.onSubmit}>
<Input
type="text"
label="Name"
name="name"
value={this.state.name}
onChange={this.handleChange.bind(this, 'name')} />
<Input
type="text"
multiline label="Description"
value={this.state.description}
onChange={this.handleChange.bind(this, 'description')} />

<br />

<Switch
checked={this.state.enabled}
label="Enabled"
onChange={this.handleChange.bind(this, 'enabled')} />

<br />
<Button type="submit" raised primary>
Create Feature Toggle.
</Button>
</form>
</div>
);
}
}

export default connect()(AddFeatureToggle);
7 changes: 5 additions & 2 deletions packages/unleash-frontend-next/src/index.jsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React from 'react';
import ReactDOM from 'react-dom';
import { Router, Route, IndexRoute, hashHistory } from 'react-router';
import { Router, Route, IndexRedirect, hashHistory } from 'react-router';
import { Provider } from 'react-redux';
import thunkMiddleware from 'redux-thunk';
import { createStore, applyMiddleware } from 'redux';
Expand All @@ -9,6 +9,7 @@ import store from './store';
import App from './App';

import Features from './page/features';
import CreateFeatureToggle from './page/features/create';
import Strategies from './page/strategies';
import HistoryPage from './page/history';
import Archive from './page/archive';
Expand All @@ -24,7 +25,9 @@ ReactDOM.render(
<Provider store={unleashStore}>
<Router history={hashHistory}>
<Route path="/" component={App}>
<IndexRoute component={Features} />
<IndexRedirect to="/features" />
<Route path="/features" component={Features} />
<Route path="/features/create" component={CreateFeatureToggle} />
<Route path="/strategies" component={Strategies} />
<Route path="/history" component={HistoryPage} />
<Route path="/archive" component={Archive} />
Expand Down
13 changes: 13 additions & 0 deletions packages/unleash-frontend-next/src/page/features/create.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import React, { Component } from 'react';
import AddFeatureToggle from '../../component/feature/AddFeatureToggle';

export default class Features extends Component {
render () {
return (
<div>
<h1>Create Feature Toggle</h1>
<AddFeatureToggle />
</div>
);
}
};
20 changes: 12 additions & 8 deletions packages/unleash-frontend-next/src/page/features/index.js
Original file line number Diff line number Diff line change
@@ -1,17 +1,21 @@
import React, { Component } from 'react';
import FeatureListContainer from '../../component/feature/FeatureListContainer';
import AddFeatureToggle from '../../component/feature/AddFeatureToggle';
import { Button } from 'react-toolbox';


export default class Features extends Component {
static contextTypes = {
router: React.PropTypes.object,
}

render () {
const createHref = this.context.router.createHref('/features/create');
return (
<div>
<h1>Feature Toggles</h1>
<AddFeatureToggle />
<FeatureListContainer />

</div>

<div>
<h1>Feature Toggles</h1>
<Button href={createHref} icon="add" label="Create feature toggle"/>
<FeatureListContainer />
</div>
);
}
};

0 comments on commit cd6fde6

Please sign in to comment.