diff --git a/extensions/mssql/src/objectManagement/localizedConstants.ts b/extensions/mssql/src/objectManagement/localizedConstants.ts index eaa3b156fe..4176c1f299 100644 --- a/extensions/mssql/src/objectManagement/localizedConstants.ts +++ b/extensions/mssql/src/objectManagement/localizedConstants.ts @@ -99,6 +99,7 @@ export const NameCannotBeEmptyError = localize('objectManagement.nameCannotBeEmp export const PasswordCannotBeEmptyError = localize('objectManagement.passwordCannotBeEmptyError', "Password cannot be empty."); export const PasswordsNotMatchError = localize('objectManagement.passwordsNotMatchError', "Password must match the confirm password."); export const InvalidPasswordError = localize('objectManagement.invalidPasswordError', "Password doesn't meet the complexity requirement. For more information: https://docs.microsoft.com/sql/relational-databases/security/password-policy"); +export const LoginNotSelectedError = localize('objectManagement.loginNotSelectedError', "Login is not selected."); // Login export const BlankPasswordConfirmationText: string = localize('objectManagement.blankPasswordConfirmation', "Creating a login with a blank password is a security risk. Are you sure you want to continue?"); diff --git a/extensions/mssql/src/objectManagement/ui/loginDialog.ts b/extensions/mssql/src/objectManagement/ui/loginDialog.ts index 530f81b980..907f61d381 100644 --- a/extensions/mssql/src/objectManagement/ui/loginDialog.ts +++ b/extensions/mssql/src/objectManagement/ui/loginDialog.ts @@ -138,13 +138,7 @@ export class LoginDialog extends ObjectManagementDialogBase { this.objectInfo.authenticationType = getAuthenticationTypeByDisplayName(this.authTypeDropdown.value); this.setViewByAuthenticationType(); @@ -240,24 +234,14 @@ export class LoginDialog extends ObjectManagementDialogBase { this.objectInfo.defaultDatabase = this.defaultDatabaseDropdown.value; this.onObjectValueChange(); })); - this.defaultLanguageDropdown = this.modelView.modelBuilder.dropDown().withProps({ - ariaLabel: localizedConstants.DefaultLanguageText, - values: this.viewInfo.languages, - value: this.objectInfo.defaultLanguage, - width: DefaultInputWidth - }).component(); + this.defaultLanguageDropdown = this.createDropdown(localizedConstants.DefaultLanguageText, this.viewInfo.languages, this.objectInfo.defaultLanguage); const defaultLanguageContainer = this.createLabelInputContainer(localizedConstants.DefaultLanguageText, this.defaultLanguageDropdown); this.disposables.push(this.defaultLanguageDropdown.onValueChanged(() => { this.objectInfo.defaultLanguage = this.defaultLanguageDropdown.value; diff --git a/extensions/mssql/src/objectManagement/ui/objectManagementDialogBase.ts b/extensions/mssql/src/objectManagement/ui/objectManagementDialogBase.ts index 2f2de79f42..b6a018de80 100644 --- a/extensions/mssql/src/objectManagement/ui/objectManagementDialogBase.ts +++ b/extensions/mssql/src/objectManagement/ui/objectManagementDialogBase.ts @@ -282,6 +282,21 @@ export abstract class ObjectManagementDialogBase { this.objectInfo.defaultSchema = this.defaultSchemaDropdown.value; this.onObjectValueChange(); })); - this.typeDropdown = this.modelView.modelBuilder.dropDown().withProps({ - ariaLabel: localizedConstants.UserTypeText, - // only supporting user with login for initial preview - //values: [localizedConstants.UserWithLoginText, localizedConstants.UserWithWindowsGroupLoginText, localizedConstants.ContainedUserText, localizedConstants.UserWithNoConnectAccess], - values: [localizedConstants.UserWithLoginText], - value: getUserTypeDisplayName(this.objectInfo.type), - width: DefaultInputWidth, - enabled: this.isNewObject - }).component(); + // only supporting user with login for initial preview + // const userTypes = [localizedConstants.UserWithLoginText, localizedConstants.UserWithWindowsGroupLoginText, localizedConstants.ContainedUserText, localizedConstants.UserWithNoConnectAccess], + const userTypes = [localizedConstants.UserWithLoginText]; + this.typeDropdown = this.createDropdown(localizedConstants.UserTypeText, userTypes, getUserTypeDisplayName(this.objectInfo.type), this.isNewObject); this.disposables.push(this.typeDropdown.onValueChanged(async () => { this.objectInfo.type = getUserTypeByDisplayName(this.typeDropdown.value); this.onObjectValueChange(); @@ -126,17 +119,11 @@ export class UserDialog extends ObjectManagementDialogBase { + this.loginDropdown = this.createDropdown(localizedConstants.LoginText, this.viewInfo.logins, this.objectInfo.loginName, this.isNewObject); + this.disposables.push(this.loginDropdown.onValueChanged(async () => { this.objectInfo.loginName = this.loginDropdown.value; this.onObjectValueChange(); + await this.runValidation(false); })); this.loginContainer = this.createLabelInputContainer(localizedConstants.LoginText, this.loginDropdown); @@ -150,13 +137,7 @@ export class UserDialog extends ObjectManagementDialogBase { this.objectInfo.authenticationType = getAuthenticationTypeByDisplayName(this.authTypeDropdown.value); @@ -204,12 +185,7 @@ export class UserDialog extends ObjectManagementDialogBase { this.objectInfo.defaultLanguage = this.defaultLanguageDropdown.value; this.onObjectValueChange();