@bi-digital/react 0.0.0-experimental-9588a13 → 0.0.0-experimental-0a7eb0c
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{alert-footer-Dpx0nSZr.d.ts → alert-footer-CvksHhtj.d.ts} +38 -32
- package/dist/components/alert/alert-footer.d.ts +4 -4
- package/dist/components/alert/alert.d.ts +4 -4
- package/dist/components/alert/index.d.ts +4 -4
- package/dist/components/avatar/avatar.d.ts +4 -4
- package/dist/components/avatar/index.d.ts +4 -4
- package/dist/components/badge/badge.d.ts +4 -4
- package/dist/components/badge/index.d.ts +4 -4
- package/dist/components/button/button.d.ts +4 -4
- package/dist/components/button/index.d.ts +4 -4
- package/dist/components/card/card-action.d.ts +4 -4
- package/dist/components/card/card-actions.d.ts +4 -4
- package/dist/components/card/card-content.d.ts +4 -4
- package/dist/components/card/card-date.d.ts +4 -4
- package/dist/components/card/card-header.d.ts +4 -4
- package/dist/components/card/card-media.d.ts +4 -4
- package/dist/components/card/card.d.ts +4 -4
- package/dist/components/card/index.d.ts +4 -4
- package/dist/components/checkbox/checkbox-subsection.d.ts +4 -4
- package/dist/components/checkbox/checkbox.d.ts +4 -4
- package/dist/components/checkbox/index.d.ts +4 -4
- package/dist/components/chip/chip.d.ts +4 -4
- package/dist/components/chip/index.d.ts +4 -4
- package/dist/components/dialog/dialog-close-button.d.ts +4 -4
- package/dist/components/dialog/dialog-content.d.ts +4 -4
- package/dist/components/dialog/dialog-footer.d.ts +4 -4
- package/dist/components/dialog/dialog-header.d.ts +4 -4
- package/dist/components/dialog/dialog-trigger.d.ts +4 -4
- package/dist/components/dialog/dialog.d.ts +4 -4
- package/dist/components/dialog/index.d.ts +4 -4
- package/dist/components/drawer/drawer-close-button.d.ts +4 -4
- package/dist/components/drawer/drawer-content.d.ts +4 -4
- package/dist/components/drawer/drawer-footer.d.ts +4 -4
- package/dist/components/drawer/drawer-header.d.ts +4 -4
- package/dist/components/drawer/drawer-trigger.d.ts +4 -4
- package/dist/components/drawer/drawer.d.ts +4 -4
- package/dist/components/drawer/index.d.ts +4 -4
- package/dist/components/dropdown/dropdown-button.d.ts +4 -4
- package/dist/components/dropdown/dropdown-trigger-context.d.ts +4 -4
- package/dist/components/dropdown/dropdown-trigger-context.js +1 -1
- package/dist/components/dropdown/dropdown-trigger.d.ts +4 -4
- package/dist/components/dropdown/dropdown-trigger.js +1 -1
- package/dist/components/dropdown/dropdown.d.ts +4 -4
- package/dist/components/dropdown/dropdown.js +2 -2
- package/dist/components/dropdown/index.d.ts +4 -4
- package/dist/components/dropdown/index.js +2 -2
- package/dist/components/field/field-affix.d.ts +4 -4
- package/dist/components/field/field-description.d.ts +4 -4
- package/dist/components/field/field.d.ts +4 -4
- package/dist/components/field/index.d.ts +4 -4
- package/dist/components/fieldset/fieldset-description.d.ts +4 -4
- package/dist/components/fieldset/fieldset-legend.d.ts +4 -4
- package/dist/components/fieldset/fieldset.d.ts +4 -4
- package/dist/components/fieldset/index.d.ts +4 -4
- package/dist/components/filter-group/filter-group.d.ts +4 -4
- package/dist/components/filter-group/index.d.ts +4 -4
- package/dist/components/footer/footer.d.ts +4 -4
- package/dist/components/footer/index.d.ts +4 -4
- package/dist/components/index.d.ts +4 -4
- package/dist/components/index.js +2 -2
- package/dist/components/input/index.d.ts +4 -4
- package/dist/components/input/input.d.ts +4 -4
- package/dist/components/label/index.d.ts +4 -4
- package/dist/components/label/label.d.ts +4 -4
- package/dist/components/link/index.d.ts +4 -4
- package/dist/components/link/link.d.ts +4 -4
- package/dist/components/logo/index.d.ts +4 -4
- package/dist/components/logo/logo.d.ts +4 -4
- package/dist/components/navbar/index.d.ts +4 -4
- package/dist/components/navbar/navbar.d.ts +4 -4
- package/dist/components/navbar/sub-navbar.d.ts +4 -4
- package/dist/components/pagination/index.d.ts +4 -4
- package/dist/components/pagination/pagination-button.d.ts +4 -4
- package/dist/components/pagination/pagination-item.d.ts +1 -1
- package/dist/components/pagination/pagination.d.ts +4 -4
- package/dist/components/popover/index.d.ts +4 -4
- package/dist/components/popover/index.js +1 -1
- package/dist/components/popover/popover-trigger-context.d.ts +1 -1
- package/dist/components/popover/popover-trigger.d.ts +4 -4
- package/dist/components/popover/popover.d.ts +4 -4
- package/dist/components/popover/popover.js +1 -1
- package/dist/components/radio/index.d.ts +4 -4
- package/dist/components/radio/radio.d.ts +4 -4
- package/dist/components/search/index.d.ts +4 -4
- package/dist/components/search/search.d.ts +4 -4
- package/dist/components/select/index.d.ts +4 -4
- package/dist/components/select/select-optgroup.d.ts +4 -4
- package/dist/components/select/select-option.d.ts +4 -4
- package/dist/components/select/select.d.ts +4 -4
- package/dist/components/skip-link/index.d.ts +4 -4
- package/dist/components/skip-link/skip-link.d.ts +4 -4
- package/dist/components/spinner/index.d.ts +4 -4
- package/dist/components/spinner/spinner.d.ts +4 -4
- package/dist/components/sticky-header/index.d.ts +1 -1
- package/dist/components/sticky-header/sticky-header.d.ts +1 -1
- package/dist/components/tabs/index.d.ts +4 -4
- package/dist/components/tabs/tab.d.ts +4 -4
- package/dist/components/tabs/tabs-list.d.ts +4 -4
- package/dist/components/tabs/tabs-panel.d.ts +4 -4
- package/dist/components/tabs/tabs.d.ts +4 -4
- package/dist/components/textarea/index.d.ts +4 -4
- package/dist/components/textarea/textarea.d.ts +4 -4
- package/dist/components/textfield/index.d.ts +4 -4
- package/dist/components/textfield/textfield.d.ts +4 -4
- package/dist/components/validation-message/index.d.ts +4 -4
- package/dist/components/validation-message/validation-message.d.ts +4 -4
- package/dist/{dropdown-1Tmd7LL7.js → dropdown-A1PW0OoQ.js} +5 -4
- package/dist/{dropdown-1Tmd7LL7.js.map → dropdown-A1PW0OoQ.js.map} +1 -1
- package/dist/{dropdown-x-JxMFr2.js → dropdown-D-qoCdnF.js} +2 -2
- package/dist/{dropdown-x-JxMFr2.js.map → dropdown-D-qoCdnF.js.map} +1 -1
- package/dist/{index-DShfRjSD.d.ts → index-DV9bEW_1.d.ts} +8 -2
- package/dist/{index-5t6b3t6a.d.ts → index-SaA0V19q.d.ts} +8 -2
- package/dist/main.d.ts +4 -4
- package/dist/main.js +2 -2
- package/dist/{pagination-item-mKQyvHV9.d.ts → pagination-item-CA3Xron6.d.ts} +3 -3
- package/dist/{popover-Co-HV5GI.js → popover-Df2PKqBg.js} +2 -3
- package/dist/popover-Df2PKqBg.js.map +1 -0
- package/dist/{popover-8q0iwwCv.js → popover-MUiGENkr.js} +2 -3
- package/dist/popover-MUiGENkr.js.map +1 -0
- package/dist/{popover-trigger-context-D6z-_uL5.d.ts → popover-trigger-context-C3lFgYaX.d.ts} +5 -5
- package/dist/{sticky-header-JeG62vfR.d.ts → sticky-header-CPHxBupp.d.ts} +3 -3
- package/dist/utilities/hooks/index.d.ts +4 -4
- package/dist/utilities/hooks/usePagination/usePagination.d.ts +4 -4
- package/dist/utilities/index.d.ts +4 -4
- package/dist/vanilla/dropdown/index.d.ts +1 -1
- package/dist/vanilla/dropdown/index.js +2 -2
- package/dist/vanilla/index.d.ts +2 -2
- package/dist/vanilla/index.js +2 -2
- package/dist/vanilla/popover/index.d.ts +1 -1
- package/dist/vanilla/popover/index.js +1 -1
- package/package.json +4 -4
- package/dist/popover-8q0iwwCv.js.map +0 -1
- package/dist/popover-Co-HV5GI.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown-
|
|
1
|
+
{"version":3,"file":"dropdown-D-qoCdnF.js","names":[],"sources":["../src/components/dropdown/dropdown.tsx"],"sourcesContent":["import clsx from 'clsx/lite';\nimport type { DefaultProps } from '../../types';\nimport type { MergeRight } from '../../utilities';\nimport { Popover, type PopoverProps } from '../popover';\n\nexport type DropdownProps = MergeRight<\n DefaultProps & PopoverProps,\n {\n /**\n * The placement of the dropdown\n * @default bottom-end\n */\n placement?: PopoverProps['placement'];\n }\n>;\n\n/**\n * Dropdown component, used to display a list of options.\n *\n * @example with TriggerContext\n * <DropdownTriggerContext>\n * <DropdownTrigger>Dropdown trigger</DropdownTrigger>\n * <Dropdown placement='bottom-end'>\n * <DropdownHeading>Dropdown</DropdownHeading>\n * <DropdownList>\n * <DropdownItem>\n * <DropdownButton>Item</DropdownButton>\n * </DropdownItem>\n * </DropdownList>\n * </Dropdown>\n * </DropdownTriggerContext>\n *\n * @example without TriggerContext\n * <Button aria-controls=\"some-dropdown\" aria-expanded={open}>Trigger</Button>\n * <Dropdown id=\"some-dropdown\" open={open} onOpenChange={onOpenChange}>\n * <DropdownHeading>Heading</DropdownHeading>\n * <DropdownList>\n * <DropdownItem>\n * <DropdownButton>Item</DropdownButton>\n * </DropdownItem>\n * </DropdownList>\n * </Dropdown>\n */\nexport const Dropdown = ({ placement = 'bottom-end', className, ref, ...rest }: DropdownProps) => {\n return <Popover className={clsx('bi-dropdown', className)} placement={placement} ref={ref} {...rest} />;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CA,MAAa,WAAW,CAAC,EAAE,YAAY,cAAc,WAAW,IAAK,GAAG,MAAqB,KAAK;AAChG,wBAAO,IAAC;EAAQ,WAAW,KAAK,eAAe,UAAU;EAAa;EAAgB;EAAK,GAAI;GAAQ;AACxG"}
|
|
@@ -35,6 +35,11 @@ type InitDropdownOptions = {
|
|
|
35
35
|
* @default false
|
|
36
36
|
*/
|
|
37
37
|
disableAutoPlacement?: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* The padding used by the `offset` middleware.
|
|
40
|
+
* @default '20'
|
|
41
|
+
*/
|
|
42
|
+
padding?: number;
|
|
38
43
|
};
|
|
39
44
|
/**
|
|
40
45
|
* Initializes the dropdown.
|
|
@@ -45,8 +50,9 @@ declare const initDropdown: ({
|
|
|
45
50
|
id,
|
|
46
51
|
disableAutoPlacement,
|
|
47
52
|
placement,
|
|
48
|
-
positionMiddleware
|
|
53
|
+
positionMiddleware,
|
|
54
|
+
padding
|
|
49
55
|
}: InitDropdownOptions) => ((open: boolean) => void) | undefined;
|
|
50
56
|
//#endregion
|
|
51
57
|
export { InitDropdownOptions, initDropdown };
|
|
52
|
-
//# sourceMappingURL=index-
|
|
58
|
+
//# sourceMappingURL=index-DV9bEW_1.d.ts.map
|
|
@@ -35,6 +35,11 @@ type InitPopoverOptions = {
|
|
|
35
35
|
* @default false
|
|
36
36
|
*/
|
|
37
37
|
disableAutoPlacement?: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* The padding used by the `offset` middleware.
|
|
40
|
+
* @default '20'
|
|
41
|
+
*/
|
|
42
|
+
padding?: number;
|
|
38
43
|
};
|
|
39
44
|
/**
|
|
40
45
|
* Initializes the popover.
|
|
@@ -45,8 +50,9 @@ declare const initPopover: ({
|
|
|
45
50
|
id,
|
|
46
51
|
disableAutoPlacement,
|
|
47
52
|
placement,
|
|
48
|
-
positionMiddleware
|
|
53
|
+
positionMiddleware,
|
|
54
|
+
padding
|
|
49
55
|
}: InitPopoverOptions) => ((open: boolean) => void) | undefined;
|
|
50
56
|
//#endregion
|
|
51
57
|
export { InitPopoverOptions, initPopover };
|
|
52
|
-
//# sourceMappingURL=index-
|
|
58
|
+
//# sourceMappingURL=index-SaA0V19q.d.ts.map
|
package/dist/main.d.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { UseCheckboxGroupOptions, useCheckboxGroup } from "./useCheckboxGroup-DyHY-wHm.js";
|
|
2
2
|
import { useIsomorphicLayoutEffect } from "./useIsomorphicLayoutEffect-BtM0-_Y8.js";
|
|
3
3
|
import "./types-BiKqUD4X.js";
|
|
4
|
-
import { Alert, AlertFooter, AlertFooterProps, AlertProps, Avatar, AvatarProps, Badge, BadgeProps, Button, ButtonProps, Card, CardAction, CardActionProps, CardActions, CardActionsProps, CardContent, CardContentProps, CardDate, CardDateProps, CardHeader, CardHeaderProps, CardMedia, CardMediaProps, CardProps, Checkbox, CheckboxProps, CheckboxSubsection, CheckboxSubsectionProps, Chip, ChipProps, Dialog, DialogCloseButton, DialogCloseButtonProps, DialogContent, DialogContentProps, DialogFooter, DialogFooterProps, DialogHeader, DialogHeaderProps, DialogProps, DialogTrigger, DialogTriggerProps, Drawer, DrawerCloseButton, DrawerCloseButtonProps, DrawerContent, DrawerContentProps, DrawerFooter, DrawerFooterProps, DrawerHeader, DrawerHeaderProps, DrawerProps, DrawerTrigger, DrawerTriggerProps, Dropdown, DropdownButton, DropdownButtonProps, DropdownProps, DropdownTrigger, DropdownTriggerContext, DropdownTriggerContextProps, DropdownTriggerProps, Field, FieldAffix, FieldAffixProps, FieldAffixes, FieldAffixesProps, FieldDescription, FieldDescriptionProps, FieldProps, Fieldset, FieldsetDescription, FieldsetDescriptionProps, FieldsetLegend, FieldsetLegendProps, FieldsetProps, FilterGroup, FilterGroupProps, Footer, FooterProps, Input, InputProps, Label, LabelProps, Link, LinkProps, Logo, LogoProps, Navbar, NavbarProps, Pagination, PaginationButton, PaginationButtonProps, PaginationProps, Popover, PopoverProps, PopoverTrigger, PopoverTriggerProps, Radio, RadioProps, Search, SearchProps, Select, SelectOptgroup, SelectOptgroupProps, SelectOption, SelectOptionProps, SelectProps, SkipLink, SkipLinkProps, Spinner, SpinnerProps, SubNavbar, SubNavbarProps, Tab, TabProps, Tabs, TabsList, TabsListProps, TabsPanel, TabsPanelProps, TabsProps, Textarea, TextareaProps, Textfield, TextfieldProps, UsePaginationProps, ValidationMessage, ValidationMessageProps, usePagination } from "./alert-footer-
|
|
4
|
+
import { Alert, AlertFooter, AlertFooterProps, AlertProps, Avatar, AvatarProps, Badge, BadgeProps, Button, ButtonProps, Card, CardAction, CardActionProps, CardActions, CardActionsProps, CardContent, CardContentProps, CardDate, CardDateProps, CardHeader, CardHeaderProps, CardMedia, CardMediaProps, CardProps, Checkbox, CheckboxProps, CheckboxSubsection, CheckboxSubsectionProps, Chip, ChipProps, Dialog, DialogCloseButton, DialogCloseButtonProps, DialogContent, DialogContentProps, DialogFooter, DialogFooterProps, DialogHeader, DialogHeaderProps, DialogProps, DialogTrigger, DialogTriggerProps, Drawer, DrawerCloseButton, DrawerCloseButtonProps, DrawerContent, DrawerContentProps, DrawerFooter, DrawerFooterProps, DrawerHeader, DrawerHeaderProps, DrawerProps, DrawerTrigger, DrawerTriggerProps, Dropdown, DropdownButton, DropdownButtonProps, DropdownProps, DropdownTrigger, DropdownTriggerContext, DropdownTriggerContextProps, DropdownTriggerProps, Field, FieldAffix, FieldAffixProps, FieldAffixes, FieldAffixesProps, FieldDescription, FieldDescriptionProps, FieldProps, Fieldset, FieldsetDescription, FieldsetDescriptionProps, FieldsetLegend, FieldsetLegendProps, FieldsetProps, FilterGroup, FilterGroupProps, Footer, FooterProps, Input, InputProps, Label, LabelProps, Link, LinkProps, Logo, LogoProps, Navbar, NavbarProps, Pagination, PaginationButton, PaginationButtonProps, PaginationProps, Popover, PopoverProps, PopoverTrigger, PopoverTriggerProps, Radio, RadioProps, Search, SearchProps, Select, SelectOptgroup, SelectOptgroupProps, SelectOption, SelectOptionProps, SelectProps, SkipLink, SkipLinkProps, Spinner, SpinnerProps, SubNavbar, SubNavbarProps, Tab, TabProps, Tabs, TabsList, TabsListProps, TabsPanel, TabsPanelProps, TabsProps, Textarea, TextareaProps, Textfield, TextfieldProps, UsePaginationProps, ValidationMessage, ValidationMessageProps, usePagination } from "./alert-footer-CvksHhtj.js";
|
|
5
5
|
import { Context, DialogTriggerContext, DialogTriggerContextProps } from "./dialog-trigger-context-DwmhJNzA.js";
|
|
6
6
|
import { DrawerTriggerContext, DrawerTriggerContextProps } from "./drawer-trigger-context-BoS9ZcVF.js";
|
|
7
|
-
import { PopoverTriggerContext, PopoverTriggerContextProps } from "./popover-trigger-context-
|
|
7
|
+
import { PopoverTriggerContext, PopoverTriggerContextProps } from "./popover-trigger-context-C3lFgYaX.js";
|
|
8
8
|
import { DropdownItem, DropdownItemProps } from "./dropdown-item-CKKjumy3.js";
|
|
9
9
|
import { DropdownList, DropdownListProps } from "./dropdown-list-vVhxG14z.js";
|
|
10
10
|
import { FooterLinks, FooterLinksProps } from "./footer-links-Drm2LFnw.js";
|
|
11
|
-
import { PaginationItem, PaginationItemProps } from "./pagination-item-
|
|
12
|
-
import { StickyHeader, StickyHeaderProps } from "./sticky-header-
|
|
11
|
+
import { PaginationItem, PaginationItemProps } from "./pagination-item-CA3Xron6.js";
|
|
12
|
+
import { StickyHeader, StickyHeaderProps } from "./sticky-header-CPHxBupp.js";
|
|
13
13
|
import "./index-CTw2zfCM.js";
|
|
14
14
|
import { useIsElementAboveViewport } from "./useIsElementAboveViewport-V1lc14eB.js";
|
|
15
15
|
import { useScrollDirection } from "./useScrollDirection-CDsglrZR.js";
|
package/dist/main.js
CHANGED
|
@@ -48,10 +48,10 @@ import { DrawerTriggerContext } from "./drawer-trigger-context-BUWPPdas.js";
|
|
|
48
48
|
import { DrawerCloseButton } from "./drawer-close-button-DigcuqLc.js";
|
|
49
49
|
import "./drawer-Cc670B_f.js";
|
|
50
50
|
import { PopoverTriggerContext } from "./popover-trigger-context-Cre9Mczn.js";
|
|
51
|
-
import { Popover } from "./popover-
|
|
51
|
+
import { Popover } from "./popover-Df2PKqBg.js";
|
|
52
52
|
import { PopoverTrigger } from "./popover-trigger-Chi8uvRM.js";
|
|
53
53
|
import "./popover-Ch_2ehYy.js";
|
|
54
|
-
import { Dropdown } from "./dropdown-
|
|
54
|
+
import { Dropdown } from "./dropdown-D-qoCdnF.js";
|
|
55
55
|
import { DropdownButton } from "./dropdown-button-FQqIwqdp.js";
|
|
56
56
|
import { DropdownItem } from "./dropdown-item-DQQXQC4J.js";
|
|
57
57
|
import { DropdownList } from "./dropdown-list-DB1mST67.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react_jsx_runtime54 from "react/jsx-runtime";
|
|
2
2
|
import { HTMLAttributes, Ref } from "react";
|
|
3
3
|
|
|
4
4
|
//#region src/components/pagination/pagination-item.d.ts
|
|
@@ -15,7 +15,7 @@ declare const PaginationItem: ({
|
|
|
15
15
|
asChild,
|
|
16
16
|
children,
|
|
17
17
|
...rest
|
|
18
|
-
}: PaginationItemProps) =>
|
|
18
|
+
}: PaginationItemProps) => react_jsx_runtime54.JSX.Element;
|
|
19
19
|
//#endregion
|
|
20
20
|
export { PaginationItem, PaginationItemProps };
|
|
21
|
-
//# sourceMappingURL=pagination-item-
|
|
21
|
+
//# sourceMappingURL=pagination-item-CA3Xron6.d.ts.map
|
|
@@ -8,7 +8,6 @@ import { autoUpdate, computePosition, flip, hide, offset, shift } from "@floatin
|
|
|
8
8
|
import { useControllableState } from "@radix-ui/react-use-controllable-state";
|
|
9
9
|
|
|
10
10
|
//#region src/components/popover/popover.tsx
|
|
11
|
-
const padding = 20;
|
|
12
11
|
/**
|
|
13
12
|
* Popover component, used to display content in a popover over an element.
|
|
14
13
|
*
|
|
@@ -26,7 +25,7 @@ const padding = 20;
|
|
|
26
25
|
* Content
|
|
27
26
|
* </Popover>
|
|
28
27
|
*/
|
|
29
|
-
const Popover = ({ id, className, onOpenChange, open, placement = "top", disableAutoPlacement = false, positionMiddleware = [], dark = false, asChild = false, ref,...rest }) => {
|
|
28
|
+
const Popover = ({ id, className, onOpenChange, open, placement = "top", disableAutoPlacement = false, positionMiddleware = [], padding = 20, dark = false, asChild = false, ref,...rest }) => {
|
|
30
29
|
const Component = asChild ? Slot : "div";
|
|
31
30
|
const popoverRef = useRef(null);
|
|
32
31
|
const isControlled = useRef(open !== void 0);
|
|
@@ -104,4 +103,4 @@ const Popover = ({ id, className, onOpenChange, open, placement = "top", disable
|
|
|
104
103
|
|
|
105
104
|
//#endregion
|
|
106
105
|
export { Popover };
|
|
107
|
-
//# sourceMappingURL=popover-
|
|
106
|
+
//# sourceMappingURL=popover-Df2PKqBg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popover-Df2PKqBg.js","names":["event: MouseEvent","event: KeyboardEvent"],"sources":["../src/components/popover/popover.tsx"],"sourcesContent":["// Thanks to Designsystemet:\n// https://github.com/digdir/designsystemet/blob/8aa6dc274e5b0338d15572f44b5dd3fab6fa4eb1/packages/react/src/components/Popover/Popover.tsx\n\nimport { autoUpdate, computePosition, flip, offset, shift, hide } from '@floating-ui/dom';\nimport type { Middleware, Placement } from '@floating-ui/dom';\nimport { Slot } from '@radix-ui/react-slot';\nimport cl from 'clsx/lite';\nimport { use, useRef } from 'react';\nimport type { HTMLAttributes, Ref } from 'react';\nimport { useEffect } from 'react';\nimport type { DefaultProps } from '../../types';\nimport type { MergeRight } from '../../utilities';\nimport { useMergeRefs } from '../../utilities/hooks/useMergeRefs/useMergeRefs';\nimport { Context } from './popover-trigger-context';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\n\nexport type PopoverProps = MergeRight<\n DefaultProps & HTMLAttributes<HTMLDivElement>,\n {\n /**\n * `id` to connect the trigger with the popover - required when not using PopoverContext.\n */\n id?: string;\n /**\n * Placement of the popover on the trigger.\n * @default 'top'\n */\n placement?: Placement;\n /**\n * When a boolean is provided, the popover will be controlled.\n * @default undefined\n */\n open?: boolean;\n /**\n * Callback when the open state changes.\n * @param open - The new open state of the popover.\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * Whether to disable auto placement.\n * @default false\n */\n disableAutoPlacement?: boolean;\n /**\n * Additional middleware to use for positioning the popover.\n *\n * @example\n * Prevent the popover from overflowing the navbar by using the `size` middleware:\n * ```ts\n * positionMiddleware={[\n * size({\n * apply: ({ availableHeight, elements, ...state }) => {\n * const available = `${Math.max(0, availableHeight)}px`;\n * const maxHeight = state.placement.includes('top')\n * ? `calc(${available} - var(--bi-layout-navbar-height, 0))`\n * : available;\n * elements.floating.style.maxHeight = maxHeight;\n * },\n * padding,\n * })\n * ]}\n * ```\n */\n positionMiddleware?: Middleware[];\n /**\n * The padding used by the `offset` middleware.\n * @default '20'\n */\n padding?: number;\n /**\n * Change the default rendered element for the one passed as a child, merging their props and behavior.\n * @default false\n */\n asChild?: boolean;\n ref?: Ref<HTMLDivElement>;\n }\n>;\n\n/**\n * Popover component, used to display content in a popover over an element.\n *\n * @example with TriggerContext\n * <PopoverTriggerContext>\n * <PopoverTrigger>Open Popover</PopoverTrigger>\n * <Popover>\n * Content\n * </Popover>\n * </PopoverTriggerContext>\n *\n * @example without TriggerContext\n * <Button aria-controls=\"my-popover\" aria-expanded={open}>Open Popover</Button>\n * <Popover open={open} onOpenChange={onOpenChange} id=\"my-popover\">\n * Content\n * </Popover>\n */\nexport const Popover = ({\n id,\n className,\n onOpenChange,\n open,\n placement = 'top',\n disableAutoPlacement = false,\n positionMiddleware = [],\n padding = 20,\n dark = false,\n asChild = false,\n ref,\n ...rest\n}: PopoverProps) => {\n const Component = asChild ? Slot : 'div';\n\n const popoverRef = useRef<HTMLDivElement>(null);\n const isControlled = useRef(open !== undefined);\n const mergedRefs = useMergeRefs([popoverRef, ref]);\n const { popoverId, setPopoverId, popoverOpen, setPopoverOpen } = use(Context);\n\n const [isOpen, setIsOpen] = useControllableState({\n prop: isControlled.current ? open : popoverOpen,\n onChange: (val) => {\n onOpenChange?.(val);\n setPopoverOpen?.(val);\n },\n defaultProp: false,\n caller: 'Popover',\n });\n\n useEffect(() => {\n const popover = popoverRef.current;\n const handleClick = (event: MouseEvent) => {\n const el = event.target as Element | null;\n const isTrigger = el?.closest?.(`[aria-controls=\"${popover?.id}\"]`);\n const isOutside = !isTrigger && !popover?.contains(el as Node);\n\n if (isOutside) {\n setIsOpen(false);\n }\n };\n\n const handleKeydown = (event: KeyboardEvent) => {\n if (event.key !== 'Escape' || !isOpen) return;\n event.preventDefault(); // Prevent closing fullscreen in Safari\n setIsOpen(false);\n };\n\n document.addEventListener('click', handleClick, true); // Use capture to execute before React event API\n document.addEventListener('keydown', handleKeydown);\n return () => {\n document.removeEventListener('click', handleClick, true);\n document.removeEventListener('keydown', handleKeydown);\n };\n }, [isOpen, setIsOpen]);\n\n useEffect(() => {\n const popover = popoverRef.current;\n const trigger = document.querySelector(`[aria-controls=\"${popover?.id}\"]`);\n\n if (popover && trigger && isOpen)\n return autoUpdate(trigger, popover, () => {\n computePosition(trigger, popover, {\n middleware: [\n offset(padding),\n ...(disableAutoPlacement ? [] : [flip({ padding }), shift({ padding })]),\n ...positionMiddleware,\n hide({ padding, strategy: 'escaped' }),\n ],\n strategy: 'fixed',\n placement,\n }).then(({ x, y, middlewareData }) => {\n popover.style.translate = `${x}px ${y}px`;\n popover.style.visibility = middlewareData.hide?.referenceHidden ? 'hidden' : 'visible';\n });\n });\n }, [isOpen, placement, id, disableAutoPlacement, positionMiddleware]);\n\n // Update context with id\n useEffect(() => {\n if (id) setPopoverId?.(id);\n }, [id, setPopoverId]);\n\n return (\n <Component\n className={cl('bi-popover', className)}\n id={id || popoverId}\n aria-hidden={!isOpen}\n data-dark={dark}\n ref={mergedRefs}\n {...rest}\n />\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA+FA,MAAa,UAAU,CAAC,EACtB,IACA,WACA,cACA,MACA,YAAY,OACZ,uBAAuB,OACvB,qBAAqB,CAAE,GACvB,UAAU,IACV,OAAO,OACP,UAAU,OACV,IACA,GAAG,MACU,KAAK;CAClB,MAAM,YAAY,UAAU,OAAO;CAEnC,MAAM,aAAa,OAAuB,KAAK;CAC/C,MAAM,eAAe,OAAO,gBAAmB;CAC/C,MAAM,aAAa,aAAa,CAAC,YAAY,GAAI,EAAC;CAClD,MAAM,EAAE,WAAW,cAAc,aAAa,gBAAgB,GAAG,IAAI,QAAQ;CAE7E,MAAM,CAAC,QAAQ,UAAU,GAAG,qBAAqB;EAC/C,MAAM,aAAa,UAAU,OAAO;EACpC,UAAU,CAAC,QAAQ;AACjB,kBAAe,IAAI;AACnB,oBAAiB,IAAI;EACtB;EACD,aAAa;EACb,QAAQ;CACT,EAAC;AAEF,WAAU,MAAM;EACd,MAAM,UAAU,WAAW;EAC3B,MAAM,cAAc,CAACA,UAAsB;GACzC,MAAM,KAAK,MAAM;GACjB,MAAM,YAAY,IAAI,WAAW,kBAAkB,SAAS,GAAG,IAAI;GACnE,MAAM,aAAa,cAAc,SAAS,SAAS,GAAW;AAE9D,OAAI,UACF,WAAU,MAAM;EAEnB;EAED,MAAM,gBAAgB,CAACC,UAAyB;AAC9C,OAAI,MAAM,QAAQ,aAAa,OAAQ;AACvC,SAAM,gBAAgB;AACtB,aAAU,MAAM;EACjB;AAED,WAAS,iBAAiB,SAAS,aAAa,KAAK;AACrD,WAAS,iBAAiB,WAAW,cAAc;AACnD,SAAO,MAAM;AACX,YAAS,oBAAoB,SAAS,aAAa,KAAK;AACxD,YAAS,oBAAoB,WAAW,cAAc;EACvD;CACF,GAAE,CAAC,QAAQ,SAAU,EAAC;AAEvB,WAAU,MAAM;EACd,MAAM,UAAU,WAAW;EAC3B,MAAM,UAAU,SAAS,eAAe,kBAAkB,SAAS,GAAG,IAAI;AAE1E,MAAI,WAAW,WAAW,OACxB,QAAO,WAAW,SAAS,SAAS,MAAM;AACxC,mBAAgB,SAAS,SAAS;IAChC,YAAY;KACV,OAAO,QAAQ;KACf,GAAI,uBAAuB,CAAE,IAAG,CAAC,KAAK,EAAE,QAAS,EAAC,EAAE,MAAM,EAAE,QAAS,EAAC,AAAC;KACvE,GAAG;KACH,KAAK;MAAE;MAAS,UAAU;KAAW,EAAC;IACvC;IACD,UAAU;IACV;GACD,EAAC,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,gBAAgB,KAAK;AACpC,YAAQ,MAAM,aAAa,EAAE,EAAE,KAAK,EAAE;AACtC,YAAQ,MAAM,aAAa,eAAe,MAAM,kBAAkB,WAAW;GAC9E,EAAC;EACH,EAAC;CACL,GAAE;EAAC;EAAQ;EAAW;EAAI;EAAsB;CAAmB,EAAC;AAGrE,WAAU,MAAM;AACd,MAAI,GAAI,gBAAe,GAAG;CAC3B,GAAE,CAAC,IAAI,YAAa,EAAC;AAEtB,wBACE,IAAC;EACC,WAAW,KAAG,cAAc,UAAU;EACtC,IAAI,MAAM;EACV,gBAAc;EACd,aAAW;EACX,KAAK;EACL,GAAI;GACJ;AAEL"}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { autoUpdate, computePosition, flip, hide, offset, shift } from "@floating-ui/dom";
|
|
2
2
|
|
|
3
3
|
//#region src/vanilla/popover/index.ts
|
|
4
|
-
const padding = 20;
|
|
5
4
|
/**
|
|
6
5
|
* Initializes the popover.
|
|
7
6
|
* @param options - InitPopoverOptions
|
|
8
7
|
* @returns A function to programmatically toggle the popover.
|
|
9
8
|
*/
|
|
10
|
-
const initPopover = ({ id, disableAutoPlacement = false, placement = "top", positionMiddleware = [] }) => {
|
|
9
|
+
const initPopover = ({ id, disableAutoPlacement = false, placement = "top", positionMiddleware = [], padding = 20 }) => {
|
|
11
10
|
let cleanup;
|
|
12
11
|
const popover = document.getElementById(id);
|
|
13
12
|
const triggerSelector = `[aria-controls="${id}"]`;
|
|
@@ -51,4 +50,4 @@ const initPopover = ({ id, disableAutoPlacement = false, placement = "top", posi
|
|
|
51
50
|
|
|
52
51
|
//#endregion
|
|
53
52
|
export { initPopover };
|
|
54
|
-
//# sourceMappingURL=popover-
|
|
53
|
+
//# sourceMappingURL=popover-MUiGENkr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popover-MUiGENkr.js","names":["cleanup: (() => void) | undefined","open: boolean"],"sources":["../src/vanilla/popover/index.ts"],"sourcesContent":["import { autoUpdate, computePosition, flip, offset, shift, hide } from '@floating-ui/dom';\nimport type { Middleware, Placement } from '@floating-ui/dom';\n\nexport type InitPopoverOptions = {\n /** The id of the popover to initialize. The trigger element should have a `aria-controls` attribute with the same id. */\n id: string;\n /**\n * Placement of the popover relative to the trigger.\n * @default 'top'\n */\n placement?: Placement;\n /**\n * Additional middleware to use for positioning the popover.\n *\n * @example\n * Prevent the popover from overflowing the navbar by using the `size` middleware:\n * ```ts\n * positionMiddleware: [\n * size({\n * apply: ({ availableHeight, elements, ...state }) => {\n * const available = `${Math.max(0, availableHeight)}px`;\n * const maxHeight = state.placement.includes('top')\n * ? `calc(${available} - var(--bi-layout-navbar-height, 0))`\n * : available;\n * elements.floating.style.maxHeight = maxHeight;\n * },\n * padding,\n * })\n * ]}\n * ```\n */\n positionMiddleware?: Middleware[];\n /**\n * Whether to disable auto placement.\n * @default false\n */\n disableAutoPlacement?: boolean;\n /**\n * The padding used by the `offset` middleware.\n * @default '20'\n */\n padding?: number;\n};\n\n/**\n * Initializes the popover.\n * @param options - InitPopoverOptions\n * @returns A function to programmatically toggle the popover.\n */\nexport const initPopover = ({\n id,\n disableAutoPlacement = false,\n placement = 'top',\n positionMiddleware = [],\n padding = 20,\n}: InitPopoverOptions) => {\n let cleanup: (() => void) | undefined;\n const popover = document.getElementById(id);\n const triggerSelector = `[aria-controls=\"${id}\"]`;\n const trigger = document.querySelector(triggerSelector);\n\n if (!popover || !trigger) return;\n\n const togglePopover = (open: boolean) => {\n if (open) {\n cleanup = autoUpdate(trigger, popover, () => {\n computePosition(trigger, popover, {\n middleware: [\n offset(padding),\n ...(disableAutoPlacement ? [] : [flip({ padding }), shift({ padding })]),\n ...positionMiddleware,\n hide({ padding }),\n ],\n strategy: 'fixed',\n placement,\n }).then(({ x, y, middlewareData }) => {\n popover.style.translate = `${x}px ${y}px`;\n popover.style.visibility = middlewareData.hide?.referenceHidden ? 'hidden' : 'visible';\n });\n });\n popover.setAttribute('aria-hidden', 'false');\n trigger.setAttribute('aria-expanded', 'true');\n } else {\n cleanup?.();\n popover.setAttribute('aria-hidden', 'true');\n trigger.setAttribute('aria-expanded', 'false');\n }\n };\n\n document.addEventListener(\n 'click',\n (event) => {\n const el = event.target as Element | null;\n const isTrigger = el?.closest?.(triggerSelector);\n const isOutside = !isTrigger && !popover.contains(el as Node);\n const isOpen = popover.getAttribute('aria-hidden') === 'false';\n\n if (isTrigger) {\n togglePopover(!isOpen);\n }\n if (isOutside && isOpen) {\n togglePopover(false);\n }\n },\n true,\n );\n\n return togglePopover;\n};\n"],"mappings":";;;;;;;;AAiDA,MAAa,cAAc,CAAC,EAC1B,IACA,uBAAuB,OACvB,YAAY,OACZ,qBAAqB,CAAE,GACvB,UAAU,IACS,KAAK;CACxB,IAAIA;CACJ,MAAM,UAAU,SAAS,eAAe,GAAG;CAC3C,MAAM,mBAAmB,kBAAkB,GAAG;CAC9C,MAAM,UAAU,SAAS,cAAc,gBAAgB;AAEvD,MAAK,YAAY,QAAS;CAE1B,MAAM,gBAAgB,CAACC,SAAkB;AACvC,MAAI,MAAM;AACR,aAAU,WAAW,SAAS,SAAS,MAAM;AAC3C,oBAAgB,SAAS,SAAS;KAChC,YAAY;MACV,OAAO,QAAQ;MACf,GAAI,uBAAuB,CAAE,IAAG,CAAC,KAAK,EAAE,QAAS,EAAC,EAAE,MAAM,EAAE,QAAS,EAAC,AAAC;MACvE,GAAG;MACH,KAAK,EAAE,QAAS,EAAC;KAClB;KACD,UAAU;KACV;IACD,EAAC,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,gBAAgB,KAAK;AACpC,aAAQ,MAAM,aAAa,EAAE,EAAE,KAAK,EAAE;AACtC,aAAQ,MAAM,aAAa,eAAe,MAAM,kBAAkB,WAAW;IAC9E,EAAC;GACH,EAAC;AACF,WAAQ,aAAa,eAAe,QAAQ;AAC5C,WAAQ,aAAa,iBAAiB,OAAO;EAC9C,OAAM;AACL,cAAW;AACX,WAAQ,aAAa,eAAe,OAAO;AAC3C,WAAQ,aAAa,iBAAiB,QAAQ;EAC/C;CACF;AAED,UAAS,iBACP,SACA,CAAC,UAAU;EACT,MAAM,KAAK,MAAM;EACjB,MAAM,YAAY,IAAI,UAAU,gBAAgB;EAChD,MAAM,aAAa,cAAc,QAAQ,SAAS,GAAW;EAC7D,MAAM,SAAS,QAAQ,aAAa,cAAc,KAAK;AAEvD,MAAI,UACF,gBAAe,OAAO;AAExB,MAAI,aAAa,OACf,eAAc,MAAM;CAEvB,GACD,KACD;AAED,QAAO;AACR"}
|
package/dist/{popover-trigger-context-D6z-_uL5.d.ts → popover-trigger-context-C3lFgYaX.d.ts}
RENAMED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
import * as
|
|
1
|
+
import * as react_jsx_runtime57 from "react/jsx-runtime";
|
|
2
|
+
import * as react56 from "react";
|
|
3
3
|
import { ReactNode } from "react";
|
|
4
4
|
|
|
5
5
|
//#region src/components/popover/popover-trigger-context.d.ts
|
|
6
|
-
declare const Context:
|
|
6
|
+
declare const Context: react56.Context<{
|
|
7
7
|
popoverId?: string;
|
|
8
8
|
setPopoverId?: (id: string) => void;
|
|
9
9
|
popoverOpen?: boolean;
|
|
@@ -37,7 +37,7 @@ declare const PopoverTriggerContext: ({
|
|
|
37
37
|
children,
|
|
38
38
|
open,
|
|
39
39
|
onOpenChange
|
|
40
|
-
}: PopoverTriggerContextProps) =>
|
|
40
|
+
}: PopoverTriggerContextProps) => react_jsx_runtime57.JSX.Element;
|
|
41
41
|
//#endregion
|
|
42
42
|
export { Context, PopoverTriggerContext, PopoverTriggerContextProps };
|
|
43
|
-
//# sourceMappingURL=popover-trigger-context-
|
|
43
|
+
//# sourceMappingURL=popover-trigger-context-C3lFgYaX.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react_jsx_runtime66 from "react/jsx-runtime";
|
|
2
2
|
import { ReactNode } from "react";
|
|
3
3
|
|
|
4
4
|
//#region src/components/sticky-header/sticky-header.d.ts
|
|
@@ -13,7 +13,7 @@ type StickyHeaderProps = {
|
|
|
13
13
|
*/
|
|
14
14
|
declare const StickyHeader: ({
|
|
15
15
|
children
|
|
16
|
-
}: StickyHeaderProps) =>
|
|
16
|
+
}: StickyHeaderProps) => react_jsx_runtime66.JSX.Element;
|
|
17
17
|
//#endregion
|
|
18
18
|
export { StickyHeader, StickyHeaderProps };
|
|
19
|
-
//# sourceMappingURL=sticky-header-
|
|
19
|
+
//# sourceMappingURL=sticky-header-CPHxBupp.d.ts.map
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { UseCheckboxGroupOptions, useCheckboxGroup } from "../../useCheckboxGroup-DyHY-wHm.js";
|
|
2
2
|
import { useIsomorphicLayoutEffect } from "../../useIsomorphicLayoutEffect-BtM0-_Y8.js";
|
|
3
3
|
import "../../types-BiKqUD4X.js";
|
|
4
|
-
import { UsePaginationProps, usePagination } from "../../alert-footer-
|
|
4
|
+
import { UsePaginationProps, usePagination } from "../../alert-footer-CvksHhtj.js";
|
|
5
5
|
import "../../dialog-trigger-context-DwmhJNzA.js";
|
|
6
6
|
import "../../drawer-trigger-context-BoS9ZcVF.js";
|
|
7
|
-
import "../../popover-trigger-context-
|
|
7
|
+
import "../../popover-trigger-context-C3lFgYaX.js";
|
|
8
8
|
import "../../dropdown-item-CKKjumy3.js";
|
|
9
9
|
import "../../dropdown-list-vVhxG14z.js";
|
|
10
10
|
import "../../footer-links-Drm2LFnw.js";
|
|
11
|
-
import "../../pagination-item-
|
|
12
|
-
import "../../sticky-header-
|
|
11
|
+
import "../../pagination-item-CA3Xron6.js";
|
|
12
|
+
import "../../sticky-header-CPHxBupp.js";
|
|
13
13
|
import "../../index-CTw2zfCM.js";
|
|
14
14
|
import { useIsElementAboveViewport } from "../../useIsElementAboveViewport-V1lc14eB.js";
|
|
15
15
|
import { useScrollDirection } from "../../useScrollDirection-CDsglrZR.js";
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import "../../../useCheckboxGroup-DyHY-wHm.js";
|
|
2
2
|
import "../../../useIsomorphicLayoutEffect-BtM0-_Y8.js";
|
|
3
3
|
import "../../../types-BiKqUD4X.js";
|
|
4
|
-
import { UsePaginationProps, usePagination } from "../../../alert-footer-
|
|
4
|
+
import { UsePaginationProps, usePagination } from "../../../alert-footer-CvksHhtj.js";
|
|
5
5
|
import "../../../dialog-trigger-context-DwmhJNzA.js";
|
|
6
6
|
import "../../../drawer-trigger-context-BoS9ZcVF.js";
|
|
7
|
-
import "../../../popover-trigger-context-
|
|
7
|
+
import "../../../popover-trigger-context-C3lFgYaX.js";
|
|
8
8
|
import "../../../dropdown-item-CKKjumy3.js";
|
|
9
9
|
import "../../../dropdown-list-vVhxG14z.js";
|
|
10
10
|
import "../../../footer-links-Drm2LFnw.js";
|
|
11
|
-
import "../../../pagination-item-
|
|
12
|
-
import "../../../sticky-header-
|
|
11
|
+
import "../../../pagination-item-CA3Xron6.js";
|
|
12
|
+
import "../../../sticky-header-CPHxBupp.js";
|
|
13
13
|
import "../../../index-CTw2zfCM.js";
|
|
14
14
|
import "../../../useIsElementAboveViewport-V1lc14eB.js";
|
|
15
15
|
import "../../../useScrollDirection-CDsglrZR.js";
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { UseCheckboxGroupOptions, useCheckboxGroup } from "../useCheckboxGroup-DyHY-wHm.js";
|
|
2
2
|
import { useIsomorphicLayoutEffect } from "../useIsomorphicLayoutEffect-BtM0-_Y8.js";
|
|
3
3
|
import "../types-BiKqUD4X.js";
|
|
4
|
-
import { UsePaginationProps, usePagination } from "../alert-footer-
|
|
4
|
+
import { UsePaginationProps, usePagination } from "../alert-footer-CvksHhtj.js";
|
|
5
5
|
import "../dialog-trigger-context-DwmhJNzA.js";
|
|
6
6
|
import "../drawer-trigger-context-BoS9ZcVF.js";
|
|
7
|
-
import "../popover-trigger-context-
|
|
7
|
+
import "../popover-trigger-context-C3lFgYaX.js";
|
|
8
8
|
import "../dropdown-item-CKKjumy3.js";
|
|
9
9
|
import "../dropdown-list-vVhxG14z.js";
|
|
10
10
|
import "../footer-links-Drm2LFnw.js";
|
|
11
|
-
import "../pagination-item-
|
|
12
|
-
import "../sticky-header-
|
|
11
|
+
import "../pagination-item-CA3Xron6.js";
|
|
12
|
+
import "../sticky-header-CPHxBupp.js";
|
|
13
13
|
import "../index-CTw2zfCM.js";
|
|
14
14
|
import { useIsElementAboveViewport } from "../useIsElementAboveViewport-V1lc14eB.js";
|
|
15
15
|
import { useScrollDirection } from "../useScrollDirection-CDsglrZR.js";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { InitDropdownOptions, initDropdown } from "../../index-
|
|
1
|
+
import { InitDropdownOptions, initDropdown } from "../../index-DV9bEW_1.js";
|
|
2
2
|
export { InitDropdownOptions, initDropdown };
|
package/dist/vanilla/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { InitDropdownOptions, initDropdown } from "../index-
|
|
2
|
-
import { InitPopoverOptions, initPopover } from "../index-
|
|
1
|
+
import { InitDropdownOptions, initDropdown } from "../index-DV9bEW_1.js";
|
|
2
|
+
import { InitPopoverOptions, initPopover } from "../index-SaA0V19q.js";
|
|
3
3
|
import { InitSubNavbarOptions, initSubNavbar } from "../index-CjnsNUdv.js";
|
|
4
4
|
export { InitDropdownOptions, InitPopoverOptions, InitSubNavbarOptions, initDropdown, initPopover, initSubNavbar };
|
package/dist/vanilla/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { initPopover } from "../popover-
|
|
2
|
-
import { initDropdown } from "../dropdown-
|
|
1
|
+
import { initPopover } from "../popover-MUiGENkr.js";
|
|
2
|
+
import { initDropdown } from "../dropdown-A1PW0OoQ.js";
|
|
3
3
|
import { initSubNavbar } from "../sub-navbar-qSNpTABT.js";
|
|
4
4
|
|
|
5
5
|
export { initDropdown, initPopover, initSubNavbar };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { InitPopoverOptions, initPopover } from "../../index-
|
|
1
|
+
import { InitPopoverOptions, initPopover } from "../../index-SaA0V19q.js";
|
|
2
2
|
export { InitPopoverOptions, initPopover };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bi-digital/react",
|
|
3
|
-
"version": "0.0.0-experimental-
|
|
3
|
+
"version": "0.0.0-experimental-0a7eb0c",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "React components from BI Digital",
|
|
6
6
|
"author": "BI Digital",
|
|
@@ -47,13 +47,13 @@
|
|
|
47
47
|
"tsdown": "^0.12.7",
|
|
48
48
|
"typescript": "^5.7.2",
|
|
49
49
|
"vitest": "^3.2.1",
|
|
50
|
-
"@bi-digital/icons-react": "0.0.0-experimental-
|
|
50
|
+
"@bi-digital/icons-react": "0.0.0-experimental-0a7eb0c"
|
|
51
51
|
},
|
|
52
52
|
"peerDependencies": {
|
|
53
53
|
"react": "^19",
|
|
54
54
|
"react-dom": "^19",
|
|
55
|
-
"@bi-digital/css": "0.0.0-experimental-
|
|
56
|
-
"@bi-digital/icons-react": "0.0.0-experimental-
|
|
55
|
+
"@bi-digital/css": "0.0.0-experimental-0a7eb0c",
|
|
56
|
+
"@bi-digital/icons-react": "0.0.0-experimental-0a7eb0c"
|
|
57
57
|
},
|
|
58
58
|
"scripts": {
|
|
59
59
|
"build": "tsdown",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"popover-8q0iwwCv.js","names":["cleanup: (() => void) | undefined","open: boolean"],"sources":["../src/vanilla/popover/index.ts"],"sourcesContent":["import { autoUpdate, computePosition, flip, offset, shift, hide } from '@floating-ui/dom';\nimport type { Middleware, Placement } from '@floating-ui/dom';\n\nconst padding = 20;\n\nexport type InitPopoverOptions = {\n /** The id of the popover to initialize. The trigger element should have a `aria-controls` attribute with the same id. */\n id: string;\n /**\n * Placement of the popover relative to the trigger.\n * @default 'top'\n */\n placement?: Placement;\n /**\n * Additional middleware to use for positioning the popover.\n *\n * @example\n * Prevent the popover from overflowing the navbar by using the `size` middleware:\n * ```ts\n * positionMiddleware: [\n * size({\n * apply: ({ availableHeight, elements, ...state }) => {\n * const available = `${Math.max(0, availableHeight)}px`;\n * const maxHeight = state.placement.includes('top')\n * ? `calc(${available} - var(--bi-layout-navbar-height, 0))`\n * : available;\n * elements.floating.style.maxHeight = maxHeight;\n * },\n * padding,\n * })\n * ]}\n * ```\n */\n positionMiddleware?: Middleware[];\n /**\n * Whether to disable auto placement.\n * @default false\n */\n disableAutoPlacement?: boolean;\n};\n\n/**\n * Initializes the popover.\n * @param options - InitPopoverOptions\n * @returns A function to programmatically toggle the popover.\n */\nexport const initPopover = ({\n id,\n disableAutoPlacement = false,\n placement = 'top',\n positionMiddleware = [],\n}: InitPopoverOptions) => {\n let cleanup: (() => void) | undefined;\n const popover = document.getElementById(id);\n const triggerSelector = `[aria-controls=\"${id}\"]`;\n const trigger = document.querySelector(triggerSelector);\n\n if (!popover || !trigger) return;\n\n const togglePopover = (open: boolean) => {\n if (open) {\n cleanup = autoUpdate(trigger, popover, () => {\n computePosition(trigger, popover, {\n middleware: [\n offset(padding),\n ...(disableAutoPlacement ? [] : [flip({ padding }), shift({ padding })]),\n ...positionMiddleware,\n hide({ padding }),\n ],\n strategy: 'fixed',\n placement,\n }).then(({ x, y, middlewareData }) => {\n popover.style.translate = `${x}px ${y}px`;\n popover.style.visibility = middlewareData.hide?.referenceHidden ? 'hidden' : 'visible';\n });\n });\n popover.setAttribute('aria-hidden', 'false');\n trigger.setAttribute('aria-expanded', 'true');\n } else {\n cleanup?.();\n popover.setAttribute('aria-hidden', 'true');\n trigger.setAttribute('aria-expanded', 'false');\n }\n };\n\n document.addEventListener(\n 'click',\n (event) => {\n const el = event.target as Element | null;\n const isTrigger = el?.closest?.(triggerSelector);\n const isOutside = !isTrigger && !popover.contains(el as Node);\n const isOpen = popover.getAttribute('aria-hidden') === 'false';\n\n if (isTrigger) {\n togglePopover(!isOpen);\n }\n if (isOutside && isOpen) {\n togglePopover(false);\n }\n },\n true,\n );\n\n return togglePopover;\n};\n"],"mappings":";;;AAGA,MAAM,UAAU;;;;;;AA2ChB,MAAa,cAAc,CAAC,EAC1B,IACA,uBAAuB,OACvB,YAAY,OACZ,qBAAqB,CAAE,GACJ,KAAK;CACxB,IAAIA;CACJ,MAAM,UAAU,SAAS,eAAe,GAAG;CAC3C,MAAM,mBAAmB,kBAAkB,GAAG;CAC9C,MAAM,UAAU,SAAS,cAAc,gBAAgB;AAEvD,MAAK,YAAY,QAAS;CAE1B,MAAM,gBAAgB,CAACC,SAAkB;AACvC,MAAI,MAAM;AACR,aAAU,WAAW,SAAS,SAAS,MAAM;AAC3C,oBAAgB,SAAS,SAAS;KAChC,YAAY;MACV,OAAO,QAAQ;MACf,GAAI,uBAAuB,CAAE,IAAG,CAAC,KAAK,EAAE,QAAS,EAAC,EAAE,MAAM,EAAE,QAAS,EAAC,AAAC;MACvE,GAAG;MACH,KAAK,EAAE,QAAS,EAAC;KAClB;KACD,UAAU;KACV;IACD,EAAC,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,gBAAgB,KAAK;AACpC,aAAQ,MAAM,aAAa,EAAE,EAAE,KAAK,EAAE;AACtC,aAAQ,MAAM,aAAa,eAAe,MAAM,kBAAkB,WAAW;IAC9E,EAAC;GACH,EAAC;AACF,WAAQ,aAAa,eAAe,QAAQ;AAC5C,WAAQ,aAAa,iBAAiB,OAAO;EAC9C,OAAM;AACL,cAAW;AACX,WAAQ,aAAa,eAAe,OAAO;AAC3C,WAAQ,aAAa,iBAAiB,QAAQ;EAC/C;CACF;AAED,UAAS,iBACP,SACA,CAAC,UAAU;EACT,MAAM,KAAK,MAAM;EACjB,MAAM,YAAY,IAAI,UAAU,gBAAgB;EAChD,MAAM,aAAa,cAAc,QAAQ,SAAS,GAAW;EAC7D,MAAM,SAAS,QAAQ,aAAa,cAAc,KAAK;AAEvD,MAAI,UACF,gBAAe,OAAO;AAExB,MAAI,aAAa,OACf,eAAc,MAAM;CAEvB,GACD,KACD;AAED,QAAO;AACR"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"popover-Co-HV5GI.js","names":["event: MouseEvent","event: KeyboardEvent"],"sources":["../src/components/popover/popover.tsx"],"sourcesContent":["// Thanks to Designsystemet:\n// https://github.com/digdir/designsystemet/blob/8aa6dc274e5b0338d15572f44b5dd3fab6fa4eb1/packages/react/src/components/Popover/Popover.tsx\n\nimport { autoUpdate, computePosition, flip, offset, shift, hide } from '@floating-ui/dom';\nimport type { Middleware, Placement } from '@floating-ui/dom';\nimport { Slot } from '@radix-ui/react-slot';\nimport cl from 'clsx/lite';\nimport { use, useRef } from 'react';\nimport type { HTMLAttributes, Ref } from 'react';\nimport { useEffect } from 'react';\nimport type { DefaultProps } from '../../types';\nimport type { MergeRight } from '../../utilities';\nimport { useMergeRefs } from '../../utilities/hooks/useMergeRefs/useMergeRefs';\nimport { Context } from './popover-trigger-context';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\n\nconst padding = 20;\n\nexport type PopoverProps = MergeRight<\n DefaultProps & HTMLAttributes<HTMLDivElement>,\n {\n /**\n * `id` to connect the trigger with the popover - required when not using PopoverContext.\n */\n id?: string;\n /**\n * Placement of the popover on the trigger.\n * @default 'top'\n */\n placement?: Placement;\n /**\n * When a boolean is provided, the popover will be controlled.\n * @default undefined\n */\n open?: boolean;\n /**\n * Callback when the open state changes.\n * @param open - The new open state of the popover.\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * Whether to disable auto placement.\n * @default false\n */\n disableAutoPlacement?: boolean;\n /**\n * Additional middleware to use for positioning the popover.\n *\n * @example\n * Prevent the popover from overflowing the navbar by using the `size` middleware:\n * ```ts\n * positionMiddleware={[\n * size({\n * apply: ({ availableHeight, elements, ...state }) => {\n * const available = `${Math.max(0, availableHeight)}px`;\n * const maxHeight = state.placement.includes('top')\n * ? `calc(${available} - var(--bi-layout-navbar-height, 0))`\n * : available;\n * elements.floating.style.maxHeight = maxHeight;\n * },\n * padding,\n * })\n * ]}\n * ```\n */\n positionMiddleware?: Middleware[];\n /**\n * Change the default rendered element for the one passed as a child, merging their props and behavior.\n * @default false\n */\n asChild?: boolean;\n ref?: Ref<HTMLDivElement>;\n }\n>;\n\n/**\n * Popover component, used to display content in a popover over an element.\n *\n * @example with TriggerContext\n * <PopoverTriggerContext>\n * <PopoverTrigger>Open Popover</PopoverTrigger>\n * <Popover>\n * Content\n * </Popover>\n * </PopoverTriggerContext>\n *\n * @example without TriggerContext\n * <Button aria-controls=\"my-popover\" aria-expanded={open}>Open Popover</Button>\n * <Popover open={open} onOpenChange={onOpenChange} id=\"my-popover\">\n * Content\n * </Popover>\n */\nexport const Popover = ({\n id,\n className,\n onOpenChange,\n open,\n placement = 'top',\n disableAutoPlacement = false,\n positionMiddleware = [],\n dark = false,\n asChild = false,\n ref,\n ...rest\n}: PopoverProps) => {\n const Component = asChild ? Slot : 'div';\n\n const popoverRef = useRef<HTMLDivElement>(null);\n const isControlled = useRef(open !== undefined);\n const mergedRefs = useMergeRefs([popoverRef, ref]);\n const { popoverId, setPopoverId, popoverOpen, setPopoverOpen } = use(Context);\n\n const [isOpen, setIsOpen] = useControllableState({\n prop: isControlled.current ? open : popoverOpen,\n onChange: (val) => {\n onOpenChange?.(val);\n setPopoverOpen?.(val);\n },\n defaultProp: false,\n caller: 'Popover',\n });\n\n useEffect(() => {\n const popover = popoverRef.current;\n const handleClick = (event: MouseEvent) => {\n const el = event.target as Element | null;\n const isTrigger = el?.closest?.(`[aria-controls=\"${popover?.id}\"]`);\n const isOutside = !isTrigger && !popover?.contains(el as Node);\n\n if (isOutside) {\n setIsOpen(false);\n }\n };\n\n const handleKeydown = (event: KeyboardEvent) => {\n if (event.key !== 'Escape' || !isOpen) return;\n event.preventDefault(); // Prevent closing fullscreen in Safari\n setIsOpen(false);\n };\n\n document.addEventListener('click', handleClick, true); // Use capture to execute before React event API\n document.addEventListener('keydown', handleKeydown);\n return () => {\n document.removeEventListener('click', handleClick, true);\n document.removeEventListener('keydown', handleKeydown);\n };\n }, [isOpen, setIsOpen]);\n\n useEffect(() => {\n const popover = popoverRef.current;\n const trigger = document.querySelector(`[aria-controls=\"${popover?.id}\"]`);\n\n if (popover && trigger && isOpen)\n return autoUpdate(trigger, popover, () => {\n computePosition(trigger, popover, {\n middleware: [\n offset(padding),\n ...(disableAutoPlacement ? [] : [flip({ padding }), shift({ padding })]),\n ...positionMiddleware,\n hide({ padding, strategy: 'escaped' }),\n ],\n strategy: 'fixed',\n placement,\n }).then(({ x, y, middlewareData }) => {\n popover.style.translate = `${x}px ${y}px`;\n popover.style.visibility = middlewareData.hide?.referenceHidden ? 'hidden' : 'visible';\n });\n });\n }, [isOpen, placement, id, disableAutoPlacement, positionMiddleware]);\n\n // Update context with id\n useEffect(() => {\n if (id) setPopoverId?.(id);\n }, [id, setPopoverId]);\n\n return (\n <Component\n className={cl('bi-popover', className)}\n id={id || popoverId}\n aria-hidden={!isOpen}\n data-dark={dark}\n ref={mergedRefs}\n {...rest}\n />\n );\n};\n"],"mappings":";;;;;;;;;;AAgBA,MAAM,UAAU;;;;;;;;;;;;;;;;;;AA4EhB,MAAa,UAAU,CAAC,EACtB,IACA,WACA,cACA,MACA,YAAY,OACZ,uBAAuB,OACvB,qBAAqB,CAAE,GACvB,OAAO,OACP,UAAU,OACV,IACA,GAAG,MACU,KAAK;CAClB,MAAM,YAAY,UAAU,OAAO;CAEnC,MAAM,aAAa,OAAuB,KAAK;CAC/C,MAAM,eAAe,OAAO,gBAAmB;CAC/C,MAAM,aAAa,aAAa,CAAC,YAAY,GAAI,EAAC;CAClD,MAAM,EAAE,WAAW,cAAc,aAAa,gBAAgB,GAAG,IAAI,QAAQ;CAE7E,MAAM,CAAC,QAAQ,UAAU,GAAG,qBAAqB;EAC/C,MAAM,aAAa,UAAU,OAAO;EACpC,UAAU,CAAC,QAAQ;AACjB,kBAAe,IAAI;AACnB,oBAAiB,IAAI;EACtB;EACD,aAAa;EACb,QAAQ;CACT,EAAC;AAEF,WAAU,MAAM;EACd,MAAM,UAAU,WAAW;EAC3B,MAAM,cAAc,CAACA,UAAsB;GACzC,MAAM,KAAK,MAAM;GACjB,MAAM,YAAY,IAAI,WAAW,kBAAkB,SAAS,GAAG,IAAI;GACnE,MAAM,aAAa,cAAc,SAAS,SAAS,GAAW;AAE9D,OAAI,UACF,WAAU,MAAM;EAEnB;EAED,MAAM,gBAAgB,CAACC,UAAyB;AAC9C,OAAI,MAAM,QAAQ,aAAa,OAAQ;AACvC,SAAM,gBAAgB;AACtB,aAAU,MAAM;EACjB;AAED,WAAS,iBAAiB,SAAS,aAAa,KAAK;AACrD,WAAS,iBAAiB,WAAW,cAAc;AACnD,SAAO,MAAM;AACX,YAAS,oBAAoB,SAAS,aAAa,KAAK;AACxD,YAAS,oBAAoB,WAAW,cAAc;EACvD;CACF,GAAE,CAAC,QAAQ,SAAU,EAAC;AAEvB,WAAU,MAAM;EACd,MAAM,UAAU,WAAW;EAC3B,MAAM,UAAU,SAAS,eAAe,kBAAkB,SAAS,GAAG,IAAI;AAE1E,MAAI,WAAW,WAAW,OACxB,QAAO,WAAW,SAAS,SAAS,MAAM;AACxC,mBAAgB,SAAS,SAAS;IAChC,YAAY;KACV,OAAO,QAAQ;KACf,GAAI,uBAAuB,CAAE,IAAG,CAAC,KAAK,EAAE,QAAS,EAAC,EAAE,MAAM,EAAE,QAAS,EAAC,AAAC;KACvE,GAAG;KACH,KAAK;MAAE;MAAS,UAAU;KAAW,EAAC;IACvC;IACD,UAAU;IACV;GACD,EAAC,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,gBAAgB,KAAK;AACpC,YAAQ,MAAM,aAAa,EAAE,EAAE,KAAK,EAAE;AACtC,YAAQ,MAAM,aAAa,eAAe,MAAM,kBAAkB,WAAW;GAC9E,EAAC;EACH,EAAC;CACL,GAAE;EAAC;EAAQ;EAAW;EAAI;EAAsB;CAAmB,EAAC;AAGrE,WAAU,MAAM;AACd,MAAI,GAAI,gBAAe,GAAG;CAC3B,GAAE,CAAC,IAAI,YAAa,EAAC;AAEtB,wBACE,IAAC;EACC,WAAW,KAAG,cAAc,UAAU;EACtC,IAAI,MAAM;EACV,gBAAc;EACd,aAAW;EACX,KAAK;EACL,GAAI;GACJ;AAEL"}
|