Skip to content

Commit f9addca

Browse files
committed
Add support for [x-sort:handle] attributes defined in template tags
1 parent 36110b6 commit f9addca

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

packages/sort/src/index.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ export default function (Alpine) {
2525

2626
let preferences = {
2727
hideGhost: ! modifiers.includes('ghost'),
28-
useHandles: !! el.querySelector('[x-sort\\:handle]'),
28+
useHandles: (!! el.querySelector('[x-sort\\:handle]')) || Array.from(el.querySelectorAll('template')).some(
29+
tmpl => !! tmpl.content.querySelector('[x-sort\\:handle]')
30+
),
2931
group: getGroupName(el, modifiers),
3032
}
3133

tests/cypress/integration/plugins/sort.spec.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,44 @@ test.skip('can use a custom handle',
4949
get('ul li').eq(0).should(haveText('handle - foo'))
5050
get('ul li').eq(1).should(haveText('handle - bar'))
5151

52+
get('#1').drag('#2').then(() => {
53+
get('ul li').eq(0).should(haveText('handle - foo'))
54+
get('ul li').eq(1).should(haveText('handle - bar'))
55+
})
56+
5257
get('#1 span').drag('#2').then(() => {
5358
get('ul li').eq(0).should(haveText('handle - bar'))
5459
get('ul li').eq(1).should(haveText('handle - foo'))
5560
})
5661
},
5762
)
5863

64+
test('can use a custom handle with x-for',
65+
[html`
66+
<div x-data="{items: ['1', '2']}">
67+
<ul x-sort>
68+
<template x-for="item in items" :key="item">
69+
<li :id="item"><span x-sort:handle>handle</span> - <span x-text="item"></span></li>
70+
</template>
71+
</ul>
72+
</div>
73+
`],
74+
({ get }) => {
75+
get('ul li').eq(0).should(haveText('handle - 1'))
76+
get('ul li').eq(1).should(haveText('handle - 2'))
77+
78+
get('#1').drag('#2').then(() => {
79+
get('ul li').eq(0).should(haveText('handle - 1'))
80+
get('ul li').eq(1).should(haveText('handle - 2'))
81+
})
82+
83+
get('#1 span').eq(0).drag('#2').then(() => {
84+
get('ul li').eq(0).should(haveText('handle - 2'))
85+
get('ul li').eq(1).should(haveText('handle - 1'))
86+
})
87+
},
88+
)
89+
5990
test.skip('can move items between groups',
6091
[html`
6192
<div x-data>

0 commit comments

Comments
 (0)