# html_ids


<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->

------------------------------------------------------------------------

<a
href="https://github.com/cj-mills/cjm-fasthtml-sortable-queue/blob/main/cjm_fasthtml_sortable_queue/html_ids.py#L21"
target="_blank" style="float:right; font-size:smaller">source</a>

### SortableQueueHtmlIds

``` python

def SortableQueueHtmlIds(
    prefix:str
)->None:

```

*HTML element ID generators for a sortable queue instance.*

## Tests

``` python
# Safe ID sanitization
assert _safe_id("abc123") == "abc123"
assert _safe_id("/path/to/file.mp3") == "path-to-file-mp3"
assert _safe_id("provider:record_1") == "provider-record-1"

# Prefix-scoped IDs
ids = SortableQueueHtmlIds(prefix="sq")
assert ids.container == "sq-queue-container"
assert ids.list == "sq-queue-list"
assert ids.empty == "sq-queue-empty"
assert ids.header == "sq-queue-header"
assert ids.remove_btn == "sq-queue-remove-btn"
assert ids.reorder_up_btn == "sq-queue-reorder-up-btn"
assert ids.reorder_down_btn == "sq-queue-reorder-down-btn"
assert ids.system_id == "sq-queue-kb"

# Per-item IDs with sanitization
assert ids.item("abc123") == "sq-queue-item-abc123"
assert ids.item("/path/to/file.mp3") == "sq-queue-item-path-to-file-mp3"

# CSS selector helper
assert ids.as_selector(ids.container) == "#sq-queue-container"

# Different prefix
ids2 = SortableQueueHtmlIds(prefix="sd")
assert ids2.container == "sd-queue-container"
assert ids2.system_id == "sd-queue-kb"

print("All html_ids tests passed")
```
