diff --git a/webui/scripts/test-scheduling-page-structure.mjs b/webui/scripts/test-scheduling-page-structure.mjs
index ece9fd2..6a55a6d 100644
--- a/webui/scripts/test-scheduling-page-structure.mjs
+++ b/webui/scripts/test-scheduling-page-structure.mjs
@@ -12,6 +12,7 @@ assert.match(page, /hasScope\(auth, "calendar:calendar:read"\)/);
assert.match(page, /Boolean\(calendarPickerCapability\) && canReadCalendars && canReadAvailability && canWriteCalendarEvent/);
assert.doesNotMatch(page, /@govoplan\/calendar-webui|govoplan-calendar\/webui/);
assert.match(page, /Card,[\s\S]*DataGrid,[\s\S]*DataGridEmptyAction,[\s\S]*DataGridRowActions,[\s\S]*ModuleSubnav,[\s\S]*ToggleSwitch,[\s\S]*from "@govoplan\/core-webui"/);
+assert.match(page, /SelectionList,[\s\S]*SelectionListItem,[\s\S]*from "@govoplan\/core-webui"/);
assert.doesNotMatch(page, /@govoplan\/core-webui\/src\//);
assert.match(page, /className="scheduling-full-editor"/);
assert.match(page, /className="scheduling-page-actions"/);
@@ -36,6 +37,9 @@ assert.match(browseBranch, /
\{I18N\.requests\}<\/h1>/);
assert.match(browseBranch, / \{I18N\.add\}/);
assert.match(page, /title=\{I18N\.myRequests\}/);
assert.match(page, /title=\{I18N\.invitedRequests\}/);
+assert.match(page, //);
+assert.match(page, //);
assert.match(createBranch, //);
assert.match(page, //);
diff --git a/webui/src/features/scheduling/SchedulingPage.tsx b/webui/src/features/scheduling/SchedulingPage.tsx
index bf475f5..26999cb 100644
--- a/webui/src/features/scheduling/SchedulingPage.tsx
+++ b/webui/src/features/scheduling/SchedulingPage.tsx
@@ -19,6 +19,8 @@ import {
DataGridRowActions,
DateTimeField,
ModuleSubnav,
+ SelectionList,
+ SelectionListItem,
TableActionGroup,
ToggleSwitch,
hasScope,
@@ -810,16 +812,20 @@ function RequestGroup({
return (
- {requests.length ? requests.map((request) => (
-
- )) :
{I18N.noRequestsInGroup}
}
+ {requests.length ? (
+
+ {requests.map((request) => (
+ onSelect(request.id)}>
+ {request.title}{formatRelevantDate(request)}
+ {requestStatusLabel(request, actor)}
+
+ ))}
+
+ ) :
{I18N.noRequestsInGroup}
}
);
diff --git a/webui/src/styles/scheduling.css b/webui/src/styles/scheduling.css
index 4ac02c0..e720926 100644
--- a/webui/src/styles/scheduling.css
+++ b/webui/src/styles/scheduling.css
@@ -136,30 +136,16 @@
overflow: auto;
}
+.scheduling-request-list {
+ gap: 4px;
+}
+
.scheduling-list-item {
- width: 100%;
min-height: 50px;
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
gap: 10px;
align-items: center;
- margin: 0 0 4px;
- padding: 8px 10px;
- border: 1px solid transparent;
- border-radius: 7px;
- color: var(--text);
- background: transparent;
- text-align: left;
- cursor: pointer;
-}
-
-.scheduling-list-item:hover {
- background: var(--hover-tint-soft);
-}
-
-.scheduling-list-item.is-selected {
- border-color: color-mix(in srgb, var(--accent) 45%, transparent);
- background: color-mix(in srgb, var(--accent) 10%, var(--panel));
}
.scheduling-list-item > span {