Fix change email & reset password buttons. Fix sorting of lists. Fixed admin checkbox bug
This commit is contained in:
6
website/package-lock.json
generated
6
website/package-lock.json
generated
@@ -14167,9 +14167,9 @@
|
||||
}
|
||||
},
|
||||
"react-form-binder": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/react-form-binder/-/react-form-binder-2.0.0.tgz",
|
||||
"integrity": "sha512-ihqbA3sp8eOOvjN2cSWOC7pfK+ukuRW5+dgpbrDJKnH/wgJ0LSMaJg2d/lX8bc0XO7+KxRJi7mBdizvCT1qhgQ==",
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/react-form-binder/-/react-form-binder-2.0.1.tgz",
|
||||
"integrity": "sha512-QOIO7dd6s+zvw6V3JdaWbuCKm6OwunOemuvR7ds98nnPoUXXZ3Fv4SLRGkt3GcI97a5PDlWvNAN/9qz571SHjA==",
|
||||
"requires": {
|
||||
"eventemitter3": "^2.0.3",
|
||||
"prop-types": "^15.5.10",
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
"radium": "^0.22.0",
|
||||
"react": "^16.2.0",
|
||||
"react-dom": "^16.2.0",
|
||||
"react-form-binder": "^2.0.0",
|
||||
"react-form-binder": "^2.0.1",
|
||||
"react-router-dom": "^4.1.1",
|
||||
"regexp-pattern": "^1.0.4",
|
||||
"socket.io-client": "^2.0.3"
|
||||
|
||||
@@ -16,7 +16,7 @@ export class MasterDetail extends Component {
|
||||
updateItem: PropTypes.func.isRequired,
|
||||
createItem: PropTypes.func.isRequired,
|
||||
deleteItem: PropTypes.func.isRequired,
|
||||
sort: PropTypes.func.isRequired,
|
||||
listSort: PropTypes.func.isRequired,
|
||||
detailCallbacks: PropTypes.object,
|
||||
listData: PropTypes.func,
|
||||
children: PropTypes.element,
|
||||
@@ -44,7 +44,7 @@ export class MasterDetail extends Component {
|
||||
this.props
|
||||
.listItems()
|
||||
.then((list) => {
|
||||
this.setState({ items: list.items })
|
||||
this.setState({ items: list.items.sort(this.props.listSort) })
|
||||
|
||||
const { history } = this.props
|
||||
const search = new URLSearchParams(history.location.search)
|
||||
@@ -68,10 +68,6 @@ export class MasterDetail extends Component {
|
||||
})
|
||||
}
|
||||
|
||||
get selectedItem() {
|
||||
return this.state.selectedItem
|
||||
}
|
||||
|
||||
@autobind
|
||||
showWait(message) {
|
||||
this.setState({
|
||||
@@ -91,18 +87,22 @@ export class MasterDetail extends Component {
|
||||
@autobind
|
||||
showMessage(message, detail) {
|
||||
this.setState({
|
||||
icon: "thumb",
|
||||
message,
|
||||
detail,
|
||||
messageModal: {
|
||||
icon: "thumb",
|
||||
message,
|
||||
detail,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
@autobind
|
||||
showErrorMessage(message, detail) {
|
||||
this.setState({
|
||||
icon: "hand",
|
||||
message,
|
||||
detail,
|
||||
messageModal: {
|
||||
icon: "hand",
|
||||
message,
|
||||
detail,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
@@ -116,6 +116,18 @@ export class MasterDetail extends Component {
|
||||
})
|
||||
}
|
||||
|
||||
@autobind
|
||||
hideYesNo() {
|
||||
this.setState({
|
||||
yesNoModal: null,
|
||||
})
|
||||
}
|
||||
|
||||
@autobind
|
||||
getSelectedItem() {
|
||||
return this.state.selectedItem
|
||||
}
|
||||
|
||||
@autobind
|
||||
removeUnfinishedNewItem() {
|
||||
let items = this.state.items
|
||||
@@ -178,7 +190,7 @@ export class MasterDetail extends Component {
|
||||
this.setState({
|
||||
items: this.state.items
|
||||
.map((item) => (!item._id ? createdItem : item))
|
||||
.sort(this.props.sort),
|
||||
.sort(this.props.listSort),
|
||||
modified: false,
|
||||
selectedItem: createdItem,
|
||||
})
|
||||
@@ -231,9 +243,7 @@ export class MasterDetail extends Component {
|
||||
}
|
||||
}
|
||||
|
||||
this.setState({
|
||||
yesNoModal: null,
|
||||
})
|
||||
this.hideYesNo()
|
||||
}
|
||||
|
||||
@autobind
|
||||
@@ -247,9 +257,7 @@ export class MasterDetail extends Component {
|
||||
delete this.nextSelectedItem
|
||||
}
|
||||
|
||||
this.setState({
|
||||
yesNoModal: null,
|
||||
})
|
||||
this.hideYesNo()
|
||||
}
|
||||
|
||||
@autobind
|
||||
@@ -312,7 +320,7 @@ export class MasterDetail extends Component {
|
||||
color: colorInfo.headerBorder,
|
||||
}}
|
||||
radius={sizeInfo.formBoxRadius}>
|
||||
{this.state.selectedItem ? (
|
||||
{selectedItem ? (
|
||||
React.createElement(this.props.form, {
|
||||
item: selectedItem,
|
||||
onSave: this.handleSave,
|
||||
|
||||
@@ -20,7 +20,7 @@ export class Teams extends Component {
|
||||
updateItem={api.updateTeam}
|
||||
createItem={api.createTeam}
|
||||
deleteItem={api.deleteTeam}
|
||||
sort={(a, b) => a.name.localeCompare(b.name)}
|
||||
listSort={(a, b) => a.name.localeCompare(b.name)}
|
||||
listData={(team) => ({
|
||||
icon: "team",
|
||||
text: team.name,
|
||||
|
||||
@@ -57,9 +57,9 @@ export class UserForm extends React.Component {
|
||||
isValid: true,
|
||||
},
|
||||
administrator: {
|
||||
isValid: (r, v) => true,
|
||||
initValue: false,
|
||||
isDisabled: (r) => api.loggedInUser._id === r._id, // Adding a new user
|
||||
isValid: true,
|
||||
initValue: false,
|
||||
alwaysGet: true,
|
||||
},
|
||||
remove: {
|
||||
@@ -274,7 +274,7 @@ export class UserForm extends React.Component {
|
||||
<BoundCheckbox
|
||||
label={"Administrator"}
|
||||
name="administrator"
|
||||
binder={this.state.binder}
|
||||
binder={binder}
|
||||
/>
|
||||
</Row.Item>
|
||||
<Row.Item grow />
|
||||
|
||||
@@ -21,20 +21,21 @@ export class Users extends Component {
|
||||
@autobind
|
||||
handleChangeEmail() {
|
||||
this.setState({
|
||||
changeEmailModal: { oldEmail: this.state.selectedUser.email },
|
||||
changeEmailModal: { oldEmail: this.masterDetail.getSelectedItem().email },
|
||||
})
|
||||
}
|
||||
|
||||
@autobind
|
||||
handleSendPasswordReset() {
|
||||
const selectedItem = this.masterDetail.getSelectedItem()
|
||||
this.setState({ waitModal: "Sending Password Reset Email..." })
|
||||
api
|
||||
.sendResetPassword(this.state.selectedUser.email)
|
||||
.sendResetPassword(selectedItem.email)
|
||||
.then(() => {
|
||||
this.masterDetail.hideWait()
|
||||
this.masterDetail.showMessage(
|
||||
`An email has been sent to '${
|
||||
this.masterDetail.selectedItem.email
|
||||
selectedItem.email
|
||||
}' with instructions on how to reset their password`
|
||||
)
|
||||
})
|
||||
@@ -49,14 +50,17 @@ export class Users extends Component {
|
||||
|
||||
@autobind
|
||||
handleResendEmail() {
|
||||
const selectedItem = this.masterDetail.getSelectedItem()
|
||||
this.masterDetail.showWait("Resending Email...")
|
||||
api
|
||||
.sendConfirmEmail({ existingEmail: this.masterDetail.selectedItem.email })
|
||||
.sendConfirmEmail({
|
||||
existingEmail: selectedItem.email,
|
||||
})
|
||||
.then(() => {
|
||||
this.masterDetail.hideWait()
|
||||
this.masterDetail.showMessage(
|
||||
`An email has been sent to '${
|
||||
this.masterDetail.selectedItem.email
|
||||
selectedItem.email
|
||||
}' with further instructions.`
|
||||
)
|
||||
})
|
||||
@@ -78,10 +82,13 @@ export class Users extends Component {
|
||||
this.setState({
|
||||
waitModal: { message: "Requesting Email Change..." },
|
||||
})
|
||||
if (this.state.selectedUser) {
|
||||
|
||||
const selectedItem = this.masterDetail.getSelectedItem()
|
||||
|
||||
if (selectedItem) {
|
||||
api
|
||||
.sendConfirmEmail({
|
||||
existingEmail: this.state.selectedUser.email,
|
||||
existingEmail: selectedItem.email,
|
||||
newEmail,
|
||||
})
|
||||
.then(() => {
|
||||
@@ -116,7 +123,7 @@ export class Users extends Component {
|
||||
onResendEmail: this.handleResendEmail,
|
||||
onResetPassword: this.handleSendPasswordReset,
|
||||
}}
|
||||
sort={(a, b) => 0}
|
||||
listSort={(a, b) => a.lastName.localeCompare(b.lastName)}
|
||||
listData={(user) => ({
|
||||
icon: user.administrator ? "admin" : "profile",
|
||||
text: user.firstName + " " + user.lastName,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
export const versionInfo = {
|
||||
version: '1.0.0',
|
||||
fullVersion: '1.0.0-20180514.0',
|
||||
fullVersion: '1.0.0-20180514.1',
|
||||
title: 'Deighton AR System',
|
||||
copyright: '© 2018, Kingston Software Solutions.',
|
||||
supportEmail: 'support@kss.us.com',
|
||||
|
||||
Reference in New Issue
Block a user