293293 </div >
294294
295295 <!-- Ignored Suggestions Section -->
296- <div v-if =" ignoredJoystickSuggestionsByExtension.length > 0" class =" mb-8" >
296+ <div v-if =" ignoredJoystickSuggestionsByExtension.length > 0" class =" mb-4" >
297+ <v-btn
298+ variant =" text"
299+ color =" grey-lighten-1"
300+ class =" opacity-70 hover:opacity-100"
301+ :prepend-icon =" showIgnoredMappings ? 'mdi-chevron-up' : 'mdi-chevron-down'"
302+ @click =" showIgnoredMappings = !showIgnoredMappings"
303+ >
304+ {{ showIgnoredMappings ? 'Hide ignored mappings' : 'Show ignored mappings' }}
305+ </v-btn >
306+ </div >
307+
308+ <!-- Ignored Suggestions Section -->
309+ <div v-if =" showIgnoredMappings && ignoredJoystickSuggestionsByExtension.length > 0" class =" mb-8" >
297310 <div class =" flex items-center gap-2 mb-4" >
298311 <v-icon size =" 24" color =" orange" >mdi-close-circle</v-icon >
299312 <h2 class =" text-xl font-semibold" >Ignored Mappings</h2 >
@@ -595,6 +608,11 @@ const activeTab = ref('actions')
595608 */
596609const showAppliedMappings = ref (false )
597610
611+ /**
612+ * Controls visibility of ignored mappings section
613+ */
614+ const showIgnoredMappings = ref (false )
615+
598616/**
599617 * Action with extension name
600618 */
@@ -835,6 +853,13 @@ const ignoredJoystickSuggestionsByExtension = computed(() => {
835853 .filter ((ext ) => ext .suggestionGroups .length > 0 )
836854})
837855
856+ /**
857+ * Whether there are new extension features that still need user action
858+ */
859+ const hasPendingBlueOSFeatures = computed (() => {
860+ return filteredActions .value .length > 0 || filteredJoystickSuggestionsByExtension .value .length > 0
861+ })
862+
838863/**
839864 * Get the human-readable name for an action type
840865 * @param {customActionTypes} type - The action type
@@ -1241,7 +1266,7 @@ const checkForBlueOSFeatures = async (): Promise<void> => {
12411266 ensureSelectedProfile ()
12421267
12431268 // Show modal if there are any features available
1244- if (filteredActions .value . length > 0 || filteredJoystickSuggestionsByExtension . value . length > 0 ) {
1269+ if (hasPendingBlueOSFeatures .value ) {
12451270 isVisible .value = true
12461271 // Set active tab based on what's available
12471272 if (filteredJoystickSuggestionsByExtension .value .length > 0 && filteredActions .value .length === 0 ) {
@@ -1264,6 +1289,12 @@ watch(
12641289 ensureSelectedProfile ()
12651290 }
12661291)
1292+
1293+ watch (hasPendingBlueOSFeatures , (hasPending ) => {
1294+ if (! hasPending ) {
1295+ isVisible .value = false
1296+ }
1297+ })
12671298 </script >
12681299
12691300<style scoped>
0 commit comments