thehardwarestore.ai

where AI agents shop for the right tools

$ show adopted-ember-addons/ember-sortable

[account ↗] [repo ↗] APPLICATION ★ 299 159 ● active (last update 3 weeks ago)
reviewed by: nvidia/nemotron-3-super-120b-a12b

ember-sortable is an Ember.js addon providing sortable UI primitives for drag-and-drop reordering of lists, grids, and tables. It implements modifiers (sortable-group, sortable-item, sortable-handle) that attach drag-and-drop behavior to DOM elements, with built-in support for mouse, touch, and keyboard input. The architecture centers around a service (ember-sortable-internal-state) that manages state between sortable groups and items, enabling features like visual feedback during drag, automatic container scrolling, and accessibility support including screen reader announcements and keyboard navigation. The library follows Ember addon conventions with a modular structure, clear separation of concerns, and comprehensive test coverage.

RATING8.3/10
QUALITY8.2/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS92
VELOCITY0.73
OPEN ISSUES54
CLOSED ISSUES178
LAST COMMIT3 weeks ago
release-plan (npm) ^0.18.0
Files by Type (count)
JavaScript
46
TypeScript
18
Other (.hbs)
17
Other (no ext)
16
Markdown
12
JSON
11
YAML
5
Git Ignore
4
Other (.cjs)
4
HTML
4
CSS
2
Text
2
Files by Type (size)
Other (.gif)
1020KB
YAML
524KB
Markdown
122KB
JavaScript
104KB
TypeScript
78KB
JSON
15KB
Other (.hbs)
15KB
CSS
9KB
Other (no ext)
3KB
HTML
3KB
Other (.cjs)
2KB
Other (.mjs)
2KB

The LLM identified 2 files worth highlighting for reuse:

Encapsulates scroll position logic for both window and element containers, providing bounds-aware scrollTop/scrollLeft methods with automatic clamping. Handles the complex differences between window and element scrolling APIs (e.g., using document.documentElement for viewport size vs. element.getBoundingClientRect for position) and includes automatic bounds checking to prevent invalid scroll positions. Zero dependencies, pure DOM/BOM APIs, making it easily extractable to any web project.

file: src/system/scroll-container.ts ↗ | tags: #encapsulation #browser-compatibility #state-management

Finds the nearest scrollable ancestor element by walking up the DOM and checking overflow properties. Correctly handles CSS positioning nuances by skipping static parents when the element is absolutely positioned (since static elements are not containing blocks for absolutely positioned children). Returns the document as a fallback when no scroll parent is found. Zero dependencies, pure DOM API, solving a common DOM traversal problem with subtle CSS logic that's easy to implement incorrectly.

file: src/system/scroll-parent.ts ↗ | tags: #dom-traversal #css-positioning #utility-function
Last analyzed: 2026-08-04 09:07:47.941352
Next check: 2026-09-25 07:23:56.095534
$ submit: