Skip to content

Commit a71b3c2

Browse files
committed
Introduce smaller border radius for TextField and SelectField inside InputGroup
1 parent 11c3fd8 commit a71b3c2

File tree

10 files changed

+46
-43
lines changed

10 files changed

+46
-43
lines changed

src/lib/components/InputGroup/InputGroup.scss

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
@use "../../styles/tools/form-fields/box-field-elements";
66
@use "../../styles/tools/form-fields/box-field-layout";
7-
@use "../../styles/tools/form-fields/box-field-sizes";
87
@use "../../styles/tools/form-fields/foundation";
98
@use "../../styles/tools/form-fields/variants";
109
@use "../../styles/tools/accessibility";
@@ -19,6 +18,8 @@
1918
}
2019

2120
.inputGroup {
21+
--rui-local-inner-border-radius: #{theme.$inner-border-radius};
22+
2223
display: flex; // 2.
2324
gap: theme.$gap;
2425
}

src/lib/components/InputGroup/README.mdx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,7 @@ interactive and helps to improve its accessibility.
254254
| Custom Property | Description |
255255
|--------------------------------------------------------------------|------------------------------------------------|
256256
| `--rui-InputGroup__gap` | Gap between elements |
257+
| `--rui-InputGroup__inner-border-radius` | Inner border radius of elements |
257258

258259
[React synthetic events]: https://reactjs.org/docs/events.html
259260
[div]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div#attributes
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
$gap: var(--rui-InputGroup__gap);
2+
$inner-border-radius: var(--rui-InputGroup__inner-border-radius);

src/lib/components/Modal/_settings.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
@use "../../styles/theme/borders";
44
@use "../../styles/theme/typography";
55

6-
$border-radius: borders.$radius;
6+
$border-radius: borders.$radius-2;
77
$z-index: z-indexes.$modal;
88
$backdrop-z-index: z-indexes.$modal-backdrop;
99
$title-font-size: map.get(typography.$font-size-values, 2);

src/lib/components/SelectField/SelectField.scss

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,6 @@
9090
@include box-field-layout.in-form-layout();
9191
}
9292

93-
.isRootGrouped {
94-
@include box-field-layout.in-group-layout();
95-
}
96-
9793
// Sizes
9894
.isRootSizeSmall {
9995
@include box-field-sizes.size(small);
@@ -106,3 +102,8 @@
106102
.isRootSizeLarge {
107103
@include box-field-sizes.size(large);
108104
}
105+
106+
// Groups
107+
.isRootGrouped {
108+
@include box-field-elements.in-group-layout();
109+
}

src/lib/components/TextField/TextField.scss

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,10 +88,6 @@
8888
@include box-field-layout.horizontal-with-small-input();
8989
}
9090

91-
.isRootGrouped {
92-
@include box-field-layout.in-group-layout();
93-
}
94-
9591
// Sizes
9692
.isRootSizeSmall {
9793
@include box-field-sizes.size(small);
@@ -104,3 +100,8 @@
104100
.isRootSizeLarge {
105101
@include box-field-sizes.size(large);
106102
}
103+
104+
// Groups
105+
.isRootGrouped {
106+
@include box-field-elements.in-group-layout();
107+
}

src/lib/styles/theme/_borders.scss

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
$width: var(--rui-dimension-border-width-1);
2-
$radius: var(--rui-dimension-radius-1);
2+
$radius-1: var(--rui-dimension-radius-1);
3+
$radius-2: var(--rui-dimension-radius-2);

src/lib/styles/tools/form-fields/_box-field-elements.scss

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// result width across browsers.
44
// 3. Let inputs properly fit various layout scenarios.
55
// 4. Leave out space for SelectField caret.
6+
// 5. Use a block-level display mode to prevent extra white space below grouped inputs in Safari.
67

78
@use "../../settings/form-fields" as settings;
89
@use "../../theme/form-fields" as theme;
@@ -93,8 +94,8 @@
9394
align-items: center;
9495
justify-content: center;
9596
width: calc(#{settings.$box-field-caret-size} - 2 * #{theme.$box-border-width});
96-
border-top-right-radius: theme.$box-border-radius;
97-
border-bottom-right-radius: theme.$box-border-radius;
97+
border-start-end-radius: theme.$box-border-radius;
98+
border-end-end-radius: theme.$box-border-radius;
9899
pointer-events: none;
99100
}
100101

@@ -122,3 +123,19 @@
122123
transform: scaleX(1);
123124
}
124125
}
126+
127+
@mixin in-group-layout() {
128+
.inputContainer {
129+
display: block; // 5.
130+
}
131+
132+
&:not(:first-child) .input {
133+
border-start-start-radius: var(--rui-local-inner-border-radius);
134+
border-end-start-radius: var(--rui-local-inner-border-radius);
135+
}
136+
137+
&:not(:last-child) .input {
138+
border-start-end-radius: var(--rui-local-inner-border-radius);
139+
border-end-end-radius: var(--rui-local-inner-border-radius);
140+
}
141+
}

src/lib/styles/tools/form-fields/_box-field-layout.scss

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,6 @@
5151
//
5252
// 13. Label and field are vertically aligned to top (start) by default (see 10.). Vertical
5353
// alignment of each block can be changed by theme configuration.
54-
//
55-
// 14. Inner corners of TextField and SelectField components inside the InputGroup component are sharp
56-
// (their radius is set to 0).
57-
//
58-
// 15. Use a block-level display mode to prevent extra white space below grouped inputs in Safari.
5954

6055
@use "../../settings/forms";
6156
@use "../../settings/form-fields" as settings;
@@ -232,20 +227,3 @@
232227
}
233228
}
234229
}
235-
236-
@mixin in-group-layout() {
237-
.inputContainer {
238-
display: block; // 15.
239-
}
240-
241-
&:not(:first-child) .input {
242-
margin-left: var(--rui-local-gap);
243-
border-top-left-radius: 0; // 14.
244-
border-bottom-left-radius: 0; // 14.
245-
}
246-
247-
&:not(:last-child) .input {
248-
border-top-right-radius: 0; // 14.
249-
border-bottom-right-radius: 0; // 14.
250-
}
251-
}

src/lib/theme.scss

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@
3030
--rui-dimension-breakpoint-x3l: #{breakpoints.$x3l};
3131

3232
// Radii
33-
--rui-dimension-radius-1: 0.25rem;
33+
--rui-dimension-radius-1: 0.125rem;
34+
--rui-dimension-radius-2: 0.25rem;
3435

3536
// Spacing
3637
--rui-dimension-space-0: 0;
@@ -259,7 +260,7 @@
259260
--rui-Alert__padding: var(--rui-dimension-space-3);
260261
--rui-Alert__font-weight: var(--rui-font-weight-base);
261262
--rui-Alert__border-width: var(--rui-dimension-border-width-1);
262-
--rui-Alert__border-radius: var(--rui-dimension-radius-1);
263+
--rui-Alert__border-radius: var(--rui-dimension-radius-2);
263264
--rui-Alert__emphasis__font-weight: var(--rui-font-weight-bold);
264265
--rui-Alert__stripe__width: var(--rui-dimension-border-width-1);
265266

@@ -312,7 +313,7 @@
312313
--rui-Button__letter-spacing: 0;
313314
--rui-Button__text-transform: none;
314315
--rui-Button__border-width: var(--rui-dimension-border-width-1);
315-
--rui-Button__border-radius: var(--rui-dimension-radius-1);
316+
--rui-Button__border-radius: var(--rui-dimension-radius-2);
316317
--rui-Button--disabled__opacity: var(--rui-ratio-disabled-opacity);
317318
--rui-Button--disabled__cursor: var(--rui-cursor-not-allowed);
318319
--rui-Button--feedback__opacity: 1;
@@ -730,7 +731,7 @@
730731

731732
--rui-Card__padding: var(--rui-dimension-space-4);
732733
--rui-Card__border-width: var(--rui-dimension-border-width-1);
733-
--rui-Card__border-radius: var(--rui-dimension-radius-1);
734+
--rui-Card__border-radius: var(--rui-dimension-radius-2);
734735
--rui-Card--dense__padding: var(--rui-dimension-space-2);
735736
--rui-Card--raised__box-shadow: var(--rui-shadow-layer-1);
736737
--rui-Card--disabled__background-color: var(--rui-color-background-disabled);
@@ -834,7 +835,7 @@
834835

835836
// Form fields: box fields
836837
--rui-FormField--box__border-width: var(--rui-dimension-border-width-1);
837-
--rui-FormField--box__border-radius: var(--rui-dimension-radius-1);
838+
--rui-FormField--box__border-radius: var(--rui-dimension-radius-2);
838839
--rui-FormField--box__input__width: auto; // 1.
839840
--rui-FormField--box__input__min-width: 240px; // 1.
840841
--rui-FormField--box__placeholder__color: var(--rui-color-text-secondary);
@@ -915,6 +916,7 @@
915916
// =======
916917

917918
--rui-InputGroup__gap: var(--rui-dimension-space-1);
919+
--rui-InputGroup__inner-border-radius: var(--rui-dimension-radius-1);
918920

919921
//
920922
// Modal
@@ -947,7 +949,7 @@
947949
--rui-Paper__padding: var(--rui-dimension-space-4);
948950
--rui-Paper__border-width: 0;
949951
--rui-Paper__border-color: transparent;
950-
--rui-Paper__border-radius: var(--rui-dimension-radius-1);
952+
--rui-Paper__border-radius: var(--rui-dimension-radius-2);
951953
--rui-Paper__background-color: var(--rui-color-background-layer-1);
952954
--rui-Paper--muted__background-color: var(--rui-color-background-disabled);
953955
--rui-Paper--muted__opacity: var(--rui-ratio-disabled-opacity);
@@ -961,7 +963,7 @@
961963
--rui-Popover__padding: var(--rui-dimension-space-3);
962964
--rui-Popover__border-width: 0;
963965
--rui-Popover__border-color: transparent;
964-
--rui-Popover__border-radius: var(--rui-dimension-radius-1);
966+
--rui-Popover__border-radius: var(--rui-dimension-radius-2);
965967
--rui-Popover__color: var(--rui-color-text-primary);
966968
--rui-Popover__background-color: var(--rui-color-background-layer-2);
967969
--rui-Popover__box-shadow: var(--rui-shadow-layer-2);
@@ -989,7 +991,7 @@
989991
var(--rui-color-border-secondary)
990992
transparent
991993
var(--rui-color-border-secondary);
992-
--rui-Tabs__item__border-radius: var(--rui-dimension-radius-1);
994+
--rui-Tabs__item__border-radius: var(--rui-dimension-radius-2);
993995
--rui-Tabs__item__background-color: var(--rui-color-background-layer-1);
994996
--rui-Tabs__item__box-shadow: none;
995997
--rui-Tabs__item__icon__gap: var(--rui-dimension-space-2);

0 commit comments

Comments
 (0)