Skip to content

Commit 4ed4a9e

Browse files
author
Isaac Ramirez
committed
implement mobx in jetsetter
1 parent e3bd908 commit 4ed4a9e

File tree

9 files changed

+45
-90
lines changed

9 files changed

+45
-90
lines changed

.vscode/settings.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"javascript.implicitProjectConfig.experimentalDecorators": true
3+
}

8-mobx/jetsetter/src/components/Application.js

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,31 +9,42 @@ import { inject, observer } from 'mobx-react';
99

1010
const PackedItems = inject('itemList')(
1111
observer(({ itemList }) => (
12-
<Items title="Packed Items" items={itemList.packedItems}>
12+
<Items title="Packed Items" items={itemList.filteredPackedList}>
1313
<Filter
14-
searchTerm={itemList.packedItemsFilter}
15-
onChange={itemList.updatePackedFilter}
14+
searchTerm={itemList.searchFilter.packedItems}
15+
onChange={itemList.updatePackedItemsFilter}
1616
/>
1717
</Items>
1818
)),
1919
);
2020

2121
const UnpackedItems = inject('itemList')(
2222
observer(({ itemList }) => (
23-
<Items title="Unpacked Items" items={itemList.unpackedItems} />
23+
<Items title="Unpacked Items" items={itemList.filteredUnpackedList}>
24+
<Filter
25+
searchTerm={itemList.searchFilter.unpackedItems}
26+
onChange={itemList.updateUnpackedItemsFilter}
27+
/>
28+
</Items>
2429
)),
2530
);
2631

32+
const MarkAllAsUnpacked = inject('itemList')(
33+
observer(({itemList}) => (
34+
<button className="button full-width" onClick={itemList.markAllAsUnpacked}>
35+
Mark All As Unpacked
36+
</button>
37+
))
38+
)
39+
2740
class Application extends Component {
2841
render() {
2942
return (
3043
<div className="Application">
31-
<NewItem onSubmit={() => {}} />
44+
<NewItem />
3245
<UnpackedItems />
3346
<PackedItems />
34-
<button className="button full-width" onClick={() => {}}>
35-
Mark All As Unpacked
36-
</button>
47+
<MarkAllAsUnpacked />
3748
</div>
3849
);
3950
}

8-mobx/jetsetter/src/components/Filter.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ class Filter extends Component {
1111

1212
render() {
1313
const { searchTerm } = this.props;
14+
1415
return (
1516
<input
1617
className="Items-searchTerm"

8-mobx/jetsetter/src/components/Item.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ import './Item.css';
33

44
class Item extends Component {
55
render() {
6-
const { item, onCheckOff, onRemove } = this.props;
6+
const { item } = this.props;
7+
78
return (
89
<article className="Item">
910
<label htmlFor={item.id}>

8-mobx/jetsetter/src/components/Items.js

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,10 @@
11
import React, { Component } from 'react';
22
import Item from './Item';
3-
import Filter from './Filter';
43

54
class Items extends Component {
6-
state = {
7-
searchTerm: '',
8-
};
9-
10-
updateSearchTerm = searchTerm => {
11-
this.setState({ searchTerm });
12-
};
13-
145
render() {
15-
const { title, items, onCheckOff, onRemove } = this.props;
16-
const { searchTerm } = this.state;
6+
const { title, items } = this.props;
7+
178
return (
189
<section className="Items">
1910
<h2>

8-mobx/jetsetter/src/components/NewItem.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
import React, { Component } from 'react';
2-
import uniqueId from 'lodash/uniqueId';
3-
42
import { inject } from 'mobx-react';
53

64
import './NewItem.css';

8-mobx/jetsetter/src/models/ItemList.js

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@ import Item from './item';
33

44
export default class ItemList {
55
@observable items = [];
6-
@observable unpackedItemsFilter = '';
7-
@observable packedItemsFilter = '';
6+
@observable searchFilter = {
7+
packedItems: '',
8+
unpackedItems: ''
9+
}
810

911
@computed
1012
get packedItems() {
@@ -19,14 +21,14 @@ export default class ItemList {
1921
@computed
2022
get filteredUnpackedList() {
2123
return this.unpackedItems.filter(item =>
22-
item.value.includes(this.unpackedItemsFilter),
24+
item.value.includes(this.searchFilter.unpackedItems),
2325
);
2426
}
2527

2628
@computed
27-
get filteredpackedList() {
29+
get filteredPackedList() {
2830
return this.packedItems.filter(item =>
29-
item.value.includes(this.packedItemsFilter),
31+
item.value.includes(this.searchFilter.packedItems),
3032
);
3133
}
3234

@@ -41,10 +43,14 @@ export default class ItemList {
4143
}
4244

4345
@action.bound updatePackedItemsFilter(value) {
44-
this.packedItemsFilter = value;
46+
this.searchFilter.packedItems = value;
4547
}
4648

4749
@action.bound updateUnpackedItemsFilter(value) {
48-
this.unpackedItemsFilter = value;
50+
this.searchFilter.unpackedItems = value;
51+
}
52+
53+
@action.bound markAllAsUnpacked () {
54+
this.items.forEach(i => i.packed = false);
4955
}
5056
}

8-mobx/jetsetter/yarn.lock

Lines changed: 1 addition & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -2027,58 +2027,6 @@ currently-unhandled@^0.4.1:
20272027
dependencies:
20282028
array-find-index "^1.0.1"
20292029

2030-
custom-react-scripts@0.2.1:
2031-
version "0.2.1"
2032-
resolved "https://registry.yarnpkg.com/custom-react-scripts/-/custom-react-scripts-0.2.1.tgz#4346a08ab01d2e7f54d1b92d5080b0ea4dd0ea95"
2033-
dependencies:
2034-
autoprefixer "7.1.2"
2035-
babel-core "6.25.0"
2036-
babel-eslint "7.2.3"
2037-
babel-jest "20.0.3"
2038-
babel-loader "7.1.1"
2039-
babel-plugin-transform-decorators-legacy "^1.3.4"
2040-
babel-preset-react-app "^3.0.2"
2041-
babel-preset-stage-0 "^6.24.1"
2042-
babel-runtime "6.23.0"
2043-
case-sensitive-paths-webpack-plugin "2.1.1"
2044-
chalk "1.1.3"
2045-
css-loader "0.28.4"
2046-
dotenv "4.0.0"
2047-
eslint "4.4.1"
2048-
eslint-config-react-app "^2.0.0"
2049-
eslint-loader "1.9.0"
2050-
eslint-plugin-flowtype "2.35.0"
2051-
eslint-plugin-import "2.7.0"
2052-
eslint-plugin-jsx-a11y "5.1.1"
2053-
eslint-plugin-react "7.1.0"
2054-
extract-text-webpack-plugin "3.0.0"
2055-
file-loader "0.11.2"
2056-
fs-extra "3.0.1"
2057-
html-webpack-plugin "2.29.0"
2058-
jest "20.0.4"
2059-
less "^2.7.2"
2060-
less-loader "^4.0.5"
2061-
node-sass "^4.5.3"
2062-
object-assign "4.1.1"
2063-
postcss-flexbugs-fixes "3.2.0"
2064-
postcss-loader "2.0.6"
2065-
promise "8.0.1"
2066-
react-dev-utils "^3.1.0"
2067-
react-error-overlay "^1.0.10"
2068-
sass-loader "^6.0.6"
2069-
style-loader "0.18.2"
2070-
stylus "^0.54.5"
2071-
stylus-loader "^3.0.1"
2072-
sw-precache-webpack-plugin "0.11.4"
2073-
url-loader "0.5.9"
2074-
webpack "3.5.1"
2075-
webpack-dashboard "^1.0.0-2"
2076-
webpack-dev-server "2.7.1"
2077-
webpack-manifest-plugin "1.2.1"
2078-
whatwg-fetch "2.0.3"
2079-
optionalDependencies:
2080-
fsevents "1.1.2"
2081-
20822030
d@1:
20832031
version "1.0.0"
20842032
resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f"
@@ -3117,13 +3065,6 @@ fs.realpath@^1.0.0:
31173065
version "1.0.0"
31183066
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
31193067

3120-
fsevents@1.1.2:
3121-
version "1.1.2"
3122-
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.2.tgz#3282b713fb3ad80ede0e9fcf4611b5aa6fc033f4"
3123-
dependencies:
3124-
nan "^2.3.0"
3125-
node-pre-gyp "^0.6.36"
3126-
31273068
fsevents@^1.0.0:
31283069
version "1.1.3"
31293070
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8"
@@ -4943,7 +4884,7 @@ node-notifier@^5.0.2:
49434884
shellwords "^0.1.0"
49444885
which "^1.2.12"
49454886

4946-
node-pre-gyp@^0.6.36, node-pre-gyp@^0.6.39:
4887+
node-pre-gyp@^0.6.39:
49474888
version "0.6.39"
49484889
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649"
49494890
dependencies:

notes.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,4 +198,7 @@ export const updateAllItems = (items) => {
198198
}
199199
}
200200

201-
```
201+
```
202+
203+
## MobX
204+
insert some content here

0 commit comments

Comments
 (0)