@@ -58,8 +58,10 @@ import { FileInput } from './file_input.js';
5858const { div, hr, span } = van . tags ;
5959const secretsPlaceholder = '<hidden for safety reasons>' ;
6060const defaultPorts = {
61- mssql : '1433' ,
6261 redshift : '5439' ,
62+ azure_mssql : '1433' ,
63+ synapse_mssql : '1433' ,
64+ mssql : '1433' ,
6365 postgresql : '5432' ,
6466 snowflake : '443' ,
6567 databricks : '443' ,
@@ -153,6 +155,7 @@ const ConnectionForm = (props, saveButton) => {
153155
154156 const authenticationForms = {
155157 redshift : ( ) => PasswordConnectionForm (
158+ connection ,
156159 connectionPassword ,
157160 ( value , state ) => {
158161 connectionPassword . val = value ;
@@ -161,6 +164,7 @@ const ConnectionForm = (props, saveButton) => {
161164 isEditMode ,
162165 ) ,
163166 mssql : ( ) => PasswordConnectionForm (
167+ connection ,
164168 connectionPassword ,
165169 ( value , state ) => {
166170 connectionPassword . val = value ;
@@ -169,6 +173,7 @@ const ConnectionForm = (props, saveButton) => {
169173 isEditMode ,
170174 ) ,
171175 postgresql : ( ) => PasswordConnectionForm (
176+ connection ,
172177 connectionPassword ,
173178 ( value , state ) => {
174179 connectionPassword . val = value ;
@@ -177,6 +182,7 @@ const ConnectionForm = (props, saveButton) => {
177182 isEditMode ,
178183 ) ,
179184 snowflake : ( ) => KeyPairConnectionForm (
185+ connection ,
180186 connectByKey ,
181187 connectionPassword ,
182188 privateKey ,
@@ -191,6 +197,7 @@ const ConnectionForm = (props, saveButton) => {
191197 isEditMode ,
192198 ) ,
193199 databricks : ( ) => HttpPathConnectionForm (
200+ connection ,
194201 connectionPassword ,
195202 httpPath ,
196203 ( value , state ) => {
@@ -204,12 +211,18 @@ const ConnectionForm = (props, saveButton) => {
204211 const authenticationForm = van . derive ( ( ) => {
205212 const selectedFlavorCode = connectionFlavor . val ;
206213 const flavor = getValue ( props . flavors ) . find ( f => f . value === selectedFlavorCode ) ;
207-
208- connectionPort . val = defaultPorts [ flavor . flavor ] ;
209-
210214 return authenticationForms [ flavor . flavor ] ( ) ;
211215 } ) ;
212216
217+ van . derive ( ( ) => {
218+ const selectedFlavorCode = connectionFlavor . val ;
219+ const previousFlavorCode = connectionFlavor . oldVal ;
220+ const isCustomPort = connectionPort . rawVal !== defaultPorts [ previousFlavorCode ] ;
221+ if ( selectedFlavorCode !== previousFlavorCode && ( ! isCustomPort || ! connectionPort . rawVal ) ) {
222+ connectionPort . val = defaultPorts [ selectedFlavorCode ] ;
223+ }
224+ } ) ;
225+
213226 return div (
214227 { class : 'flex-column fx-gap-3 fx-align-stretch' , style : 'overflow-y: auto;' } ,
215228 div (
@@ -338,6 +351,7 @@ const ConnectionForm = (props, saveButton) => {
338351 disabled : true ,
339352 value : connectionStringPrefix ,
340353 height : 38 ,
354+ width : 255 ,
341355 name : 'url_prefix' ,
342356 } ) ,
343357 Input ( {
@@ -378,7 +392,7 @@ const ConnectionForm = (props, saveButton) => {
378392 ) ;
379393} ;
380394
381- const PasswordConnectionForm = ( password , onValueChange , useSecretsPlaceholder ) => {
395+ const PasswordConnectionForm = ( connection , password , onValueChange , useSecretsPlaceholder ) => {
382396 return div (
383397 { class : 'flex-row fx-gap-3 fx-align-stretch' } ,
384398 div (
@@ -389,7 +403,7 @@ const PasswordConnectionForm = (password, onValueChange, useSecretsPlaceholder)
389403 value : password ,
390404 height : 38 ,
391405 type : 'password' ,
392- placeholder : useSecretsPlaceholder ? secretsPlaceholder : '' ,
406+ placeholder : ( useSecretsPlaceholder && connection . password ) ? secretsPlaceholder : '' ,
393407 onChange : onValueChange ,
394408 } ) ,
395409 ) ,
@@ -401,6 +415,7 @@ const PasswordConnectionForm = (password, onValueChange, useSecretsPlaceholder)
401415} ;
402416
403417const HttpPathConnectionForm = (
418+ connection ,
404419 password ,
405420 httpPath ,
406421 onValueChange ,
@@ -425,7 +440,7 @@ const HttpPathConnectionForm = (
425440 value : password ,
426441 height : 38 ,
427442 type : 'password' ,
428- placeholder : useSecretsPlaceholder ? secretsPlaceholder : '' ,
443+ placeholder : ( useSecretsPlaceholder && connection . password ) ? secretsPlaceholder : '' ,
429444 onChange : ( value , state ) => passwordFieldState . val = { value, valid : state . valid } ,
430445 } ) ,
431446 Input ( {
@@ -446,6 +461,7 @@ const HttpPathConnectionForm = (
446461} ;
447462
448463const KeyPairConnectionForm = (
464+ connection ,
449465 connectByKey ,
450466 password ,
451467 privateKey ,
@@ -503,12 +519,13 @@ const KeyPairConnectionForm = (
503519 height : 38 ,
504520 type : 'password' ,
505521 help : 'Passphrase used when creating the private key. Leave empty if the private key is not encrypted.' ,
506- placeholder : useSecretsPlaceholder ? secretsPlaceholder : '' ,
522+ placeholder : ( useSecretsPlaceholder && connection . private_key_passphrase ) ? secretsPlaceholder : '' ,
507523 onChange : ( value , state ) => privateKeyPhraseFieldState . val = { value, valid : state . valid } ,
508524 } ) ,
509525 FileInput ( {
510526 name : 'private_key' ,
511527 label : 'Upload private key (rsa_key.p8)' ,
528+ placeholder : connection . private_key ? 'Drop file here or browse files to replace existing key' : undefined ,
512529 value : privateKey ,
513530 onChange : ( value , state ) => privateKeyFieldState . val = { value, valid : state . valid } ,
514531 validators : [
@@ -524,7 +541,7 @@ const KeyPairConnectionForm = (
524541 value : password ,
525542 height : 38 ,
526543 type : 'password' ,
527- placeholder : useSecretsPlaceholder ? secretsPlaceholder : '' ,
544+ placeholder : ( useSecretsPlaceholder && connection . password ) ? secretsPlaceholder : '' ,
528545 onChange : ( value , state ) => passwordFieldState . val = { value, valid : state . valid } ,
529546 } ) ;
530547 } ,
0 commit comments