A music player that connects to your cloud/distributed storage.
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat: sort direction button auto-queue facet

+16 -1
+3 -1
src/facets/tools/auto-queue/index.html
··· 24 24 </label> 25 25 </div> 26 26 <div class="row"> 27 - <label class="with-icon" for="sort-by"> 27 + <label class="with-icon" for="sort-by" style="width: min(80vw, var(--container-xs))"> 28 28 <i class="ph-bold ph-arrows-down-up"></i> 29 29 <select id="sort-by"> 30 30 <option value="[]">Default order</option> ··· 37 37 <option value='["tags.year"]'>Year</option> 38 38 <option value='["tags.date"]'>Date</option> 39 39 </select> 40 + <button id="sort-direction" style="flex: none">DESC</button> 40 41 </label> 41 42 </div> 42 43 </div> ··· 60 61 61 62 label { 62 63 flex: 1; 64 + flex-wrap: wrap; 63 65 letter-spacing: var(--leading-relaxed); 64 66 text-transform: uppercase; 65 67 }
+13
src/facets/tools/auto-queue/index.inline.js
··· 23 23 /** @type {HTMLSelectElement} */ (document.querySelector("#playlist")); 24 24 const sortBySelect = 25 25 /** @type {HTMLSelectElement} */ (document.querySelector("#sort-by")); 26 + const sortDirectionBtn = 27 + /** @type {HTMLButtonElement} */ (document.querySelector("#sort-direction")); 26 28 27 29 // Repeat & Shuffle state 28 30 effect(() => { ··· 113 115 sortBySelect.onchange = () => { 114 116 scope.setSortBy(JSON.parse(sortBySelect.value)); 115 117 }; 118 + 119 + // Sort direction state 120 + effect(() => { 121 + const dir = scope.sortDirection() ?? "desc"; 122 + sortDirectionBtn.textContent = dir.toUpperCase(); 123 + }); 124 + 125 + sortDirectionBtn.onclick = () => { 126 + const dir = scope.sortDirection() ?? "desc"; 127 + scope.setSortDirection(dir === "asc" ? "desc" : "asc"); 128 + };