From 30d48f2356a0b07853be5744c7be506a8a5278a6 Mon Sep 17 00:00:00 2001 From: Sidharth Date: Tue, 19 Aug 2025 08:37:55 +0530 Subject: [PATCH] feat: add a filter and check box to disable (#5014) selected extensions --- .../dialog/content/setting/ExtensionPanel.vue | 58 ++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/src/components/dialog/content/setting/ExtensionPanel.vue b/src/components/dialog/content/setting/ExtensionPanel.vue index f47ed5ebb2..3fd2460937 100644 --- a/src/components/dialog/content/setting/ExtensionPanel.vue +++ b/src/components/dialog/content/setting/ExtensionPanel.vue @@ -29,12 +29,19 @@ +
+ +
+ >([]) + const filters = ref({ global: { value: '', matchMode: FilterMatchMode.CONTAINS } }) @@ -97,6 +110,22 @@ const settingStore = useSettingStore() const editingEnabledExtensions = ref>({}) +const filteredExtensions = computed(() => { + const extensions = extensionStore.extensions + switch (filterType.value) { + case 'Core': + return extensions.filter((ext) => + extensionStore.isCoreExtension(ext.name) + ) + case 'Custom': + return extensions.filter( + (ext) => !extensionStore.isCoreExtension(ext.name) + ) + default: + return extensions + } +}) + onMounted(() => { extensionStore.extensions.forEach((ext) => { editingEnabledExtensions.value[ext.name] = @@ -163,6 +192,33 @@ const applyChanges = () => { const menu = ref>() const contextMenuItems = [ + { + label: 'Enable Selected', + icon: 'pi pi-check', + command: async () => { + selectedExtensions.value.forEach((ext) => { + if (!extensionStore.isExtensionReadOnly(ext.name)) { + editingEnabledExtensions.value[ext.name] = true + } + }) + await updateExtensionStatus() + } + }, + { + label: 'Disable Selected', + icon: 'pi pi-times', + command: async () => { + selectedExtensions.value.forEach((ext) => { + if (!extensionStore.isExtensionReadOnly(ext.name)) { + editingEnabledExtensions.value[ext.name] = false + } + }) + await updateExtensionStatus() + } + }, + { + separator: true + }, { label: 'Enable All', icon: 'pi pi-check',