@pzerelles/headlessui-svelte 2.1.2-next.19 → 2.1.2-next.20
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/hooks/use-event-listener.svelte.d.ts +1 -1
- package/dist/hooks/use-event-listener.svelte.js +3 -1
- package/dist/hooks/use-root-containers.svelte.d.ts +2 -2
- package/dist/hooks/use-root-containers.svelte.js +5 -5
- package/dist/hooks/use-tab-direction.svelte.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/internal/floating-provider.svelte.js +14 -14
- package/dist/internal/floating.svelte.js +1 -0
- package/dist/popover/Popover.svelte +161 -0
- package/dist/popover/Popover.svelte.d.ts +41 -0
- package/dist/popover/PopoverBackdrop.svelte +56 -0
- package/dist/popover/PopoverBackdrop.svelte.d.ts +45 -0
- package/dist/popover/PopoverButton.svelte +246 -0
- package/dist/popover/PopoverButton.svelte.d.ts +46 -0
- package/dist/popover/PopoverGroup.svelte +43 -0
- package/dist/popover/PopoverGroup.svelte.d.ts +33 -0
- package/dist/popover/PopoverPanel.svelte +274 -0
- package/dist/popover/PopoverPanel.svelte.d.ts +53 -0
- package/dist/popover/context.svelte.d.ts +51 -0
- package/dist/popover/context.svelte.js +108 -0
- package/dist/popover/index.d.ts +5 -0
- package/dist/popover/index.js +5 -0
- package/package.json +15 -15
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { MouseEventHandler } from "svelte/elements";
|
|
2
|
+
export type MouseEvent<T extends EventTarget> = Parameters<MouseEventHandler<T>>[0];
|
|
3
|
+
export declare enum PopoverStates {
|
|
4
|
+
Open = 0,
|
|
5
|
+
Closed = 1
|
|
6
|
+
}
|
|
7
|
+
export interface StateDefinition {
|
|
8
|
+
popoverState: PopoverStates;
|
|
9
|
+
buttons: symbol[];
|
|
10
|
+
button?: HTMLElement;
|
|
11
|
+
buttonId?: string;
|
|
12
|
+
panel?: HTMLElement;
|
|
13
|
+
panelId?: string;
|
|
14
|
+
beforePanelSentinel?: HTMLButtonElement;
|
|
15
|
+
afterPanelSentinel?: HTMLButtonElement;
|
|
16
|
+
afterButtonSentinel?: HTMLButtonElement;
|
|
17
|
+
__demoMode: boolean;
|
|
18
|
+
}
|
|
19
|
+
interface ActionDefinition {
|
|
20
|
+
togglePopover(): void;
|
|
21
|
+
closePopover(): void;
|
|
22
|
+
setButton(button: HTMLElement): void;
|
|
23
|
+
setButtonId(buttonId: string | undefined): void;
|
|
24
|
+
setPanel(panel?: HTMLElement): void;
|
|
25
|
+
setPanelId(panelId?: string): void;
|
|
26
|
+
}
|
|
27
|
+
export type PopoverContext = StateDefinition & ActionDefinition;
|
|
28
|
+
export declare const createPopoverContext: (initialState: StateDefinition) => PopoverContext;
|
|
29
|
+
export declare function usePopoverContext(component: string): PopoverContext;
|
|
30
|
+
export type PopoverAPIContext = {
|
|
31
|
+
close(focusableElement?: HTMLElement | MouseEvent<HTMLElement>): void;
|
|
32
|
+
isPortalled: boolean;
|
|
33
|
+
};
|
|
34
|
+
export declare function usePopoverAPIContext(component: string): PopoverAPIContext;
|
|
35
|
+
export type PopoverGroupContext = {
|
|
36
|
+
registerPopover(registerBag: PopoverRegisterBag): void;
|
|
37
|
+
unregisterPopover(registerBag: PopoverRegisterBag): void;
|
|
38
|
+
isFocusWithinPopoverGroup(): boolean;
|
|
39
|
+
closeOthers(buttonId: string): void;
|
|
40
|
+
};
|
|
41
|
+
export declare function usePopoverGroupContext(): PopoverGroupContext | undefined;
|
|
42
|
+
export type PopoverPanelContext = {
|
|
43
|
+
value: string;
|
|
44
|
+
};
|
|
45
|
+
export declare function usePopoverPanelContext(): PopoverPanelContext | undefined;
|
|
46
|
+
export interface PopoverRegisterBag {
|
|
47
|
+
buttonId?: string;
|
|
48
|
+
panelId?: string;
|
|
49
|
+
close(): void;
|
|
50
|
+
}
|
|
51
|
+
export {};
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { getContext, setContext } from "svelte";
|
|
2
|
+
export var PopoverStates;
|
|
3
|
+
(function (PopoverStates) {
|
|
4
|
+
PopoverStates[PopoverStates["Open"] = 0] = "Open";
|
|
5
|
+
PopoverStates[PopoverStates["Closed"] = 1] = "Closed";
|
|
6
|
+
})(PopoverStates || (PopoverStates = {}));
|
|
7
|
+
export const createPopoverContext = (initialState) => {
|
|
8
|
+
const _state = $state(initialState);
|
|
9
|
+
const context = {
|
|
10
|
+
get popoverState() {
|
|
11
|
+
return _state.popoverState;
|
|
12
|
+
},
|
|
13
|
+
get buttons() {
|
|
14
|
+
return _state.buttons;
|
|
15
|
+
},
|
|
16
|
+
get button() {
|
|
17
|
+
return _state.button;
|
|
18
|
+
},
|
|
19
|
+
get buttonId() {
|
|
20
|
+
return _state.buttonId;
|
|
21
|
+
},
|
|
22
|
+
get panel() {
|
|
23
|
+
return _state.panel;
|
|
24
|
+
},
|
|
25
|
+
get panelId() {
|
|
26
|
+
return _state.panelId;
|
|
27
|
+
},
|
|
28
|
+
get beforePanelSentinel() {
|
|
29
|
+
return _state.beforePanelSentinel;
|
|
30
|
+
},
|
|
31
|
+
set beforePanelSentinel(value) {
|
|
32
|
+
_state.beforePanelSentinel = value;
|
|
33
|
+
},
|
|
34
|
+
get afterPanelSentinel() {
|
|
35
|
+
return _state.afterPanelSentinel;
|
|
36
|
+
},
|
|
37
|
+
set afterPanelSentinel(value) {
|
|
38
|
+
_state.afterPanelSentinel = value;
|
|
39
|
+
},
|
|
40
|
+
get afterButtonSentinel() {
|
|
41
|
+
return _state.afterButtonSentinel;
|
|
42
|
+
},
|
|
43
|
+
set afterButtonSentinel(value) {
|
|
44
|
+
_state.afterButtonSentinel = value;
|
|
45
|
+
},
|
|
46
|
+
get __demoMode() {
|
|
47
|
+
return _state.__demoMode;
|
|
48
|
+
},
|
|
49
|
+
togglePopover() {
|
|
50
|
+
_state.__demoMode = false;
|
|
51
|
+
_state.popoverState = _state.popoverState === PopoverStates.Closed ? PopoverStates.Open : PopoverStates.Closed;
|
|
52
|
+
},
|
|
53
|
+
closePopover() {
|
|
54
|
+
if (_state.popoverState === PopoverStates.Closed)
|
|
55
|
+
return;
|
|
56
|
+
_state.__demoMode = false;
|
|
57
|
+
_state.popoverState = PopoverStates.Closed;
|
|
58
|
+
},
|
|
59
|
+
setButton(button) {
|
|
60
|
+
if (_state.button === button)
|
|
61
|
+
return;
|
|
62
|
+
_state.button = button;
|
|
63
|
+
},
|
|
64
|
+
setButtonId(buttonId) {
|
|
65
|
+
if (_state.buttonId === buttonId)
|
|
66
|
+
return;
|
|
67
|
+
_state.buttonId = buttonId;
|
|
68
|
+
},
|
|
69
|
+
setPanel(panel) {
|
|
70
|
+
if (_state.panel === panel)
|
|
71
|
+
return;
|
|
72
|
+
_state.panel = panel;
|
|
73
|
+
},
|
|
74
|
+
setPanelId(panelId) {
|
|
75
|
+
if (_state.panelId === panelId)
|
|
76
|
+
return;
|
|
77
|
+
_state.panelId = panelId;
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
setContext("PopoverContext", context);
|
|
81
|
+
return context;
|
|
82
|
+
};
|
|
83
|
+
export function usePopoverContext(component) {
|
|
84
|
+
const context = getContext("PopoverContext");
|
|
85
|
+
if (!context) {
|
|
86
|
+
const err = new Error(`<${component} /> is missing a parent <Popover /> component.`);
|
|
87
|
+
if (Error.captureStackTrace)
|
|
88
|
+
Error.captureStackTrace(err, usePopoverContext);
|
|
89
|
+
throw err;
|
|
90
|
+
}
|
|
91
|
+
return context;
|
|
92
|
+
}
|
|
93
|
+
export function usePopoverAPIContext(component) {
|
|
94
|
+
const context = getContext("PopoverAPIContext");
|
|
95
|
+
if (!context) {
|
|
96
|
+
const err = new Error(`<${component} /> is missing a parent <Popover /> component.`);
|
|
97
|
+
if (Error.captureStackTrace)
|
|
98
|
+
Error.captureStackTrace(err, usePopoverAPIContext);
|
|
99
|
+
throw err;
|
|
100
|
+
}
|
|
101
|
+
return context;
|
|
102
|
+
}
|
|
103
|
+
export function usePopoverGroupContext() {
|
|
104
|
+
return getContext("PopoverGroupContext");
|
|
105
|
+
}
|
|
106
|
+
export function usePopoverPanelContext() {
|
|
107
|
+
return getContext("PopoverPanelContext");
|
|
108
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { default as Popover, type PopoverProps } from "./Popover.svelte";
|
|
2
|
+
export { default as PopoverBackdrop, type PopoverBackdropProps } from "./PopoverBackdrop.svelte";
|
|
3
|
+
export { default as PopoverButton, type PopoverButtonProps } from "./PopoverButton.svelte";
|
|
4
|
+
export { default as PopoverGroup, type PopoverGroupProps } from "./PopoverGroup.svelte";
|
|
5
|
+
export { default as PopoverPanel, type PopoverPanelProps } from "./PopoverPanel.svelte";
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { default as Popover } from "./Popover.svelte";
|
|
2
|
+
export { default as PopoverBackdrop } from "./PopoverBackdrop.svelte";
|
|
3
|
+
export { default as PopoverButton } from "./PopoverButton.svelte";
|
|
4
|
+
export { default as PopoverGroup } from "./PopoverGroup.svelte";
|
|
5
|
+
export { default as PopoverPanel } from "./PopoverPanel.svelte";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pzerelles/headlessui-svelte",
|
|
3
|
-
"version": "2.1.2-next.
|
|
3
|
+
"version": "2.1.2-next.20",
|
|
4
4
|
"exports": {
|
|
5
5
|
".": {
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -18,11 +18,11 @@
|
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"@changesets/cli": "^2.27.8",
|
|
20
20
|
"@changesets/types": "^6.0.0",
|
|
21
|
-
"@playwright/test": "^1.47.
|
|
21
|
+
"@playwright/test": "^1.47.1",
|
|
22
22
|
"@pzerelles/heroicons-svelte": "^2.1.5",
|
|
23
|
-
"@sveltejs/adapter-auto": "^3.2.
|
|
24
|
-
"@sveltejs/kit": "^2.5.
|
|
25
|
-
"@sveltejs/package": "^2.3.
|
|
23
|
+
"@sveltejs/adapter-auto": "^3.2.5",
|
|
24
|
+
"@sveltejs/kit": "^2.5.28",
|
|
25
|
+
"@sveltejs/package": "^2.3.5",
|
|
26
26
|
"@sveltejs/vite-plugin-svelte": "4.0.0-next.6",
|
|
27
27
|
"@testing-library/jest-dom": "^6.5.0",
|
|
28
28
|
"@testing-library/svelte": "^5.2.1",
|
|
@@ -35,24 +35,24 @@
|
|
|
35
35
|
"globals": "^15.9.0",
|
|
36
36
|
"jsdom": "^24.1.3",
|
|
37
37
|
"outdent": "^0.8.0",
|
|
38
|
-
"postcss": "^8.4.
|
|
38
|
+
"postcss": "^8.4.47",
|
|
39
39
|
"prettier": "^3.3.3",
|
|
40
40
|
"prettier-plugin-svelte": "^3.2.6",
|
|
41
41
|
"prettier-plugin-tailwindcss": "^0.6.6",
|
|
42
|
-
"publint": "^0.2.
|
|
43
|
-
"svelte": "
|
|
42
|
+
"publint": "^0.2.11",
|
|
43
|
+
"svelte": "5.0.0-next.249",
|
|
44
44
|
"svelte-check": "^3.8.6",
|
|
45
|
-
"tailwindcss": "^3.4.
|
|
45
|
+
"tailwindcss": "^3.4.12",
|
|
46
46
|
"tslib": "^2.7.0",
|
|
47
47
|
"typescript": "^5.6.2",
|
|
48
|
-
"typescript-eslint": "^8.
|
|
49
|
-
"vite": "^5.4.
|
|
50
|
-
"vitest": "^2.1.
|
|
48
|
+
"typescript-eslint": "^8.6.0",
|
|
49
|
+
"vite": "^5.4.6",
|
|
50
|
+
"vitest": "^2.1.1"
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"@floating-ui/core": "^1.6.
|
|
54
|
-
"@floating-ui/dom": "^1.6.
|
|
55
|
-
"@floating-ui/utils": "^0.2.
|
|
53
|
+
"@floating-ui/core": "^1.6.8",
|
|
54
|
+
"@floating-ui/dom": "^1.6.11",
|
|
55
|
+
"@floating-ui/utils": "^0.2.8",
|
|
56
56
|
"clsx": "^2.1.1",
|
|
57
57
|
"esm-env": "^1.0.0",
|
|
58
58
|
"nanoid": "^5.0.7"
|