@@ -106,11 +106,11 @@ For a list of all available props and attributes, please check the [HTMLInputEle
106106<script >
107107import AlertCircle from ' vue-material-design-icons/AlertCircleOutline.vue'
108108import Check from ' vue-material-design-icons/Check.vue'
109+ import NcButton from ' ../NcButton/NcButton.vue'
109110import { useModelMigration } from ' ../../composables/useModelMigration.ts'
110111import GenRandomId from ' ../../utils/GenRandomId.js'
111112import { isLegacy32 } from ' ../../utils/legacy.ts'
112113import { logger } from ' ../../utils/logger.ts'
113- import NcButton from ' ../NcButton/index.js'
114114
115115export default {
116116 name: ' NcInputField' ,
@@ -286,6 +286,7 @@ export default {
286286
287287 setup () {
288288 const model = useModelMigration (' value' , ' update:value' , true )
289+
289290 return {
290291 isLegacy32,
291292 model,
@@ -369,12 +370,11 @@ export default {
369370 </script >
370371
371372<style lang="scss" scoped>
373+ @use ' ../../assets/input-border.scss' as border ;
372374
373375.input-field {
374376 --input-border-color : var (--color-border-maxcontrast );
375377 --input-border-radius : var (--border-radius-element );
376- // Used e.g. if border width differs between focused and unfocused we need to compensate to prevent jumping
377- --input-border-width-offset : calc (var (--border-width-input-focused , 2px ) - var (--border-width-input , 2px ));
378378 // The padding before the input can start (leading button or border)
379379 --input-padding-start : var (--border-radius-large );
380380 // The padding where the input has to end (trailing button or border)
@@ -408,23 +408,15 @@ export default {
408408
409409 & __main-wrapper {
410410 height : var (--default-clickable-area );
411- padding : var (--border-width-input , 2px );
411+ padding : var (--border-width-input-focused , 2px );
412412 position : relative ;
413-
414- & :not (:has ([disabled ])):has (input :focus ),
415- & :not (:has ([disabled ])):has (input :active ) {
416- padding : 0 ;
417- }
418413 }
419414
420415 & __input {
416+ @include border .inputBorder (' .input-field--legacy' , var (--input-border-color ));
421417 background-color : var (--color-main-background );
422418 color : var (--color-main-text );
423- border : none ;
424419 border-radius : var (--input-border-radius );
425- box-shadow :
426- 0 -1px var (--input-border-color ),
427- 0 0 0 1px color-mix (in srgb , var (--input-border-color ), 65% transparent );
428420
429421 cursor : pointer ;
430422 -webkit-appearance : textfield !important ;
@@ -434,11 +426,11 @@ export default {
434426 font-size : var (--default-font-size );
435427 text-overflow : ellipsis ;
436428
429+ padding-block : 0 ;
430+ padding-inline : var (--input-padding-start ) var (--input-padding-end );
437431 height : 100% !important ;
438432 min-height : unset ;
439433 width : 100% ;
440- padding-block : var (--input-border-width-offset );
441- padding-inline : calc (var (--input-padding-start ) + var (--input-border-width-offset )) calc (var (--input-padding-end ) + var (--input-border-width-offset ));
442434
443435 & ::placeholder {
444436 color : var (--color-text-maxcontrast );
@@ -458,17 +450,9 @@ export default {
458450 display : none ;
459451 }
460452
461- & :hover:not ([disabled ]) {
462- box-shadow : 0 0 0 1px var (--input-border-color );;
463- }
464-
465453 & :active:not ([disabled ]),
466454 & :focus:not ([disabled ]) {
467455 --input-border-color : var (--color-main-text );
468- // Reset padding offset when focused
469- --input-border-width-offset : 0px ;
470- border : var (--border-width-input-focused , 2px ) solid var (--input-border-color );
471- box-shadow : 0 0 0 2px var (--color-main-background ) !important ;
472456 }
473457
474458 & :focus + .input-field__label ,
@@ -611,23 +595,5 @@ export default {
611595 }
612596 }
613597 }
614-
615- & --legacy {
616- .input-field__input {
617- box-shadow : 0 0 0 1px var (--input-border-color ) inset ;
618- }
619-
620- .input-field__main-wrapper :hover:not (:has ([disabled ])) {
621- padding : 0 ;
622-
623- .input-field__input {
624- --input-border-color : var (--color-main-text );
625- // Reset padding offset when focused
626- --input-border-width-offset : 0px ;
627- border : var (--border-width-input-focused , 2px ) solid var (--input-border-color );
628- box-shadow : 0 0 0 2px var (--color-main-background ) !important ;
629- }
630- }
631- }
632598}
633599 </style >
0 commit comments