Skip to content

Commit 4fa0864

Browse files
author
Jovert Lota Palonpon
authored
Redesigned Master Layout (#48)
* wip * wip * Added Collapsible Link Group * wip * wip * wip * wip * Added Tooltips * wip
1 parent 84d7983 commit 4fa0864

File tree

11 files changed

+533
-331
lines changed

11 files changed

+533
-331
lines changed

resources/js/config/app.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
export default {
2-
name: 'LaReact',
2+
name: 'LaReact Admin',
33
};

resources/js/routers/backoffice.js

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,31 @@ import { Home } from '../views/__backoffice';
22
import * as Settings from '../views/__backoffice/settings';
33
import * as Users from '../views/__backoffice/users';
44

5+
const resources = [
6+
{
7+
name: 'users.index',
8+
path: '/users',
9+
component: Users.List,
10+
},
11+
12+
{
13+
name: 'users.create',
14+
path: '/users/create',
15+
component: Users.Create,
16+
},
17+
18+
{
19+
name: 'users.edit',
20+
path: '/users/:id/edit',
21+
component: Users.Edit,
22+
},
23+
].map(route => {
24+
route.name = `resources.${route.name}`;
25+
route.path = `/resources${route.path}`;
26+
27+
return route;
28+
});
29+
530
export default [
631
{
732
name: 'home',
@@ -21,23 +46,7 @@ export default [
2146
component: Settings.Account,
2247
},
2348

24-
{
25-
name: 'users.index',
26-
path: '/users',
27-
component: Users.List,
28-
},
29-
30-
{
31-
name: 'users.create',
32-
path: '/users/create',
33-
component: Users.Create,
34-
},
35-
36-
{
37-
name: 'users.edit',
38-
path: '/users/:id/edit',
39-
component: Users.Edit,
40-
},
49+
...resources,
4150
].map(route => {
4251
route.name = `backoffice.${route.name}`;
4352
route.auth = true;

resources/js/views/__backoffice/layouts/Clean.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ const styles = theme => ({
137137
flex: 1,
138138
display: 'flex',
139139
flexDirection: 'column',
140-
overflowX: 'scroll',
140+
overflowX: 'auto',
141141
},
142142

143143
content: {
@@ -146,7 +146,6 @@ const styles = theme => ({
146146
marginBottom: 75,
147147
marginLeft: 0,
148148
[theme.breakpoints.up('sm')]: {
149-
marginBottom: 50,
150149
padding: `${theme.spacing.unit}px ${theme.spacing.unit * 3}px`,
151150
},
152151
},

resources/js/views/__backoffice/layouts/Master.js

Lines changed: 41 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import React, { useState, useEffect } from 'react';
22
import PropTypes from 'prop-types';
33
import { Link as RouterLink } from 'react-router-dom';
44

5+
import classNames from 'classnames';
56
import {
67
AppBar,
78
CircularProgress,
@@ -24,6 +25,7 @@ import { LinearDeterminate } from '../../../ui/Loaders';
2425
import { Footer, Header, Sidebar } from '../partials';
2526

2627
function Master(props) {
28+
const [minimized, setMinimized] = useState(false);
2729
const [mobileOpen, setMobileOpen] = useState(false);
2830
const [localeMenuOpen, setLocaleMenuOpen] = useState(false);
2931
const [accountMenuOpen, setAccountMenuOpen] = useState(false);
@@ -94,6 +96,8 @@ function Master(props) {
9496
.splice(1)
9597
.filter(segment => segment.length > 0);
9698

99+
const segmentBlacklist = ['resources', 'analytics'];
100+
97101
const renderLoading = (
98102
<Grid
99103
container
@@ -140,15 +144,25 @@ function Master(props) {
140144
)}
141145

142146
{segments.map((segment, key) => {
147+
const renderText = (
148+
<Typography
149+
key={key}
150+
className={classes.breadcrumbItem}
151+
>
152+
{StringUtils._uppercaseFirst(segment)}
153+
</Typography>
154+
);
155+
156+
if (segmentBlacklist.indexOf(segment) > -1) {
157+
return renderText;
158+
}
159+
143160
if (key + 1 === segments.length) {
144-
return (
145-
<Typography
146-
key={key}
147-
className={classes.breadcrumbItem}
148-
>
149-
{StringUtils._uppercaseFirst(segment)}
150-
</Typography>
151-
);
161+
return renderText;
162+
}
163+
164+
if (!isNaN(parseInt(segment))) {
165+
return null;
152166
}
153167

154168
return (
@@ -179,7 +193,11 @@ function Master(props) {
179193
<div className={classes.root}>
180194
<CssBaseline />
181195

182-
<nav className={classes.drawer}>
196+
<nav
197+
className={classNames(classes.drawer, {
198+
[classes.minimized]: minimized,
199+
})}
200+
>
183201
<Hidden smUp implementation="js">
184202
<Sidebar
185203
{...other}
@@ -197,7 +215,11 @@ function Master(props) {
197215
{...other}
198216
loading={loading}
199217
navigate={path => history.push(path)}
200-
PaperProps={{ style: { width: drawerWidth } }}
218+
minimized={minimized}
219+
setMinimized={setMinimized}
220+
PaperProps={{
221+
style: { width: minimized ? 70 : drawerWidth },
222+
}}
201223
/>
202224
</Hidden>
203225
</nav>
@@ -278,8 +300,16 @@ const styles = theme => ({
278300
width: drawerWidth,
279301
flexShrink: 0,
280302
},
303+
304+
'&$minimized': {
305+
[theme.breakpoints.up('sm')]: {
306+
width: 70,
307+
},
308+
},
281309
},
282310

311+
minimized: {},
312+
283313
breadcrumbBar: {
284314
zIndex: 0,
285315
},
@@ -301,15 +331,14 @@ const styles = theme => ({
301331
flex: 1,
302332
display: 'flex',
303333
flexDirection: 'column',
304-
overflowX: 'scroll',
334+
overflowX: 'auto',
305335
},
306336

307337
content: {
308338
flex: 1,
309339
padding: `0 ${theme.spacing.unit}px`,
310340
marginBottom: 75,
311341
[theme.breakpoints.up('sm')]: {
312-
marginBottom: 50,
313342
padding: `${theme.spacing.unit}px ${theme.spacing.unit * 3}px`,
314343
},
315344
},

0 commit comments

Comments
 (0)