11@use ' @tedi-design-system/core/bootstrap-utility/breakpoints' ;
22@use ' @tedi-design-system/core/mixins' ;
3+ @use ' sass:map' ;
34
45$input-height-large : 3.5rem ;
6+ $input-padding-right-map : (
7+ default : (
8+ normal : 2rem ,
9+ both : 4rem ,
10+ ),
11+ small : (
12+ normal : 2rem ,
13+ both : 4rem ,
14+ ),
15+ large : (
16+ normal : 3.5rem ,
17+ both : 6rem ,
18+ ),
19+ );
20+
21+ @function get-padding-right ($size , $clearable , $icon ) {
22+ @if $clearable and $icon {
23+ @return map .get (map .get ($input-padding-right-map , $size ), both );
24+ } @else if $clearable or $icon {
25+ @return map .get (map .get ($input-padding-right-map , $size ), normal );
26+ } @else {
27+ @return null;
28+ }
29+ }
530
631@mixin textfield-focus ($border-color : null) {
732 @if $border-color {
@@ -69,29 +94,45 @@ $input-height-large: 3.5rem;
6994 @include textfield-focus (var (--form-general-feedback-success-border ));
7095 }
7196
72- .tedi-textfield--clearable & ,
73- .tedi-textfield--with-icon & {
74- padding-right : 2rem ;
75- }
76-
77- .tedi-textfield--clearable.tedi-textfield--with-icon & {
78- padding-right : 4rem ;
79- }
80-
8197 & ::placeholder {
8298 color : var (--form-input-text-placeholder );
8399 opacity : 1 ;
84100 }
85101}
86102
87- // hide arrows on number inputs
88- .tedi-textfield__input--hidden-arrows [type = ' number' ] {
89- appearance : textfield; // for Firefox
103+ @each $size in default , small , large {
104+ $selector : if ($size == default , ' .tedi-textfield' , ' .tedi-textfield--#{$size } ' );
105+ #{$selector } {
106+ $padding : get-padding-right ($size , true , false );
90107
91- & ::-webkit-outer-spin-button ,
92- & ::-webkit-inner-spin-button {
93- margin : 0 ;
94- appearance : none ;
108+ & .tedi-textfield--clearable .tedi-textfield__input {
109+ padding-right : get-padding-right ($size , true , false );
110+ }
111+
112+ & .tedi-textfield--with-icon .tedi-textfield__input {
113+ padding-right : get-padding-right ($size , false , true );
114+ }
115+
116+ & .tedi-textfield--clearable.tedi-textfield--with-icon .tedi-textfield__input {
117+ padding-right : get-padding-right ($size , true , true );
118+ }
119+
120+ @if $size == small {
121+ .tedi-textfield__input {
122+ height : var (--form-field-height-sm );
123+ padding : var (--form-field-padding-y-sm ) var (--form-field-padding-x-md-default );
124+ font-size : var (--body-regular-size );
125+ }
126+ } @else if $size == large {
127+ .tedi-textfield__input {
128+ height : $input-height-large ;
129+ padding : var (--form-field-padding-y-lg ) var (--form-field-padding-x-lg );
130+
131+ @include breakpoints .media-breakpoint-down (md) {
132+ height : var (--form-field-height );
133+ }
134+ }
135+ }
95136 }
96137}
97138
@@ -100,26 +141,24 @@ $input-height-large: 3.5rem;
100141 top : 0 ;
101142 right : 0 ;
102143 display : flex ;
144+ gap : var (--layout-grid-gutters-04 );
103145 align-items : center ;
104146 height : 100% ;
105- padding : 0.75 rem 0.5 rem ;
147+ padding : var ( --form-field-padding-y-md-default ) var ( --form-field-padding-x-md-default ) ;
106148
107149 .tedi-textfield--small & {
108- padding : 0.25 rem 0.5 rem ;
150+ padding : var ( --form-field-padding-y-sm ) var ( --form-field-padding-x-md-default ) ;
109151 }
110152
111153 .tedi-textfield--large & {
112- padding : 1 rem ;
154+ padding : var ( --form-field-padding-y-lg ) var ( --form-field-padding-x-lg ) ;
113155 }
114156}
115157
116- .tedi-textfield__separator {
117- margin-right : 0.5rem ;
118- margin-left : 0.25rem ;
119- }
120-
121158.tedi-textfield__icon-wrapper {
122159 display : flex ;
160+ justify-content : center ;
161+ width : var (--icon-04 );
123162 color : var (--form-input-text-filled );
124163 transition : color 0.2s ease ;
125164
@@ -150,50 +189,6 @@ div.tedi-textfield__icon-wrapper {
150189 vertical-align : text-top ;
151190}
152191
153- /* Small */
154- .tedi-textfield--small {
155- .tedi-textfield__input {
156- height : var (--form-field-height-sm );
157- padding : var (--form-field-padding-y-sm ) var (--form-field-padding-x-md-default );
158- font-size : var (--body-small-regular-size );
159- }
160-
161- & .tedi-textfield--clearable & ,
162- & .tedi-textfield--with-icon & {
163- padding-right : 2rem ;
164- }
165-
166- & .tedi-textfield--clearable.tedi-textfield--with-icon & {
167- padding-right : 4rem ;
168- }
169- }
170-
171- /* Large */
172- .tedi-textfield--large {
173- .tedi-textfield__input {
174- height : $input-height-large ;
175- padding : 1rem ;
176-
177- @include breakpoints .media-breakpoint-down (md) {
178- height : var (--form-field-height );
179- }
180- }
181-
182- .tedi-textfield__separator {
183- margin-right : 0.5rem ;
184- margin-left : 0.5rem ;
185- }
186-
187- & .tedi-textfield--clearable .tedi-textfield__input ,
188- & .tedi-textfield--with-icon .tedi-textfield__input {
189- padding-right : 3.5rem ;
190- }
191-
192- & .tedi-textfield--clearable.tedi-textfield--with-icon .tedi-textfield__input {
193- padding-right : 6rem ;
194- }
195- }
196-
197192.tedi-textfield__feedback-wrapper {
198193 display : flex ;
199194}
0 commit comments