Skip to content

Commit 895346d

Browse files
authored
fix(Form): fix labelSpan, columns and size calculation (#4681)
Part of #4497, #4597, #4668 Fixes #4638
1 parent c1e20eb commit 895346d

File tree

2 files changed

+31
-32
lines changed

2 files changed

+31
-32
lines changed

packages/main/src/components/Form/Form.jss.ts

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,34 +9,31 @@ const styles = {
99
alignItems: 'center',
1010
rowGap: '0.25rem',
1111
columnGap: '0.5rem',
12-
gridTemplateColumns: `repeat(calc(12 * var(--ui5wcr_form_columns)), 1fr)`,
1312
'--ui5wcr_form_label_text_align': 'end',
14-
'--ui5wcr_form_content_span': 'calc(12 - var(--ui5wcr_form_label_span))',
15-
16-
'--ui5wcr_form_columns_s': 1,
17-
'--ui5wcr_form_columns_m': 1,
18-
'--ui5wcr_form_columns_l': 1,
19-
'--ui5wcr_form_columns_xl': 2,
20-
'--ui5wcr_form_label_span_s': 12,
21-
'--ui5wcr_form_label_span_m': 2,
22-
'--ui5wcr_form_label_span_l': 4,
23-
'--ui5wcr_form_label_span_xl': 4,
2413

2514
'@container (max-width: 599px)': {
2615
'--ui5wcr_form_label_span': 'var(--ui5wcr_form_label_span_s)',
27-
'--ui5wcr_form_columns': 'var(--ui5wcr_form_columns_s)'
16+
'--ui5wcr_form_columns': 'var(--ui5wcr_form_columns_s)',
17+
gridTemplateColumns: `repeat(calc(12 * var(--ui5wcr_form_columns)), 1fr)`,
18+
'--ui5wcr_form_content_span': 'calc(12 - var(--ui5wcr_form_label_span))'
2819
},
2920
'@container (min-width: 600px) and (max-width: 1023px)': {
3021
'--ui5wcr_form_label_span': 'var(--ui5wcr_form_label_span_m)',
31-
'--ui5wcr_form_columns': 'var(--ui5wcr_form_columns_m)'
22+
'--ui5wcr_form_columns': 'var(--ui5wcr_form_columns_m)',
23+
gridTemplateColumns: `repeat(calc(12 * var(--ui5wcr_form_columns)), 1fr)`,
24+
'--ui5wcr_form_content_span': 'calc(12 - var(--ui5wcr_form_label_span))'
3225
},
3326
'@container (min-width: 1024px) and (max-width: 1439px)': {
3427
'--ui5wcr_form_label_span': 'var(--ui5wcr_form_label_span_l)',
35-
'--ui5wcr_form_columns': 'var(--ui5wcr_form_columns_l)'
28+
'--ui5wcr_form_columns': 'var(--ui5wcr_form_columns_l)',
29+
gridTemplateColumns: `repeat(calc(12 * var(--ui5wcr_form_columns)), 1fr)`,
30+
'--ui5wcr_form_content_span': 'calc(12 - var(--ui5wcr_form_label_span))'
3631
},
3732
'@container (min-width: 1440px)': {
3833
'--ui5wcr_form_label_span': 'var(--ui5wcr_form_label_span_xl)',
39-
'--ui5wcr_form_columns': 'var(--ui5wcr_form_columns_xl)'
34+
'--ui5wcr_form_columns': 'var(--ui5wcr_form_columns_xl)',
35+
gridTemplateColumns: `repeat(calc(12 * var(--ui5wcr_form_columns)), 1fr)`,
36+
'--ui5wcr_form_content_span': 'calc(12 - var(--ui5wcr_form_label_span))'
4037
}
4138
},
4239
solid: {

packages/main/src/components/Form/index.tsx

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,6 @@ const Form = forwardRef<HTMLFormElement, FormPropTypes>((props, ref) => {
118118
labelSpanL = 4,
119119
labelSpanXL = 4,
120120
titleText,
121-
style,
122121
...rest
123122
} = props;
124123

@@ -134,7 +133,7 @@ const Form = forwardRef<HTMLFormElement, FormPropTypes>((props, ref) => {
134133
labelSpanMap.set('Desktop', labelSpanL);
135134
labelSpanMap.set('LargeDesktop', labelSpanXL);
136135

137-
const [componentRef, formRef] = useSyncRef<HTMLFormElement>(ref);
136+
const [componentRef, containerRef] = useSyncRef<HTMLFormElement>(ref);
138137
// use the window range set as first best guess, if not available use Desktop
139138
const [currentRange, setCurrentRange] = useState(Device.getCurrentRange()?.name ?? 'Desktop');
140139
const lastRange = useRef(currentRange);
@@ -148,14 +147,14 @@ const Form = forwardRef<HTMLFormElement, FormPropTypes>((props, ref) => {
148147
}
149148
});
150149

151-
if (formRef.current) {
152-
observer.observe(formRef.current);
150+
if (containerRef.current) {
151+
observer.observe(containerRef.current);
153152
}
154153

155154
return () => {
156155
observer.disconnect();
157156
};
158-
}, [formRef]);
157+
}, [containerRef]);
159158

160159
const classes = useStyles();
161160

@@ -246,20 +245,23 @@ const Form = forwardRef<HTMLFormElement, FormPropTypes>((props, ref) => {
246245
className={clsx(classes.formContainer, className)}
247246
suppressHydrationWarning={true}
248247
ref={componentRef}
249-
style={{
250-
...style,
251-
'--ui5wcr_form_label_span_s': labelSpanS,
252-
'--ui5wcr_form_label_span_m': labelSpanM,
253-
'--ui5wcr_form_label_span_l': labelSpanL,
254-
'--ui5wcr_form_label_span_xl': labelSpanXL,
255-
'--ui5wcr_form_columns_s': columnsS,
256-
'--ui5wcr_form_columns_m': columnsM,
257-
'--ui5wcr_form_columns_l': columnsL,
258-
'--ui5wcr_form_columns_xl': columnsXL
259-
}}
260248
{...rest}
261249
>
262-
<div className={formClassNames}>
250+
<div
251+
className={formClassNames}
252+
style={
253+
{
254+
'--ui5wcr_form_label_span_s': labelSpanS,
255+
'--ui5wcr_form_label_span_m': labelSpanM,
256+
'--ui5wcr_form_label_span_l': labelSpanL,
257+
'--ui5wcr_form_label_span_xl': labelSpanXL,
258+
'--ui5wcr_form_columns_s': columnsS,
259+
'--ui5wcr_form_columns_m': columnsM,
260+
'--ui5wcr_form_columns_l': columnsL,
261+
'--ui5wcr_form_columns_xl': columnsXL
262+
} as CSSProperties
263+
}
264+
>
263265
{titleText && (
264266
<Title level={TitleLevel.H3} className={classes.formTitle}>
265267
{titleText}

0 commit comments

Comments
 (0)