diff --git a/packages/blade/.storybook/react-native/storybook.requires.js b/packages/blade/.storybook/react-native/storybook.requires.js index db4cb1c5a33..0c50893c0e0 100644 --- a/packages/blade/.storybook/react-native/storybook.requires.js +++ b/packages/blade/.storybook/react-native/storybook.requires.js @@ -100,6 +100,7 @@ const getStories = () => { './src/components/SkipNav/SkipNav.stories.tsx': require('../../src/components/SkipNav/SkipNav.stories.tsx'), './src/components/Spinner/BaseSpinner/BaseSpinner.stories.tsx': require('../../src/components/Spinner/BaseSpinner/BaseSpinner.stories.tsx'), './src/components/Spinner/Spinner/Spinner.stories.tsx': require('../../src/components/Spinner/Spinner/Spinner.stories.tsx'), + './src/components/SpotlightPopoverTour/Tour.stories.tsx': require('../../src/components/SpotlightPopoverTour/Tour.stories.tsx'), './src/components/Switch/Switch.stories.tsx': require('../../src/components/Switch/Switch.stories.tsx'), './src/components/Tabs/Tabs.stories.tsx': require('../../src/components/Tabs/Tabs.stories.tsx'), './src/components/Tag/Tag.stories.tsx': require('../../src/components/Tag/Tag.stories.tsx'), diff --git a/packages/blade/src/components/Dropdown/DropdownOverlay.web.tsx b/packages/blade/src/components/Dropdown/DropdownOverlay.web.tsx index 3a4db36d615..82ff03199e2 100644 --- a/packages/blade/src/components/Dropdown/DropdownOverlay.web.tsx +++ b/packages/blade/src/components/Dropdown/DropdownOverlay.web.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useState } from 'react'; import { autoUpdate, offset, @@ -33,9 +33,11 @@ const _DropdownOverlay = ({ children, testID, zIndex = OVERLAY_ZINDEX, + width, }: DropdownOverlayProps): React.ReactElement | null => { const { isOpen, triggererRef, triggererWrapperRef, dropdownTriggerer, setIsOpen } = useDropdown(); const { theme } = useTheme(); + const [widthValue, setwidthValue] = useState(width); const bottomSheetAndDropdownGlue = useBottomSheetAndDropdownGlue(); const isMenu = @@ -91,6 +93,11 @@ const _DropdownOverlay = ({ // eslint-disable-next-line react-hooks/exhaustive-deps }, [isOpen]); + React.useEffect(() => { + if (width) { + setwidthValue(width); + } + }, [width]); return ( {children} diff --git a/packages/blade/src/components/Dropdown/StyledDropdownOverlay.tsx b/packages/blade/src/components/Dropdown/StyledDropdownOverlay.tsx index 5e4245cf67e..a060ceb428b 100644 --- a/packages/blade/src/components/Dropdown/StyledDropdownOverlay.tsx +++ b/packages/blade/src/components/Dropdown/StyledDropdownOverlay.tsx @@ -4,8 +4,9 @@ import { makeSize } from '~utils'; const StyledDropdownOverlay = styled(BaseBox)<{ isInBottomSheet?: boolean; + width?: string; }>((props) => { - const { theme, isInBottomSheet } = props; + const { theme, isInBottomSheet, width } = props; return { backgroundColor: theme.colors.surface.popup.background, @@ -13,6 +14,7 @@ const StyledDropdownOverlay = styled(BaseBox)<{ borderColor: theme.colors.surface.border.normal.lowContrast, borderStyle: isInBottomSheet ? undefined : 'solid', borderRadius: makeSize(theme.border.radius.medium), + width: width ? width : '100%', }; }); diff --git a/packages/blade/src/components/Dropdown/docs/DropdownWithButton.stories.tsx b/packages/blade/src/components/Dropdown/docs/DropdownWithButton.stories.tsx index 20637be1452..5f3d0ea0ad4 100644 --- a/packages/blade/src/components/Dropdown/docs/DropdownWithButton.stories.tsx +++ b/packages/blade/src/components/Dropdown/docs/DropdownWithButton.stories.tsx @@ -167,7 +167,7 @@ export const InternalAutoPositioning = (): React.ReactElement => { Top Left Menu - + diff --git a/packages/blade/src/components/Dropdown/types.ts b/packages/blade/src/components/Dropdown/types.ts index c9ecdf81d76..b7db455d55f 100644 --- a/packages/blade/src/components/Dropdown/types.ts +++ b/packages/blade/src/components/Dropdown/types.ts @@ -47,6 +47,7 @@ type DropdownOverlayProps = { * @default 1001 */ zIndex?: number; + width?: string; } & TestID; export type { DropdownProps, DropdownOverlayProps };