Skip to content

Commit 1e24a5d

Browse files
Merge branch 'parse'
* parse: (21 commits) Reset credentials (parse-community#1135) 1.4.0 version bump + changelog (parse-community#1134) Fix: Master fails to install graphql-playground parse-community#1131 (parse-community#1133) Update eslint-plugin-react to the latest version 🚀 (parse-community#1122) Update babel7 to the latest version 🚀 (parse-community#1129) GraphQL API playground (parse-community#1123) Fix: Can't switch (dropdown list) between servers parse-community#1045 (parse-community#1125) Update puppeteer to the latest version 🚀 (parse-community#1124) Update eslint-plugin-react to the latest version 🚀 (parse-community#1120) Update webpack-cli to the latest version 🚀 (parse-community#1119) Update react-dnd to the latest version 🚀 (parse-community#1117) Update puppeteer to the latest version 🚀 (parse-community#1116) Update react-dnd to the latest version 🚀 (parse-community#1114) Update babel-eslint to the latest version 🚀 (parse-community#1113) Update react-dnd to the latest version 🚀 (parse-community#1111) Update react-dnd to the latest version 🚀 (parse-community#1110) Update package-json to the latest version 🚀 (parse-community#1108) Update webpack-cli to the latest version 🚀 (parse-community#1106) Update react-dnd to the latest version 🚀 (parse-community#1104) Update webpack-cli to the latest version 🚀 (parse-community#1103) ... # Conflicts: # package-lock.json
2 parents 9be7c14 + 9646557 commit 1e24a5d

16 files changed

+1944
-602
lines changed

.travis.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,6 @@ deploy:
2828
condition: "$TRAVIS_JOB_NUMBER = $TRAVIS_BUILD_NUMBER.1"
2929
repo: parse-community/parse-dashboard
3030
email:
31-
secure: NVlNLZh4bsCUaO1qYdXp6DpYnISQIXqz0xIaMfPI06CqFErkqlodWD7aOOYT2LyKos1f9QbQBbURl27drtJLudNqIXfMFbWMc0MwDJp4fJBa6vRFdn1jYNDcrqTbdAAoH5z6SU4r7YdiPz5pIJ7XjMajryaB7dAZLNiuZaTeTboF6QEQj+j+bw9IMcuiDIxQt3t+5f9Raah1HwZX5h5CBXS8voE97deCpf6jdVt3gaKvnZGvTvnDfYBsvmDE2ueqFK/xjt240PMArxqTbkEVFl/7Gti5jurLIKtX7StNsEZZZiGJS2+E9Px5nSFMM3JKnfD5Cj6IZxqobL9mQ4KueaL3tX5BOnbHfSpJs2t3Lp8TO0hnpmn8w/d7pekOjH3LihgC7AbZ3/ark9ZvPvP63XKhivKL4NuvNa+8yHeQNOLIzOjTPZl7ZS6XkibwxsOtgasMQWK4/Ttg6/jHHPjaXbnqn7ZoIM2GPZBv22xaReIWSRJdgW8G9ceSBEIIZFONkKsH0apDDq3eHg0vNEI4R3oEmV6t/R9yvpCzarfNLn5+l80ztMM+rX91eXT8B5V8Mpy+7urbQwIoFLUGRPDxbofEqEm8S6sLsjyYe7VnxBC4Lhir3DFxYL0+q5YLfhq64AejA4BM65+v5SyvXCUvyakzsRsydU230sJyaONHD5I=
31+
secure: gVteu82NuKHKLBBySJJMwDgmli5j8MPiECz78uGhxxw6VCEhgG9LtHHHvJeXNcTYUgM0B4GKpk7f2QuqLnjkLJJJhmmb+uQlknhWXOsE43dNNZTjeNm8G8BLeMJofy07yx/J2kKQTbGbf2eHobt9f//FchzatwzfnUhqXFIQYRYnnod7vfB6xMQuRaiO2YDAqaoxunhdrjmoRHUDeD6F9L53CD+wqZfKMarB60rT+BFS2SEnyC+hvzqaBsTc5YMf3wdZ4A2U/NTYYANtvPybMIyi/M1GvCggsw0LcWJX7u9o87e1ctBQS8+OTsJd1evxE6SCyrXsOX1zVx8hiBvUqErTKwxc3cg6/hxnod7DrA0/hn9J/BTJXx4Kn0p9Lt+jv2NICzV0FsAMRrM+yhlt4UBKxP5Q4macYu1oiXIzfRrNpNJk55RTBBC47LbDNefdteglFw0tXHQUIr9iPAY80/2RvCVXx2tUyVmpfAU5+uo4QyMAlPkwt0/3L7ZwgS3uvTdH+d1KWscYt7phnqjBgnuMqE+1gIgESPZOkYF5nzmQ8GOdLVI02Pj/Dnoyq+RhrQ+rcZ/sZC5AJnbifEb5ul0AfxKDOmYKchFaRptzaZa9I2oQTK0nttBMBjgjRriFOKFHyV55qHGLO/UndDSzlWRNdRatGdbg10DvO24Vew4=
3232
api_key:
33-
secure: k3c9OMqlY5fZ4E+G1IataTfChw+Qyd3b/VkoQiKri6AD795RKKB4lfV69PyfQJ2Mlw8nKp8CkQKYPRgf8as23xg4XSNkoaQOeL5kTRFuN+T5BEEoS/eJVx276csQ0edHfYGwW4rM4AbdPjlr+8CjmNqsYRmCXHYF5HiNIIaD+Y9fU4hMpx5JZvmVI0NePZzEe4wAFiCQ2doqeXdam808qNHInl2BayZLPZyU7dLAk+CBH+gTL4u9bn2Q4eWwICB8XI2heIm6i9oXJUReSCLY387FyowtGeepH/Q3g6JDxKmZ3qw+biYdyyk9TJdDfPUcjWHDlD+pQAHiBOUtxLh+5wVi9lIYaYHJDC74KRPmxgKyTvGf41z7q8IcK9dc3Eu5JIqtGmzpkCHYBHHkQ29W75sHOW8OuI/7VAZDr5pjZqU7LE9dHuk2Da8EccJQ1WHkBul3Tt36YWL1TtsgyE+PbpxOdq72+71Ji0Zh3O6udgVqBEZKFz6Fow7cMUUTWCy5oMSPdjqwW3C/jyB2tpliZfX1Lq+hysCwAjuKNhegyOwOGshf9xW0JcjBcHN+Q6fCaKlN8R/MRkMk1CRcbzxwt4SMKIskR/YgmbJ0ozaC5uI/HkKKpno+VTjPRKpzFBBA6L+ZWnt+0KLsjOjO6ITF1WjAfHK9lBBLjd87jWgsBBE=
33+
secure: J9A9+tie/HmsVaDxiI3XEPGCK8SaR30JaMJldOEPwNJv3k+A5QifcgSPnVV3w+jdF1rMmYxdZLF8K9BDKLuPTl1Wh1V/y6S5qznnSv6IoCW2Zfud9m15zY7OCu8f8/Z0D4Lsb90pkgUGzChvy3XzH5JstkHaFlUyNI2WQWBRyRE9YoQ3IKUAsPL73O85gPD0qQAiX0smyk9zAM7anLCBptVXqJAwKHg10NwWExjWjVcmLOf+Ehu6DviV+QRvCMzoLWx+Q2w2cu3YkmJXq+FLMxgtRat6/PAM3zX9JSlLoQWPOK6LFO3VkOxgpk9V9F9B1pmsKAZ49GR8ltnjQcn3oSWJwShXP5Rl4xTOdZ64M6LBwtqnENqw8zF0f1QQyvRpPhXmZH0//84ikZEnWeENZoyqoqClQVJf2pCL1nlTzJDgVKL4bRx+ZGBaUMKxVbgdhY3GyJ2rOkZvB7VlUD/GzcnwokDvJ0OL2V68M+nw+BSe796U5GKZOLm7oNEOwzI0+Rosfl19jWRRIYfyLD0s6tHNi0liXXPJouNwWZIvBuHrMkYhCxP/Cdsze3j3HLgz5o9KEMlD4PhkyhArb/XF3yZBOlWdcK4zr6QBNf9+V7h6cHMmvOrMY0NjLm6x6rv3jMqEOEBpKUCR71NOEnbLDJ76OPVUDUbLlrJqAHBH3FU=

CHANGELOG.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,20 @@
11
## Parse Dashboard Changelog
22

33
### master
4-
[Full Changelog](https://github.com/parse-community/parse-dashboard/compare/1.3.3...master)
4+
[Full Changelog](https://github.com/parse-community/parse-dashboard/compare/1.4.1...master)
55

66
* _Contributing to this repo? Add info about your change here to be included in next release_
77

8+
### 1.4.1
9+
[Full Changelog](https://github.com/parse-community/parse-dashboard/compare/1.4.0...1.4.1)
10+
* Fix: 1.4.0 failed to deploy to npm. Reset credentials and trying again.
11+
12+
### 1.4.0
13+
[Full Changelog](https://github.com/parse-community/parse-dashboard/compare/1.3.3...1.4.0)
14+
* Security Fix: see the [advisory](https://github.com/parse-community/parse-dashboard/network/alert/package-lock.json/lodash/open) for details. [22d748](https://github.com/parse-community/parse-dashboard/pull/1134/commits/22d748fdc1e95661dc39226f5f797dc8fb0e5c2f)
15+
* Feature: GraphQL API playground ([#1123](https://github.com/parse-community/parse-dashboard/pull/1123)), thanks to [Douglas Muraoka](https://github.com/douglasmuraoka)
16+
* Fix: Can't switch (dropdown list) between servers [#1045](https://github.com/parse-community/parse-dashboard/issues/1045) ([#1125](https://github.com/parse-community/parse-dashboard/pull/1125)), thanks to [Douglas Muraoka](https://github.com/douglasmuraoka)
17+
818
### 1.3.3
919
[Full Changelog](https://github.com/parse-community/parse-dashboard/compare/1.3.2...1.3.3)
1020

package-lock.json

Lines changed: 1510 additions & 255 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
"Cloud Code Viewer",
66
"Cloud Code Jobs Viewer and Runner",
77
"Parse Config",
8-
"API Console",
8+
"REST API Console",
9+
"GraphQL API Console",
910
"Class Level Permissions Editor",
1011
"Pointer Permissions Editor",
1112
"Send Push Notifications",
@@ -20,7 +21,7 @@
2021
],
2122
"homepage": "https://github.com/ParsePlatform/parse-dashboard",
2223
"bugs": "https://github.com/ParsePlatform/parse-dashboard/issues",
23-
"version": "1.3.3",
24+
"version": "1.4.1",
2425
"repository": {
2526
"type": "git",
2627
"url": "https://github.com/ParsePlatform/parse-dashboard"
@@ -33,7 +34,7 @@
3334
"LICENSE"
3435
],
3536
"dependencies": {
36-
"@babel/runtime": "7.4.5",
37+
"@babel/runtime": "7.5.0",
3738
"bcryptjs": "2.3.0",
3839
"body-parser": "1.19.0",
3940
"commander": "2.20.0",
@@ -42,58 +43,61 @@
4243
"create-react-class": "15.6.3",
4344
"csurf": "1.10.0",
4445
"express": "4.17.1",
46+
"graphql": "^14.3.1",
47+
"graphql-playground-react": "^1.7.20",
4548
"history": "4.9.0",
46-
"immutable": "3.8.1",
49+
"immutable": "^4.0.0-rc.9",
4750
"immutable-devtools": "0.1.3",
4851
"js-beautify": "1.10.0",
4952
"json-file-plus": "3.2.0",
50-
"package-json": "6.1.0",
53+
"package-json": "6.4.0",
5154
"parse": "2.4.0",
5255
"passport": "0.4.0",
5356
"passport-local": "1.0.0",
5457
"prop-types": "15.7.2",
5558
"prismjs": "1.16.0",
5659
"query-string": "6.5.0",
5760
"react": "16.8.6",
58-
"react-dnd": "7.4.5",
59-
"react-dnd-html5-backend": "7.4.4",
61+
"react-dnd": "8.0.3",
62+
"react-dnd-html5-backend": "8.0.3",
6063
"react-dom": "16.8.6",
6164
"react-helmet": "5.2.1",
65+
"react-redux": "^5.1.1",
6266
"react-router": "5.0.1",
6367
"react-router-dom": "5.0.1"
6468
},
6569
"devDependencies": {
66-
"@babel/core": "7.4.5",
70+
"@babel/core": "7.5.0",
6771
"@babel/plugin-proposal-decorators": "7.4.4",
6872
"@babel/plugin-transform-regenerator": "7.4.5",
69-
"@babel/plugin-transform-runtime": "7.4.4",
73+
"@babel/plugin-transform-runtime": "7.5.0",
7074
"@babel/polyfill": "7.4.4",
71-
"@babel/preset-env": "7.4.5",
75+
"@babel/preset-env": "7.5.0",
7276
"@babel/preset-react": "7.0.0",
73-
"babel-eslint": "10.0.0",
77+
"babel-eslint": "10.0.2",
7478
"babel-loader": "8.0.6",
7579
"babel-plugin-transform-object-rest-spread": "6.26.0",
7680
"core-js": "2.6.5",
7781
"css-loader": "2.1.1",
7882
"eslint": "5.16.0",
7983
"eslint-plugin-jest": "22.5.1",
80-
"eslint-plugin-react": "7.13.0",
84+
"eslint-plugin-react": "7.14.1",
8185
"file-loader": "4.0.0",
8286
"http-server": "0.11.1",
8387
"jest": "24.8.0",
8488
"marked": "0.6.2",
8589
"node-sass": "4.12.0",
8690
"parse-server": "github:parseplatform/parse-server#master",
8791
"path-to-regexp": "3.0.0",
88-
"puppeteer": "1.17.0",
92+
"puppeteer": "1.18.1",
8993
"react-test-renderer": "16.8.6",
9094
"request": "2.87.0",
9195
"request-promise": "4.2.4",
9296
"sass-loader": "7.1.0",
9397
"style-loader": "0.23.0",
9498
"svg-prep": "1.0.4",
9599
"webpack": "4.33.0",
96-
"webpack-cli": "3.3.2"
100+
"webpack-cli": "3.3.5"
97101
},
98102
"scripts": {
99103
"dev": "node ./Parse-Dashboard/index.js & webpack --config webpack/build.config.js --devtool eval-source-map --progress --watch",
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import React from 'react';
2+
import styles from 'components/Sidebar/Sidebar.scss';
3+
4+
export default ({ name, onClick }) => (
5+
<div className={styles.currentApp} onClick={onClick}>
6+
{name}
7+
</div>
8+
);

src/components/Sidebar/AppsMenu.react.js

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
* the root directory of this source tree.
77
*/
88
import AppBadge from 'components/AppBadge/AppBadge.react';
9+
import AppName from 'components/Sidebar/AppName.react';
910
import html from 'lib/htmlString';
1011
import { Link } from 'react-router-dom';
1112
import React from 'react';
@@ -14,21 +15,21 @@ import { unselectable } from 'stylesheets/base.scss';
1415

1516
let AppsMenu = ({ apps, current, height, onSelect }) => (
1617
<div style={{ height }} className={[styles.appsMenu, unselectable].join(' ')}>
17-
<div className={styles.currentApp} onClick={onSelect.bind(null, current.slug)}>
18-
{current.name}
19-
</div>
18+
<AppName name={current.name} onClick={onSelect.bind(null, current.slug)} />
2019
<div className={styles.menuSection}>All Apps</div>
21-
{apps.map((app) => {
22-
if (app.slug === current.slug) {
23-
return null;
24-
}
25-
return (
26-
<Link to={{ pathname: html`/apps/${app.slug}/browser` }} key={app.slug} className={styles.menuRow}>
27-
{app.name}
28-
<AppBadge production={app.production} />
29-
</Link>
30-
);
31-
})}
20+
<div className={styles.appListContainer}>
21+
{apps.map((app) => {
22+
if (app.slug === current.slug) {
23+
return null;
24+
}
25+
return (
26+
<Link to={{ pathname: html`/apps/${app.slug}/browser` }} key={app.slug} className={styles.menuRow}>
27+
{app.name}
28+
<AppBadge production={app.production} />
29+
</Link>
30+
);
31+
})}
32+
</div>
3233
</div>
3334
);
3435

src/components/Sidebar/AppsSelector.react.js

Lines changed: 0 additions & 94 deletions
This file was deleted.

src/components/Sidebar/Sidebar.react.js

Lines changed: 53 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@
77
*/
88
import PropTypes from 'lib/PropTypes';
99
import AppsManager from 'lib/AppsManager';
10-
import AppsSelector from 'components/Sidebar/AppsSelector.react';
10+
import AppsMenu from 'components/Sidebar/AppsMenu.react';
11+
import AppName from 'components/Sidebar/AppName.react';
1112
import FooterMenu from 'components/Sidebar/FooterMenu.react';
12-
import React from 'react';
13+
import React, { useState } from 'react';
14+
import ParseApp from 'lib/ParseApp';
1315
import SidebarHeader from 'components/Sidebar/SidebarHeader.react';
1416
import SidebarSection from 'components/Sidebar/SidebarSection.react';
1517
import SidebarSubItem from 'components/Sidebar/SidebarSubItem.react';
@@ -26,7 +28,8 @@ const Sidebar = ({
2628
appSelector,
2729
primaryBackgroundColor,
2830
secondaryBackgroundColor
29-
}) => {
31+
}, { currentApp }) => {
32+
const [ appsMenuOpen, setAppsMenuOpen ] = useState(false);
3033
const _subMenu = subsections => {
3134
if (!subsections) {
3235
return null;
@@ -53,35 +56,54 @@ const Sidebar = ({
5356

5457
const apps = [].concat(AppsManager.apps()).sort((a, b) => (a.name < b.name ? -1 : (a.name > b.name ? 1 : 0)));
5558

59+
let sidebarContent;
60+
if (appsMenuOpen) {
61+
sidebarContent = (
62+
<AppsMenu
63+
apps={apps}
64+
current={currentApp}
65+
onSelect={() => setAppsMenuOpen(false)} />
66+
);
67+
} else {
68+
sidebarContent = (
69+
<>
70+
{appSelector && (
71+
<div className={styles.apps}>
72+
<AppName name={currentApp.name} onClick={() => setAppsMenuOpen(true)} />
73+
</div>
74+
)}
75+
<div className={styles.content}>
76+
{sections.map(({
77+
name,
78+
icon,
79+
style,
80+
link,
81+
subsections,
82+
}) => {
83+
const active = name === section;
84+
return (
85+
<SidebarSection
86+
key={name}
87+
name={name}
88+
icon={icon}
89+
style={style}
90+
link={prefix + link}
91+
active={active}
92+
primaryBackgroundColor={primaryBackgroundColor}
93+
secondaryBackgroundColor={secondaryBackgroundColor}
94+
>
95+
{active ? _subMenu(subsections) : null}
96+
</SidebarSection>
97+
);
98+
})}
99+
</div>
100+
</>
101+
)
102+
}
103+
56104
return <div className={styles.sidebar}>
57105
<SidebarHeader />
58-
{appSelector ? <AppsSelector apps={apps} /> : null}
59-
60-
<div className={styles.content}>
61-
{sections.map(({
62-
name,
63-
icon,
64-
style,
65-
link,
66-
subsections,
67-
}) => {
68-
const active = name === section;
69-
return (
70-
<SidebarSection
71-
key={name}
72-
name={name}
73-
icon={icon}
74-
style={style}
75-
link={prefix + link}
76-
active={active}
77-
primaryBackgroundColor={primaryBackgroundColor}
78-
secondaryBackgroundColor={secondaryBackgroundColor}
79-
>
80-
{active ? _subMenu(subsections) : null}
81-
</SidebarSection>
82-
);
83-
})}
84-
</div>
106+
{sidebarContent}
85107
<div className={styles.footer}>
86108
<a target='_blank' href='http://parseplatform.org/'>Open Source Hub</a>
87109
<a target='_blank' href='https://github.com/parse-community'>GitHub</a>
@@ -92,7 +114,7 @@ const Sidebar = ({
92114
}
93115

94116
Sidebar.contextTypes = {
95-
generatePath: PropTypes.func
117+
currentApp: PropTypes.instanceOf(ParseApp)
96118
};
97119

98120
export default Sidebar;

0 commit comments

Comments
 (0)