Skip to content

Commit fb1f89e

Browse files
committed
feat(admin): accordion org repo lists
1 parent f958f74 commit fb1f89e

File tree

2 files changed

+70
-1
lines changed

2 files changed

+70
-1
lines changed

static/admin.css

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,51 @@ body[data-page="admin"] [data-view="kernel"] [data-sublist] {
124124
align-items: start;
125125
}
126126

127+
body[data-page="admin"] [data-view="kernel"] details[data-kernel-repos] {
128+
margin-top: 6px;
129+
}
130+
131+
body[data-page="admin"] [data-view="kernel"] summary[data-kernel-repos-title] {
132+
display: flex;
133+
align-items: center;
134+
gap: 10px;
135+
cursor: pointer;
136+
list-style: none;
137+
margin: 0;
138+
padding: 8px 10px;
139+
border-radius: var(--radius-md);
140+
background: rgba(255, 255, 255, 0.02);
141+
}
142+
143+
body[data-page="admin"] [data-view="kernel"] summary[data-kernel-repos-title]::-webkit-details-marker {
144+
display: none;
145+
}
146+
147+
body[data-page="admin"] [data-view="kernel"] summary[data-kernel-repos-title]::after {
148+
content: "▾";
149+
margin-left: 6px;
150+
opacity: 0.6;
151+
font-size: 11px;
152+
}
153+
154+
body[data-page="admin"] [data-view="kernel"] details[data-kernel-repos][open] summary[data-kernel-repos-title]::after {
155+
transform: rotate(180deg);
156+
}
157+
158+
body[data-page="admin"] [data-view="kernel"] [data-kernel-repos-label] {
159+
font-size: 10px;
160+
text-transform: uppercase;
161+
letter-spacing: 0.18em;
162+
color: var(--muted-2);
163+
}
164+
165+
body[data-page="admin"] [data-view="kernel"] [data-kernel-repos-meta] {
166+
margin-left: auto;
167+
font-size: 12px;
168+
font-weight: 600;
169+
color: var(--muted);
170+
}
171+
127172
body[data-page="admin"] [data-view="kernel"] [data-sublist="repos"] {
128173
grid-template-columns: repeat(2, minmax(0, 1fr));
129174
}

static/admin.js

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@ let kernelPubKeys = [];
176176
let kernelPubKeysLoading = false;
177177
let kernelPubKeysLoadedAt = 0;
178178
let kernelPubKeysSaving = false;
179+
const kernelOrgRepoAccordionState = new Map();
179180
let kernelPolicyState = {
180181
available: false,
181182
message: "",
@@ -1906,7 +1907,30 @@ const renderKernelList = (records, policyState = kernelPolicyState) => {
19061907
});
19071908
if (tile) sublist.appendChild(tile);
19081909
});
1909-
groupTile.appendChild(sublist);
1910+
1911+
const accordion = document.createElement("details");
1912+
accordion.dataset.kernelRepos = group.owner || "unknown";
1913+
const existing = kernelOrgRepoAccordionState.get(group.owner);
1914+
accordion.open = existing === undefined ? true : existing === true;
1915+
1916+
const summary = document.createElement("summary");
1917+
summary.dataset.kernelReposTitle = "title";
1918+
const label = document.createElement("span");
1919+
label.dataset.kernelReposLabel = "label";
1920+
label.textContent = "Repos";
1921+
const meta = document.createElement("span");
1922+
meta.dataset.kernelReposMeta = "meta";
1923+
meta.textContent = formatPlural(repos.length, "repo");
1924+
summary.appendChild(label);
1925+
summary.appendChild(meta);
1926+
accordion.appendChild(summary);
1927+
accordion.appendChild(sublist);
1928+
1929+
accordion.addEventListener("toggle", () => {
1930+
kernelOrgRepoAccordionState.set(group.owner, accordion.open);
1931+
});
1932+
1933+
groupTile.appendChild(accordion);
19101934
}
19111935
kernelList.appendChild(groupTile);
19121936
});

0 commit comments

Comments
 (0)