Skip to content

Commit

Permalink
Merge pull request #311 from tecsinapse/develop
Browse files Browse the repository at this point in the history
fix: select popover
  • Loading branch information
ryancarloscorrea authored Feb 19, 2025
2 parents 9ab1bee + ca94cbb commit 3589c25
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 3 deletions.
4 changes: 4 additions & 0 deletions packages/cortex-react/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline

**Note:** Version bump only for package @tecsinapse/cortex-react

## [1.9.24-beta.0](https://github.com/tecsinapse/design-system/compare/@tecsinapse/[email protected]...@tecsinapse/[email protected]) (2025-02-19)

**Note:** Version bump only for package @tecsinapse/cortex-react

## [1.9.23](https://github.com/tecsinapse/design-system/compare/@tecsinapse/[email protected]...@tecsinapse/[email protected]) (2025-02-05)

**Note:** Version bump only for package @tecsinapse/cortex-react
Expand Down
10 changes: 9 additions & 1 deletion packages/cortex-react/src/components/Popover/Provider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,14 @@ export interface ControlledProps {
controlled: true;
isOpen: boolean;
setIsOpen: Dispatch<SetStateAction<boolean>>;
fallbackPlacements?: Array<Placement>;
}

export interface UncontrolledProviderProps {
/** child element */
children: ReactNode;
placement?: Placement;
fallbackPlacements?: Array<Placement>;
trigger?: 'hover' | 'click';
controlled?: false;
}
Expand All @@ -30,9 +32,15 @@ export const PopoverProvider = ({
children,
placement,
trigger,
fallbackPlacements,
...props
}: PopoverProviderProps) => {
const floatingLogic = useFloatingElement({ placement, trigger, ...props });
const floatingLogic = useFloatingElement({
placement,
trigger,
fallbackPlacements,
...props,
});

return (
<Context.Provider value={{ ...floatingLogic }}>{children}</Context.Provider>
Expand Down
7 changes: 6 additions & 1 deletion packages/cortex-react/src/components/Select/Root.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { Popover } from '../Popover';
import { Content } from './Content';
import { SelectContext } from './context';
import { SelectRootProps } from './types';
import { Placement } from '@floating-ui/react';

/** Select component */
export const SelectRoot = <T,>({
Expand All @@ -14,7 +15,11 @@ export const SelectRoot = <T,>({
className,
}: SelectRootProps<T>) => {
return (
<Popover.Root placement="bottom" trigger="click">
<Popover.Root
fallbackPlacements={['bottom', 'top'] as Array<Placement>}
placement="bottom"
trigger="click"
>
<SelectContext.Provider value={{ value, keyExtractor, labelExtractor }}>
<Content className={className}>{children}</Content>
</SelectContext.Provider>
Expand Down
4 changes: 3 additions & 1 deletion packages/cortex-react/src/hooks/useFloatingElement.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ export interface FloatingElementProps {
controlled?: boolean;
isOpen?: boolean;
setIsOpen?: Dispatch<SetStateAction<boolean>> | undefined;
fallbackPlacements?: Array<Placement>;
}

export const useFloatingElement = ({
Expand All @@ -46,6 +47,7 @@ export const useFloatingElement = ({
controlled,
isOpen,
setIsOpen,
fallbackPlacements = ['right', 'bottom', 'left', 'top'],
}: FloatingElementProps) => {
const [openUncontrolled, onOpenChangeUncontrolled] = useState(false);

Expand All @@ -59,7 +61,7 @@ export const useFloatingElement = ({
offset(10),
flip({
flipAlignment: true,
fallbackPlacements: ['right', 'bottom', 'left', 'top'],
fallbackPlacements,
}),
shift(),
...(arrowRef ? [arrow({ element: arrowRef })] : []),
Expand Down

0 comments on commit 3589c25

Please sign in to comment.