Skip to content

Commit e0db793

Browse files
authored
experiment: add custom-field base styles and visual tests (#9628)
1 parent dda79bf commit e0db793

File tree

11 files changed

+101
-0
lines changed

11 files changed

+101
-0
lines changed

packages/custom-field/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
"type": "module",
2222
"files": [
2323
"src",
24+
"!src/styles/*-base-styles.d.ts",
25+
"!src/styles/*-base-styles.js",
2426
"theme",
2527
"vaadin-*.d.ts",
2628
"vaadin-*.js",
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
/**
2+
* @license
3+
* Copyright (c) 2019 - 2025 Vaadin Ltd.
4+
* This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5+
*/
6+
import type { CSSResult } from 'lit';
7+
8+
export const customFieldStyles: CSSResult;
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/**
2+
* @license
3+
* Copyright (c) 2019 - 2025 Vaadin Ltd.
4+
* This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
5+
*/
6+
import { css } from 'lit';
7+
import { container } from '@vaadin/field-base/src/styles/container-base-styles.js';
8+
import { field } from '@vaadin/field-base/src/styles/field-base-styles.js';
9+
10+
const customField = css`
11+
@layer base {
12+
.vaadin-custom-field-container {
13+
width: 100%;
14+
}
15+
16+
.inputs-wrapper {
17+
flex: none;
18+
}
19+
}
20+
`;
21+
22+
export const customFieldStyles = [field, container, customField];
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import { fixtureSync } from '@vaadin/testing-helpers';
2+
import { visualDiff } from '@web/test-runner-visual-regression';
3+
import '../common.js';
4+
import '../../../src/vaadin-custom-field.js';
5+
6+
describe('custom-field', () => {
7+
describe('basic', () => {
8+
let div, element;
9+
10+
beforeEach(() => {
11+
div = document.createElement('div');
12+
div.style.display = 'inline-block';
13+
div.style.padding = '10px';
14+
15+
element = fixtureSync(
16+
`
17+
<vaadin-custom-field>
18+
<input type="text" />
19+
<input type="number" />
20+
</vaadin-custom-field>
21+
`,
22+
div,
23+
);
24+
});
25+
26+
it('basic', async () => {
27+
await visualDiff(div, 'default');
28+
});
29+
30+
it('label', async () => {
31+
element.label = 'Home address';
32+
await visualDiff(div, 'label');
33+
});
34+
35+
it('value', async () => {
36+
element.value = 'Foo street\t42';
37+
await visualDiff(div, 'value');
38+
});
39+
40+
it('required', async () => {
41+
element.label = 'Home address';
42+
element.required = true;
43+
await visualDiff(div, 'required');
44+
});
45+
46+
it('error message', async () => {
47+
element.label = 'Home address';
48+
element.required = true;
49+
element.errorMessage = 'This field is required';
50+
element.validate();
51+
await visualDiff(div, 'error-message');
52+
});
53+
54+
it('helper text', async () => {
55+
element.helperText = 'Helper text';
56+
await visualDiff(div, 'helper-text');
57+
});
58+
59+
it('helper above field', async () => {
60+
element.label = 'Home address';
61+
element.errorMessage = 'This field is required';
62+
element.required = true;
63+
element.validate();
64+
element.helperText = 'Helper text';
65+
element.setAttribute('theme', 'helper-above-field');
66+
await visualDiff(div, 'helper-above-field');
67+
});
68+
});
69+
});
287 Bytes
Loading
2.28 KB
Loading
2.93 KB
Loading
964 Bytes
Loading
946 Bytes
Loading
1.01 KB
Loading

0 commit comments

Comments
 (0)