@pzerelles/headlessui-svelte 2.1.2-next.32 → 2.1.2-next.33
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/button/Button.svelte +8 -9
- package/dist/button/Button.svelte.d.ts +4 -31
- package/dist/checkbox/Checkbox.svelte +14 -11
- package/dist/checkbox/Checkbox.svelte.d.ts +14 -31
- package/dist/close-button/CloseButton.svelte +4 -7
- package/dist/close-button/CloseButton.svelte.d.ts +2 -43
- package/dist/data-interactive/DataInteractive.svelte +5 -19
- package/dist/data-interactive/DataInteractive.svelte.d.ts +7 -29
- package/dist/description/Description.svelte +15 -12
- package/dist/description/Description.svelte.d.ts +7 -27
- package/dist/dialog/Dialog.svelte +34 -32
- package/dist/dialog/Dialog.svelte.d.ts +4 -41
- package/dist/dialog/DialogBackdrop.svelte +10 -10
- package/dist/dialog/DialogBackdrop.svelte.d.ts +4 -28
- package/dist/dialog/DialogPanel.svelte +18 -10
- package/dist/dialog/DialogPanel.svelte.d.ts +4 -29
- package/dist/dialog/DialogTitle.svelte +19 -7
- package/dist/dialog/DialogTitle.svelte.d.ts +6 -26
- package/dist/field/Field.svelte +9 -15
- package/dist/field/Field.svelte.d.ts +4 -29
- package/dist/fieldset/Fieldset.svelte +10 -13
- package/dist/fieldset/Fieldset.svelte.d.ts +5 -30
- package/dist/focus-trap/FocusTrap.svelte +20 -24
- package/dist/focus-trap/FocusTrap.svelte.d.ts +5 -33
- package/dist/hooks/use-inert-others.svelte.js +10 -10
- package/dist/hooks/use-resolve-button-type.svelte.js +0 -1
- package/dist/input/Input.svelte +19 -9
- package/dist/input/Input.svelte.d.ts +13 -26
- package/dist/internal/FocusSentinel.svelte +33 -32
- package/dist/internal/FormResolver.svelte +5 -1
- package/dist/internal/Hidden.svelte +9 -23
- package/dist/internal/Hidden.svelte.d.ts +4 -29
- package/dist/internal/MainTreeProvider.svelte +1 -1
- package/dist/label/Label.svelte +19 -13
- package/dist/label/Label.svelte.d.ts +7 -31
- package/dist/legend/Legend.svelte +20 -6
- package/dist/legend/Legend.svelte.d.ts +4 -3
- package/dist/listbox/Listbox.svelte +6 -17
- package/dist/listbox/Listbox.svelte.d.ts +11 -34
- package/dist/listbox/ListboxButton.svelte +14 -13
- package/dist/listbox/ListboxButton.svelte.d.ts +5 -31
- package/dist/listbox/ListboxOption.svelte +15 -15
- package/dist/listbox/ListboxOption.svelte.d.ts +12 -25
- package/dist/listbox/ListboxOptions.svelte +13 -11
- package/dist/listbox/ListboxOptions.svelte.d.ts +4 -37
- package/dist/listbox/ListboxSelectedOption.svelte +15 -17
- package/dist/listbox/ListboxSelectedOption.svelte.d.ts +8 -32
- package/dist/menu/Menu.svelte +5 -7
- package/dist/menu/Menu.svelte.d.ts +3 -30
- package/dist/menu/MenuButton.svelte +12 -12
- package/dist/menu/MenuButton.svelte.d.ts +4 -33
- package/dist/menu/MenuHeading.svelte +10 -9
- package/dist/menu/MenuHeading.svelte.d.ts +4 -30
- package/dist/menu/MenuItem.svelte +12 -12
- package/dist/menu/MenuItem.svelte.d.ts +5 -31
- package/dist/menu/MenuItems.svelte +12 -13
- package/dist/menu/MenuItems.svelte.d.ts +4 -37
- package/dist/menu/MenuSection.svelte +9 -8
- package/dist/menu/MenuSection.svelte.d.ts +5 -28
- package/dist/menu/MenuSeparator.svelte +9 -7
- package/dist/menu/MenuSeparator.svelte.d.ts +5 -27
- package/dist/popover/Popover.svelte +8 -8
- package/dist/popover/Popover.svelte.d.ts +4 -29
- package/dist/popover/PopoverBackdrop.svelte +15 -12
- package/dist/popover/PopoverBackdrop.svelte.d.ts +6 -33
- package/dist/popover/PopoverButton.svelte +34 -34
- package/dist/popover/PopoverButton.svelte.d.ts +6 -28
- package/dist/popover/PopoverGroup.svelte +14 -13
- package/dist/popover/PopoverGroup.svelte.d.ts +5 -27
- package/dist/popover/PopoverPanel.svelte +46 -41
- package/dist/popover/PopoverPanel.svelte.d.ts +5 -35
- package/dist/popover/index.d.ts +1 -1
- package/dist/portal/InternalPortal.svelte +17 -16
- package/dist/portal/InternalPortal.svelte.d.ts +4 -29
- package/dist/portal/Portal.svelte +7 -6
- package/dist/portal/Portal.svelte.d.ts +2 -18
- package/dist/portal/PortalGroup.svelte +5 -13
- package/dist/portal/PortalGroup.svelte.d.ts +3 -30
- package/dist/select/Select.svelte +10 -9
- package/dist/select/Select.svelte.d.ts +5 -31
- package/dist/switch/Switch.svelte +13 -12
- package/dist/switch/Switch.svelte.d.ts +5 -37
- package/dist/switch/SwitchGroup.svelte +5 -5
- package/dist/switch/SwitchGroup.svelte.d.ts +7 -27
- package/dist/tabs/Tab.svelte +12 -12
- package/dist/tabs/Tab.svelte.d.ts +4 -31
- package/dist/tabs/TabGroup.svelte +8 -8
- package/dist/tabs/TabGroup.svelte.d.ts +4 -33
- package/dist/tabs/TabList.svelte +7 -8
- package/dist/tabs/TabList.svelte.d.ts +5 -27
- package/dist/tabs/TabPanel.svelte +11 -11
- package/dist/tabs/TabPanel.svelte.d.ts +4 -33
- package/dist/tabs/TabPanels.svelte +5 -5
- package/dist/tabs/TabPanels.svelte.d.ts +5 -26
- package/dist/textarea/Textarea.svelte +12 -10
- package/dist/textarea/Textarea.svelte.d.ts +13 -26
- package/dist/transition/InternalTransitionChild.svelte +19 -12
- package/dist/transition/InternalTransitionChild.svelte.d.ts +3 -32
- package/dist/transition/Transition.svelte +12 -21
- package/dist/transition/Transition.svelte.d.ts +3 -35
- package/dist/transition/TransitionChild.svelte +9 -10
- package/dist/transition/TransitionChild.svelte.d.ts +8 -34
- package/dist/transition/context.svelte.js +7 -7
- package/dist/utils/ElementOrComponent.svelte +56 -15
- package/dist/utils/ElementOrComponent.svelte.d.ts +30 -23
- package/dist/utils/state.js +4 -4
- package/dist/utils/types.d.ts +12 -9
- package/package.json +12 -12
- package/dist/combobox/Combobox.svelte +0 -53
- package/dist/combobox/Combobox.svelte.d.ts +0 -50
- package/dist/utils/Generic.svelte +0 -57
- package/dist/utils/Generic.svelte.d.ts +0 -31
- package/dist/utils/alternative-types.d.ts +0 -20
- package/dist/utils/alternative-types.js +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script lang="ts" module>
|
|
2
|
-
import type {
|
|
2
|
+
import type { Props } from "../utils/types.js"
|
|
3
3
|
import { mergeProps, RenderFeatures, type PropsForFeatures } from "../utils/render.js"
|
|
4
4
|
import {
|
|
5
5
|
useFloatingPanel,
|
|
@@ -16,11 +16,11 @@
|
|
|
16
16
|
|
|
17
17
|
let ItemsRenderFeatures = RenderFeatures.RenderStrategy | RenderFeatures.Static
|
|
18
18
|
|
|
19
|
-
export type MenuItemsProps
|
|
20
|
-
|
|
19
|
+
export type MenuItemsProps = Props<
|
|
20
|
+
typeof DEFAULT_ITEMS_TAG,
|
|
21
21
|
ItemsRenderPropArg,
|
|
22
|
-
ItemsPropsWeControl,
|
|
23
22
|
{
|
|
23
|
+
element?: HTMLElement
|
|
24
24
|
id?: string
|
|
25
25
|
anchor?: AnchorProps
|
|
26
26
|
portal?: boolean
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
>
|
|
31
31
|
</script>
|
|
32
32
|
|
|
33
|
-
<script lang="ts"
|
|
33
|
+
<script lang="ts">
|
|
34
34
|
import { useId } from "../hooks/use-id.js"
|
|
35
35
|
import { getOwnerDocument } from "../utils/owner.js"
|
|
36
36
|
import { State, useOpenClosed } from "../internal/open-closed.js"
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
import { Focus } from "../utils/calculate-active-index.js"
|
|
44
44
|
import { focusFrom, Focus as FocusManagementFocus, restoreFocusIfNecessary } from "../utils/focus-management.js"
|
|
45
45
|
import { useElementSize } from "../hooks/use-element-size.svelte.js"
|
|
46
|
-
import { tick, untrack
|
|
46
|
+
import { tick, untrack } from "svelte"
|
|
47
47
|
import Portal from "../portal/Portal.svelte"
|
|
48
48
|
import { MenuStates, useMenuContext } from "./context.svelte.js"
|
|
49
49
|
import { useTreeWalker } from "../hooks/use-tree-walker.svelte.js"
|
|
@@ -51,15 +51,14 @@
|
|
|
51
51
|
|
|
52
52
|
const internalId = useId()
|
|
53
53
|
let {
|
|
54
|
-
|
|
55
|
-
ref = $bindable(),
|
|
54
|
+
element = $bindable(),
|
|
56
55
|
id = `headlessui-menu-items-${internalId}`,
|
|
57
56
|
anchor: rawAnchor,
|
|
58
57
|
portal = false,
|
|
59
58
|
modal = true,
|
|
60
59
|
transition = false,
|
|
61
60
|
...theirProps
|
|
62
|
-
}:
|
|
61
|
+
}: MenuItemsProps = $props()
|
|
63
62
|
const resolvedAnchor = useResolvedAnchor({
|
|
64
63
|
get anchor() {
|
|
65
64
|
return rawAnchor
|
|
@@ -76,8 +75,8 @@
|
|
|
76
75
|
const getFloatingPanelProps = useFloatingPanelProps()
|
|
77
76
|
|
|
78
77
|
$effect(() => {
|
|
79
|
-
untrack(() => _state.setItemsElement(
|
|
80
|
-
if (anchor) setFloating(
|
|
78
|
+
untrack(() => _state.setItemsElement(element ?? null))
|
|
79
|
+
if (anchor) setFloating(element ?? null)
|
|
81
80
|
})
|
|
82
81
|
const ownerDocument = $derived(getOwnerDocument(_state.itemsElement))
|
|
83
82
|
|
|
@@ -99,7 +98,7 @@
|
|
|
99
98
|
return transition
|
|
100
99
|
},
|
|
101
100
|
get element() {
|
|
102
|
-
return
|
|
101
|
+
return element
|
|
103
102
|
},
|
|
104
103
|
get show() {
|
|
105
104
|
return show
|
|
@@ -315,6 +314,6 @@
|
|
|
315
314
|
features={ItemsRenderFeatures}
|
|
316
315
|
visible={panelEnabled}
|
|
317
316
|
name="MenuItems"
|
|
318
|
-
bind:
|
|
317
|
+
bind:element
|
|
319
318
|
/>
|
|
320
319
|
</Portal>
|
|
@@ -1,51 +1,18 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Props } from "../utils/types.js";
|
|
2
2
|
import { type PropsForFeatures } from "../utils/render.js";
|
|
3
3
|
import { type AnchorProps } from "../internal/floating.svelte.js";
|
|
4
4
|
declare const DEFAULT_ITEMS_TAG: "div";
|
|
5
5
|
type ItemsRenderPropArg = {
|
|
6
6
|
open: boolean;
|
|
7
7
|
};
|
|
8
|
-
type ItemsPropsWeControl = "aria-activedescendant" | "aria-labelledby" | "role" | "tabIndex";
|
|
9
8
|
declare let ItemsRenderFeatures: number;
|
|
10
|
-
export type MenuItemsProps
|
|
9
|
+
export type MenuItemsProps = Props<typeof DEFAULT_ITEMS_TAG, ItemsRenderPropArg, {
|
|
10
|
+
element?: HTMLElement;
|
|
11
11
|
id?: string;
|
|
12
12
|
anchor?: AnchorProps;
|
|
13
13
|
portal?: boolean;
|
|
14
14
|
modal?: boolean;
|
|
15
15
|
transition?: boolean;
|
|
16
16
|
} & PropsForFeatures<typeof ItemsRenderFeatures>>;
|
|
17
|
-
|
|
18
|
-
declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_ITEMS_TAG> {
|
|
19
|
-
props(): {
|
|
20
|
-
as?: TTag | undefined;
|
|
21
|
-
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("slot" | "as" | "children" | "class" | "ref") | "anchor" | "unmount" | "static" | "id" | "transition" | "portal" | "modal" | ItemsPropsWeControl> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
|
|
22
|
-
children?: Snippet<[ItemsRenderPropArg & {
|
|
23
|
-
props?: Record<string, any>;
|
|
24
|
-
}]> | undefined;
|
|
25
|
-
class?: string | ((bag: ItemsRenderPropArg) => string) | null | undefined;
|
|
26
|
-
ref?: HTMLElement;
|
|
27
|
-
} & {
|
|
28
|
-
id?: string;
|
|
29
|
-
anchor?: AnchorProps;
|
|
30
|
-
portal?: boolean;
|
|
31
|
-
modal?: boolean;
|
|
32
|
-
transition?: boolean;
|
|
33
|
-
} & {
|
|
34
|
-
static?: boolean | undefined;
|
|
35
|
-
unmount?: boolean | undefined;
|
|
36
|
-
};
|
|
37
|
-
events(): {};
|
|
38
|
-
slots(): {};
|
|
39
|
-
bindings(): "ref";
|
|
40
|
-
exports(): {};
|
|
41
|
-
}
|
|
42
|
-
interface $$IsomorphicComponent {
|
|
43
|
-
new <TTag extends ElementType = typeof DEFAULT_ITEMS_TAG>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TTag>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TTag>['props']>, ReturnType<__sveltets_Render<TTag>['events']>, ReturnType<__sveltets_Render<TTag>['slots']>> & {
|
|
44
|
-
$$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
|
|
45
|
-
} & ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
46
|
-
<TTag extends ElementType = typeof DEFAULT_ITEMS_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
47
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
48
|
-
}
|
|
49
|
-
declare const MenuItems: $$IsomorphicComponent;
|
|
50
|
-
type MenuItems<TTag extends ElementType = typeof DEFAULT_ITEMS_TAG> = InstanceType<typeof MenuItems<TTag>>;
|
|
17
|
+
declare const MenuItems: import("svelte").Component<MenuItemsProps, {}, "element">;
|
|
51
18
|
export default MenuItems;
|
|
@@ -1,29 +1,30 @@
|
|
|
1
1
|
<script lang="ts" module>
|
|
2
|
-
import type {
|
|
3
|
-
import type { ElementType, Props } from "../utils/types.js"
|
|
2
|
+
import type { Props } from "../utils/types.js"
|
|
4
3
|
|
|
5
4
|
const DEFAULT_SECTION_TAG = "div" as const
|
|
6
5
|
type SectionRenderPropArg = {}
|
|
7
6
|
type SectionPropsWeControl = "role" | "aria-labelledby"
|
|
8
7
|
|
|
9
|
-
export type MenuSectionProps
|
|
10
|
-
|
|
8
|
+
export type MenuSectionProps = Props<
|
|
9
|
+
typeof DEFAULT_SECTION_TAG,
|
|
11
10
|
SectionRenderPropArg,
|
|
12
|
-
|
|
11
|
+
{
|
|
12
|
+
element?: HTMLElement
|
|
13
|
+
}
|
|
13
14
|
>
|
|
14
15
|
</script>
|
|
15
16
|
|
|
16
|
-
<script lang="ts"
|
|
17
|
+
<script lang="ts">
|
|
17
18
|
import { useLabels } from "../label/context.svelte.js"
|
|
18
19
|
import ElementOrComponent from "../utils/ElementOrComponent.svelte"
|
|
19
20
|
|
|
20
21
|
const labelledby = useLabels()
|
|
21
22
|
|
|
22
|
-
let {
|
|
23
|
+
let { element = $bindable(), ...theirProps }: MenuSectionProps = $props()
|
|
23
24
|
const ourProps = $derived({
|
|
24
25
|
"aria-labelledby": labelledby,
|
|
25
26
|
role: "group",
|
|
26
27
|
})
|
|
27
28
|
</script>
|
|
28
29
|
|
|
29
|
-
<ElementOrComponent {ourProps} {theirProps} defaultTag={DEFAULT_SECTION_TAG} name="MenuSection" bind:
|
|
30
|
+
<ElementOrComponent {ourProps} {theirProps} defaultTag={DEFAULT_SECTION_TAG} name="MenuSection" bind:element />
|
|
@@ -1,31 +1,8 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { ElementType, Props } from "../utils/types.js";
|
|
1
|
+
import type { Props } from "../utils/types.js";
|
|
3
2
|
declare const DEFAULT_SECTION_TAG: "div";
|
|
4
3
|
type SectionRenderPropArg = {};
|
|
5
|
-
type
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
as?: TTag | undefined;
|
|
10
|
-
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("slot" | "as" | "children" | "class" | "ref") | SectionPropsWeControl> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
|
|
11
|
-
children?: Snippet<[{
|
|
12
|
-
props?: Record<string, any>;
|
|
13
|
-
}]> | undefined;
|
|
14
|
-
class?: string | ((bag: SectionRenderPropArg) => string) | null | undefined;
|
|
15
|
-
ref?: HTMLElement;
|
|
16
|
-
};
|
|
17
|
-
events(): {};
|
|
18
|
-
slots(): {};
|
|
19
|
-
bindings(): "ref";
|
|
20
|
-
exports(): {};
|
|
21
|
-
}
|
|
22
|
-
interface $$IsomorphicComponent {
|
|
23
|
-
new <TTag extends ElementType = typeof DEFAULT_SECTION_TAG>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TTag>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TTag>['props']>, ReturnType<__sveltets_Render<TTag>['events']>, ReturnType<__sveltets_Render<TTag>['slots']>> & {
|
|
24
|
-
$$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
|
|
25
|
-
} & ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
26
|
-
<TTag extends ElementType = typeof DEFAULT_SECTION_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
27
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
28
|
-
}
|
|
29
|
-
declare const MenuSection: $$IsomorphicComponent;
|
|
30
|
-
type MenuSection<TTag extends ElementType = typeof DEFAULT_SECTION_TAG> = InstanceType<typeof MenuSection<TTag>>;
|
|
4
|
+
export type MenuSectionProps = Props<typeof DEFAULT_SECTION_TAG, SectionRenderPropArg, {
|
|
5
|
+
element?: HTMLElement;
|
|
6
|
+
}>;
|
|
7
|
+
declare const MenuSection: import("svelte").Component<MenuSectionProps, {}, "element">;
|
|
31
8
|
export default MenuSection;
|
|
@@ -1,22 +1,24 @@
|
|
|
1
1
|
<script lang="ts" module>
|
|
2
|
-
import type {
|
|
2
|
+
import type { Props } from "../utils/types.js"
|
|
3
3
|
|
|
4
4
|
const DEFAULT_SEPARATOR_TAG = "div" as const
|
|
5
5
|
type SeparatorRenderPropArg = {}
|
|
6
6
|
type SeparatorPropsWeControl = "role"
|
|
7
7
|
|
|
8
|
-
export type MenuSeparatorProps
|
|
9
|
-
|
|
8
|
+
export type MenuSeparatorProps = Props<
|
|
9
|
+
typeof DEFAULT_SEPARATOR_TAG,
|
|
10
10
|
SeparatorRenderPropArg,
|
|
11
|
-
|
|
11
|
+
{
|
|
12
|
+
element?: HTMLElement
|
|
13
|
+
}
|
|
12
14
|
>
|
|
13
15
|
</script>
|
|
14
16
|
|
|
15
|
-
<script lang="ts"
|
|
17
|
+
<script lang="ts">
|
|
16
18
|
import ElementOrComponent from "../utils/ElementOrComponent.svelte"
|
|
17
19
|
|
|
18
|
-
let {
|
|
20
|
+
let { element = $bindable(), ...theirProps }: MenuSeparatorProps = $props()
|
|
19
21
|
const ourProps = { role: "separator" }
|
|
20
22
|
</script>
|
|
21
23
|
|
|
22
|
-
<ElementOrComponent {ourProps} {theirProps} defaultTag={DEFAULT_SEPARATOR_TAG} name="MenuSeparator" bind:
|
|
24
|
+
<ElementOrComponent {ourProps} {theirProps} defaultTag={DEFAULT_SEPARATOR_TAG} name="MenuSeparator" bind:element />
|
|
@@ -1,30 +1,8 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Props } from "../utils/types.js";
|
|
2
2
|
declare const DEFAULT_SEPARATOR_TAG: "div";
|
|
3
3
|
type SeparatorRenderPropArg = {};
|
|
4
|
-
type
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
as?: TTag | undefined;
|
|
9
|
-
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("slot" | "as" | "children" | "class" | "ref") | "role"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
|
|
10
|
-
children?: import("svelte").Snippet<[{
|
|
11
|
-
props?: Record<string, any>;
|
|
12
|
-
}]> | undefined;
|
|
13
|
-
class?: string | ((bag: SeparatorRenderPropArg) => string) | null | undefined;
|
|
14
|
-
ref?: HTMLElement;
|
|
15
|
-
};
|
|
16
|
-
events(): {};
|
|
17
|
-
slots(): {};
|
|
18
|
-
bindings(): "ref";
|
|
19
|
-
exports(): {};
|
|
20
|
-
}
|
|
21
|
-
interface $$IsomorphicComponent {
|
|
22
|
-
new <TTag extends ElementType = typeof DEFAULT_SEPARATOR_TAG>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TTag>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TTag>['props']>, ReturnType<__sveltets_Render<TTag>['events']>, ReturnType<__sveltets_Render<TTag>['slots']>> & {
|
|
23
|
-
$$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
|
|
24
|
-
} & ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
25
|
-
<TTag extends ElementType = typeof DEFAULT_SEPARATOR_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
26
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
27
|
-
}
|
|
28
|
-
declare const MenuSeparator: $$IsomorphicComponent;
|
|
29
|
-
type MenuSeparator<TTag extends ElementType = typeof DEFAULT_SEPARATOR_TAG> = InstanceType<typeof MenuSeparator<TTag>>;
|
|
4
|
+
export type MenuSeparatorProps = Props<typeof DEFAULT_SEPARATOR_TAG, SeparatorRenderPropArg, {
|
|
5
|
+
element?: HTMLElement;
|
|
6
|
+
}>;
|
|
7
|
+
declare const MenuSeparator: import("svelte").Component<MenuSeparatorProps, {}, "element">;
|
|
30
8
|
export default MenuSeparator;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script lang="ts" module>
|
|
2
|
-
import type {
|
|
2
|
+
import type { Props } from "../utils/types.js"
|
|
3
3
|
|
|
4
4
|
export const DEFAULT_POPOVER_TAG = "div" as const
|
|
5
5
|
type PopoverRenderPropArg = {
|
|
@@ -8,17 +8,17 @@
|
|
|
8
8
|
}
|
|
9
9
|
type PopoverPropsWeControl = never
|
|
10
10
|
|
|
11
|
-
export type PopoverProps
|
|
12
|
-
|
|
11
|
+
export type PopoverProps = Props<
|
|
12
|
+
typeof DEFAULT_POPOVER_TAG,
|
|
13
13
|
PopoverRenderPropArg,
|
|
14
|
-
PopoverPropsWeControl,
|
|
15
14
|
{
|
|
15
|
+
element?: HTMLElement
|
|
16
16
|
__demoMode?: boolean
|
|
17
17
|
}
|
|
18
18
|
>
|
|
19
19
|
</script>
|
|
20
20
|
|
|
21
|
-
<script lang="ts"
|
|
21
|
+
<script lang="ts">
|
|
22
22
|
import { getOwnerDocument } from "../utils/owner.js"
|
|
23
23
|
|
|
24
24
|
import { setContext, untrack } from "svelte"
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
import { createOpenClosedContext, State } from "../internal/open-closed.js"
|
|
42
42
|
import ElementOrComponent from "../utils/ElementOrComponent.svelte"
|
|
43
43
|
|
|
44
|
-
let {
|
|
44
|
+
let { element = $bindable(), __demoMode = false, ...theirProps }: PopoverProps = $props()
|
|
45
45
|
|
|
46
46
|
let buttons = $state([])
|
|
47
47
|
const context = createPopoverContext({
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
afterButtonSentinel,
|
|
61
61
|
} = $derived(context)
|
|
62
62
|
|
|
63
|
-
const ownerDocument = $derived(getOwnerDocument(
|
|
63
|
+
const ownerDocument = $derived(getOwnerDocument(element ?? button))
|
|
64
64
|
|
|
65
65
|
const isPortalled = $derived.by(() => {
|
|
66
66
|
if (!button) return false
|
|
@@ -223,5 +223,5 @@
|
|
|
223
223
|
</script>
|
|
224
224
|
|
|
225
225
|
<MainTreeProvider node={mainTreeNode.node}>
|
|
226
|
-
<ElementOrComponent {theirProps} slots={slot} defaultTag={DEFAULT_POPOVER_TAG} name="Popover" bind:
|
|
226
|
+
<ElementOrComponent {theirProps} slots={slot} defaultTag={DEFAULT_POPOVER_TAG} name="Popover" bind:element />
|
|
227
227
|
</MainTreeProvider>
|
|
@@ -1,38 +1,13 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Props } from "../utils/types.js";
|
|
2
2
|
export declare const DEFAULT_POPOVER_TAG: "div";
|
|
3
3
|
type PopoverRenderPropArg = {
|
|
4
4
|
open: boolean;
|
|
5
5
|
close(focusableElement?: HTMLElement | MouseEvent<HTMLElement>): void;
|
|
6
6
|
};
|
|
7
|
-
type
|
|
8
|
-
|
|
7
|
+
export type PopoverProps = Props<typeof DEFAULT_POPOVER_TAG, PopoverRenderPropArg, {
|
|
8
|
+
element?: HTMLElement;
|
|
9
9
|
__demoMode?: boolean;
|
|
10
10
|
}>;
|
|
11
11
|
import { type MouseEvent } from "./context.svelte.js";
|
|
12
|
-
declare
|
|
13
|
-
props(): {
|
|
14
|
-
as?: TTag | undefined;
|
|
15
|
-
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("slot" | "as" | "children" | "class" | "ref") | "__demoMode"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
|
|
16
|
-
children?: import("svelte").Snippet<[PopoverRenderPropArg & {
|
|
17
|
-
props?: Record<string, any>;
|
|
18
|
-
}]> | undefined;
|
|
19
|
-
class?: string | ((bag: PopoverRenderPropArg) => string) | null | undefined;
|
|
20
|
-
ref?: HTMLElement;
|
|
21
|
-
} & {
|
|
22
|
-
__demoMode?: boolean;
|
|
23
|
-
};
|
|
24
|
-
events(): {};
|
|
25
|
-
slots(): {};
|
|
26
|
-
bindings(): "ref";
|
|
27
|
-
exports(): {};
|
|
28
|
-
}
|
|
29
|
-
interface $$IsomorphicComponent {
|
|
30
|
-
new <TTag extends ElementType = typeof DEFAULT_POPOVER_TAG>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TTag>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TTag>['props']>, ReturnType<__sveltets_Render<TTag>['events']>, ReturnType<__sveltets_Render<TTag>['slots']>> & {
|
|
31
|
-
$$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
|
|
32
|
-
} & ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
33
|
-
<TTag extends ElementType = typeof DEFAULT_POPOVER_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
34
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
35
|
-
}
|
|
36
|
-
declare const Popover: $$IsomorphicComponent;
|
|
37
|
-
type Popover<TTag extends ElementType = typeof DEFAULT_POPOVER_TAG> = InstanceType<typeof Popover<TTag>>;
|
|
12
|
+
declare const Popover: import("svelte").Component<PopoverProps, {}, "element">;
|
|
38
13
|
export default Popover;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script lang="ts" module>
|
|
2
|
-
import type {
|
|
2
|
+
import type { Props } from "../utils/types.js"
|
|
3
3
|
import { RenderFeatures, type PropsForFeatures } from "../utils/render.js"
|
|
4
4
|
|
|
5
5
|
let DEFAULT_BACKDROP_TAG = "div" as const
|
|
@@ -10,17 +10,20 @@
|
|
|
10
10
|
|
|
11
11
|
const BackdropRenderFeatures = RenderFeatures.RenderStrategy | RenderFeatures.Static
|
|
12
12
|
|
|
13
|
-
export type PopoverBackdropProps
|
|
14
|
-
|
|
13
|
+
export type PopoverBackdropProps = Props<
|
|
14
|
+
typeof DEFAULT_BACKDROP_TAG,
|
|
15
15
|
BackdropRenderPropArg,
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
{
|
|
17
|
+
element?: HTMLElement
|
|
18
|
+
id?: string
|
|
19
|
+
transition?: boolean
|
|
20
|
+
} & PropsForFeatures<typeof BackdropRenderFeatures>
|
|
18
21
|
>
|
|
19
22
|
|
|
20
|
-
export type PopoverOverlayProps
|
|
23
|
+
export type PopoverOverlayProps = PopoverBackdropProps
|
|
21
24
|
</script>
|
|
22
25
|
|
|
23
|
-
<script lang="ts"
|
|
26
|
+
<script lang="ts">
|
|
24
27
|
import ElementOrComponent from "../utils/ElementOrComponent.svelte"
|
|
25
28
|
import { useId } from "../hooks/use-id.js"
|
|
26
29
|
import { PopoverStates, usePopoverContext } from "./context.svelte.js"
|
|
@@ -29,11 +32,11 @@
|
|
|
29
32
|
|
|
30
33
|
const internalId = useId()
|
|
31
34
|
let {
|
|
32
|
-
|
|
33
|
-
id = `headlessui-popover-backdrop-${internalId}
|
|
35
|
+
element = $bindable(),
|
|
36
|
+
id = `headlessui-popover-backdrop-${internalId}`,
|
|
34
37
|
transition = false,
|
|
35
38
|
...theirProps
|
|
36
|
-
}:
|
|
39
|
+
}: PopoverBackdropProps = $props()
|
|
37
40
|
const context = usePopoverContext("PopoverBackdrop")
|
|
38
41
|
const { popoverState } = $derived(context)
|
|
39
42
|
|
|
@@ -43,7 +46,7 @@
|
|
|
43
46
|
return transition
|
|
44
47
|
},
|
|
45
48
|
get element() {
|
|
46
|
-
return
|
|
49
|
+
return element
|
|
47
50
|
},
|
|
48
51
|
get show() {
|
|
49
52
|
return usesOpenClosedState !== null
|
|
@@ -78,5 +81,5 @@
|
|
|
78
81
|
features={BackdropRenderFeatures}
|
|
79
82
|
name="PopoverBackdrop"
|
|
80
83
|
{visible}
|
|
81
|
-
bind:
|
|
84
|
+
bind:element
|
|
82
85
|
/>
|
|
@@ -1,42 +1,15 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Props } from "../utils/types.js";
|
|
2
2
|
import { type PropsForFeatures } from "../utils/render.js";
|
|
3
3
|
declare let DEFAULT_BACKDROP_TAG: "div";
|
|
4
4
|
type BackdropRenderPropArg = {
|
|
5
5
|
open: boolean;
|
|
6
6
|
};
|
|
7
|
-
type BackdropPropsWeControl = "aria-hidden";
|
|
8
7
|
declare const BackdropRenderFeatures: number;
|
|
9
|
-
export type PopoverBackdropProps
|
|
8
|
+
export type PopoverBackdropProps = Props<typeof DEFAULT_BACKDROP_TAG, BackdropRenderPropArg, {
|
|
9
|
+
element?: HTMLElement;
|
|
10
|
+
id?: string;
|
|
10
11
|
transition?: boolean;
|
|
11
12
|
} & PropsForFeatures<typeof BackdropRenderFeatures>>;
|
|
12
|
-
export type PopoverOverlayProps
|
|
13
|
-
declare
|
|
14
|
-
props(): {
|
|
15
|
-
as?: TTag | undefined;
|
|
16
|
-
} & (Exclude<keyof PropsOf<TTag>, ("slot" | "as" | "children" | "class" | "ref") | "unmount" | "static" | "aria-hidden" | "transition"> extends infer T extends keyof PropsOf<TTag> ? { [P in T]: PropsOf<TTag>[P]; } : never) & {
|
|
17
|
-
children?: import("svelte").Snippet<[BackdropRenderPropArg & {
|
|
18
|
-
props?: Record<string, any>;
|
|
19
|
-
}]> | undefined;
|
|
20
|
-
class?: string | ((bag: BackdropRenderPropArg) => string) | null | undefined;
|
|
21
|
-
ref?: HTMLElement;
|
|
22
|
-
} & {
|
|
23
|
-
transition?: boolean;
|
|
24
|
-
} & {
|
|
25
|
-
static?: boolean | undefined;
|
|
26
|
-
unmount?: boolean | undefined;
|
|
27
|
-
};
|
|
28
|
-
events(): {};
|
|
29
|
-
slots(): {};
|
|
30
|
-
bindings(): "ref";
|
|
31
|
-
exports(): {};
|
|
32
|
-
}
|
|
33
|
-
interface $$IsomorphicComponent {
|
|
34
|
-
new <TTag extends ElementType = typeof DEFAULT_BACKDROP_TAG>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TTag>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TTag>['props']>, ReturnType<__sveltets_Render<TTag>['events']>, ReturnType<__sveltets_Render<TTag>['slots']>> & {
|
|
35
|
-
$$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
|
|
36
|
-
} & ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
37
|
-
<TTag extends ElementType = typeof DEFAULT_BACKDROP_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
38
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
39
|
-
}
|
|
40
|
-
declare const PopoverBackdrop: $$IsomorphicComponent;
|
|
41
|
-
type PopoverBackdrop<TTag extends ElementType = typeof DEFAULT_BACKDROP_TAG> = InstanceType<typeof PopoverBackdrop<TTag>>;
|
|
13
|
+
export type PopoverOverlayProps = PopoverBackdropProps;
|
|
14
|
+
declare const PopoverBackdrop: import("svelte").Component<PopoverBackdropProps, {}, "element">;
|
|
42
15
|
export default PopoverBackdrop;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script lang="ts" module>
|
|
2
|
-
import type {
|
|
2
|
+
import type { Props } from "../utils/types.js"
|
|
3
3
|
|
|
4
4
|
const DEFAULT_BUTTON_TAG = "button" as const
|
|
5
5
|
export type PopoverButtonSlot = {
|
|
@@ -12,20 +12,19 @@
|
|
|
12
12
|
}
|
|
13
13
|
export type PopoverButtonPropsWeControl = "aria-controls" | "aria-expanded"
|
|
14
14
|
|
|
15
|
-
export type
|
|
16
|
-
|
|
17
|
-
autofocus?: boolean
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export type PopoverButtonProps<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG> = Props<
|
|
21
|
-
TTag,
|
|
15
|
+
export type PopoverButtonProps = Props<
|
|
16
|
+
typeof DEFAULT_BUTTON_TAG,
|
|
22
17
|
PopoverButtonSlot,
|
|
23
|
-
|
|
24
|
-
|
|
18
|
+
{
|
|
19
|
+
element?: HTMLElement
|
|
20
|
+
id?: string
|
|
21
|
+
disabled?: boolean
|
|
22
|
+
autofocus?: boolean
|
|
23
|
+
}
|
|
25
24
|
>
|
|
26
25
|
</script>
|
|
27
26
|
|
|
28
|
-
<script lang="ts"
|
|
27
|
+
<script lang="ts">
|
|
29
28
|
import { useId } from "../hooks/use-id.js"
|
|
30
29
|
import {
|
|
31
30
|
PopoverStates,
|
|
@@ -48,16 +47,15 @@
|
|
|
48
47
|
import { microTask } from "../utils/microTask.js"
|
|
49
48
|
import Hidden, { HiddenFeatures } from "../internal/Hidden.svelte"
|
|
50
49
|
import ElementOrComponent from "../utils/ElementOrComponent.svelte"
|
|
51
|
-
import type { FocusEventHandler } from "svelte/elements"
|
|
52
50
|
|
|
53
51
|
const internalId = useId()
|
|
54
52
|
let {
|
|
55
|
-
|
|
56
|
-
id = `headlessui-popover-button-${internalId}
|
|
53
|
+
element = $bindable(),
|
|
54
|
+
id = `headlessui-popover-button-${internalId}`,
|
|
57
55
|
disabled = false,
|
|
58
|
-
autofocus = false
|
|
56
|
+
autofocus = false,
|
|
59
57
|
...theirProps
|
|
60
|
-
}:
|
|
58
|
+
}: PopoverButtonProps = $props()
|
|
61
59
|
const context = usePopoverContext("PopoverButton")
|
|
62
60
|
const api = usePopoverAPIContext("PopoverButton")
|
|
63
61
|
const { isPortalled } = $derived(api)
|
|
@@ -111,13 +109,13 @@
|
|
|
111
109
|
const floatingReference = useFloatingReference()
|
|
112
110
|
const { setReference } = $derived(floatingReference)
|
|
113
111
|
$effect(() => {
|
|
114
|
-
setReference(
|
|
112
|
+
setReference(element)
|
|
115
113
|
})
|
|
116
114
|
$effect(() => {
|
|
117
115
|
if (isWithinPanel) return
|
|
118
|
-
|
|
116
|
+
element
|
|
119
117
|
untrack(() => {
|
|
120
|
-
if (
|
|
118
|
+
if (element) {
|
|
121
119
|
context.buttons.push(uniqueIdentifier)
|
|
122
120
|
} else {
|
|
123
121
|
let idx = context.buttons.indexOf(uniqueIdentifier)
|
|
@@ -128,10 +126,10 @@
|
|
|
128
126
|
console.warn("You are already using a <PopoverButton /> but only 1 <PopoverButton /> is supported.")
|
|
129
127
|
}
|
|
130
128
|
|
|
131
|
-
if (
|
|
129
|
+
if (element) context.setButton(element)
|
|
132
130
|
})
|
|
133
131
|
})
|
|
134
|
-
const ownerDocument = $derived(getOwnerDocument(
|
|
132
|
+
const ownerDocument = $derived(getOwnerDocument(element))
|
|
135
133
|
|
|
136
134
|
const handleKeyDown = (event: KeyboardEvent) => {
|
|
137
135
|
if (isWithinPanel) {
|
|
@@ -158,8 +156,8 @@
|
|
|
158
156
|
|
|
159
157
|
case "Escape":
|
|
160
158
|
if (context.popoverState !== PopoverStates.Open) return closeOthers?.(context.buttonId!)
|
|
161
|
-
if (!
|
|
162
|
-
if (ownerDocument?.activeElement && !
|
|
159
|
+
if (!element) return
|
|
160
|
+
if (ownerDocument?.activeElement && !element.contains(ownerDocument.activeElement)) {
|
|
163
161
|
return
|
|
164
162
|
}
|
|
165
163
|
event.preventDefault()
|
|
@@ -234,7 +232,7 @@
|
|
|
234
232
|
|
|
235
233
|
const type = useResolveButtonType({
|
|
236
234
|
get props() {
|
|
237
|
-
return { type: theirProps.type, as:
|
|
235
|
+
return { type: theirProps.type ?? undefined, as: element ? element.tagName.toLowerCase() : DEFAULT_BUTTON_TAG }
|
|
238
236
|
},
|
|
239
237
|
get ref() {
|
|
240
238
|
return { current: context.button }
|
|
@@ -311,16 +309,18 @@
|
|
|
311
309
|
slots={slot}
|
|
312
310
|
defaultTag={DEFAULT_BUTTON_TAG}
|
|
313
311
|
name="PopoverButton"
|
|
314
|
-
bind:
|
|
312
|
+
bind:element
|
|
315
313
|
/>
|
|
316
314
|
{#if visible && !isWithinPanel && isPortalled}
|
|
317
|
-
<Hidden
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
315
|
+
<Hidden id={sentinelId} features={HiddenFeatures.Focusable} asChild>
|
|
316
|
+
{#snippet children({ props })}
|
|
317
|
+
<button
|
|
318
|
+
{...props}
|
|
319
|
+
type="button"
|
|
320
|
+
data-headlessui-focus-guard
|
|
321
|
+
onfocus={handleFocus}
|
|
322
|
+
bind:this={context.afterButtonSentinel}>‌</button
|
|
323
|
+
>
|
|
324
|
+
{/snippet}
|
|
325
|
+
</Hidden>
|
|
326
326
|
{/if}
|