Skip to content
Vy logo
  • Identitet
  • Spor
  • Resources
Components

Popover

Popovers are used to show detailed information inside a pop-up.

FigmaGitHub

Examples

A simple popover

() => {
  return (
    <Popover>
      <PopoverTrigger>
        <Button variant="primary">Click me</Button>
      </PopoverTrigger>

      <PopoverContent>This is the content of the popover</PopoverContent>
    </Popover>
  );
};

A closable popover

() => {
  return (
    <Popover>
      <PopoverTrigger>
        <Button variant="primary">Click me</Button>
      </PopoverTrigger>

      <PopoverContent showCloseButton>
        This popover can be closed with a close button
      </PopoverContent>
    </Popover>
  );
};

Positioning and placement of popover. Defaults to "bottom".

() => {
  return (
    <Flex gap="2">
      {["top", "right", "bottom", "left"].map((placement) => (
        <Popover
          key={placement}
          positioning={{
            placement,
          }}
        >
          <PopoverTrigger>
            <Button variant="primary">{placement}</Button>
          </PopoverTrigger>

          <PopoverContent>This is the content of the popover</PopoverContent>
        </Popover>
      ))}
    </Flex>
  );
};

Sizes of popover. Defaults to "sm"

() => {
  return (
    <Flex gap="2">
      {["sm", "md", "lg"].map((size) => (
        <Popover key={size} size={size}>
          <PopoverTrigger>
            <Button variant="primary">{size}</Button>
          </PopoverTrigger>

          <PopoverContent>
            You can use different popover sizes for varying content, but keep in
            mind that popovers are not ideal for displaying large amounts of
            content.
          </PopoverContent>
        </Popover>
      ))}
    </Flex>
  );
};

A controllable popover

() => {
  const [isOpen, setIsOpen] = React.useState(false);

  return (
    <Stack gap="2">
      <Button variant="secondary" onClick={() => setIsOpen(!isOpen)}>
        Open popover from outside
      </Button>

      {`The popover is ${isOpen ? "open" : "closed"}`}

      <Popover
        onOpenChange={(details) => setIsOpen(details.open)}
        open={isOpen}
      >
        <PopoverTrigger>
          <Button variant="primary">Click me</Button>
        </PopoverTrigger>

        <PopoverContent showCloseButton>
          This popover can be closed with a close button
        </PopoverContent>
      </Popover>
    </Stack>
  );
};

Guidelines

The Popover component is designed to display additional information without requiring the user to navigate away from the current context. It should be used to show additional information about an element or situation. If you want to add information that only describes a tool or element, please see TooltipsEkstern lenke.

Accessibility

The popovertrigger comes with an aria-expanded=true/false. Do not override this prop.

Code

<Popover />

import { Popover } from "@vygruppen/spor-react";

Wrapper component for a popover

Props

Name
Type
Required?
Description
childrenReact.ReactNodeChildren should contain PopoverTrigger and PopoverContent
size"sm" | "md" | "lg" Defaults to "sm". Use "md" or "lg" if you have lots of content.
openboolean
onOpenChange(details: {details: {open: boolean}}) => void
positioningPositioningOptionsDifferent options for positon. Placement can be set to "left", "right", "top", "bottom"

<PopoverTrigger />

import { PopoverTrigger } from "@vygruppen/spor-react";

Props

Name
Type
Required?
Description
childrenReact.ReactNodeThe anchor of the tooltip. Should be something clickable or focusable like a button

<PopoverContent />

import { PopoverContent } from "@vygruppen/spor-react";

Props

Name
Type
Required?
Description
childrenReact.ReactNodeContent of popover
showCloseButtonbooleanDefaults to false