Skip to content

Commit a87afa8

Browse files
authored
Merge pull request #2881 from Particular/feature/platform-capabilities-collapse-ui
2 parents 9ff837e + a308c97 commit a87afa8

1 file changed

Lines changed: 64 additions & 46 deletions

File tree

src/Frontend/src/components/platformcapabilities/PlatformCapabilitiesDashboardItem.vue

Lines changed: 64 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { getAuditingWizardPages } from "@/components/platformcapabilities/wizard
1010
import { getMonitoringWizardPages } from "@/components/platformcapabilities/wizards/MonitoringWizardPages";
1111
import { usePlatformCapabilitiesStore } from "@/stores/PlatformCapabilitiesStore";
1212
import FAIcon from "@/components/FAIcon.vue";
13-
import { faChevronDown, faChevronUp } from "@fortawesome/free-solid-svg-icons";
13+
import { faChevronRight } from "@fortawesome/free-solid-svg-icons";
1414
1515
const platformCapabilitiesStore = usePlatformCapabilitiesStore();
1616
const { visibility } = storeToRefs(platformCapabilitiesStore);
@@ -30,15 +30,23 @@ const hasHiddenCards = computed(() => !visibility.value.showAuditingCard || !vis
3030
<div v-if="visibility.showSection" class="platform-capabilities">
3131
<div class="capabilities-header">
3232
<div class="capabilities-title-row">
33-
<div>
34-
<h6>Platform Capabilities</h6>
35-
<p class="capabilities-description">Discover and configure the capabilities of the Particular Service Platform</p>
33+
<div
34+
id="collapse-capabilities-btn"
35+
class="capabilities-toggle hide-section-btn"
36+
role="button"
37+
tabindex="0"
38+
@click="platformCapabilitiesStore.toggleSection()"
39+
@keydown.enter.prevent="platformCapabilitiesStore.toggleSection()"
40+
@keydown.space.prevent="platformCapabilitiesStore.toggleSection()"
41+
>
42+
<FAIcon :icon="faChevronRight" class="section-chevron expanded" />
43+
<div>
44+
<h6>Platform Capabilities</h6>
45+
<p class="capabilities-description">Discover and configure the capabilities of the Particular Service Platform</p>
46+
</div>
3647
</div>
3748
<div class="capabilities-actions">
3849
<button v-if="hasHiddenCards" class="btn-link restore-btn" @click="platformCapabilitiesStore.showAll()" v-tippy="'Show all hidden cards'">Show All</button>
39-
<button class="btn-icon hide-section-btn" @click="platformCapabilitiesStore.toggleSection()" v-tippy="'Hide this section'">
40-
<FAIcon :icon="faChevronUp" />
41-
</button>
4250
</div>
4351
</div>
4452
</div>
@@ -87,10 +95,18 @@ const hasHiddenCards = computed(() => !visibility.value.showAuditingCard || !vis
8795
</div>
8896
</div>
8997
<div v-else class="platform-capabilities-collapsed">
90-
<button class="btn-link expand-btn" @click="platformCapabilitiesStore.toggleSection()">
91-
<FAIcon :icon="faChevronDown" />
92-
<span>Show Platform Capabilities</span>
93-
</button>
98+
<div
99+
id="expand-capabilities-btn"
100+
class="capabilities-toggle"
101+
role="button"
102+
tabindex="0"
103+
@click="platformCapabilitiesStore.toggleSection()"
104+
@keydown.enter.prevent="platformCapabilitiesStore.toggleSection()"
105+
@keydown.space.prevent="platformCapabilitiesStore.toggleSection()"
106+
>
107+
<FAIcon :icon="faChevronRight" class="section-chevron" />
108+
<h6>Show Platform Capabilities</h6>
109+
</div>
94110
</div>
95111
</template>
96112

@@ -105,6 +121,42 @@ const hasHiddenCards = computed(() => !visibility.value.showAuditingCard || !vis
105121
align-items: flex-start;
106122
}
107123
124+
.capabilities-toggle {
125+
display: flex;
126+
align-items: flex-start;
127+
gap: 8px;
128+
cursor: pointer;
129+
padding: 4px 6px;
130+
border-radius: 6px;
131+
transition: background-color 0.15s ease;
132+
user-select: none;
133+
}
134+
135+
.capabilities-toggle:hover {
136+
background-color: var(--hover-bg, rgba(0, 0, 0, 0.05));
137+
}
138+
139+
.capabilities-toggle:focus-visible {
140+
outline: 2px solid var(--primary-color, #007bff);
141+
outline-offset: 2px;
142+
}
143+
144+
.capabilities-toggle h6 {
145+
margin: 0;
146+
}
147+
148+
.section-chevron {
149+
font-size: 12px;
150+
color: var(--text-secondary, #888);
151+
margin-top: 3px;
152+
flex-shrink: 0;
153+
transition: transform 0.2s ease;
154+
}
155+
156+
.section-chevron.expanded {
157+
transform: rotate(90deg);
158+
}
159+
108160
.capabilities-description {
109161
font-size: 14px;
110162
color: var(--text-secondary, #666);
@@ -130,21 +182,6 @@ const hasHiddenCards = computed(() => !visibility.value.showAuditingCard || !vis
130182
text-decoration: underline;
131183
}
132184
133-
.btn-icon {
134-
background: none;
135-
border: none;
136-
color: var(--text-secondary, #666);
137-
cursor: pointer;
138-
padding: 4px 8px;
139-
border-radius: 4px;
140-
transition: all 0.2s ease;
141-
}
142-
143-
.btn-icon:hover {
144-
background-color: var(--hover-bg, #f0f0f0);
145-
color: var(--text-primary, #333);
146-
}
147-
148185
.capabilities-list {
149186
display: flex;
150187
gap: 16px;
@@ -155,25 +192,6 @@ const hasHiddenCards = computed(() => !visibility.value.showAuditingCard || !vis
155192
}
156193
157194
.platform-capabilities-collapsed {
158-
padding: 8px 0;
159-
}
160-
161-
.expand-btn {
162-
display: flex;
163-
align-items: center;
164-
gap: 8px;
165-
background: none;
166-
border: none;
167-
color: var(--text-secondary, #666);
168-
cursor: pointer;
169-
font-size: 14px;
170-
padding: 8px 12px;
171-
border-radius: 4px;
172-
transition: all 0.2s ease;
173-
}
174-
175-
.expand-btn:hover {
176-
background-color: var(--hover-bg, #f0f0f0);
177-
color: var(--text-primary, #333);
195+
padding: 4px 0;
178196
}
179197
</style>

0 commit comments

Comments
 (0)