Skip to content

Commit 1c75e5b

Browse files
authored
refactor: allow global overrides of form-layout custom properties (#10286)
1 parent 521f693 commit 1c75e5b

File tree

8 files changed

+39
-45
lines changed

8 files changed

+39
-45
lines changed

packages/form-layout/src/layouts/responsive-steps-layout.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ export class ResponsiveStepsLayout extends AbstractLayout {
125125
*/
126126

127127
const style = getComputedStyle(host);
128-
const columnSpacing = style.getPropertyValue('--vaadin-form-layout-column-spacing');
128+
const columnSpacing = style.getPropertyValue('--_column-spacing');
129129

130130
const direction = style.direction;
131131
const marginStartProp = `margin-${direction === 'ltr' ? 'left' : 'right'}`;

packages/form-layout/src/styles/vaadin-form-item-base-styles.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export const formItemStyles = css`
1616
display: inline-flex;
1717
flex-flow: var(--_form-item-labels-above, column) nowrap;
1818
justify-self: stretch;
19-
margin: calc(0.5 * var(--vaadin-form-layout-row-spacing, 1em)) 0;
19+
margin: calc(0.5 * var(--_row-spacing, 1em)) 0;
2020
}
2121
2222
:host([label-position='top']) {
@@ -34,13 +34,13 @@ export const formItemStyles = css`
3434
font-size: var(--vaadin-form-item-label-font-size, inherit);
3535
font-weight: var(--vaadin-form-item-label-font-weight, 500);
3636
line-height: var(--vaadin-form-item-label-line-height, inherit);
37-
width: var(--_form-item-labels-aside, var(--vaadin-form-layout-label-width, 8em));
37+
width: var(--_form-item-labels-aside, var(--_label-width, 8em));
3838
word-break: break-word;
3939
}
4040
4141
#spacing {
4242
flex: 0 0 auto;
43-
width: var(--vaadin-form-layout-label-spacing, 1em);
43+
width: var(--_label-spacing, 1em);
4444
}
4545
4646
#content {

packages/form-layout/src/styles/vaadin-form-layout-base-styles.js

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,29 @@
55
*/
66
import '@vaadin/component-base/src/styles/style-props.js';
77
import { css } from 'lit';
8+
import { addGlobalThemeStyles } from '@vaadin/vaadin-themable-mixin/register-styles.js';
9+
10+
addGlobalThemeStyles(
11+
'vaadin-form-layout-base',
12+
css`
13+
@layer vaadin.base {
14+
:where(html) {
15+
--vaadin-form-layout-label-spacing: var(--vaadin-gap-s);
16+
--vaadin-form-layout-label-width: 8em;
17+
--vaadin-form-layout-column-spacing: var(--vaadin-gap-l);
18+
--vaadin-form-layout-row-spacing: var(--vaadin-gap-l);
19+
}
20+
}
21+
`,
22+
);
823

924
export const formLayoutStyles = css`
1025
:host {
1126
/* Default values */
12-
--vaadin-form-layout-label-spacing: var(--vaadin-gap-s);
13-
--vaadin-form-layout-label-width: 8em;
14-
--vaadin-form-layout-column-spacing: calc(var(--vaadin-gap-s) * 2);
15-
--vaadin-form-layout-row-spacing: calc(var(--vaadin-gap-s) * 2);
27+
--_label-spacing: var(--vaadin-form-layout-label-spacing);
28+
--_label-width: var(--vaadin-form-layout-label-width);
29+
--_column-spacing: var(--vaadin-form-layout-column-spacing);
30+
--_row-spacing: var(--vaadin-form-layout-row-spacing);
1631
1732
align-self: stretch;
1833
display: block;
@@ -35,7 +50,7 @@ export const formLayoutStyles = css`
3550
flex-shrink: 0;
3651
3752
/* Margins make spacing between the columns */
38-
margin-inline: calc(0.5 * var(--vaadin-form-layout-column-spacing));
53+
margin-inline: calc(0.5 * var(--_column-spacing));
3954
}
4055
4156
#layout ::slotted(br) {
@@ -46,13 +61,11 @@ export const formLayoutStyles = css`
4661
/* Column width */
4762
--_column-width: var(--vaadin-field-default-width, 12em);
4863
--_column-width-labels-above: var(--_column-width);
49-
--_column-width-labels-aside: calc(
50-
var(--_column-width) + var(--vaadin-form-layout-label-width) + var(--vaadin-form-layout-label-spacing)
51-
);
64+
--_column-width-labels-aside: calc(var(--_column-width) + var(--_label-width) + var(--_label-spacing));
5265
5366
/* Column gap */
54-
--_min-total-gap: calc((var(--_min-columns) - 1) * var(--vaadin-form-layout-column-spacing));
55-
--_max-total-gap: calc((var(--_max-columns) - 1) * var(--vaadin-form-layout-column-spacing));
67+
--_min-total-gap: calc((var(--_min-columns) - 1) * var(--_column-spacing));
68+
--_max-total-gap: calc((var(--_max-columns) - 1) * var(--_column-spacing));
5669
5770
/* Minimum form layout width */
5871
--_min-width-labels-above: calc(var(--_min-columns) * var(--_column-width-labels-above) + var(--_min-total-gap));
@@ -78,7 +91,7 @@ export const formLayoutStyles = css`
7891
--_grid-repeat: var(--_grid-column-width);
7992
8093
display: grid;
81-
gap: var(--vaadin-form-layout-row-spacing) var(--vaadin-form-layout-column-spacing);
94+
gap: var(--_row-spacing) var(--_column-spacing);
8295
8396
/*
8497
Auto-columns can be created when an item's colspan exceeds the rendered column count.

packages/form-layout/src/vaadin-form-layout.js

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import { html, LitElement } from 'lit';
77
import { defineCustomElement } from '@vaadin/component-base/src/define.js';
88
import { ElementMixin } from '@vaadin/component-base/src/element-mixin.js';
99
import { PolylitMixin } from '@vaadin/component-base/src/polylit-mixin.js';
10-
import { LumoInjectionMixin } from '@vaadin/vaadin-themable-mixin/lumo-injection-mixin.js';
1110
import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
1211
import { formLayoutStyles } from './styles/vaadin-form-layout-base-styles.js';
1312
import { FormLayoutMixin } from './vaadin-form-layout-mixin.js';
@@ -206,7 +205,7 @@ import { FormLayoutMixin } from './vaadin-form-layout-mixin.js';
206205
* @mixes ElementMixin
207206
* @mixes ThemableMixin
208207
*/
209-
class FormLayout extends FormLayoutMixin(ThemableMixin(ElementMixin(PolylitMixin(LumoInjectionMixin(LitElement))))) {
208+
class FormLayout extends FormLayoutMixin(ThemableMixin(ElementMixin(PolylitMixin(LitElement)))) {
210209
static get is() {
211210
return 'vaadin-form-layout';
212211
}
@@ -215,12 +214,6 @@ class FormLayout extends FormLayoutMixin(ThemableMixin(ElementMixin(PolylitMixin
215214
return formLayoutStyles;
216215
}
217216

218-
static get lumoInjector() {
219-
return {
220-
includeBaseStyles: true,
221-
};
222-
}
223-
224217
/** @protected */
225218
render() {
226219
return html`

packages/form-layout/test/form-layout.test.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,15 +77,13 @@ describe('form layout', () => {
7777
});
7878

7979
it('should apply default --vaadin-form-layout-row-spacing', () => {
80-
expect(getComputedStyle(layout).getPropertyValue('--vaadin-form-layout-row-spacing')).to.equal('calc(8px * 2)');
80+
expect(getComputedStyle(layout).getPropertyValue('--vaadin-form-layout-row-spacing')).to.equal('16px');
8181
expect(getComputedStyle(item).marginTop).to.equal('8px');
8282
expect(getComputedStyle(item).marginBottom).to.equal('8px');
8383
});
8484

8585
it('should apply default --vaadin-form-layout-column-spacing', () => {
86-
expect(getComputedStyle(layout).getPropertyValue('--vaadin-form-layout-column-spacing')).to.equal(
87-
'calc(8px * 2)',
88-
);
86+
expect(getComputedStyle(layout).getPropertyValue('--vaadin-form-layout-column-spacing')).to.equal('16px');
8987
expect(getComputedStyle(item).marginLeft).to.equal('8px');
9088
expect(getComputedStyle(item).marginRight).to.equal('8px');
9189
});

packages/vaadin-lumo-styles/components/crud.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99
@import '../src/components/crud-edit.css';
1010
@import '../src/components/crud.css';
1111
@import '../src/components/dialog-overlay.css';
12-
@import '../src/components/form-layout.css';
1312
@import '../src/components/grid.css';
1413
@import './button.css';
1514
@import './confirm-dialog.css';
15+
@import './form-layout.css';
1616
@import './grid-filter.css';
1717
@import './grid-sorter.css';
1818
@import './text-field.css';

packages/vaadin-lumo-styles/components/form-layout.css

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@
33
* Copyright (c) 2017 - 2025 Vaadin Ltd.
44
* This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
55
*/
6-
@import '../src/components/form-layout.css';
7-
8-
:is(:root, :host)::before {
9-
--_lumo-vaadin-form-layout-inject: 1;
10-
--_lumo-vaadin-form-layout-inject-modules: lumo_components_form-layout;
6+
:where(:root, :host) {
7+
--vaadin-form-layout-label-spacing: 1em;
8+
--vaadin-form-layout-label-width: 8em;
9+
--vaadin-form-layout-column-spacing: var(
10+
--lumo-space-l
11+
);
12+
--vaadin-form-layout-row-spacing: 0;
1113
}

packages/vaadin-lumo-styles/src/components/form-layout.css

Lines changed: 0 additions & 12 deletions
This file was deleted.

0 commit comments

Comments
 (0)