html_ids

HTML element ID generators for sortable queue components.

source

SortableQueueHtmlIds


def SortableQueueHtmlIds(
    prefix:str
)->None:

HTML element ID generators for a sortable queue instance.

Tests

# 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")