Skip to content

Commit 5d3e8e9

Browse files
committed
Version 1.0.0
1 parent 4b25c6f commit 5d3e8e9

File tree

11 files changed

+5909
-3914
lines changed

11 files changed

+5909
-3914
lines changed

.storybook/config.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import { configure } from '@storybook/react';
22

3+
// automatically import all files ending in *.stories.js
4+
const req = require.context('../stories', true, /\.stories\.js$/);
35
function loadStories() {
4-
require('../src/stories');
6+
req.keys().forEach(filename => req(filename));
57
}
68

79
configure(loadStories, module);

package.json

+32-25
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,44 @@
11
{
22
"name": "create-material-ui-app",
3-
"version": "0.9.0",
3+
"version": "1.0.0",
44
"private": true,
55
"dependencies": {
6-
"@material-ui/core": "^3.8.2",
7-
"prop-types": "^15.6.2",
8-
"react": "^16.7.0",
9-
"react-dom": "^16.7.0",
10-
"react-scripts": "1.1.5"
6+
"@material-ui/core": "^3.9.3",
7+
"react": "^16.8.6",
8+
"react-dom": "^16.8.6",
9+
"react-scripts": "3.0.0"
1110
},
1211
"scripts": {
1312
"start": "react-scripts start",
1413
"build": "react-scripts build",
15-
"test": "react-scripts test --env=jsdom",
14+
"test": "react-scripts test",
1615
"eject": "react-scripts eject",
17-
"storybook": "start-storybook -p 9001 -s public --ci",
18-
"build-storybook": "build-storybook -s public"
16+
"storybook": "start-storybook -p 6006",
17+
"build-storybook": "build-storybook"
1918
},
20-
"devDependencies": {
21-
"@babel/core": "^7.0.0",
22-
"@storybook/addon-actions": "4.0.12",
23-
"@storybook/addon-links": "4.0.12",
24-
"@storybook/addon-storyshots": "4.0.12",
25-
"@storybook/addons": "4.0.12",
26-
"@storybook/react": "4.0.12",
27-
"react-test-renderer": "^16.7.0",
28-
"storybook-addon-material-ui": "0.9.0-alpha.17",
29-
"babel-loader": "8.0.4"
19+
"eslintConfig": {
20+
"extends": "react-app"
21+
},
22+
"browserslist": {
23+
"production": [
24+
">0.2%",
25+
"not dead",
26+
"not op_mini all"
27+
],
28+
"development": [
29+
"last 1 chrome version",
30+
"last 1 firefox version",
31+
"last 1 safari version"
32+
]
3033
},
31-
"browserslist": [
32-
">0.2%",
33-
"not dead",
34-
"not ie <= 11",
35-
"not op_mini all"
36-
]
34+
"devDependencies": {
35+
"@babel/core": "^7.4.4",
36+
"@storybook/addon-actions": "^5.0.11",
37+
"@storybook/addon-links": "^5.0.11",
38+
"@storybook/addons": "^5.0.11",
39+
"@storybook/react": "^5.0.11",
40+
"babel-loader": "^8.0.5",
41+
"storybook-addon-material-ui": "0.9.0-alpha.18"
42+
}
3743
}
44+

public/index.html

+8-10
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
<!DOCTYPE html>
22
<html lang="en">
33
<head>
4-
<meta charset="utf-8">
5-
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
6-
<meta name="theme-color" content="#000000">
4+
<meta charset="utf-8" />
5+
<link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico" />
6+
<meta name="viewport" content="width=device-width, initial-scale=1" />
7+
<meta name="theme-color" content="#000000" />
78
<!--
8-
manifest.json provides metadata used when your web app is added to the
9-
homescreen on Android. See https://developers.google.com/web/fundamentals/engage-and-retain/web-app-manifest/
9+
manifest.json provides metadata used when your web app is installed on a
10+
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
1011
-->
11-
<link rel="manifest" href="%PUBLIC_URL%/manifest.json">
12-
<link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico">
12+
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
1313
<!--
1414
Notice the use of %PUBLIC_URL% in the tags above.
1515
It will be replaced with the URL of the `public` folder during the build.
@@ -22,9 +22,7 @@
2222
<title>React App</title>
2323
</head>
2424
<body>
25-
<noscript>
26-
You need to enable JavaScript to run this app.
27-
</noscript>
25+
<noscript>You need to enable JavaScript to run this app.</noscript>
2826
<div id="root"></div>
2927
<!--
3028
This HTML file is a template.

public/manifest.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"type": "image/x-icon"
99
}
1010
],
11-
"start_url": "./index.html",
11+
"start_url": ".",
1212
"display": "standalone",
1313
"theme_color": "#000000",
1414
"background_color": "#ffffff"

src/App.css

+17-12
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,30 @@
44

55
.App-logo {
66
animation: App-logo-spin infinite 20s linear;
7-
height: 80px;
7+
height: 40vmin;
8+
pointer-events: none;
89
}
910

1011
.App-header {
11-
background-color: #222;
12-
height: 150px;
13-
padding: 20px;
12+
background-color: #282c34;
13+
min-height: 100vh;
14+
display: flex;
15+
flex-direction: column;
16+
align-items: center;
17+
justify-content: center;
18+
font-size: calc(10px + 2vmin);
1419
color: white;
1520
}
1621

17-
.App-title {
18-
font-size: 1.5em;
19-
}
20-
21-
.App-intro {
22-
font-size: large;
22+
.App-link {
23+
color: #61dafb;
2324
}
2425

2526
@keyframes App-logo-spin {
26-
from { transform: rotate(0deg); }
27-
to { transform: rotate(360deg); }
27+
from {
28+
transform: rotate(0deg);
29+
}
30+
to {
31+
transform: rotate(360deg);
32+
}
2833
}

src/App.js

+19-14
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,26 @@
1-
import React, { Component } from 'react';
1+
import React from 'react';
22
import logo from './logo.svg';
33
import './App.css';
44

5-
class App extends Component {
6-
render() {
7-
return (
8-
<div className="App">
9-
<header className="App-header">
10-
<img src={logo} className="App-logo" alt="logo" />
11-
<h1 className="App-title">Welcome to React</h1>
12-
</header>
13-
<p className="App-intro">
14-
To get started, edit <code>src/App.js</code> and save to reload.
5+
function App() {
6+
return (
7+
<div className="App">
8+
<header className="App-header">
9+
<img src={logo} className="App-logo" alt="logo" />
10+
<p>
11+
Edit <code>src/App.js</code> and save to reload.
1512
</p>
16-
</div>
17-
);
18-
}
13+
<a
14+
className="App-link"
15+
href="https://reactjs.org"
16+
target="_blank"
17+
rel="noopener noreferrer"
18+
>
19+
Learn React
20+
</a>
21+
</header>
22+
</div>
23+
);
1924
}
2025

2126
export default App;

src/index.css

+10-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
body {
22
margin: 0;
33
padding: 0;
4-
font-family: sans-serif;
4+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen",
5+
"Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue",
6+
sans-serif;
7+
-webkit-font-smoothing: antialiased;
8+
-moz-osx-font-smoothing: grayscale;
9+
}
10+
11+
code {
12+
font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New",
13+
monospace;
514
}

src/index.js

+6-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@ import React from 'react';
22
import ReactDOM from 'react-dom';
33
import './index.css';
44
import App from './App';
5-
import registerServiceWorker from './registerServiceWorker';
5+
import * as serviceWorker from './serviceWorker';
66

77
ReactDOM.render(<App />, document.getElementById('root'));
8-
registerServiceWorker();
8+
9+
// If you want your app to work offline and load faster, you can change
10+
// unregister() to register() below. Note this comes with some pitfalls.
11+
// Learn more about service workers: https://bit.ly/CRA-PWA
12+
serviceWorker.unregister();

src/serviceWorker.js

+135
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
// This optional code is used to register a service worker.
2+
// register() is not called by default.
3+
4+
// This lets the app load faster on subsequent visits in production, and gives
5+
// it offline capabilities. However, it also means that developers (and users)
6+
// will only see deployed updates on subsequent visits to a page, after all the
7+
// existing tabs open on the page have been closed, since previously cached
8+
// resources are updated in the background.
9+
10+
// To learn more about the benefits of this model and instructions on how to
11+
// opt-in, read https://bit.ly/CRA-PWA
12+
13+
const isLocalhost = Boolean(
14+
window.location.hostname === 'localhost' ||
15+
// [::1] is the IPv6 localhost address.
16+
window.location.hostname === '[::1]' ||
17+
// 127.0.0.1/8 is considered localhost for IPv4.
18+
window.location.hostname.match(
19+
/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/
20+
)
21+
);
22+
23+
export function register(config) {
24+
if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {
25+
// The URL constructor is available in all browsers that support SW.
26+
const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);
27+
if (publicUrl.origin !== window.location.origin) {
28+
// Our service worker won't work if PUBLIC_URL is on a different origin
29+
// from what our page is served on. This might happen if a CDN is used to
30+
// serve assets; see https://github.com/facebook/create-react-app/issues/2374
31+
return;
32+
}
33+
34+
window.addEventListener('load', () => {
35+
const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;
36+
37+
if (isLocalhost) {
38+
// This is running on localhost. Let's check if a service worker still exists or not.
39+
checkValidServiceWorker(swUrl, config);
40+
41+
// Add some additional logging to localhost, pointing developers to the
42+
// service worker/PWA documentation.
43+
navigator.serviceWorker.ready.then(() => {
44+
console.log(
45+
'This web app is being served cache-first by a service ' +
46+
'worker. To learn more, visit https://bit.ly/CRA-PWA'
47+
);
48+
});
49+
} else {
50+
// Is not localhost. Just register service worker
51+
registerValidSW(swUrl, config);
52+
}
53+
});
54+
}
55+
}
56+
57+
function registerValidSW(swUrl, config) {
58+
navigator.serviceWorker
59+
.register(swUrl)
60+
.then(registration => {
61+
registration.onupdatefound = () => {
62+
const installingWorker = registration.installing;
63+
if (installingWorker == null) {
64+
return;
65+
}
66+
installingWorker.onstatechange = () => {
67+
if (installingWorker.state === 'installed') {
68+
if (navigator.serviceWorker.controller) {
69+
// At this point, the updated precached content has been fetched,
70+
// but the previous service worker will still serve the older
71+
// content until all client tabs are closed.
72+
console.log(
73+
'New content is available and will be used when all ' +
74+
'tabs for this page are closed. See https://bit.ly/CRA-PWA.'
75+
);
76+
77+
// Execute callback
78+
if (config && config.onUpdate) {
79+
config.onUpdate(registration);
80+
}
81+
} else {
82+
// At this point, everything has been precached.
83+
// It's the perfect time to display a
84+
// "Content is cached for offline use." message.
85+
console.log('Content is cached for offline use.');
86+
87+
// Execute callback
88+
if (config && config.onSuccess) {
89+
config.onSuccess(registration);
90+
}
91+
}
92+
}
93+
};
94+
};
95+
})
96+
.catch(error => {
97+
console.error('Error during service worker registration:', error);
98+
});
99+
}
100+
101+
function checkValidServiceWorker(swUrl, config) {
102+
// Check if the service worker can be found. If it can't reload the page.
103+
fetch(swUrl)
104+
.then(response => {
105+
// Ensure service worker exists, and that we really are getting a JS file.
106+
const contentType = response.headers.get('content-type');
107+
if (
108+
response.status === 404 ||
109+
(contentType != null && contentType.indexOf('javascript') === -1)
110+
) {
111+
// No service worker found. Probably a different app. Reload the page.
112+
navigator.serviceWorker.ready.then(registration => {
113+
registration.unregister().then(() => {
114+
window.location.reload();
115+
});
116+
});
117+
} else {
118+
// Service worker found. Proceed as normal.
119+
registerValidSW(swUrl, config);
120+
}
121+
})
122+
.catch(() => {
123+
console.log(
124+
'No internet connection found. App is running in offline mode.'
125+
);
126+
});
127+
}
128+
129+
export function unregister() {
130+
if ('serviceWorker' in navigator) {
131+
navigator.serviceWorker.ready.then(registration => {
132+
registration.unregister();
133+
});
134+
}
135+
}

0 commit comments

Comments
 (0)