diff --git a/console/packages/components/src/components/dropdown/index.ts b/console/packages/components/src/components/dropdown/index.ts
index 65c67561f9..9b8930d8b7 100644
--- a/console/packages/components/src/components/dropdown/index.ts
+++ b/console/packages/components/src/components/dropdown/index.ts
@@ -2,3 +2,4 @@ export { default as VDropdown } from "./Dropdown.vue";
export { default as VDropdownItem } from "./DropdownItem.vue";
export { default as VDropdownDivider } from "./DropdownDivider.vue";
export { VClosePopper } from "floating-vue";
+export * from "./symbols";
diff --git a/console/packages/components/src/components/dropdown/symbols.ts b/console/packages/components/src/components/dropdown/symbols.ts
new file mode 100644
index 0000000000..bcd77eefea
--- /dev/null
+++ b/console/packages/components/src/components/dropdown/symbols.ts
@@ -0,0 +1,5 @@
+import type { InjectionKey } from "vue";
+
+export const DropdownContextInjectionKey: InjectionKey<{
+ hide: () => void;
+}> = Symbol("dropdown-context");
diff --git a/console/src/components/dropdown-selector/CategoryDropdownSelector.vue b/console/src/components/dropdown-selector/CategoryDropdownSelector.vue
index 5d331d509e..c33bc9fa16 100644
--- a/console/src/components/dropdown-selector/CategoryDropdownSelector.vue
+++ b/console/src/components/dropdown-selector/CategoryDropdownSelector.vue
@@ -22,6 +22,8 @@ const emit = defineEmits<{
const { categories } = usePostCategory();
+const dropdown = ref();
+
const handleSelect = (category: Category) => {
if (
props.selected &&
@@ -34,6 +36,8 @@ const handleSelect = (category: Category) => {
emit("update:selected", category);
emit("select", category);
+
+ dropdown.value.hide();
};
function onDropdownShow() {
@@ -71,7 +75,7 @@ const searchResults = computed(() => {
-
+
@@ -91,7 +95,6 @@ const searchResults = computed(() => {
{
if (props.selected && tag.metadata.name === props.selected.metadata.name) {
emit("update:selected", undefined);
@@ -32,6 +34,8 @@ const handleSelect = (tag: Tag) => {
emit("update:selected", tag);
emit("select", tag);
+
+ dropdown.value.hide();
};
function onDropdownShow() {
@@ -69,7 +73,7 @@ const searchResults = computed(() => {
-
+
@@ -89,7 +93,6 @@ const searchResults = computed(() => {
{
if (props.selected && user.metadata.name === props.selected.metadata.name) {
emit("update:selected", undefined);
@@ -36,6 +38,8 @@ const handleSelect = (user: User) => {
emit("update:selected", user);
emit("select", user);
+
+ dropdown.value.hide();
};
function onDropdownShow() {
@@ -71,7 +75,7 @@ const searchResults = computed(() => {
-
+
@@ -91,7 +95,6 @@ const searchResults = computed(() => {
{
{{ $t("core.common.buttons.delete") }}
-
+
{{ $t("core.attachment.group_list.operations.delete.button") }}
diff --git a/console/src/modules/interface/themes/components/components/ThemeListItem.vue b/console/src/modules/interface/themes/components/components/ThemeListItem.vue
index 2bda5605b7..f4184c060a 100644
--- a/console/src/modules/interface/themes/components/components/ThemeListItem.vue
+++ b/console/src/modules/interface/themes/components/components/ThemeListItem.vue
@@ -208,18 +208,10 @@ const handleUninstall = async (theme: Theme, deleteExtensions?: boolean) => {
{{ $t("core.common.buttons.uninstall") }}
-
+
{{ $t("core.common.buttons.uninstall") }}
-
+
{{ $t("core.theme.operations.uninstall_and_delete_config.button") }}
diff --git a/console/src/modules/system/plugins/components/PluginListItem.vue b/console/src/modules/system/plugins/components/PluginListItem.vue
index 6dbac47d29..a0a126cf6e 100644
--- a/console/src/modules/system/plugins/components/PluginListItem.vue
+++ b/console/src/modules/system/plugins/components/PluginListItem.vue
@@ -154,14 +154,10 @@ const handleResetSettingConfig = async () => {
{{ $t("core.common.buttons.uninstall") }}
-
+
{{ $t("core.common.buttons.uninstall") }}
-
+
{{ $t("core.plugin.list.actions.uninstall_and_delete_config") }}