Skip to content

Commit 1d36627

Browse files
committed
feat(bootstrap): migrate to bootstrap 4
1 parent bc6dfe5 commit 1d36627

File tree

7 files changed

+2352
-2499
lines changed

7 files changed

+2352
-2499
lines changed

.bootstraprc

Lines changed: 4 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"bootstrapVersion": 3,
2+
"bootstrapVersion": 4,
33
"preBootstrapCustomizations": "./src/theme/variables.scss",
44
"appStyles": "./src/theme/app.scss",
55
"loglevel": "disabled",
@@ -9,6 +9,7 @@
99
"style-loader?sourceMap",
1010
"css-loader?sourceMap&importLoaders=2",
1111
"resolve-url-loader",
12+
"postcss-loader?sourceMap",
1213
"sass-loader?sourceMap"
1314
],
1415
"extractStyles": false
@@ -17,6 +18,7 @@
1718
"styleLoaders": [
1819
"style-loader",
1920
"css-loader?importLoaders=1",
21+
"postcss-loader?sourceMap",
2022
"sass-loader?sourceMap"
2123
],
2224
"extractStyles": true
@@ -36,44 +38,5 @@
3638
"tab": false,
3739
"affix": false
3840
},
39-
"styles": {
40-
"mixins": true,
41-
"normalize": true,
42-
"print": true,
43-
"glyphicons": true,
44-
"scaffolding": true,
45-
"type": true,
46-
"code": true,
47-
"grid": true,
48-
"tables": true,
49-
"forms": true,
50-
"buttons": true,
51-
"component-animations": true,
52-
"dropdowns": true,
53-
"button-groups": true,
54-
"input-groups": true,
55-
"navs": true,
56-
"navbar": true,
57-
"breadcrumbs": true,
58-
"pagination": true,
59-
"pager": true,
60-
"labels": true,
61-
"badges": true,
62-
"jumbotron": true,
63-
"thumbnails": true,
64-
"alerts": true,
65-
"progress-bars": true,
66-
"media": true,
67-
"list-group": true,
68-
"panels": true,
69-
"wells": true,
70-
"responsive-embed": true,
71-
"close": true,
72-
"modals": true,
73-
"tooltip": true,
74-
"popovers": true,
75-
"carousel": true,
76-
"utilities": true,
77-
"responsive-utilities": true
78-
}
41+
"styles": true
7942
}

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
"@feathersjs/socketio-client": "^1.0.1",
6262
"axios": "^0.18.0",
6363
"body-parser": "^1.16.1",
64+
"bootstrap": "^4.3.1",
6465
"classnames": "^2.2.5",
6566
"compression": "^1.6.2",
6667
"cookie-parser": "^1.4.3",
@@ -87,7 +88,7 @@
8788
"prop-types": "^15.5.8",
8889
"qs": "^6.5.2",
8990
"react": "^16.8.6",
90-
"react-bootstrap": "^0.32.1",
91+
"react-bootstrap": "^1.0.0-beta.12",
9192
"react-dom": "^16.8.6",
9293
"react-final-form": "^4.1.0",
9394
"react-helmet": "^5.0.3",
@@ -135,8 +136,7 @@
135136
"babel-jest": "^24.7.1",
136137
"babel-loader": "^8.0.0",
137138
"babel-plugin-dynamic-import-node": "^2.2.0",
138-
"bootstrap-loader": "^2.1.0",
139-
"bootstrap-sass": "^3.3.7",
139+
"bootstrap-loader": "^3.0.4",
140140
"chai": "^4.1.1",
141141
"clean-webpack-plugin": "^2.0.1",
142142
"concurrently": "^4.0.1",

src/containers/App/App.js

Lines changed: 24 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ import { withRouter } from 'react-router';
66
import { renderRoutes } from 'react-router-config';
77
import { provideHooks } from 'redial';
88
import { IndexLinkContainer, LinkContainer } from 'react-router-bootstrap';
9-
import Navbar from 'react-bootstrap/lib/Navbar';
10-
import Nav from 'react-bootstrap/lib/Nav';
11-
import NavItem from 'react-bootstrap/lib/NavItem';
12-
import Alert from 'react-bootstrap/lib/Alert';
9+
import Navbar from 'react-bootstrap/Navbar';
10+
import Nav from 'react-bootstrap/Nav';
11+
import Alert from 'react-bootstrap/Alert';
12+
1313
import Helmet from 'react-helmet';
1414
import qs from 'qs';
1515
import { isLoaded as isInfoLoaded, load as loadInfo } from 'redux/modules/info';
@@ -100,42 +100,39 @@ class App extends Component {
100100
return (
101101
<div className={styles.app}>
102102
<Helmet {...config.app.head} />
103-
<Navbar fixedTop>
104-
<Navbar.Header>
105-
<Navbar.Brand>
106-
<IndexLinkContainer to="/" activeStyle={{ color: '#33e0ff' }} className={styles.title}>
107-
<div className={styles.brand}>
108-
<span>{config.app.title}</span>
109-
</div>
110-
</IndexLinkContainer>
111-
</Navbar.Brand>
112-
<Navbar.Toggle />
113-
</Navbar.Header>
114-
115-
<Navbar.Collapse>
116-
<Nav navbar>
103+
<Navbar bg="light">
104+
<Navbar.Brand>
105+
<IndexLinkContainer to="/" activeStyle={{ color: '#33e0ff' }} className={styles.title}>
106+
<div className={styles.brand}>
107+
<span>{config.app.title}</span>
108+
</div>
109+
</IndexLinkContainer>
110+
</Navbar.Brand>
111+
<Navbar.Toggle aria-controls="basic-navbar-nav" />
112+
<Navbar.Collapse id="basic-navbar-nav">
113+
<Nav className="mr-auto">
117114
<LinkContainer to="/chat">
118-
<NavItem>Chat</NavItem>
115+
<Nav.Link>Chat</Nav.Link>
119116
</LinkContainer>
120117
<LinkContainer to="/about">
121-
<NavItem>About Us</NavItem>
118+
<Nav.Link>About Us</Nav.Link>
122119
</LinkContainer>
123120

124121
{!user && (
125122
<LinkContainer to="/login">
126-
<NavItem>Login</NavItem>
123+
<Nav.Link>Login</Nav.Link>
127124
</LinkContainer>
128125
)}
129126
{!user && (
130127
<LinkContainer to="/register">
131-
<NavItem>Register</NavItem>
128+
<Nav.Link>Register</Nav.Link>
132129
</LinkContainer>
133130
)}
134131
{user && (
135132
<LinkContainer to="/logout">
136-
<NavItem className="logout-link" onClick={this.handleLogout}>
133+
<Nav.Link className="logout-link" onClick={this.handleLogout}>
137134
Logout
138-
</NavItem>
135+
</Nav.Link>
139136
</LinkContainer>
140137
)}
141138
</Nav>
@@ -144,18 +141,17 @@ class App extends Component {
144141
<strong>{user.email}</strong>
145142
</p>
146143
)}
147-
<Nav navbar pullRight>
148-
<NavItem
144+
<Nav>
145+
<Nav.Link
149146
target="_blank"
150147
title="View on Github"
151148
href="https://github.com/bertho-zero/react-redux-universal-hot-example"
152149
>
153150
<i className="fa fa-github" />
154-
</NavItem>
151+
</Nav.Link>
155152
</Nav>
156153
</Navbar.Collapse>
157154
</Navbar>
158-
159155
<div className={styles.appContent}>
160156
{notifs.global && (
161157
<div className="container">

src/theme/variables.scss

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@import '~bootstrap-sass/assets/stylesheets/bootstrap/variables';
1+
@import "~bootstrap/scss/_functions.scss";
22

33
/**
44
* Define scss variables here.
@@ -22,5 +22,5 @@ $brand-info: #5bc0de;
2222

2323
$text-color: #333;
2424

25-
$font-size-base: 14px;
25+
$font-size-base: 0.875rem;
2626
$font-family-sans-serif: "Helvetica Neue", Helvetica, sans-serif;

webpack/dev.config.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,23 @@ const webpackConfig = {
191191
// hot reload
192192
new webpack.HotModuleReplacementPlugin(),
193193

194+
new webpack.ProvidePlugin({
195+
Tether: "tether",
196+
"window.Tether": "tether",
197+
Popper: ['popper.js', 'default'],
198+
Alert: "exports-loader?Alert!bootstrap/js/dist/alert",
199+
Button: "exports-loader?Button!bootstrap/js/dist/button",
200+
Carousel: "exports-loader?Carousel!bootstrap/js/dist/carousel",
201+
Collapse: "exports-loader?Collapse!bootstrap/js/dist/collapse",
202+
Dropdown: "exports-loader?Dropdown!bootstrap/js/dist/dropdown",
203+
Modal: "exports-loader?Modal!bootstrap/js/dist/modal",
204+
Popover: "exports-loader?Popover!bootstrap/js/dist/popover",
205+
Scrollspy: "exports-loader?Scrollspy!bootstrap/js/dist/scrollspy",
206+
Tab: "exports-loader?Tab!bootstrap/js/dist/tab",
207+
Tooltip: "exports-loader?Tooltip!bootstrap/js/dist/tooltip",
208+
Util: "exports-loader?Util!bootstrap/js/dist/util",
209+
}),
210+
194211
new webpack.IgnorePlugin(/webpack-stats\.json$/),
195212

196213
new webpack.DefinePlugin({

webpack/prod.config.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,22 @@ module.exports = {
169169
extensions: ['.json', '.js', '.jsx']
170170
},
171171
plugins: [
172+
new webpack.ProvidePlugin({
173+
Tether: "tether",
174+
"window.Tether": "tether",
175+
Popper: ['popper.js', 'default'],
176+
Alert: "exports-loader?Alert!bootstrap/js/dist/alert",
177+
Button: "exports-loader?Button!bootstrap/js/dist/button",
178+
Carousel: "exports-loader?Carousel!bootstrap/js/dist/carousel",
179+
Collapse: "exports-loader?Collapse!bootstrap/js/dist/collapse",
180+
Dropdown: "exports-loader?Dropdown!bootstrap/js/dist/dropdown",
181+
Modal: "exports-loader?Modal!bootstrap/js/dist/modal",
182+
Popover: "exports-loader?Popover!bootstrap/js/dist/popover",
183+
Scrollspy: "exports-loader?Scrollspy!bootstrap/js/dist/scrollspy",
184+
Tab: "exports-loader?Tab!bootstrap/js/dist/tab",
185+
Tooltip: "exports-loader?Tooltip!bootstrap/js/dist/tooltip",
186+
Util: "exports-loader?Util!bootstrap/js/dist/util",
187+
}),
172188
/* wepack build status - show webpack build progress in terminal */
173189
new webpack.ProgressPlugin(),
174190

0 commit comments

Comments
 (0)