Skip to content

Commit dfc9800

Browse files
authored
fix: explicitly set relative positioning on scroll containers (#5714) (#5721)
1 parent e4d0f83 commit dfc9800

File tree

3 files changed

+44
-2
lines changed

3 files changed

+44
-2
lines changed

packages/combo-box/src/vaadin-combo-box-scroller.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ export class ComboBoxScroller extends PolymerElement {
4141
border-width: var(--_vaadin-combo-box-items-container-border-width);
4242
border-style: var(--_vaadin-combo-box-items-container-border-style);
4343
border-color: var(--_vaadin-combo-box-items-container-border-color);
44+
position: relative;
4445
}
4546
</style>
4647
<div id="selector">

packages/combo-box/test/lit.test.js

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { expect } from '@esm-bundle/chai';
2-
import { fixtureSync } from '@vaadin/testing-helpers';
2+
import { fixtureSync, nextFrame } from '@vaadin/testing-helpers';
33
import './not-animated-styles.js';
44
import '../vaadin-combo-box.js';
5-
import { html, render } from 'lit';
5+
import { html, LitElement, render } from 'lit';
66
import { getViewportItems } from './helpers.js';
77

88
describe('lit', () => {
@@ -36,4 +36,41 @@ describe('lit', () => {
3636
expect(getViewportItems(comboBox)[0].textContent).to.equal('new-0');
3737
});
3838
});
39+
40+
describe('complex structure', () => {
41+
let container, comboBox, selector;
42+
43+
class TestSlotContainer extends LitElement {
44+
render() {
45+
return html`<slot></slot> `;
46+
}
47+
}
48+
customElements.define('test-slot-container', TestSlotContainer);
49+
50+
class TestSlottedComboComponent extends LitElement {
51+
render() {
52+
return html`
53+
<test-slot-container>
54+
<vaadin-combo-box .items="${['First', 'Second', 'Third']}"></vaadin-combo-box>
55+
</test-slot-container>
56+
`;
57+
}
58+
}
59+
customElements.define('test-slotted-combo-component', TestSlottedComboComponent);
60+
61+
beforeEach(async () => {
62+
container = fixtureSync('<div></div>');
63+
render(html`<test-slotted-combo-component></test-slotted-combo-component>`, container);
64+
await nextFrame();
65+
const component = container.querySelector('test-slotted-combo-component');
66+
comboBox = component.shadowRoot.querySelector('vaadin-combo-box');
67+
selector = comboBox._scroller.shadowRoot.children.selector;
68+
});
69+
70+
it('should not show horizontal scrollbar when placed in slotted container', () => {
71+
comboBox.open();
72+
73+
expect(getComputedStyle(selector).position).to.equal('relative');
74+
});
75+
});
3976
});

packages/virtual-list/src/vaadin-virtual-list.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ class VirtualList extends ElementMixin(ControllerMixin(ThemableMixin(PolymerElem
5858
:host(:not([grid])) #items > ::slotted(*) {
5959
width: 100%;
6060
}
61+
62+
#items {
63+
position: relative;
64+
}
6165
</style>
6266
6367
<div id="items">

0 commit comments

Comments
 (0)