Skip to content

Commit 27826ab

Browse files
michaelmkrausmfranzkenmerget
authored
feat: add min-inline-size to input, select and textarea (#4011)
* feat: baseline adjustment - sets a base min-inline-size for elements without icons * feat: icon support - increases the min-inline-size for elements that include icons or specific input types that imply icon usage * feat: enhanced icon handling - applies an even larger size when both leading and trailing icons are present --------- Co-authored-by: Maximilian Franzke <[email protected]> Co-authored-by: Nicolas Merget <[email protected]>
1 parent a284a81 commit 27826ab

File tree

6 files changed

+34
-5
lines changed

6 files changed

+34
-5
lines changed
-968 Bytes
Loading
-1.28 KB
Loading
-4.12 KB
Loading

packages/components/src/components/input/input.scss

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,24 @@ $icon-padding: calc(
1515
.db-input {
1616
@include form-components.set-default-form-component(input);
1717

18+
// increased inline size for elements with icons or specific input types that have icons
19+
&:is([data-icon], [data-icon-after]):not([data-hide-icon="true"]),
20+
&:has(
21+
input[type="search"],
22+
input[type="date"],
23+
input[type="month"],
24+
input[type="week"],
25+
input[type="datetime-local"],
26+
input[type="time"]
27+
) {
28+
--db-form-component-min-inline-size: #{variables.$db-sizing-xl};
29+
}
30+
31+
// even larger size when both - leading and trailing icons - are present
32+
&[data-icon][data-icon-after] {
33+
--db-form-component-min-inline-size: #{variables.$db-sizing-2xl};
34+
}
35+
1836
// padding-inline-end according to current amount of icons
1937
&[data-icon],
2038
&:has(input[type="search"]) {

packages/components/src/components/select/select.scss

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,18 @@ $has-before-padding: calc(
2323
--db-form-component-padding-inline-end: calc(
2424
#{form-components.$font-size-height} + #{variables.$db-spacing-fixed-sm}
2525
);
26+
--db-form-component-min-inline-size: ${variables.$db-sizing-xl};
27+
2628
// shared from form-components
2729
@extend %select-icon;
2830

29-
min-inline-size: calc(
30-
4 * #{variables.$db-sizing-md} + var(--db-form-has-before) *
31-
#{variables.$db-sizing-md}
32-
);
33-
3431
@include form-components.set-default-form-component(select);
3532

33+
// increased inline size for elements with icons
34+
&[data-icon]:not([data-hide-icon="true"]) {
35+
--db-form-component-min-inline-size: #{variables.$db-sizing-2xl};
36+
}
37+
3638
select {
3739
text-indent: $has-before-padding;
3840
}

packages/components/src/styles/internal/_form-components.scss

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ $input-types:
2929

3030
$check-border-size: min(#{variables.$db-border-width-2xs}, 2px);
3131

32+
$db-min-inline-size: var(
33+
--db-form-component-min-inline-size,
34+
#{variables.$db-sizing-lg}
35+
);
36+
3237
%dropdown-icon {
3338
@include icons.set-icon("chevron_down", "after");
3439

@@ -282,6 +287,9 @@ $input-valid-types:
282287
display: flex;
283288
flex-direction: column;
284289

290+
// base inline size for inputs without icons
291+
min-inline-size: $db-min-inline-size;
292+
285293
@include set-floating-label-overwrites($selector);
286294
@include set-required-label($selector);
287295

@@ -305,6 +313,7 @@ $input-valid-types:
305313
appearance: none;
306314
max-inline-size: 100%;
307315
inline-size: 100%;
316+
min-inline-size: $db-min-inline-size;
308317

309318
/* stylelint-disable-next-line db-ux/use-spacings */
310319
padding-inline: var(

0 commit comments

Comments
 (0)