Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,6 @@

### Added

- Added `targetIndexPath(forInteractivelyMovingItem:withPosition:)` protocol method to `ListLayout`, allowing custom layouts to override drop target determination during interactive reordering.
- Added `isReorderable` property on `ListLayoutContent.ItemInfo` to check if an item has reordering enabled.

### Removed

### Changed
Expand All @@ -17,6 +14,13 @@

# Past Releases

# 16.6.0 - 2026-02-10

### Added

- Added `targetIndexPath(forInteractivelyMovingItem:withPosition:)` protocol method to `ListLayout`, allowing custom layouts to override drop target determination during interactive reordering.
- Added `isReorderable` property on `ListLayoutContent.ItemInfo` to check if an item has reordering enabled.

# 16.5.0 - 2025-11-05

### Added
Expand Down
Binary file modified docs/BlueprintLists/docsets/BlueprintLists.tgz
Binary file not shown.
1,429 changes: 815 additions & 614 deletions docs/JSON/ListableUI.json

Large diffs are not rendered by default.

27 changes: 27 additions & 0 deletions docs/Listable/Classes/ListLayoutContent/ItemInfo.html
Original file line number Diff line number Diff line change
Expand Up @@ -949,6 +949,33 @@ <h4>Declaration</h4>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:10ListableUI17ListLayoutContentC8ItemInfoC13isReorderableSbvp"></a>
<a name="//apple_ref/swift/Property/isReorderable" class="dashAnchor"></a>
<a class="token" href="#/s:10ListableUI17ListLayoutContentC8ItemInfoC13isReorderableSbvp">isReorderable</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Whether this item can be reordered (has reordering configuration).</p>

</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">isReorderable</span><span class="p">:</span> <span class="kt">Bool</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre>

</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
Expand Down
2 changes: 1 addition & 1 deletion docs/Listable/Extensions/UIRectEdge.html
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
<img class="carat" src="../img/carat.png" alt=""/>
<a class="breadcrumb" href="../Extensions.html">Extensions</a>
<img class="carat" src="../img/carat.png" alt=""/>
UIKit.UIRectEdge Extension Reference
UIUtilities.UIRectEdge Extension Reference
</p>

<div class="content-wrapper">
Expand Down
69 changes: 69 additions & 0 deletions docs/Listable/Protocols/AnyListLayout.html
Original file line number Diff line number Diff line change
Expand Up @@ -1238,6 +1238,75 @@ <h4>Declaration</h4>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:10ListableUI13AnyListLayoutP15targetIndexPath26forInteractivelyMovingItem12withPosition10Foundation0gH0VSgAI_So7CGPointVtF"></a>
<a name="//apple_ref/swift/Method/targetIndexPath(forInteractivelyMovingItem:withPosition:)" class="dashAnchor"></a>
<a class="token" href="#/s:10ListableUI13AnyListLayoutP15targetIndexPath26forInteractivelyMovingItem12withPosition10Foundation0gH0VSgAI_So7CGPointVtF">targetIndexPath(forInteractivelyMovingItem:<wbr>withPosition:<wbr>)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Returns the target index path for an item being interactively moved.</p>

<p>Custom layouts can override this to provide layout-aware drop target
determination. The default implementation returns <code>nil</code>, which causes
<code>CollectionViewLayout</code> to fall back to UICollectionView&rsquo;s default behavior.</p>

</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">targetIndexPath</span><span class="p">(</span>
<span class="n">forInteractivelyMovingItem</span> <span class="nv">previousIndexPath</span><span class="p">:</span> <span class="kt">IndexPath</span><span class="p">,</span>
<span class="n">withPosition</span> <span class="nv">position</span><span class="p">:</span> <span class="kt">CGPoint</span>
<span class="p">)</span> <span class="o">-&gt;</span> <span class="kt">IndexPath</span><span class="p">?</span></code></pre>

</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>previousIndexPath</em>
</code>
</td>
<td>
<div>
<p>The current index path of the item being moved.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>position</em>
</code>
</td>
<td>
<div>
<p>The current position of the item in the collection view&rsquo;s coordinate space.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<h4>Return Value</h4>
<p>The target index path if the layout can determine it, or <code>nil</code> to use default behavior.</p>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
Expand Down
32 changes: 32 additions & 0 deletions docs/Listable/Protocols/ListLayout.html
Original file line number Diff line number Diff line change
Expand Up @@ -1306,6 +1306,38 @@ <h4>Declaration</h4>
<span class="n">withTargetPosition</span> <span class="nv">position</span><span class="p">:</span> <span class="kt">CGPoint</span>
<span class="p">)</span></code></pre>

</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:10ListableUI13AnyListLayoutP15targetIndexPath26forInteractivelyMovingItem12withPosition10Foundation0gH0VSgAI_So7CGPointVtF"></a>
<a name="//apple_ref/swift/Method/targetIndexPath(forInteractivelyMovingItem:withPosition:)" class="dashAnchor"></a>
<a class="token" href="#/s:10ListableUI13AnyListLayoutP15targetIndexPath26forInteractivelyMovingItem12withPosition10Foundation0gH0VSgAI_So7CGPointVtF">targetIndexPath(forInteractivelyMovingItem:<wbr>withPosition:<wbr>)</a>
</code>
<span class="declaration-note">
Extension method
</span>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">

</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">targetIndexPath</span><span class="p">(</span>
<span class="n">forInteractivelyMovingItem</span> <span class="nv">previousIndexPath</span><span class="p">:</span> <span class="kt">IndexPath</span><span class="p">,</span>
<span class="n">withPosition</span> <span class="nv">position</span><span class="p">:</span> <span class="kt">CGPoint</span>
<span class="p">)</span> <span class="o">-&gt;</span> <span class="kt">IndexPath</span><span class="p">?</span></code></pre>

</div>
</div>
</section>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -949,6 +949,33 @@ <h4>Declaration</h4>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:10ListableUI17ListLayoutContentC8ItemInfoC13isReorderableSbvp"></a>
<a name="//apple_ref/swift/Property/isReorderable" class="dashAnchor"></a>
<a class="token" href="#/s:10ListableUI17ListLayoutContentC8ItemInfoC13isReorderableSbvp">isReorderable</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Whether this item can be reordered (has reordering configuration).</p>

</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="k">var</span> <span class="nv">isReorderable</span><span class="p">:</span> <span class="kt">Bool</span> <span class="p">{</span> <span class="k">get</span> <span class="p">}</span></code></pre>

</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
<img class="carat" src="../img/carat.png" alt=""/>
<a class="breadcrumb" href="../Extensions.html">Extensions</a>
<img class="carat" src="../img/carat.png" alt=""/>
UIKit.UIRectEdge Extension Reference
UIUtilities.UIRectEdge Extension Reference
</p>

<div class="content-wrapper">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1238,6 +1238,75 @@ <h4>Declaration</h4>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:10ListableUI13AnyListLayoutP15targetIndexPath26forInteractivelyMovingItem12withPosition10Foundation0gH0VSgAI_So7CGPointVtF"></a>
<a name="//apple_ref/swift/Method/targetIndexPath(forInteractivelyMovingItem:withPosition:)" class="dashAnchor"></a>
<a class="token" href="#/s:10ListableUI13AnyListLayoutP15targetIndexPath26forInteractivelyMovingItem12withPosition10Foundation0gH0VSgAI_So7CGPointVtF">targetIndexPath(forInteractivelyMovingItem:<wbr>withPosition:<wbr>)</a>
</code>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">
<p>Returns the target index path for an item being interactively moved.</p>

<p>Custom layouts can override this to provide layout-aware drop target
determination. The default implementation returns <code>nil</code>, which causes
<code>CollectionViewLayout</code> to fall back to UICollectionView&rsquo;s default behavior.</p>

</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">func</span> <span class="nf">targetIndexPath</span><span class="p">(</span>
<span class="n">forInteractivelyMovingItem</span> <span class="nv">previousIndexPath</span><span class="p">:</span> <span class="kt">IndexPath</span><span class="p">,</span>
<span class="n">withPosition</span> <span class="nv">position</span><span class="p">:</span> <span class="kt">CGPoint</span>
<span class="p">)</span> <span class="o">-&gt;</span> <span class="kt">IndexPath</span><span class="p">?</span></code></pre>

</div>
</div>
<div>
<h4>Parameters</h4>
<table class="graybox">
<tbody>
<tr>
<td>
<code>
<em>previousIndexPath</em>
</code>
</td>
<td>
<div>
<p>The current index path of the item being moved.</p>
</div>
</td>
</tr>
<tr>
<td>
<code>
<em>position</em>
</code>
</td>
<td>
<div>
<p>The current position of the item in the collection view&rsquo;s coordinate space.</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div>
<h4>Return Value</h4>
<p>The target index path if the layout can determine it, or <code>nil</code> to use default behavior.</p>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1306,6 +1306,38 @@ <h4>Declaration</h4>
<span class="n">withTargetPosition</span> <span class="nv">position</span><span class="p">:</span> <span class="kt">CGPoint</span>
<span class="p">)</span></code></pre>

</div>
</div>
</section>
</div>
</li>
<li class="item">
<div>
<code>
<a name="/s:10ListableUI13AnyListLayoutP15targetIndexPath26forInteractivelyMovingItem12withPosition10Foundation0gH0VSgAI_So7CGPointVtF"></a>
<a name="//apple_ref/swift/Method/targetIndexPath(forInteractivelyMovingItem:withPosition:)" class="dashAnchor"></a>
<a class="token" href="#/s:10ListableUI13AnyListLayoutP15targetIndexPath26forInteractivelyMovingItem12withPosition10Foundation0gH0VSgAI_So7CGPointVtF">targetIndexPath(forInteractivelyMovingItem:<wbr>withPosition:<wbr>)</a>
</code>
<span class="declaration-note">
Extension method
</span>
</div>
<div class="height-container">
<div class="pointer-container"></div>
<section class="section">
<div class="pointer"></div>
<div class="abstract">

</div>
<div class="declaration">
<h4>Declaration</h4>
<div class="language">
<p class="aside-title">Swift</p>
<pre class="highlight swift"><code><span class="kd">public</span> <span class="kd">func</span> <span class="nf">targetIndexPath</span><span class="p">(</span>
<span class="n">forInteractivelyMovingItem</span> <span class="nv">previousIndexPath</span><span class="p">:</span> <span class="kt">IndexPath</span><span class="p">,</span>
<span class="n">withPosition</span> <span class="nv">position</span><span class="p">:</span> <span class="kt">CGPoint</span>
<span class="p">)</span> <span class="o">-&gt;</span> <span class="kt">IndexPath</span><span class="p">?</span></code></pre>

</div>
</div>
</section>
Expand Down

Large diffs are not rendered by default.

Binary file not shown.
Binary file modified docs/Listable/docsets/Listable.tgz
Binary file not shown.
2 changes: 1 addition & 1 deletion docs/Listable/search.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion version.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

BLUEPRINT_VERSION ||= ['~> 5.0'].freeze

LISTABLE_VERSION ||= '16.5.0'
LISTABLE_VERSION ||= '16.6.0'

LISTABLE_IOS_DEPLOYMENT_TARGET ||= '15.0'

Expand Down
Loading