diff --git a/packages/ui-components/src/components/dropdown-menu/DropdownMenu.tsx b/packages/ui-components/src/components/dropdown-menu/DropdownMenu.tsx index d6042282..b48f0e22 100644 --- a/packages/ui-components/src/components/dropdown-menu/DropdownMenu.tsx +++ b/packages/ui-components/src/components/dropdown-menu/DropdownMenu.tsx @@ -1,5 +1,4 @@ import { - Header, Menu, MenuItem, Popover, @@ -27,7 +26,8 @@ export type DropdownMenuProps = { selectedValues?: string[]; onSelectValue?: (value: string) => void; isOpen?: boolean; - topMessage?: string | ReactNode; + bottomMessage?: ReactNode; + topMessage?: ReactNode; shouldCloseOnInteractOutside?: (element: Element) => boolean; variant?: "default" | "tiny"; }; @@ -40,6 +40,7 @@ export const DropdownMenu = ({ selectedValues = [], onSelectValue, topMessage, + bottomMessage, shouldCloseOnInteractOutside, variant = "default", }: PropsWithChildren) => { @@ -159,17 +160,25 @@ export const DropdownMenu = ({ shouldCloseOnInteractOutside={shouldCloseOnInteractOutside} onOpenChange={onOpenChangeHandler} > - +
{topMessage && ( -
+
{topMessage} -
+
+ )} + + {renderMenuItems(options)} + + {bottomMessage && ( +
+ {bottomMessage} +
)} - {renderMenuItems(options)} -
+ ); diff --git a/packages/ui-components/src/components/dropdown-menu/dropdown.stories.tsx b/packages/ui-components/src/components/dropdown-menu/dropdown.stories.tsx index 3eb0cb66..044e1c11 100644 --- a/packages/ui-components/src/components/dropdown-menu/dropdown.stories.tsx +++ b/packages/ui-components/src/components/dropdown-menu/dropdown.stories.tsx @@ -501,26 +501,24 @@ export const OpensInNewWindow: Story = { }, }; -export const WithTopMessage: Story = { +export const WithTopBottomMessage: Story = { args: { options: [ { label: "Administrator", value: "admin", - isDisabled: true, }, { label: "Editor", value: "editor", - isDisabled: true, }, { label: "Viewer", value: "viewer", - isDisabled: true, }, ], topMessage: "You don't have permission to modify these roles", + bottomMessage: "Contact your administrator for access", }, render: (args) => { const { isOpen, setIsOpen } = useDropdownMenu(); diff --git a/packages/ui-components/src/components/dropdown-menu/index.scss b/packages/ui-components/src/components/dropdown-menu/index.scss index f2dc0c68..44fb380a 100644 --- a/packages/ui-components/src/components/dropdown-menu/index.scss +++ b/packages/ui-components/src/components/dropdown-menu/index.scss @@ -18,14 +18,16 @@ z-index: 1000; max-width: min(320px, calc(100vw - 32px)); max-height: inherit; - box-sizing: border-box; - overflow: auto; min-width: 150px; box-sizing: border-box; - outline: none; border-radius: 8px; border: 1px solid var(--c--contextuals--border--surface--primary); box-shadow: 0px 0px 6px 0px rgba(0, 0, 145, 0.1); +} + +.c__dropdown-menu__list { + overflow: auto; + outline: none; .react-aria-Separator { height: 1px; @@ -33,7 +35,8 @@ } } -.c__dropdown-menu-item-top-message { +.c__dropdown-menu-item-top-message, +.c__dropdown-menu-item-bottom-message { display: flex; align-items: center;