From 828ec858a288a29c38f68c8dfb373ea547cc54f5 Mon Sep 17 00:00:00 2001 From: Phillip Rak Date: Thu, 6 Feb 2025 16:40:40 -0700 Subject: [PATCH] Create a SortableTable ActionMenu component Signed-off-by: Phillip Rak --- .../src/components/RcDropdown/RcDropdown.vue | 5 +- .../components/RcDropdown/RcDropdownItem.vue | 10 +- .../RcDropdown/useDropdownContext.ts | 7 +- shell/components/SortableTable/ActionMenu.vue | 96 +++++++++++++++++++ shell/components/SortableTable/index.vue | 17 +--- shell/store/action-menu.js | 7 ++ 6 files changed, 123 insertions(+), 19 deletions(-) create mode 100644 shell/components/SortableTable/ActionMenu.vue diff --git a/pkg/rancher-components/src/components/RcDropdown/RcDropdown.vue b/pkg/rancher-components/src/components/RcDropdown/RcDropdown.vue index 3dff467742..f7c1fe7260 100644 --- a/pkg/rancher-components/src/components/RcDropdown/RcDropdown.vue +++ b/pkg/rancher-components/src/components/RcDropdown/RcDropdown.vue @@ -28,6 +28,8 @@ defineProps<{ ariaLabel?: string }>(); +const emit = defineEmits(['update:open']); + const { isMenuOpen, showMenu, @@ -35,8 +37,7 @@ const { setFocus, provideDropdownContext, registerDropdownCollection, - handleKeydown, -} = useDropdownContext(); +} = useDropdownContext(emit); provideDropdownContext(); diff --git a/pkg/rancher-components/src/components/RcDropdown/RcDropdownItem.vue b/pkg/rancher-components/src/components/RcDropdown/RcDropdownItem.vue index 993b992761..d49f26ed75 100644 --- a/pkg/rancher-components/src/components/RcDropdown/RcDropdownItem.vue +++ b/pkg/rancher-components/src/components/RcDropdown/RcDropdownItem.vue @@ -53,12 +53,12 @@ const findNewIndex = (shouldAdvance: boolean, activeIndex: number, itemsArr: Ele return newIndex; }; -const handleClick = () => { +const handleClick = (e: MouseEvent) => { if (props.disabled) { return; } - emits('click'); + emits('click', e); close(); }; @@ -97,6 +97,9 @@ const handleMouseEnter = (e: MouseEvent) => { @keydown.up.down.stop="handleKeydown" @mouseenter="handleMouseEnter" > + + + @@ -105,6 +108,9 @@ const handleMouseEnter = (e: MouseEvent) => {