From 228d83903fd8698da7b96a5b74699f3ff2d5dad4 Mon Sep 17 00:00:00 2001 From: Daniel Date: Sun, 21 May 2023 11:06:33 +1000 Subject: [PATCH 01/24] feat: Add visual configurator for Parse Dashboard settings (#2406) --- src/dashboard/Dashboard.js | 4 +- src/dashboard/DashboardView.react.js | 7 +- .../DashboardSettings.react.js | 242 ++++++++++++++++++ .../DashboardSettings/DashboardSettings.scss | 28 ++ src/lib/ColumnPreferences.js | 21 +- 5 files changed, 297 insertions(+), 5 deletions(-) create mode 100644 src/dashboard/Settings/DashboardSettings/DashboardSettings.react.js create mode 100644 src/dashboard/Settings/DashboardSettings/DashboardSettings.scss diff --git a/src/dashboard/Dashboard.js b/src/dashboard/Dashboard.js index 9993dc0722..516133dead 100644 --- a/src/dashboard/Dashboard.js +++ b/src/dashboard/Dashboard.js @@ -51,6 +51,7 @@ import { setBasePath } from 'lib/AJAX'; import { BrowserRouter, Routes, Route, Navigate } from 'react-router-dom'; import { Helmet } from 'react-helmet'; import Playground from './Data/Playground/Playground.react'; +import DashboardSettings from './Settings/DashboardSettings/DashboardSettings.react'; const ShowSchemaOverview = false; //In progress features. Change false to true to work on this feature. @@ -199,12 +200,13 @@ export default class Dashboard extends React.Component { const SettingsRoute = ( }> + } /> } /> } /> } /> } /> } /> - } /> + } /> ) diff --git a/src/dashboard/DashboardView.react.js b/src/dashboard/DashboardView.react.js index 8402dcc04f..b224ac6778 100644 --- a/src/dashboard/DashboardView.react.js +++ b/src/dashboard/DashboardView.react.js @@ -198,7 +198,10 @@ export default class DashboardView extends React.Component { } */ - let settingsSections = []; + const settingsSections = [{ + name: 'Dashboard', + link: '/settings/dashboard' + }]; // Settings - nothing remotely like this in parse-server yet. Maybe it will arrive soon. /* @@ -292,7 +295,7 @@ export default class DashboardView extends React.Component { ); let content =
{this.renderContent()}
; - const canRoute = [...coreSubsections, ...pushSubsections] + const canRoute = [...coreSubsections, ...pushSubsections, ...settingsSections] .map(({ link }) => link.split('/')[1]) .includes(this.state.route); diff --git a/src/dashboard/Settings/DashboardSettings/DashboardSettings.react.js b/src/dashboard/Settings/DashboardSettings/DashboardSettings.react.js new file mode 100644 index 0000000000..3dfc4d4bc7 --- /dev/null +++ b/src/dashboard/Settings/DashboardSettings/DashboardSettings.react.js @@ -0,0 +1,242 @@ +import DashboardView from 'dashboard/DashboardView.react'; +import Field from 'components/Field/Field.react'; +import Fieldset from 'components/Fieldset/Fieldset.react'; +import FlowView from 'components/FlowView/FlowView.react'; +import FormButton from 'components/FormButton/FormButton.react'; +import Label from 'components/Label/Label.react'; +import Button from 'components/Button/Button.react'; +import React from 'react'; +import styles from 'dashboard/Settings/DashboardSettings/DashboardSettings.scss'; +import TextInput from 'components/TextInput/TextInput.react'; +import Toggle from 'components/Toggle/Toggle.react'; +import Icon from 'components/Icon/Icon.react'; +import Dropdown from 'components/Dropdown/Dropdown.react'; +import Option from 'components/Dropdown/Option.react'; +import Toolbar from 'components/Toolbar/Toolbar.react'; +import CodeSnippet from 'components/CodeSnippet/CodeSnippet.react'; +import Notification from 'dashboard/Data/Browser/Notification.react'; +import * as ColumnPreferences from 'lib/ColumnPreferences'; +import bcrypt from 'bcryptjs'; +import * as OTPAuth from 'otpauth'; +import QRCode from 'qrcode'; + +export default class DashboardSettings extends DashboardView { + constructor() { + super(); + this.section = 'App Settings'; + this.subsection = 'Dashboard Configuration'; + + this.state = { + createUserInput: false, + username: '', + password: '', + encrypt: true, + mfa: false, + mfaDigits: 6, + mfaPeriod: 30, + mfaAlgorithm: 'SHA1', + message: null, + passwordInput: '', + passwordHidden: true, + columnData: { + data: '', + show: false, + }, + newUser: { + data: '', + show: false, + mfa: '', + }, + }; + } + + getColumns() { + const data = ColumnPreferences.getAllPreferences(this.context.applicationId); + this.setState({ + columnData: { data: JSON.stringify(data, null, 2), show: true }, + }); + } + + copy(data, label) { + navigator.clipboard.writeText(data); + this.showNote(`${label} copied to clipboard`); + } + + createUser() { + if (!this.state.username) { + this.showNote('Please enter a username'); + return; + } + if (!this.state.password) { + this.showNote('Please enter a password'); + return; + } + + let pass = this.state.password; + if (this.state.encrypt) { + const salt = bcrypt.genSaltSync(10); + pass = bcrypt.hashSync(pass, salt); + } + + const user = { + username: this.state.username, + pass, + }; + + let mfa; + if (this.state.mfa) { + const secret = new OTPAuth.Secret(); + const totp = new OTPAuth.TOTP({ + issuer: this.context.name, + label: user.username, + algorithm: this.state.mfaAlgorithm || 'SHA1', + digits: this.state.mfaDigits || 6, + period: this.state.mfaPeriod || 30, + secret, + }); + mfa = totp.toString(); + user.mfa = secret.base32; + if (totp.algorithm !== 'SHA1') { + user.mfaAlgorithm = totp.algorithm; + } + if (totp.digits != 6) { + user.mfaDigits = totp.digits; + } + if (totp.period != 30) { + user.mfaPeriod = totp.period; + } + + setTimeout(() => { + const canvas = document.getElementById('canvas'); + QRCode.toCanvas(canvas, mfa); + }, 10); + } + + this.setState({ + newUser: { + show: true, + data: JSON.stringify(user, null, 2), + mfa, + }, + }); + } + + generatePassword() { + let chars = '0123456789abcdefghijklmnopqrstuvwxyz!@#$%^&*()ABCDEFGHIJKLMNOPQRSTUVWXYZ'; + let pwordLength = 20; + let password = ''; + + const array = new Uint32Array(chars.length); + window.crypto.getRandomValues(array); + + for (let i = 0; i < pwordLength; i++) { + password += chars[array[i] % chars.length]; + } + this.setState({ password }); + } + + showNote(message) { + if (!message) { + return; + } + + clearTimeout(this.noteTimeout); + + this.setState({ message }); + + this.noteTimeout = setTimeout(() => { + this.setState({ message: null }); + }, 3500); + } + + renderForm() { + const createUserInput = ( +
+ } input={ this.setState({ username })} />} /> + + Password + this.setState({ passwordHidden: !this.state.passwordHidden })}> + + + + } + description={ this.generatePassword()}>Generate strong password} + /> + } + input={
+ ); + const columnPreferences = ( +
+
+ +
+
+
+
+ ); + const userData = ( +
+ Add the following data to your Parse Dashboard configuration "users": + {this.state.encrypt &&
Make sure the dashboard option useEncryptedPasswords is set to true.
} +
+ +
+ {this.state.mfa && ( + + )} +
+
+
+ ); + return ( +
+
+ } input={ this.getColumns()} />} /> + } input={ this.setState({ createUserInput: true })} />} /> +
+ {this.state.columnData.show && columnPreferences} + {this.state.createUserInput && createUserInput} + {this.state.newUser.show && userData} + + +
+ ); + } + + renderContent() { + return {}} onSubmit={() => {}} renderForm={() => this.renderForm()} />; + } +} diff --git a/src/dashboard/Settings/DashboardSettings/DashboardSettings.scss b/src/dashboard/Settings/DashboardSettings/DashboardSettings.scss new file mode 100644 index 0000000000..579c813055 --- /dev/null +++ b/src/dashboard/Settings/DashboardSettings/DashboardSettings.scss @@ -0,0 +1,28 @@ +.columnData { + max-height: 50vh; + overflow-y: scroll; +} +.newUser { + max-height: 100px; + overflow-y: scroll; +} +.settings_page { + padding: 120px 0 80px 0; +} +.footer { + display: flex; + padding: 10px; + justify-content: end; + gap: 10px; +} +.password { + display: flex; + gap: 4px; +} +.userData { + padding: 10px; +} +.mfa { + display: block; + margin-top: 10px; +} diff --git a/src/lib/ColumnPreferences.js b/src/lib/ColumnPreferences.js index a9c691d0ef..78619dbe18 100644 --- a/src/lib/ColumnPreferences.js +++ b/src/lib/ColumnPreferences.js @@ -45,6 +45,23 @@ export function getPreferences(appId, className) { } } +export function getAllPreferences(appId) { + const storageKeys = Object.keys(localStorage); + const result = {}; + for (const key of storageKeys) { + const split = key.split(':') + if (split.length <= 1) { + continue; + } + const className = split.at(-1); + const preferences = getPreferences(appId, className); + if (preferences) { + result[className] = preferences; + } + } + return result; +} + export function getColumnSort(sortBy, appId, className) { let cachedSort = getPreferences(appId, COLUMN_SORT) || [ { name: className, value: DEFAULT_COLUMN_SORT } ]; let ordering = [].concat(cachedSort); @@ -74,7 +91,7 @@ export function getColumnSort(sortBy, appId, className) { export function getOrder(cols, appId, className, defaultPrefs) { let prefs = getPreferences(appId, className) || [ { name: 'objectId', width: DEFAULT_WIDTH, visible: true, cached: true } ]; - + if (defaultPrefs) { // Check that every default pref is in the prefs array. @@ -85,7 +102,7 @@ export function getOrder(cols, appId, className, defaultPrefs) { } }); - // Iterate over the current prefs + // Iterate over the current prefs prefs = prefs.map((prefsItem) => { // Get the default prefs item. const defaultPrefsItem = defaultPrefs.find(defaultPrefsItem => defaultPrefsItem.name === prefsItem.name) || {}; From 52ca7fc064cca60c7c7474da7417b39d0e596dbd Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sun, 21 May 2023 01:09:02 +0000 Subject: [PATCH 02/24] chore(release): 5.2.0-alpha.1 [skip ci] # [5.2.0-alpha.1](https://github.com/ParsePlatform/parse-dashboard/compare/5.1.0...5.2.0-alpha.1) (2023-05-21) ### Bug Fixes * Uncaught error when editing Number field in Edit Row dialog ([#2401](https://github.com/ParsePlatform/parse-dashboard/issues/2401)) ([26bd6fa](https://github.com/ParsePlatform/parse-dashboard/commit/26bd6fa39be1076621856a9c86dcd1307f8f7fdd)) ### Features * Add visual configurator for Parse Dashboard settings ([#2406](https://github.com/ParsePlatform/parse-dashboard/issues/2406)) ([228d839](https://github.com/ParsePlatform/parse-dashboard/commit/228d83903fd8698da7b96a5b74699f3ff2d5dad4)) * Data types and pointer classes are sorted alphabetically in dialog to add new column ([#2400](https://github.com/ParsePlatform/parse-dashboard/issues/2400)) ([d9d285b](https://github.com/ParsePlatform/parse-dashboard/commit/d9d285b7f90434d3bb138c2c765272498e3f09c3)) * Sort Cloud Code Jobs alphabetically ([#2402](https://github.com/ParsePlatform/parse-dashboard/issues/2402)) ([77fc372](https://github.com/ParsePlatform/parse-dashboard/commit/77fc372bedb9fb4eca728c1bc076e823c5bc3a2c)) --- changelogs/CHANGELOG_alpha.md | 13 +++++++++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/changelogs/CHANGELOG_alpha.md b/changelogs/CHANGELOG_alpha.md index 6233812411..aea883a3e4 100644 --- a/changelogs/CHANGELOG_alpha.md +++ b/changelogs/CHANGELOG_alpha.md @@ -1,3 +1,16 @@ +# [5.2.0-alpha.1](https://github.com/ParsePlatform/parse-dashboard/compare/5.1.0...5.2.0-alpha.1) (2023-05-21) + + +### Bug Fixes + +* Uncaught error when editing Number field in Edit Row dialog ([#2401](https://github.com/ParsePlatform/parse-dashboard/issues/2401)) ([26bd6fa](https://github.com/ParsePlatform/parse-dashboard/commit/26bd6fa39be1076621856a9c86dcd1307f8f7fdd)) + +### Features + +* Add visual configurator for Parse Dashboard settings ([#2406](https://github.com/ParsePlatform/parse-dashboard/issues/2406)) ([228d839](https://github.com/ParsePlatform/parse-dashboard/commit/228d83903fd8698da7b96a5b74699f3ff2d5dad4)) +* Data types and pointer classes are sorted alphabetically in dialog to add new column ([#2400](https://github.com/ParsePlatform/parse-dashboard/issues/2400)) ([d9d285b](https://github.com/ParsePlatform/parse-dashboard/commit/d9d285b7f90434d3bb138c2c765272498e3f09c3)) +* Sort Cloud Code Jobs alphabetically ([#2402](https://github.com/ParsePlatform/parse-dashboard/issues/2402)) ([77fc372](https://github.com/ParsePlatform/parse-dashboard/commit/77fc372bedb9fb4eca728c1bc076e823c5bc3a2c)) + # [5.1.0-alpha.13](https://github.com/ParsePlatform/parse-dashboard/compare/5.1.0-alpha.12...5.1.0-alpha.13) (2023-03-07) diff --git a/package-lock.json b/package-lock.json index 6b9e508d00..33e793eccb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "parse-dashboard", - "version": "5.2.0-beta.1", + "version": "5.2.0-alpha.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index c13ea52156..9f18de539c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "parse-dashboard", - "version": "5.2.0-beta.1", + "version": "5.2.0-alpha.1", "repository": { "type": "git", "url": "https://github.com/ParsePlatform/parse-dashboard" From a20cb8e534d3fecd8d337463864b15048772a9a5 Mon Sep 17 00:00:00 2001 From: Frans Bouwmeester Date: Sat, 27 May 2023 02:32:24 +0200 Subject: [PATCH 03/24] feat: Add links to users and roles in ACL dialog and handle invalid entries (#2436) --- src/components/ACLEditor/ACLEditor.react.js | 11 ++++- .../PermissionsDialog.react.js | 45 +++++++++++++++---- 2 files changed, 46 insertions(+), 10 deletions(-) diff --git a/src/components/ACLEditor/ACLEditor.react.js b/src/components/ACLEditor/ACLEditor.react.js index a1f46dc328..ff58f22b0e 100644 --- a/src/components/ACLEditor/ACLEditor.react.js +++ b/src/components/ACLEditor/ACLEditor.react.js @@ -9,8 +9,10 @@ import Parse from 'parse'; import PermissionsDialog from 'components/PermissionsDialog/PermissionsDialog.react'; import React from 'react'; -function validateEntry(text) { +function validateEntry(text, returnInvalid = true) { + let type = 'unknown'; + let entry = text; let userQuery; let roleQuery; @@ -19,22 +21,26 @@ function validateEntry(text) { } if (text.startsWith('user:')) { + type = 'user'; // no need to query roles roleQuery = { find: () => Promise.resolve([]) }; let user = text.substring(5); + entry = user; userQuery = new Parse.Query.or( new Parse.Query(Parse.User).equalTo('username', user), new Parse.Query(Parse.User).equalTo('objectId', user) ); } else if (text.startsWith('role:')) { + type = 'role'; // no need to query users userQuery = { find: () => Promise.resolve([]) }; let role = text.substring(5); + entry = role; roleQuery = new Parse.Query.or( new Parse.Query(Parse.Role).equalTo('name', role), new Parse.Query(Parse.Role).equalTo('objectId', role) @@ -61,6 +67,9 @@ function validateEntry(text) { } else if (role.length > 0) { return { entry: role[0], type: 'role' }; } else { + if(returnInvalid) { + return Promise.resolve({entry, type}) + } return Promise.reject(); } }); diff --git a/src/components/PermissionsDialog/PermissionsDialog.react.js b/src/components/PermissionsDialog/PermissionsDialog.react.js index b4d749494f..8ae4241d19 100644 --- a/src/components/PermissionsDialog/PermissionsDialog.react.js +++ b/src/components/PermissionsDialog/PermissionsDialog.react.js @@ -20,6 +20,8 @@ import Toggle from 'components/Toggle/Toggle.react'; import Autocomplete from 'components/Autocomplete/Autocomplete.react'; import { Map, fromJS } from 'immutable'; import TrackVisibility from 'components/TrackVisibility/TrackVisibility.react'; +import {CurrentApp} from '../../context/currentApp'; +import generatePath from '../../lib/generatePath'; let origin = new Position(0, 0); @@ -517,6 +519,8 @@ function renderPointerCheckboxes( const intersectionMargin = '10px 0px 0px 20px'; export default class PermissionsDialog extends React.Component { + static contextType = CurrentApp; + constructor(props) { super(props); @@ -647,7 +651,15 @@ export default class PermissionsDialog extends React.Component { let key; let value = {}; - if (type === 'user') { + if(typeof entry === 'string') { + key = type + ':' + entry; + value[type] = { + name: entry, + id: undefined + }; + } + + else if (type === 'user') { key = entry.id; value[type] = { name: entry.get('username'), @@ -655,7 +667,7 @@ export default class PermissionsDialog extends React.Component { }; } - if (type === 'role') { + else if (type === 'role') { key = 'role:' + entry.getName(); value[type] = { name: entry.getName(), @@ -663,7 +675,7 @@ export default class PermissionsDialog extends React.Component { }; } - if (type === 'pointer') { + else if (type === 'pointer') { key = entry; value[type] = true; } @@ -971,7 +983,21 @@ export default class PermissionsDialog extends React.Component { return output; } + urlForKey(key) { + let isRole = key.startsWith('role:') + let className = isRole ? '_Role' : '_User'; + let field = isRole ? 'name' : 'objectId'; + let value = isRole ? key.replace('role:', '') : key + let filters = JSON.stringify([{ + field, + constraint: 'eq', + compareTo: value + }]); + return generatePath(this.context, `browser/${className}?filters=${encodeURIComponent(filters)}`); + } + renderRow(key, columns, types) { + const pill = text => ( @@ -982,20 +1008,21 @@ export default class PermissionsDialog extends React.Component { const type = (types && types.get(key)) || {}; let pointer = this.state.pointerPerms.has(key); - let label = {key}; + let label = {key}; if (type.user) { label = (

- {type.user.id} + + {type.user.id} + {pill('User')}

- {'username: '} - {type.user.name} + username: {type.user.name ?? 'user not found'}

); @@ -1005,11 +1032,11 @@ export default class PermissionsDialog extends React.Component {

{'role:'} - {type.role.name} + {type.role.name}

- id: {type.role.id} + id: {type.role.id ?? 'role not found'}

); From 163bd8d1cceae70cb6296f8e30b2240735ba48af Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 27 May 2023 00:35:03 +0000 Subject: [PATCH 04/24] chore(release): 5.2.0-alpha.2 [skip ci] # [5.2.0-alpha.2](https://github.com/ParsePlatform/parse-dashboard/compare/5.2.0-alpha.1...5.2.0-alpha.2) (2023-05-27) ### Features * Add links to users and roles in ACL dialog and handle invalid entries ([#2436](https://github.com/ParsePlatform/parse-dashboard/issues/2436)) ([a20cb8e](https://github.com/ParsePlatform/parse-dashboard/commit/a20cb8e534d3fecd8d337463864b15048772a9a5)) --- changelogs/CHANGELOG_alpha.md | 7 +++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/changelogs/CHANGELOG_alpha.md b/changelogs/CHANGELOG_alpha.md index aea883a3e4..18cb12d31d 100644 --- a/changelogs/CHANGELOG_alpha.md +++ b/changelogs/CHANGELOG_alpha.md @@ -1,3 +1,10 @@ +# [5.2.0-alpha.2](https://github.com/ParsePlatform/parse-dashboard/compare/5.2.0-alpha.1...5.2.0-alpha.2) (2023-05-27) + + +### Features + +* Add links to users and roles in ACL dialog and handle invalid entries ([#2436](https://github.com/ParsePlatform/parse-dashboard/issues/2436)) ([a20cb8e](https://github.com/ParsePlatform/parse-dashboard/commit/a20cb8e534d3fecd8d337463864b15048772a9a5)) + # [5.2.0-alpha.1](https://github.com/ParsePlatform/parse-dashboard/compare/5.1.0...5.2.0-alpha.1) (2023-05-21) diff --git a/package-lock.json b/package-lock.json index 33e793eccb..7e4aee5694 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "parse-dashboard", - "version": "5.2.0-alpha.1", + "version": "5.2.0-alpha.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 9f18de539c..fac808a02f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "parse-dashboard", - "version": "5.2.0-alpha.1", + "version": "5.2.0-alpha.2", "repository": { "type": "git", "url": "https://github.com/ParsePlatform/parse-dashboard" From 6f3dab60c257c76345235acfd3e43aafadeb84c8 Mon Sep 17 00:00:00 2001 From: patelmilanun <20059797+patelmilanun@users.noreply.github.com> Date: Sat, 27 May 2023 04:25:38 -0700 Subject: [PATCH 05/24] =?UTF-8?q?fix:=20Empty=20table=20in=20data=20browse?= =?UTF-8?q?r=20when=20navigating=20back=20using=20the=20"back=E2=80=9D=20b?= =?UTF-8?q?utton=20(#2423)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/dashboard/Data/Browser/Browser.react.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dashboard/Data/Browser/Browser.react.js b/src/dashboard/Data/Browser/Browser.react.js index 46e18e8947..b02f19f77f 100644 --- a/src/dashboard/Data/Browser/Browser.react.js +++ b/src/dashboard/Data/Browser/Browser.react.js @@ -179,7 +179,7 @@ class Browser extends DashboardView { } componentWillReceiveProps(nextProps, nextContext) { - if (this.props.params.appId !== nextProps.params.appId || this.props.params.className !== nextProps.params.className || this.props.location.search !== nextProps.location.search) { + if (this.props.params.appId !== nextProps.params.appId || this.props.params.className !== nextProps.params.className || this.props.location.search !== nextProps.location.search || this.props.params?.relationName !== nextProps.params?.relationName) { if (this.props.params.appId !== nextProps.params.appId || !this.props.params.className) { this.setState({ counts: {} }); Parse.Object._clearAllState(); From 9dc8dabaacee336e9b6fac3c2f714a7e8440d5ac Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 27 May 2023 11:27:28 +0000 Subject: [PATCH 06/24] chore(release): 5.2.0-alpha.3 [skip ci] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # [5.2.0-alpha.3](https://github.com/ParsePlatform/parse-dashboard/compare/5.2.0-alpha.2...5.2.0-alpha.3) (2023-05-27) ### Bug Fixes * Empty table in data browser when navigating back using the "back” button ([#2423](https://github.com/ParsePlatform/parse-dashboard/issues/2423)) ([6f3dab6](https://github.com/ParsePlatform/parse-dashboard/commit/6f3dab60c257c76345235acfd3e43aafadeb84c8)) --- changelogs/CHANGELOG_alpha.md | 7 +++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/changelogs/CHANGELOG_alpha.md b/changelogs/CHANGELOG_alpha.md index 18cb12d31d..7c2dc77fc4 100644 --- a/changelogs/CHANGELOG_alpha.md +++ b/changelogs/CHANGELOG_alpha.md @@ -1,3 +1,10 @@ +# [5.2.0-alpha.3](https://github.com/ParsePlatform/parse-dashboard/compare/5.2.0-alpha.2...5.2.0-alpha.3) (2023-05-27) + + +### Bug Fixes + +* Empty table in data browser when navigating back using the "back” button ([#2423](https://github.com/ParsePlatform/parse-dashboard/issues/2423)) ([6f3dab6](https://github.com/ParsePlatform/parse-dashboard/commit/6f3dab60c257c76345235acfd3e43aafadeb84c8)) + # [5.2.0-alpha.2](https://github.com/ParsePlatform/parse-dashboard/compare/5.2.0-alpha.1...5.2.0-alpha.2) (2023-05-27) diff --git a/package-lock.json b/package-lock.json index 7e4aee5694..741b2e6104 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "parse-dashboard", - "version": "5.2.0-alpha.2", + "version": "5.2.0-alpha.3", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index fac808a02f..5952a22272 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "parse-dashboard", - "version": "5.2.0-alpha.2", + "version": "5.2.0-alpha.3", "repository": { "type": "git", "url": "https://github.com/ParsePlatform/parse-dashboard" From b96b48fdd5ce452783e0887c36231971a1822173 Mon Sep 17 00:00:00 2001 From: Ashish Baravaliya <49753983+AshishBarvaliya@users.noreply.github.com> Date: Sat, 27 May 2023 07:39:29 -0400 Subject: [PATCH 07/24] fix: Incorrect date picker position in data browser filter dialog (#2425) --- .../BrowserFilter/BrowserFilter.react.js | 9 ++- .../BrowserFilter/FilterRow.react.js | 56 ++++++++++--------- 2 files changed, 36 insertions(+), 29 deletions(-) diff --git a/src/components/BrowserFilter/BrowserFilter.react.js b/src/components/BrowserFilter/BrowserFilter.react.js index 17de624df6..20446a3654 100644 --- a/src/components/BrowserFilter/BrowserFilter.react.js +++ b/src/components/BrowserFilter/BrowserFilter.react.js @@ -24,6 +24,7 @@ export default class BrowserFilter extends React.Component { this.state = { open: false, + editMode: true, filters: new List(), blacklistedFilters: Filters.BLACKLISTED_FILTERS.concat(props.blacklistedFilters) }; @@ -48,7 +49,8 @@ export default class BrowserFilter extends React.Component { } this.setState(prevState => ({ open: !prevState.open, - filters: filters + filters: filters, + editMode: this.props.filters.size === 0 })); this.props.setCurrent(null); } @@ -59,7 +61,8 @@ export default class BrowserFilter extends React.Component { this.setState(({ filters }) => ({ filters: filters.push( new Map({ field: field, constraint: available[field][0] }) - ) + ), + editMode: true })); } @@ -116,7 +119,7 @@ export default class BrowserFilter extends React.Component { onChange={filters => this.setState({ filters: filters })} onSearch={this.apply.bind(this)} renderRow={props => ( - 0} parentContentId={POPOVER_CONTENT_ID} /> + 0} editMode={this.state.editMode} parentContentId={POPOVER_CONTENT_ID} /> )} />
diff --git a/src/components/BrowserFilter/FilterRow.react.js b/src/components/BrowserFilter/FilterRow.react.js index 80cf0e0ba3..cf8cc5a90d 100644 --- a/src/components/BrowserFilter/FilterRow.react.js +++ b/src/components/BrowserFilter/FilterRow.react.js @@ -11,7 +11,7 @@ import DateTimeEntry from 'components/DateTimeEntry/DateTimeEntry.react'; import Icon from 'components/Icon/Icon.react'; import Parse from 'parse'; import PropTypes from 'lib/PropTypes'; -import React from 'react'; +import React, { useCallback } from 'react'; import styles from 'components/BrowserFilter/BrowserFilter.scss'; import validateNumeric from 'lib/validateNumeric'; @@ -20,13 +20,7 @@ for (let c in Constraints) { constraintLookup[Constraints[c].name] = c; } -let setFocus = (input) => { - if (input !== null) { - input.focus(); - } -} - -function compareValue(info, value, onChangeCompareTo, onKeyDown, active, parentContentId) { +function compareValue(info, value, onChangeCompareTo, onKeyDown, active, parentContentId, setFocus) { switch (info.type) { case null: return null; @@ -91,25 +85,35 @@ let FilterRow = ({ onDeleteRow, active, parentContentId, - }) => ( -
- - Constraints[c].name)} - onChange={(c) => onChangeConstraint(constraintLookup[c], compareTo)} /> - {compareValue(compareInfo, compareTo, onChangeCompareTo, onKeyDown, active, parentContentId)} - -
-); + editMode + }) => { + + let setFocus = useCallback((input) => { + if (input !== null && editMode) { + input.focus(); + } + }, []) + + return ( +
+ + Constraints[c].name)} + onChange={(c) => onChangeConstraint(constraintLookup[c], compareTo)} /> + {compareValue(compareInfo, compareTo, onChangeCompareTo, onKeyDown, active, parentContentId, setFocus)} + +
+ ); +} -export default FilterRow; +export default React.memo(FilterRow); FilterRow.propTypes = { fields: PropTypes.arrayOf(PropTypes.string).isRequired, From cd1a46ea7cf857da8049e1d6c34ae0a1c6ba490a Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 27 May 2023 11:41:45 +0000 Subject: [PATCH 08/24] chore(release): 5.2.0-alpha.4 [skip ci] # [5.2.0-alpha.4](https://github.com/ParsePlatform/parse-dashboard/compare/5.2.0-alpha.3...5.2.0-alpha.4) (2023-05-27) ### Bug Fixes * Incorrect date picker position in data browser filter dialog ([#2425](https://github.com/ParsePlatform/parse-dashboard/issues/2425)) ([b96b48f](https://github.com/ParsePlatform/parse-dashboard/commit/b96b48fdd5ce452783e0887c36231971a1822173)) --- changelogs/CHANGELOG_alpha.md | 7 +++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/changelogs/CHANGELOG_alpha.md b/changelogs/CHANGELOG_alpha.md index 7c2dc77fc4..566ecf9a02 100644 --- a/changelogs/CHANGELOG_alpha.md +++ b/changelogs/CHANGELOG_alpha.md @@ -1,3 +1,10 @@ +# [5.2.0-alpha.4](https://github.com/ParsePlatform/parse-dashboard/compare/5.2.0-alpha.3...5.2.0-alpha.4) (2023-05-27) + + +### Bug Fixes + +* Incorrect date picker position in data browser filter dialog ([#2425](https://github.com/ParsePlatform/parse-dashboard/issues/2425)) ([b96b48f](https://github.com/ParsePlatform/parse-dashboard/commit/b96b48fdd5ce452783e0887c36231971a1822173)) + # [5.2.0-alpha.3](https://github.com/ParsePlatform/parse-dashboard/compare/5.2.0-alpha.2...5.2.0-alpha.3) (2023-05-27) diff --git a/package-lock.json b/package-lock.json index 741b2e6104..678db47123 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "parse-dashboard", - "version": "5.2.0-alpha.3", + "version": "5.2.0-alpha.4", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 5952a22272..0dd9bdfe5f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "parse-dashboard", - "version": "5.2.0-alpha.3", + "version": "5.2.0-alpha.4", "repository": { "type": "git", "url": "https://github.com/ParsePlatform/parse-dashboard" From 6c5f19f6ed2cda1f1f0dc59bdaed3ae49f264380 Mon Sep 17 00:00:00 2001 From: Ghanshyam Tanchak <81280194+ghanshyamtanchak@users.noreply.github.com> Date: Sat, 27 May 2023 17:56:21 +0530 Subject: [PATCH 09/24] fix: Back button in data browser disappears after page refresh (#2421) --- src/components/Toolbar/Toolbar.react.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Toolbar/Toolbar.react.js b/src/components/Toolbar/Toolbar.react.js index 505c37021e..3d7ac51e3b 100644 --- a/src/components/Toolbar/Toolbar.react.js +++ b/src/components/Toolbar/Toolbar.react.js @@ -15,7 +15,7 @@ let Toolbar = (props) => { const action = useNavigationType(); const navigate = useNavigate(); let backButton; - if ((props.relation || (props.filters && props.filters.size)) && action !== NavigationType.Pop) { + if (props.relation || ((props.filters && props.filters.size) && action !== NavigationType.Pop)) { backButton = ( Date: Sat, 27 May 2023 12:29:02 +0000 Subject: [PATCH 10/24] chore(release): 5.2.0-alpha.5 [skip ci] # [5.2.0-alpha.5](https://github.com/ParsePlatform/parse-dashboard/compare/5.2.0-alpha.4...5.2.0-alpha.5) (2023-05-27) ### Bug Fixes * Back button in data browser disappears after page refresh ([#2421](https://github.com/ParsePlatform/parse-dashboard/issues/2421)) ([6c5f19f](https://github.com/ParsePlatform/parse-dashboard/commit/6c5f19f6ed2cda1f1f0dc59bdaed3ae49f264380)) --- changelogs/CHANGELOG_alpha.md | 7 +++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/changelogs/CHANGELOG_alpha.md b/changelogs/CHANGELOG_alpha.md index 566ecf9a02..c8bc2583ad 100644 --- a/changelogs/CHANGELOG_alpha.md +++ b/changelogs/CHANGELOG_alpha.md @@ -1,3 +1,10 @@ +# [5.2.0-alpha.5](https://github.com/ParsePlatform/parse-dashboard/compare/5.2.0-alpha.4...5.2.0-alpha.5) (2023-05-27) + + +### Bug Fixes + +* Back button in data browser disappears after page refresh ([#2421](https://github.com/ParsePlatform/parse-dashboard/issues/2421)) ([6c5f19f](https://github.com/ParsePlatform/parse-dashboard/commit/6c5f19f6ed2cda1f1f0dc59bdaed3ae49f264380)) + # [5.2.0-alpha.4](https://github.com/ParsePlatform/parse-dashboard/compare/5.2.0-alpha.3...5.2.0-alpha.4) (2023-05-27) diff --git a/package-lock.json b/package-lock.json index 678db47123..bdfefa5b33 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "parse-dashboard", - "version": "5.2.0-alpha.4", + "version": "5.2.0-alpha.5", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 0dd9bdfe5f..8d904d9aa8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "parse-dashboard", - "version": "5.2.0-alpha.4", + "version": "5.2.0-alpha.5", "repository": { "type": "git", "url": "https://github.com/ParsePlatform/parse-dashboard" From 422ffb2897bb2664eb47b5aaad5094a8b39431bf Mon Sep 17 00:00:00 2001 From: Ashish Baravaliya <49753983+AshishBarvaliya@users.noreply.github.com> Date: Sat, 27 May 2023 08:33:18 -0400 Subject: [PATCH 11/24] fix: Text input cursor jumps to first position when writing long text (#2413) --- src/components/TextInput/TextInput.react.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/TextInput/TextInput.react.js b/src/components/TextInput/TextInput.react.js index 38149edf12..6ab9df19a5 100644 --- a/src/components/TextInput/TextInput.react.js +++ b/src/components/TextInput/TextInput.react.js @@ -15,6 +15,7 @@ class TextInput extends React.Component { if (props.multiline !== this.props.multiline) { const node = props.forwardedRef.current; node.focus(); + if (this.props.value) node.setSelectionRange(this.props.value.length, this.props.value.length); } } From 60407303a450f8db57023f6d300f9e761cde293b Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 27 May 2023 12:35:11 +0000 Subject: [PATCH 12/24] chore(release): 5.2.0-alpha.6 [skip ci] # [5.2.0-alpha.6](https://github.com/ParsePlatform/parse-dashboard/compare/5.2.0-alpha.5...5.2.0-alpha.6) (2023-05-27) ### Bug Fixes * Text input cursor jumps to first position when writing long text ([#2413](https://github.com/ParsePlatform/parse-dashboard/issues/2413)) ([422ffb2](https://github.com/ParsePlatform/parse-dashboard/commit/422ffb2897bb2664eb47b5aaad5094a8b39431bf)) --- changelogs/CHANGELOG_alpha.md | 7 +++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/changelogs/CHANGELOG_alpha.md b/changelogs/CHANGELOG_alpha.md index c8bc2583ad..cba8221eb6 100644 --- a/changelogs/CHANGELOG_alpha.md +++ b/changelogs/CHANGELOG_alpha.md @@ -1,3 +1,10 @@ +# [5.2.0-alpha.6](https://github.com/ParsePlatform/parse-dashboard/compare/5.2.0-alpha.5...5.2.0-alpha.6) (2023-05-27) + + +### Bug Fixes + +* Text input cursor jumps to first position when writing long text ([#2413](https://github.com/ParsePlatform/parse-dashboard/issues/2413)) ([422ffb2](https://github.com/ParsePlatform/parse-dashboard/commit/422ffb2897bb2664eb47b5aaad5094a8b39431bf)) + # [5.2.0-alpha.5](https://github.com/ParsePlatform/parse-dashboard/compare/5.2.0-alpha.4...5.2.0-alpha.5) (2023-05-27) diff --git a/package-lock.json b/package-lock.json index bdfefa5b33..a145b1526c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "parse-dashboard", - "version": "5.2.0-alpha.5", + "version": "5.2.0-alpha.6", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 8d904d9aa8..0c021df051 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "parse-dashboard", - "version": "5.2.0-alpha.5", + "version": "5.2.0-alpha.6", "repository": { "type": "git", "url": "https://github.com/ParsePlatform/parse-dashboard" From 8190bebd07c0afcc2a3ec6e2c9c4f0f4de90811c Mon Sep 17 00:00:00 2001 From: Manuel <5673677+mtrezza@users.noreply.github.com> Date: Sat, 27 May 2023 14:38:34 +0200 Subject: [PATCH 13/24] ci: Prevent workflow concurrency (#2438) --- .github/workflows/ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 498403c49c..c3cf088219 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -151,3 +151,6 @@ jobs: run: ./scripts/before_script.sh env: CI: true +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true From e761f9715a8366466c6620994ce698adbbfc48cd Mon Sep 17 00:00:00 2001 From: patelmilanun <20059797+patelmilanun@users.noreply.github.com> Date: Sat, 27 May 2023 05:39:49 -0700 Subject: [PATCH 14/24] fix: File uploading status not updating in data browser (#2422) --- src/components/BrowserCell/BrowserCell.react.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/components/BrowserCell/BrowserCell.react.js b/src/components/BrowserCell/BrowserCell.react.js index 96d40b8fcc..b32e5e7a40 100644 --- a/src/components/BrowserCell/BrowserCell.react.js +++ b/src/components/BrowserCell/BrowserCell.react.js @@ -177,6 +177,9 @@ export default class BrowserCell extends Component { componentDidUpdate(prevProps) { if ( this.props.value !== prevProps.value ) { this.renderCellContent(); + this.props.value._previousSave + ?.then(() => this.renderCellContent()) + ?.catch(err => console.log(err)) } if (this.props.current) { const node = this.cellRef.current; From 1b23966c809bdda819c96b313a4b33bb42e05c49 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 27 May 2023 12:41:57 +0000 Subject: [PATCH 15/24] chore(release): 5.2.0-alpha.7 [skip ci] # [5.2.0-alpha.7](https://github.com/ParsePlatform/parse-dashboard/compare/5.2.0-alpha.6...5.2.0-alpha.7) (2023-05-27) ### Bug Fixes * File uploading status not updating in data browser ([#2422](https://github.com/ParsePlatform/parse-dashboard/issues/2422)) ([e761f97](https://github.com/ParsePlatform/parse-dashboard/commit/e761f9715a8366466c6620994ce698adbbfc48cd)) --- changelogs/CHANGELOG_alpha.md | 7 +++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/changelogs/CHANGELOG_alpha.md b/changelogs/CHANGELOG_alpha.md index cba8221eb6..16c209bedb 100644 --- a/changelogs/CHANGELOG_alpha.md +++ b/changelogs/CHANGELOG_alpha.md @@ -1,3 +1,10 @@ +# [5.2.0-alpha.7](https://github.com/ParsePlatform/parse-dashboard/compare/5.2.0-alpha.6...5.2.0-alpha.7) (2023-05-27) + + +### Bug Fixes + +* File uploading status not updating in data browser ([#2422](https://github.com/ParsePlatform/parse-dashboard/issues/2422)) ([e761f97](https://github.com/ParsePlatform/parse-dashboard/commit/e761f9715a8366466c6620994ce698adbbfc48cd)) + # [5.2.0-alpha.6](https://github.com/ParsePlatform/parse-dashboard/compare/5.2.0-alpha.5...5.2.0-alpha.6) (2023-05-27) diff --git a/package-lock.json b/package-lock.json index a145b1526c..95baee17c3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "parse-dashboard", - "version": "5.2.0-alpha.6", + "version": "5.2.0-alpha.7", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 0c021df051..25295f2348 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "parse-dashboard", - "version": "5.2.0-alpha.6", + "version": "5.2.0-alpha.7", "repository": { "type": "git", "url": "https://github.com/ParsePlatform/parse-dashboard" From e7ace9efa068b92c5cf0e5ccdad169ac7d71e81a Mon Sep 17 00:00:00 2001 From: Ashish Baravaliya <49753983+AshishBarvaliya@users.noreply.github.com> Date: Sat, 27 May 2023 08:45:16 -0400 Subject: [PATCH 16/24] fix: Cannot navigate to nested relation field in data browser (#2420) --- src/dashboard/Data/Browser/Browser.react.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dashboard/Data/Browser/Browser.react.js b/src/dashboard/Data/Browser/Browser.react.js index b02f19f77f..7a0f65472a 100644 --- a/src/dashboard/Data/Browser/Browser.react.js +++ b/src/dashboard/Data/Browser/Browser.react.js @@ -857,7 +857,7 @@ class Browser extends DashboardView { getRelationURL() { const relation = this.state.relation; - const className = this.props.params.className; + const className = relation.parent.className; const entityId = relation.parent.id; const relationName = relation.key; return generatePath(this.context, `browser/${className}/${entityId}/${relationName}`); From 1fbcee7ac8aedc09d86598d1d6668dcb5c1cd368 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 27 May 2023 12:47:15 +0000 Subject: [PATCH 17/24] chore(release): 5.2.0-alpha.8 [skip ci] # [5.2.0-alpha.8](https://github.com/ParsePlatform/parse-dashboard/compare/5.2.0-alpha.7...5.2.0-alpha.8) (2023-05-27) ### Bug Fixes * Cannot navigate to nested relation field in data browser ([#2420](https://github.com/ParsePlatform/parse-dashboard/issues/2420)) ([e7ace9e](https://github.com/ParsePlatform/parse-dashboard/commit/e7ace9efa068b92c5cf0e5ccdad169ac7d71e81a)) --- changelogs/CHANGELOG_alpha.md | 7 +++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/changelogs/CHANGELOG_alpha.md b/changelogs/CHANGELOG_alpha.md index 16c209bedb..535e981d0b 100644 --- a/changelogs/CHANGELOG_alpha.md +++ b/changelogs/CHANGELOG_alpha.md @@ -1,3 +1,10 @@ +# [5.2.0-alpha.8](https://github.com/ParsePlatform/parse-dashboard/compare/5.2.0-alpha.7...5.2.0-alpha.8) (2023-05-27) + + +### Bug Fixes + +* Cannot navigate to nested relation field in data browser ([#2420](https://github.com/ParsePlatform/parse-dashboard/issues/2420)) ([e7ace9e](https://github.com/ParsePlatform/parse-dashboard/commit/e7ace9efa068b92c5cf0e5ccdad169ac7d71e81a)) + # [5.2.0-alpha.7](https://github.com/ParsePlatform/parse-dashboard/compare/5.2.0-alpha.6...5.2.0-alpha.7) (2023-05-27) diff --git a/package-lock.json b/package-lock.json index 95baee17c3..d2ced1c441 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "parse-dashboard", - "version": "5.2.0-alpha.7", + "version": "5.2.0-alpha.8", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 25295f2348..5f3c504665 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "parse-dashboard", - "version": "5.2.0-alpha.7", + "version": "5.2.0-alpha.8", "repository": { "type": "git", "url": "https://github.com/ParsePlatform/parse-dashboard" From 286269f3e2c4e1c83b14003ce72caaf1f39b16c1 Mon Sep 17 00:00:00 2001 From: TravisHeaver Date: Sat, 27 May 2023 07:57:49 -0500 Subject: [PATCH 18/24] fix: Dashboard crashes when adding a row with modal in a class that contains a pointer to another class that contains an array of pointers (#2416) --- src/components/BrowserCell/BrowserCell.react.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/BrowserCell/BrowserCell.react.js b/src/components/BrowserCell/BrowserCell.react.js index b32e5e7a40..aa134b58c3 100644 --- a/src/components/BrowserCell/BrowserCell.react.js +++ b/src/components/BrowserCell/BrowserCell.react.js @@ -92,7 +92,7 @@ export default class BrowserCell extends Component { this.copyableValue = this.props.value.id; } else if (this.props.type === 'Array') { - if ( this.props.value[0] && typeof this.props.value[0] === 'object' && this.props.value[0].__type === 'Pointer' ) { + if ( this.props.value[0] && typeof this.props.value[0] === 'object' && this.props.value[0].__type === 'Pointer' && typeof this.props.onPointerClick === 'function' ) { const array = []; this.props.value.map( (v, i) => { if ( typeof v !== 'object' || v.__type !== 'Pointer' ) { From 34b7f8320c21e1eacbce0280eabd238b359333dc Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 27 May 2023 13:00:37 +0000 Subject: [PATCH 19/24] chore(release): 5.2.0-alpha.9 [skip ci] # [5.2.0-alpha.9](https://github.com/ParsePlatform/parse-dashboard/compare/5.2.0-alpha.8...5.2.0-alpha.9) (2023-05-27) ### Bug Fixes * Dashboard crashes when adding a row with modal in a class that contains a pointer to another class that contains an array of pointers ([#2416](https://github.com/ParsePlatform/parse-dashboard/issues/2416)) ([286269f](https://github.com/ParsePlatform/parse-dashboard/commit/286269f3e2c4e1c83b14003ce72caaf1f39b16c1)) --- changelogs/CHANGELOG_alpha.md | 7 +++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/changelogs/CHANGELOG_alpha.md b/changelogs/CHANGELOG_alpha.md index 535e981d0b..3f828b0f18 100644 --- a/changelogs/CHANGELOG_alpha.md +++ b/changelogs/CHANGELOG_alpha.md @@ -1,3 +1,10 @@ +# [5.2.0-alpha.9](https://github.com/ParsePlatform/parse-dashboard/compare/5.2.0-alpha.8...5.2.0-alpha.9) (2023-05-27) + + +### Bug Fixes + +* Dashboard crashes when adding a row with modal in a class that contains a pointer to another class that contains an array of pointers ([#2416](https://github.com/ParsePlatform/parse-dashboard/issues/2416)) ([286269f](https://github.com/ParsePlatform/parse-dashboard/commit/286269f3e2c4e1c83b14003ce72caaf1f39b16c1)) + # [5.2.0-alpha.8](https://github.com/ParsePlatform/parse-dashboard/compare/5.2.0-alpha.7...5.2.0-alpha.8) (2023-05-27) diff --git a/package-lock.json b/package-lock.json index d2ced1c441..84f45c3d87 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "parse-dashboard", - "version": "5.2.0-alpha.8", + "version": "5.2.0-alpha.9", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 5f3c504665..49d0529ee3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "parse-dashboard", - "version": "5.2.0-alpha.8", + "version": "5.2.0-alpha.9", "repository": { "type": "git", "url": "https://github.com/ParsePlatform/parse-dashboard" From 66233698b333422f306dc7024949aef2ea028f34 Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 1 Jun 2023 23:17:24 +1000 Subject: [PATCH 20/24] fix: Option missing for Parse Config parameter to require master key (#2440) --- src/dashboard/Data/Config/Config.react.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/dashboard/Data/Config/Config.react.js b/src/dashboard/Data/Config/Config.react.js index 4f5a9e2dda..80f83d08d1 100644 --- a/src/dashboard/Data/Config/Config.react.js +++ b/src/dashboard/Data/Config/Config.react.js @@ -58,7 +58,6 @@ class Config extends TableView { } renderExtras() { - const { currentApp = {} } = this.context; let extras = null; if (this.state.modalOpen) { extras = ( @@ -69,7 +68,7 @@ class Config extends TableView { type={this.state.modalType} value={this.state.modalValue} masterKeyOnly={this.state.modalMasterKeyOnly} - parseServerVersion={currentApp.serverInfo && currentApp.serverInfo.parseServerVersion} /> + parseServerVersion={this.context.serverInfo?.parseServerVersion} /> ); } else if (this.state.showDeleteParameterDialog) { extras = ( @@ -129,7 +128,7 @@ class Config extends TableView { } openModal() } - + let openDeleteParameterDialog = () => this.setState({ showDeleteParameterDialog: true, modalParam: data.param From b1542ab183bd1c6275d649da003d9659689e95e5 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Thu, 1 Jun 2023 13:19:31 +0000 Subject: [PATCH 21/24] chore(release): 5.2.0-alpha.10 [skip ci] # [5.2.0-alpha.10](https://github.com/ParsePlatform/parse-dashboard/compare/5.2.0-alpha.9...5.2.0-alpha.10) (2023-06-01) ### Bug Fixes * Option missing for Parse Config parameter to require master key ([#2440](https://github.com/ParsePlatform/parse-dashboard/issues/2440)) ([6623369](https://github.com/ParsePlatform/parse-dashboard/commit/66233698b333422f306dc7024949aef2ea028f34)) --- changelogs/CHANGELOG_alpha.md | 7 +++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/changelogs/CHANGELOG_alpha.md b/changelogs/CHANGELOG_alpha.md index 3f828b0f18..e963538eab 100644 --- a/changelogs/CHANGELOG_alpha.md +++ b/changelogs/CHANGELOG_alpha.md @@ -1,3 +1,10 @@ +# [5.2.0-alpha.10](https://github.com/ParsePlatform/parse-dashboard/compare/5.2.0-alpha.9...5.2.0-alpha.10) (2023-06-01) + + +### Bug Fixes + +* Option missing for Parse Config parameter to require master key ([#2440](https://github.com/ParsePlatform/parse-dashboard/issues/2440)) ([6623369](https://github.com/ParsePlatform/parse-dashboard/commit/66233698b333422f306dc7024949aef2ea028f34)) + # [5.2.0-alpha.9](https://github.com/ParsePlatform/parse-dashboard/compare/5.2.0-alpha.8...5.2.0-alpha.9) (2023-05-27) diff --git a/package-lock.json b/package-lock.json index 84f45c3d87..8aefad5f81 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "parse-dashboard", - "version": "5.2.0-alpha.9", + "version": "5.2.0-alpha.10", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 49d0529ee3..d70da4a630 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "parse-dashboard", - "version": "5.2.0-alpha.9", + "version": "5.2.0-alpha.10", "repository": { "type": "git", "url": "https://github.com/ParsePlatform/parse-dashboard" From 667675c031b0483be210a88da3b159f5f815d6fb Mon Sep 17 00:00:00 2001 From: Ashish Baravaliya <49753983+AshishBarvaliya@users.noreply.github.com> Date: Thu, 8 Jun 2023 08:00:30 -0400 Subject: [PATCH 22/24] fix: Scroll position is preserved when re-opening the same class in data browser via navigation bar (#2445) --- src/dashboard/Data/Browser/BrowserTable.react.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/dashboard/Data/Browser/BrowserTable.react.js b/src/dashboard/Data/Browser/BrowserTable.react.js index dc19d72a54..235241ccd8 100644 --- a/src/dashboard/Data/Browser/BrowserTable.react.js +++ b/src/dashboard/Data/Browser/BrowserTable.react.js @@ -47,6 +47,10 @@ export default class BrowserTable extends React.Component { } else if (this.props.ordering !== props.ordering) { this.setState({ offset: 0 }); this.tableRef.current.scrollTop = 0; + } else if (this.props.filters.size !== props.filters.size) { + this.setState({ offset: 0 }, () => { + this.tableRef.current.scrollTop = 0; + }); } } From 27cdaf194819a2dc5ba0e15b59dd68bc5c9924c5 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Thu, 8 Jun 2023 12:03:04 +0000 Subject: [PATCH 23/24] chore(release): 5.2.0-alpha.11 [skip ci] # [5.2.0-alpha.11](https://github.com/ParsePlatform/parse-dashboard/compare/5.2.0-alpha.10...5.2.0-alpha.11) (2023-06-08) ### Bug Fixes * Scroll position is preserved when re-opening the same class in data browser via navigation bar ([#2445](https://github.com/ParsePlatform/parse-dashboard/issues/2445)) ([667675c](https://github.com/ParsePlatform/parse-dashboard/commit/667675c031b0483be210a88da3b159f5f815d6fb)) --- changelogs/CHANGELOG_alpha.md | 7 +++++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/changelogs/CHANGELOG_alpha.md b/changelogs/CHANGELOG_alpha.md index e963538eab..21e7c62163 100644 --- a/changelogs/CHANGELOG_alpha.md +++ b/changelogs/CHANGELOG_alpha.md @@ -1,3 +1,10 @@ +# [5.2.0-alpha.11](https://github.com/ParsePlatform/parse-dashboard/compare/5.2.0-alpha.10...5.2.0-alpha.11) (2023-06-08) + + +### Bug Fixes + +* Scroll position is preserved when re-opening the same class in data browser via navigation bar ([#2445](https://github.com/ParsePlatform/parse-dashboard/issues/2445)) ([667675c](https://github.com/ParsePlatform/parse-dashboard/commit/667675c031b0483be210a88da3b159f5f815d6fb)) + # [5.2.0-alpha.10](https://github.com/ParsePlatform/parse-dashboard/compare/5.2.0-alpha.9...5.2.0-alpha.10) (2023-06-01) diff --git a/package-lock.json b/package-lock.json index 8aefad5f81..255488384c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "parse-dashboard", - "version": "5.2.0-alpha.10", + "version": "5.2.0-alpha.11", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index d70da4a630..f24d342ff2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "parse-dashboard", - "version": "5.2.0-alpha.10", + "version": "5.2.0-alpha.11", "repository": { "type": "git", "url": "https://github.com/ParsePlatform/parse-dashboard" From 46eee53267635117a51c441748a39286e3df3a41 Mon Sep 17 00:00:00 2001 From: Manuel Trezza <5673677+mtrezza@users.noreply.github.com> Date: Thu, 8 Jun 2023 19:14:45 +0200 Subject: [PATCH 24/24] empty commit