in packages/aws-amplify-react/src/Auth/SignUp.tsx [113:174]
sortFields() {
if (
this.props.signUpConfig &&
this.props.signUpConfig.hiddenDefaults &&
this.props.signUpConfig.hiddenDefaults.length > 0
) {
this.defaultSignUpFields = this.defaultSignUpFields.filter(d => {
return !this.props.signUpConfig.hiddenDefaults.includes(d.key);
});
}
if (this.checkCustomSignUpFields()) {
if (
!this.props.signUpConfig ||
!this.props.signUpConfig.hideAllDefaults
) {
// see if fields passed to component should override defaults
this.defaultSignUpFields.forEach(f => {
const matchKey = this.signUpFields.findIndex(d => {
return d.key === f.key;
});
if (matchKey === -1) {
this.signUpFields.push(f);
}
});
}
/*
sort fields based on following rules:
1. Fields with displayOrder are sorted before those without displayOrder
2. Fields with conflicting displayOrder are sorted alphabetically by key
3. Fields without displayOrder are sorted alphabetically by key
*/
this.signUpFields.sort((a, b) => {
if (a.displayOrder && b.displayOrder) {
if (a.displayOrder < b.displayOrder) {
return -1;
} else if (a.displayOrder > b.displayOrder) {
return 1;
} else {
if (a.key < b.key) {
return -1;
} else {
return 1;
}
}
} else if (!a.displayOrder && b.displayOrder) {
return 1;
} else if (a.displayOrder && !b.displayOrder) {
return -1;
} else if (!a.displayOrder && !b.displayOrder) {
if (a.key < b.key) {
return -1;
} else {
return 1;
}
}
});
} else {
this.signUpFields = this.defaultSignUpFields;
}
}