`,
})
@@ -804,10 +823,12 @@ describe('sortable-lists directive group behavior', () => {
@Component({
imports: [OpSortableListsDirective, OpSortableListsItemDirective],
template: `
-
- @for (id of ids(); track id) {
-
{{ id }}
- }
+
`,
})
diff --git a/frontend/src/app/shared/helpers/drag-and-drop/drag-and-drop.service.spec.ts b/frontend/src/app/shared/helpers/drag-and-drop/drag-and-drop.service.spec.ts
index 90732497014a..381b7e72e4ec 100644
--- a/frontend/src/app/shared/helpers/drag-and-drop/drag-and-drop.service.spec.ts
+++ b/frontend/src/app/shared/helpers/drag-and-drop/drag-and-drop.service.spec.ts
@@ -60,7 +60,10 @@ function buildRow(id:string, opts:{ handle?:boolean } = {}):HTMLElement {
function buildContainer(ids:string[], opts:{ handle?:boolean } = {}):{ container:HTMLElement; rows:HTMLElement[] } {
const container = document.createElement('div');
- container.style.cssText = 'width:200px;';
+ // `overflow-y` with no height keeps the container a scroll container for
+ // Pragmatic's computed-overflow check. This also computes overflow-x to
+ // `auto`, but rows are exactly 200px wide in a 200px container.
+ container.style.cssText = 'width:200px; overflow-y:auto;';
const rows = ids.map((id) => {
const row = buildRow(id, opts);
container.appendChild(row);
@@ -159,7 +162,7 @@ describe('DragAndDropService', () => {
describe('container append', () => {
it('reports a drop below the rows as a null-target append intent', async () => {
const { container, rows } = buildContainer(['a0', 'a1']);
- container.style.cssText = 'width:200px; padding-bottom:40px;';
+ container.style.cssText = 'width:200px; padding-bottom:40px; overflow-y:auto;';
const onMoved = vi.fn();
service.register(buildMember(container, { onMoved }));
diff --git a/frontend/src/common/drag-and-drop/sortable-lists-engine.preview.spec.ts b/frontend/src/common/drag-and-drop/sortable-lists-engine.preview.spec.ts
index ce1b72862165..2654b58a332b 100644
--- a/frontend/src/common/drag-and-drop/sortable-lists-engine.preview.spec.ts
+++ b/frontend/src/common/drag-and-drop/sortable-lists-engine.preview.spec.ts
@@ -70,6 +70,10 @@ describe('createSortableRoot drag preview offset', () => {
function setup():{ rows:HTMLElement[] } {
const root = document.createElement('div');
+ // The engine attaches auto-scroll to this element directly, with no
+ // ancestor walk, so the overflow has to sit here. This also computes
+ // overflow-x to auto; 600px rows just happen to fit the viewport.
+ root.style.cssText = 'overflow-y:auto;';
const rows = ['a', 'b'].map((id) => {
const row = document.createElement('div');
row.style.cssText = 'height:40px; width:600px;';