@pzerelles/headlessui-svelte 2.1.2-next.3 → 2.1.2-next.31
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 +1 -1
- package/dist/button/Button.svelte.d.ts +9 -11
- package/dist/checkbox/Checkbox.svelte +4 -4
- package/dist/checkbox/Checkbox.svelte.d.ts +10 -14
- package/dist/close-button/CloseButton.svelte.d.ts +16 -18
- package/dist/data-interactive/DataInteractive.svelte.d.ts +8 -11
- package/dist/description/Description.svelte +19 -14
- package/dist/description/Description.svelte.d.ts +9 -11
- package/dist/description/context.svelte.js +14 -16
- package/dist/dialog/Dialog.svelte +245 -17
- package/dist/dialog/Dialog.svelte.d.ts +12 -14
- package/dist/dialog/DialogBackdrop.svelte +1 -1
- package/dist/dialog/DialogBackdrop.svelte.d.ts +9 -11
- package/dist/dialog/DialogPanel.svelte +1 -2
- package/dist/dialog/DialogPanel.svelte.d.ts +9 -11
- package/dist/dialog/DialogTitle.svelte.d.ts +8 -10
- package/dist/dialog/context.svelte.js +1 -1
- package/dist/field/Field.svelte +24 -12
- package/dist/field/Field.svelte.d.ts +9 -11
- package/dist/fieldset/Fieldset.svelte +1 -1
- package/dist/fieldset/Fieldset.svelte.d.ts +9 -11
- package/dist/focus-trap/FocusTrap.svelte +7 -14
- package/dist/focus-trap/FocusTrap.svelte.d.ts +11 -25
- package/dist/focus-trap/FocusTrapFeatures.d.ts +14 -0
- package/dist/focus-trap/FocusTrapFeatures.js +15 -0
- package/dist/hooks/use-controllable.svelte.js +2 -1
- package/dist/hooks/use-did-element-move.svelte.js +5 -10
- package/dist/hooks/use-disabled.d.ts +6 -1
- package/dist/hooks/use-disabled.js +10 -5
- 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 +4 -2
- package/dist/index.js +4 -2
- package/dist/input/Input.svelte +3 -3
- package/dist/input/Input.svelte.d.ts +10 -14
- package/dist/internal/FloatingProvider.svelte +12 -0
- package/dist/internal/FloatingProvider.svelte.d.ts +6 -0
- package/dist/internal/FocusSentinel.svelte.d.ts +2 -18
- package/dist/internal/ForcePortalRoot.svelte.d.ts +2 -18
- package/dist/internal/FormFields.svelte +22 -19
- package/dist/internal/FormFields.svelte.d.ts +2 -18
- package/dist/internal/FormFieldsProvider.svelte +13 -0
- package/dist/internal/FormFieldsProvider.svelte.d.ts +5 -0
- package/dist/internal/FormResolver.svelte.d.ts +2 -18
- package/dist/internal/Hidden.svelte +18 -8
- package/dist/internal/Hidden.svelte.d.ts +11 -16
- package/dist/internal/HiddenFeatures.d.ts +5 -0
- package/dist/internal/HiddenFeatures.js +9 -0
- package/dist/internal/MainTreeProvider.svelte.d.ts +2 -18
- package/dist/internal/Portal.svelte.d.ts +2 -18
- package/dist/internal/floating-provider.svelte.d.ts +3 -0
- package/dist/internal/floating-provider.svelte.js +206 -0
- package/dist/internal/floating.svelte.d.ts +46 -22
- package/dist/internal/floating.svelte.js +90 -272
- package/dist/internal/form-fields.svelte.d.ts +10 -0
- package/dist/internal/form-fields.svelte.js +23 -0
- package/dist/label/Label.svelte +6 -5
- package/dist/label/Label.svelte.d.ts +9 -11
- package/dist/label/context.svelte.js +1 -1
- package/dist/legend/Legend.svelte +2 -2
- package/dist/legend/Legend.svelte.d.ts +4 -32
- package/dist/listbox/Listbox.svelte +47 -68
- package/dist/listbox/Listbox.svelte.d.ts +18 -80
- package/dist/listbox/ListboxButton.svelte +10 -10
- package/dist/listbox/ListboxButton.svelte.d.ts +10 -15
- package/dist/listbox/ListboxOption.svelte +10 -6
- package/dist/listbox/ListboxOption.svelte.d.ts +9 -12
- package/dist/listbox/ListboxOptions.svelte +108 -54
- package/dist/listbox/ListboxOptions.svelte.d.ts +9 -12
- package/dist/listbox/ListboxSelectedOption.svelte +2 -4
- package/dist/listbox/ListboxSelectedOption.svelte.d.ts +14 -16
- package/dist/listbox/context.svelte.d.ts +76 -0
- package/dist/listbox/context.svelte.js +36 -0
- package/dist/listbox/index.d.ts +4 -4
- package/dist/listbox/index.js +1 -1
- package/dist/menu/Menu.svelte +13 -191
- package/dist/menu/Menu.svelte.d.ts +9 -13
- package/dist/menu/MenuButton.svelte +4 -2
- package/dist/menu/MenuButton.svelte.d.ts +9 -12
- package/dist/menu/MenuHeading.svelte.d.ts +9 -12
- package/dist/menu/MenuItem.svelte.d.ts +11 -16
- package/dist/menu/MenuItems.svelte +15 -11
- package/dist/menu/MenuItems.svelte.d.ts +9 -12
- package/dist/menu/MenuSection.svelte.d.ts +8 -11
- package/dist/menu/MenuSeparator.svelte.d.ts +8 -12
- package/dist/menu/context.svelte.d.ts +2 -1
- package/dist/menu/context.svelte.js +212 -2
- package/dist/menu/index.d.ts +7 -7
- package/dist/popover/Popover.svelte +161 -0
- package/dist/popover/Popover.svelte.d.ts +39 -0
- package/dist/popover/PopoverBackdrop.svelte +56 -0
- package/dist/popover/PopoverBackdrop.svelte.d.ts +43 -0
- package/dist/popover/PopoverButton.svelte +246 -0
- package/dist/popover/PopoverButton.svelte.d.ts +42 -0
- package/dist/popover/PopoverGroup.svelte +43 -0
- package/dist/popover/PopoverGroup.svelte.d.ts +31 -0
- package/dist/popover/PopoverPanel.svelte +274 -0
- package/dist/popover/PopoverPanel.svelte.d.ts +51 -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/dist/portal/InternalPortal.svelte.d.ts +9 -11
- package/dist/portal/Portal.svelte.d.ts +2 -6
- package/dist/portal/PortalGroup.svelte.d.ts +9 -11
- package/dist/select/Select.svelte +74 -0
- package/dist/select/Select.svelte.d.ts +46 -0
- package/dist/select/index.d.ts +1 -0
- package/dist/select/index.js +1 -0
- package/dist/switch/Switch.svelte +30 -20
- package/dist/switch/Switch.svelte.d.ts +10 -12
- package/dist/switch/SwitchGroup.svelte.d.ts +8 -10
- package/dist/tabs/Tab.svelte +8 -9
- package/dist/tabs/Tab.svelte.d.ts +9 -11
- package/dist/tabs/TabGroup.svelte +27 -190
- package/dist/tabs/TabGroup.svelte.d.ts +9 -31
- package/dist/tabs/TabList.svelte +4 -4
- package/dist/tabs/TabList.svelte.d.ts +8 -10
- package/dist/tabs/TabPanel.svelte +4 -5
- package/dist/tabs/TabPanel.svelte.d.ts +9 -11
- package/dist/tabs/TabPanels.svelte +3 -3
- package/dist/tabs/TabPanels.svelte.d.ts +8 -10
- package/dist/tabs/context.svelte.d.ts +31 -0
- package/dist/tabs/context.svelte.js +134 -0
- package/dist/textarea/Textarea.svelte +4 -4
- package/dist/textarea/Textarea.svelte.d.ts +21 -20
- package/dist/transition/InternalTransitionChild.svelte.d.ts +9 -11
- package/dist/transition/Transition.svelte.d.ts +9 -11
- package/dist/transition/TransitionChild.svelte.d.ts +9 -11
- package/dist/transition/context.svelte.js +2 -2
- package/dist/utils/DisabledProvider.svelte +6 -0
- package/dist/utils/DisabledProvider.svelte.d.ts +6 -0
- package/dist/utils/ElementOrComponent.svelte +2 -2
- package/dist/utils/ElementOrComponent.svelte.d.ts +12 -11
- package/dist/utils/Generic.svelte +10 -8
- package/dist/utils/Generic.svelte.d.ts +12 -15
- package/dist/utils/StableCollection.svelte.d.ts +2 -18
- package/dist/utils/alternative-types.d.ts +1 -2
- package/dist/utils/floating-ui/svelte/components/FloatingNode.svelte +17 -0
- package/dist/utils/floating-ui/svelte/components/FloatingNode.svelte.d.ts +7 -0
- package/dist/utils/floating-ui/svelte/components/FloatingTree.svelte +50 -0
- package/dist/utils/floating-ui/svelte/components/FloatingTree.svelte.d.ts +25 -0
- package/dist/utils/floating-ui/svelte/hooks/useFloating.svelte.d.ts +6 -0
- package/dist/utils/floating-ui/svelte/hooks/useFloating.svelte.js +158 -0
- package/dist/utils/floating-ui/svelte/hooks/useFloatingRootContext.svelte.d.ts +11 -0
- package/dist/utils/floating-ui/svelte/hooks/useFloatingRootContext.svelte.js +53 -0
- package/dist/utils/floating-ui/svelte/hooks/useId.svelte.d.ts +9 -0
- package/dist/utils/floating-ui/svelte/hooks/useId.svelte.js +28 -0
- package/dist/utils/floating-ui/svelte/hooks/useInteractions.svelte.d.ts +23 -0
- package/dist/utils/floating-ui/svelte/hooks/useInteractions.svelte.js +72 -0
- package/dist/utils/floating-ui/svelte/index.d.ts +5 -0
- package/dist/utils/floating-ui/svelte/index.js +5 -0
- package/dist/utils/floating-ui/svelte/inner.svelte.d.ts +83 -0
- package/dist/utils/floating-ui/svelte/inner.svelte.js +178 -0
- package/dist/utils/floating-ui/svelte/types.d.ts +114 -0
- package/dist/utils/floating-ui/svelte/types.js +1 -0
- package/dist/utils/floating-ui/svelte/utils/createPubSub.d.ts +5 -0
- package/dist/utils/floating-ui/svelte/utils/createPubSub.js +14 -0
- package/dist/utils/floating-ui/svelte/utils/getFloatingFocusElement.d.ts +2 -0
- package/dist/utils/floating-ui/svelte/utils/getFloatingFocusElement.js +13 -0
- package/dist/utils/floating-ui/svelte/utils/log.d.ts +2 -0
- package/dist/utils/floating-ui/svelte/utils/log.js +19 -0
- package/dist/utils/floating-ui/svelte/utils.d.ts +19 -0
- package/dist/utils/floating-ui/svelte/utils.js +136 -0
- package/dist/utils/floating-ui/svelte-dom/arrow.d.ts +22 -0
- package/dist/utils/floating-ui/svelte-dom/arrow.js +29 -0
- package/dist/utils/floating-ui/svelte-dom/index.d.ts +2 -0
- package/dist/utils/floating-ui/svelte-dom/index.js +2 -0
- package/dist/utils/floating-ui/svelte-dom/types.d.ts +80 -0
- package/dist/utils/floating-ui/svelte-dom/types.js +3 -0
- package/dist/utils/floating-ui/svelte-dom/useFloating.svelte.d.ts +6 -0
- package/dist/utils/floating-ui/svelte-dom/useFloating.svelte.js +182 -0
- package/dist/utils/floating-ui/svelte-dom/utils/deepEqual.d.ts +1 -0
- package/dist/utils/floating-ui/svelte-dom/utils/deepEqual.js +50 -0
- package/dist/utils/floating-ui/svelte-dom/utils/getDPR.d.ts +1 -0
- package/dist/utils/floating-ui/svelte-dom/utils/getDPR.js +7 -0
- package/dist/utils/floating-ui/svelte-dom/utils/roundByDPR.d.ts +1 -0
- package/dist/utils/floating-ui/svelte-dom/utils/roundByDPR.js +5 -0
- package/dist/utils/floating-ui/svelte-dom/utils/useLatestRef.d.ts +4 -0
- package/dist/utils/floating-ui/svelte-dom/utils/useLatestRef.js +7 -0
- package/dist/utils/id.d.ts +1 -1
- package/dist/utils/id.js +1 -1
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/style.d.ts +2 -0
- package/dist/utils/style.js +6 -0
- package/dist/utils/types.d.ts +9 -13
- package/package.json +27 -26
- package/dist/dialog/InternalDialog.svelte +0 -233
- package/dist/dialog/InternalDialog.svelte.d.ts +0 -42
- package/dist/internal/HoistFormFields.svelte +0 -11
- package/dist/internal/HoistFormFields.svelte.d.ts +0 -21
- package/dist/internal/id.d.ts +0 -8
- package/dist/internal/id.js +0 -11
|
@@ -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, type PopoverButtonComponentProps, type PopoverButtonSlot, type PopoverButtonPropsWeControl, } 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";
|
|
@@ -14,17 +14,17 @@ export type PortalProps<TTag extends ElementType = typeof DEFAULT_PORTAL_TAG> =
|
|
|
14
14
|
declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_PORTAL_TAG> {
|
|
15
15
|
props(): {
|
|
16
16
|
as?: TTag | undefined;
|
|
17
|
-
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "
|
|
18
|
-
children?: import("
|
|
17
|
+
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("slot" | "as" | "children" | "class" | "ref") | "enabled"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
|
|
18
|
+
children?: import("svelte").Snippet<[{
|
|
19
|
+
slot: PortalRenderPropArg;
|
|
20
|
+
props: Record<string, any>;
|
|
21
|
+
}]> | undefined;
|
|
22
|
+
class?: string | ((bag: PortalRenderPropArg) => string) | null | undefined;
|
|
19
23
|
ref?: HTMLElement;
|
|
20
|
-
} &
|
|
21
|
-
class?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: PortalRenderPropArg) => string) | undefined;
|
|
22
|
-
} : {}) & {
|
|
24
|
+
} & {
|
|
23
25
|
enabled?: boolean;
|
|
24
26
|
};
|
|
25
|
-
events(): {}
|
|
26
|
-
[evt: string]: CustomEvent<any>;
|
|
27
|
-
};
|
|
27
|
+
events(): {};
|
|
28
28
|
slots(): {};
|
|
29
29
|
bindings(): "ref";
|
|
30
30
|
exports(): {};
|
|
@@ -33,9 +33,7 @@ interface $$IsomorphicComponent {
|
|
|
33
33
|
new <TTag extends ElementType = typeof DEFAULT_PORTAL_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']>> & {
|
|
34
34
|
$$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
|
|
35
35
|
} & ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
36
|
-
<TTag extends ElementType = typeof DEFAULT_PORTAL_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
|
|
37
|
-
$$events?: ReturnType<__sveltets_Render<TTag>['events']>;
|
|
38
|
-
}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
36
|
+
<TTag extends ElementType = typeof DEFAULT_PORTAL_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
39
37
|
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
40
38
|
}
|
|
41
39
|
declare const InternalPortal: $$IsomorphicComponent;
|
|
@@ -2,9 +2,7 @@ import type { ElementType } from "../utils/types.js";
|
|
|
2
2
|
import { DEFAULT_PORTAL_TAG, type PortalProps } from "./InternalPortal.svelte";
|
|
3
3
|
declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_PORTAL_TAG> {
|
|
4
4
|
props(): PortalProps<TTag>;
|
|
5
|
-
events(): {}
|
|
6
|
-
[evt: string]: CustomEvent<any>;
|
|
7
|
-
};
|
|
5
|
+
events(): {};
|
|
8
6
|
slots(): {};
|
|
9
7
|
bindings(): "ref";
|
|
10
8
|
exports(): {};
|
|
@@ -13,9 +11,7 @@ interface $$IsomorphicComponent {
|
|
|
13
11
|
new <TTag extends ElementType = typeof DEFAULT_PORTAL_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']>> & {
|
|
14
12
|
$$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
|
|
15
13
|
} & ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
16
|
-
<TTag extends ElementType = typeof DEFAULT_PORTAL_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
|
|
17
|
-
$$events?: ReturnType<__sveltets_Render<TTag>['events']>;
|
|
18
|
-
}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
14
|
+
<TTag extends ElementType = typeof DEFAULT_PORTAL_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
19
15
|
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
20
16
|
}
|
|
21
17
|
declare const Portal: $$IsomorphicComponent;
|
|
@@ -11,17 +11,17 @@ export type PortalGroupProps<TTag extends ElementType = typeof DEFAULT_GROUP_TAG
|
|
|
11
11
|
declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_GROUP_TAG> {
|
|
12
12
|
props(): {
|
|
13
13
|
as?: TTag | undefined;
|
|
14
|
-
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "
|
|
15
|
-
children?: import("
|
|
14
|
+
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("slot" | "as" | "children" | "class" | "ref") | "target"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
|
|
15
|
+
children?: import("svelte").Snippet<[{
|
|
16
|
+
slot: GroupRenderPropArg;
|
|
17
|
+
props: Record<string, any>;
|
|
18
|
+
}]> | undefined;
|
|
19
|
+
class?: string | ((bag: GroupRenderPropArg) => string) | null | undefined;
|
|
16
20
|
ref?: HTMLElement;
|
|
17
|
-
} &
|
|
18
|
-
class?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: GroupRenderPropArg) => string) | undefined;
|
|
19
|
-
} : {}) & {
|
|
21
|
+
} & {
|
|
20
22
|
target: HTMLElement | null;
|
|
21
23
|
};
|
|
22
|
-
events(): {}
|
|
23
|
-
[evt: string]: CustomEvent<any>;
|
|
24
|
-
};
|
|
24
|
+
events(): {};
|
|
25
25
|
slots(): {};
|
|
26
26
|
bindings(): "ref";
|
|
27
27
|
exports(): {};
|
|
@@ -30,9 +30,7 @@ interface $$IsomorphicComponent {
|
|
|
30
30
|
new <TTag extends ElementType = typeof DEFAULT_GROUP_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
31
|
$$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
|
|
32
32
|
} & ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
33
|
-
<TTag extends ElementType = typeof DEFAULT_GROUP_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
|
|
34
|
-
$$events?: ReturnType<__sveltets_Render<TTag>['events']>;
|
|
35
|
-
}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
33
|
+
<TTag extends ElementType = typeof DEFAULT_GROUP_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
36
34
|
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
37
35
|
}
|
|
38
36
|
declare const PortalGroup: $$IsomorphicComponent;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
<script lang="ts" module>let DEFAULT_SELECT_TAG = "select";
|
|
2
|
+
</script>
|
|
3
|
+
|
|
4
|
+
<script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_SELECT_TAG">import { useId } from "../hooks/use-id.js";
|
|
5
|
+
import { useProvidedId } from "../utils/id.js";
|
|
6
|
+
import { useDisabled } from "../hooks/use-disabled.js";
|
|
7
|
+
import { useFocusRing } from "../hooks/use-focus-ring.svelte.js";
|
|
8
|
+
import { useHover } from "../hooks/use-hover.svelte.js";
|
|
9
|
+
import { useActivePress } from "../hooks/use-active-press.svelte.js";
|
|
10
|
+
import { useLabelledBy } from "../label/context.svelte.js";
|
|
11
|
+
import { useDescribedBy } from "../description/context.svelte.js";
|
|
12
|
+
import { mergeProps } from "../utils/render.js";
|
|
13
|
+
import ElementOrComponent from "../utils/ElementOrComponent.svelte";
|
|
14
|
+
const internalId = useId();
|
|
15
|
+
const providedId = useProvidedId();
|
|
16
|
+
const providedDisabled = useDisabled();
|
|
17
|
+
let {
|
|
18
|
+
ref = $bindable(),
|
|
19
|
+
id = providedId || `headlessui-select-${internalId}`,
|
|
20
|
+
disabled: theirDisabled = false,
|
|
21
|
+
invalid = false,
|
|
22
|
+
autofocus = false,
|
|
23
|
+
...theirProps
|
|
24
|
+
} = $props();
|
|
25
|
+
const disabled = $derived(providedDisabled.current ?? theirDisabled);
|
|
26
|
+
const labelledBy = useLabelledBy();
|
|
27
|
+
const describedBy = useDescribedBy();
|
|
28
|
+
const { isFocusVisible: focus, focusProps } = $derived(
|
|
29
|
+
useFocusRing({
|
|
30
|
+
get autofocus() {
|
|
31
|
+
return autofocus;
|
|
32
|
+
}
|
|
33
|
+
})
|
|
34
|
+
);
|
|
35
|
+
const { isHovered: hover, hoverProps } = $derived(
|
|
36
|
+
useHover({
|
|
37
|
+
get disabled() {
|
|
38
|
+
return disabled;
|
|
39
|
+
}
|
|
40
|
+
})
|
|
41
|
+
);
|
|
42
|
+
const { pressed: active, pressProps } = $derived(
|
|
43
|
+
useActivePress({
|
|
44
|
+
get disabled() {
|
|
45
|
+
return disabled;
|
|
46
|
+
}
|
|
47
|
+
})
|
|
48
|
+
);
|
|
49
|
+
const ourProps = $derived(
|
|
50
|
+
mergeProps(
|
|
51
|
+
{
|
|
52
|
+
id,
|
|
53
|
+
"aria-labelledby": labelledBy.value,
|
|
54
|
+
"aria-describedby": describedBy.value,
|
|
55
|
+
"aria-invalid": invalid ? "" : void 0,
|
|
56
|
+
disabled: disabled || void 0,
|
|
57
|
+
autofocus
|
|
58
|
+
},
|
|
59
|
+
focusProps,
|
|
60
|
+
hoverProps,
|
|
61
|
+
pressProps
|
|
62
|
+
)
|
|
63
|
+
);
|
|
64
|
+
const slot = $derived({
|
|
65
|
+
disabled,
|
|
66
|
+
invalid,
|
|
67
|
+
hover,
|
|
68
|
+
focus,
|
|
69
|
+
active,
|
|
70
|
+
autofocus
|
|
71
|
+
});
|
|
72
|
+
</script>
|
|
73
|
+
|
|
74
|
+
<ElementOrComponent {ourProps} {theirProps} {slot} defaultTag={DEFAULT_SELECT_TAG} name="Select" bind:ref />
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { ElementType, Props, PropsOf } from "../utils/types.js";
|
|
2
|
+
declare let DEFAULT_SELECT_TAG: "select";
|
|
3
|
+
type SelectRenderPropArg = {
|
|
4
|
+
disabled: boolean;
|
|
5
|
+
hover: boolean;
|
|
6
|
+
focus: boolean;
|
|
7
|
+
active: boolean;
|
|
8
|
+
autofocus: boolean;
|
|
9
|
+
invalid: boolean;
|
|
10
|
+
};
|
|
11
|
+
type SelectPropsWeControl = "aria-labelledby" | "aria-describedby";
|
|
12
|
+
export type SelectProps<TTag extends ElementType = typeof DEFAULT_SELECT_TAG> = Props<TTag, SelectRenderPropArg, SelectPropsWeControl, {
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
invalid?: boolean;
|
|
15
|
+
autofocus?: boolean;
|
|
16
|
+
}>;
|
|
17
|
+
declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_SELECT_TAG> {
|
|
18
|
+
props(): {
|
|
19
|
+
as?: TTag | undefined;
|
|
20
|
+
} & (Exclude<keyof PropsOf<TTag>, ("slot" | "as" | "children" | "class" | "ref") | "invalid" | "disabled" | "autofocus" | SelectPropsWeControl> extends infer T extends keyof PropsOf<TTag> ? { [P in T]: PropsOf<TTag>[P]; } : never) & {
|
|
21
|
+
children?: import("svelte").Snippet<[{
|
|
22
|
+
slot: SelectRenderPropArg;
|
|
23
|
+
props: Record<string, any>;
|
|
24
|
+
}]> | undefined;
|
|
25
|
+
class?: string | ((bag: SelectRenderPropArg) => string) | null | undefined;
|
|
26
|
+
ref?: HTMLElement;
|
|
27
|
+
} & {
|
|
28
|
+
disabled?: boolean;
|
|
29
|
+
invalid?: boolean;
|
|
30
|
+
autofocus?: boolean;
|
|
31
|
+
};
|
|
32
|
+
events(): {};
|
|
33
|
+
slots(): {};
|
|
34
|
+
bindings(): "ref";
|
|
35
|
+
exports(): {};
|
|
36
|
+
}
|
|
37
|
+
interface $$IsomorphicComponent {
|
|
38
|
+
new <TTag extends ElementType = typeof DEFAULT_SELECT_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']>> & {
|
|
39
|
+
$$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
|
|
40
|
+
} & ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
41
|
+
<TTag extends ElementType = typeof DEFAULT_SELECT_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
42
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
43
|
+
}
|
|
44
|
+
declare const Select: $$IsomorphicComponent;
|
|
45
|
+
type Select<TTag extends ElementType = typeof DEFAULT_SELECT_TAG> = InstanceType<typeof Select<TTag>>;
|
|
46
|
+
export default Select;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as Select, type SelectProps } from "./Select.svelte";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as Select } from "./Select.svelte";
|
|
@@ -3,9 +3,8 @@
|
|
|
3
3
|
|
|
4
4
|
<script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_SWITCH_TAG">import { useId } from "../hooks/use-id.js";
|
|
5
5
|
import { useDisabled } from "../hooks/use-disabled.js";
|
|
6
|
-
import { useProvidedId } from "../
|
|
7
|
-
import { getContext } from "svelte";
|
|
8
|
-
import { useDisposables } from "../utils/disposables.js";
|
|
6
|
+
import { useProvidedId } from "../utils/id.js";
|
|
7
|
+
import { getContext, tick } from "svelte";
|
|
9
8
|
import { attemptSubmit } from "../utils/form.js";
|
|
10
9
|
import { useLabelledBy } from "../label/context.svelte.js";
|
|
11
10
|
import { useDescribedBy } from "../description/context.svelte.js";
|
|
@@ -14,18 +13,19 @@ import { useResolveButtonType } from "../hooks/use-resolve-button-type.svelte.js
|
|
|
14
13
|
import { useFocusRing } from "../hooks/use-focus-ring.svelte.js";
|
|
15
14
|
import { useHover } from "../hooks/use-hover.svelte.js";
|
|
16
15
|
import { useActivePress } from "../hooks/use-active-press.svelte.js";
|
|
16
|
+
import { useControllable } from "../hooks/use-controllable.svelte.js";
|
|
17
17
|
import FormFields from "../internal/FormFields.svelte";
|
|
18
18
|
import ElementOrComponent from "../utils/ElementOrComponent.svelte";
|
|
19
19
|
const internalId = useId();
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
const providedId = useProvidedId();
|
|
21
|
+
const providedDisabled = useDisabled();
|
|
22
22
|
let {
|
|
23
23
|
ref = $bindable(),
|
|
24
|
-
id
|
|
25
|
-
disabled:
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
onchange,
|
|
24
|
+
id = providedId || `headlessui-switch-${internalId}`,
|
|
25
|
+
disabled: theirDisabled = false,
|
|
26
|
+
checked: controlledChecked = $bindable(),
|
|
27
|
+
defaultChecked: _defaultChecked,
|
|
28
|
+
onchange: controlledOnChange,
|
|
29
29
|
name,
|
|
30
30
|
value,
|
|
31
31
|
form,
|
|
@@ -33,19 +33,30 @@ let {
|
|
|
33
33
|
tabIndex,
|
|
34
34
|
...theirProps
|
|
35
35
|
} = $props();
|
|
36
|
-
const
|
|
37
|
-
const disabled = $derived(ownDisabled || providedDisabled || false);
|
|
36
|
+
const disabled = $derived(providedDisabled.current ?? theirDisabled);
|
|
38
37
|
const groupContext = getContext("GroupContext");
|
|
39
38
|
$effect(() => {
|
|
40
39
|
if (groupContext) groupContext.switchElement = ref ?? null;
|
|
41
40
|
});
|
|
42
|
-
const
|
|
41
|
+
const defaultChecked = _defaultChecked;
|
|
42
|
+
const controllable = useControllable(
|
|
43
|
+
{
|
|
44
|
+
get controlledValue() {
|
|
45
|
+
return controlledChecked;
|
|
46
|
+
},
|
|
47
|
+
set controlledValue(checked2) {
|
|
48
|
+
controlledChecked = checked2;
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
controlledOnChange,
|
|
52
|
+
defaultChecked ?? false
|
|
53
|
+
);
|
|
54
|
+
const { value: checked, onchange } = $derived(controllable);
|
|
43
55
|
let changing = $state(false);
|
|
44
56
|
const toggle = () => {
|
|
45
57
|
changing = true;
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
d.nextFrame(() => {
|
|
58
|
+
onchange?.(!checked);
|
|
59
|
+
tick().then(() => {
|
|
49
60
|
changing = false;
|
|
50
61
|
});
|
|
51
62
|
};
|
|
@@ -123,11 +134,10 @@ const ourProps = $derived(
|
|
|
123
134
|
pressProps
|
|
124
135
|
)
|
|
125
136
|
);
|
|
126
|
-
const reset = () => {
|
|
137
|
+
const reset = $derived(() => {
|
|
127
138
|
if (defaultChecked === void 0) return;
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
};
|
|
139
|
+
return onchange?.(defaultChecked);
|
|
140
|
+
});
|
|
131
141
|
</script>
|
|
132
142
|
|
|
133
143
|
{#if name}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ElementType, Props } from "../utils/types.js";
|
|
1
|
+
import type { ElementType, Props, PropsOf } from "../utils/types.js";
|
|
2
2
|
declare const DEFAULT_SWITCH_TAG: "button";
|
|
3
3
|
type SwitchRenderPropArg = {
|
|
4
4
|
checked: boolean;
|
|
@@ -24,12 +24,14 @@ export type SwitchProps<TTag extends ElementType = typeof DEFAULT_SWITCH_TAG> =
|
|
|
24
24
|
declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_SWITCH_TAG> {
|
|
25
25
|
props(): {
|
|
26
26
|
as?: TTag | undefined;
|
|
27
|
-
} & (Exclude<keyof
|
|
28
|
-
children?: import("
|
|
27
|
+
} & (Exclude<keyof PropsOf<TTag>, "form" | ("slot" | "as" | "children" | "class" | "ref") | "disabled" | "autofocus" | "value" | "checked" | "name" | "onchange" | "tabIndex" | "defaultChecked" | SwitchPropsWeControl> extends infer T extends keyof PropsOf<TTag> ? { [P in T]: PropsOf<TTag>[P]; } : never) & {
|
|
28
|
+
children?: import("svelte").Snippet<[{
|
|
29
|
+
slot: SwitchRenderPropArg;
|
|
30
|
+
props: Record<string, any>;
|
|
31
|
+
}]> | undefined;
|
|
32
|
+
class?: string | ((bag: SwitchRenderPropArg) => string) | null | undefined;
|
|
29
33
|
ref?: HTMLElement;
|
|
30
|
-
} &
|
|
31
|
-
class?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: SwitchRenderPropArg) => string) | undefined;
|
|
32
|
-
} : {}) & {
|
|
34
|
+
} & {
|
|
33
35
|
checked?: boolean;
|
|
34
36
|
defaultChecked?: boolean;
|
|
35
37
|
onchange?(checked: boolean): void;
|
|
@@ -40,9 +42,7 @@ declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_SWITCH
|
|
|
40
42
|
disabled?: boolean;
|
|
41
43
|
tabIndex?: number;
|
|
42
44
|
};
|
|
43
|
-
events(): {}
|
|
44
|
-
[evt: string]: CustomEvent<any>;
|
|
45
|
-
};
|
|
45
|
+
events(): {};
|
|
46
46
|
slots(): {};
|
|
47
47
|
bindings(): "ref" | "checked";
|
|
48
48
|
exports(): {};
|
|
@@ -51,9 +51,7 @@ interface $$IsomorphicComponent {
|
|
|
51
51
|
new <TTag extends ElementType = typeof DEFAULT_SWITCH_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']>> & {
|
|
52
52
|
$$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
|
|
53
53
|
} & ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
54
|
-
<TTag extends ElementType = typeof DEFAULT_SWITCH_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
|
|
55
|
-
$$events?: ReturnType<__sveltets_Render<TTag>['events']>;
|
|
56
|
-
}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
54
|
+
<TTag extends ElementType = typeof DEFAULT_SWITCH_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
57
55
|
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
58
56
|
}
|
|
59
57
|
declare const Switch: $$IsomorphicComponent;
|
|
@@ -7,15 +7,15 @@ export type GroupContext = {
|
|
|
7
7
|
declare class __sveltets_Render<TTag extends ElementType = typeof DEFAULT_GROUP_TAG> {
|
|
8
8
|
props(): {
|
|
9
9
|
as?: TTag | undefined;
|
|
10
|
-
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, "as" | "children" | "
|
|
11
|
-
children?: import("
|
|
10
|
+
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, "slot" | "as" | "children" | "class" | "ref"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
|
|
11
|
+
children?: import("svelte").Snippet<[{
|
|
12
|
+
slot: {};
|
|
13
|
+
props: Record<string, any>;
|
|
14
|
+
}]> | undefined;
|
|
15
|
+
class?: string | ((bag: {}) => string) | null | undefined;
|
|
12
16
|
ref?: HTMLElement;
|
|
13
|
-
} & (true extends (import("../utils/types.js").PropsOf<TTag> extends infer T_1 ? T_1 extends import("../utils/types.js").PropsOf<TTag> ? T_1 extends never ? never : "class" extends infer T_2 ? T_2 extends "class" ? T_2 extends keyof T_1 ? true : never : never : never : never : never) ? {
|
|
14
|
-
class?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: {}) => string) | undefined;
|
|
15
|
-
} : {});
|
|
16
|
-
events(): {} & {
|
|
17
|
-
[evt: string]: CustomEvent<any>;
|
|
18
17
|
};
|
|
18
|
+
events(): {};
|
|
19
19
|
slots(): {};
|
|
20
20
|
bindings(): "ref";
|
|
21
21
|
exports(): {};
|
|
@@ -24,9 +24,7 @@ interface $$IsomorphicComponent {
|
|
|
24
24
|
new <TTag extends ElementType = typeof DEFAULT_GROUP_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']>> & {
|
|
25
25
|
$$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
|
|
26
26
|
} & ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
27
|
-
<TTag extends ElementType = typeof DEFAULT_GROUP_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
|
|
28
|
-
$$events?: ReturnType<__sveltets_Render<TTag>['events']>;
|
|
29
|
-
}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
27
|
+
<TTag extends ElementType = typeof DEFAULT_GROUP_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
30
28
|
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
31
29
|
}
|
|
32
30
|
declare const SwitchGroup: $$IsomorphicComponent;
|
package/dist/tabs/Tab.svelte
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
</script>
|
|
3
3
|
|
|
4
4
|
<script lang="ts" generics="TTag extends ElementType = typeof DEFAULT_TAB_TAG">import { useId } from "../hooks/use-id.js";
|
|
5
|
-
import { useActions, useData } from "./TabGroup.svelte";
|
|
6
5
|
import { useStableCollectionIndex } from "../utils/StableCollection.svelte";
|
|
7
6
|
import { Focus, focusIn, FocusResult } from "../utils/focus-management.js";
|
|
8
7
|
import { getOwnerDocument } from "../utils/owner.js";
|
|
@@ -15,6 +14,7 @@ import { onMount } from "svelte";
|
|
|
15
14
|
import { useHover } from "../hooks/use-hover.svelte.js";
|
|
16
15
|
import { mergeProps } from "../utils/render.js";
|
|
17
16
|
import ElementOrComponent from "../utils/ElementOrComponent.svelte";
|
|
17
|
+
import { useTabs } from "./context.svelte.js";
|
|
18
18
|
const internalId = useId();
|
|
19
19
|
let {
|
|
20
20
|
ref = $bindable(),
|
|
@@ -23,11 +23,10 @@ let {
|
|
|
23
23
|
autofocus = false,
|
|
24
24
|
...theirProps
|
|
25
25
|
} = $props();
|
|
26
|
-
const
|
|
27
|
-
const { orientation, activation, selectedIndex, tabs, panels } = $derived(
|
|
28
|
-
const actions = useActions("Tab");
|
|
26
|
+
const context = useTabs("Tab");
|
|
27
|
+
const { orientation, activation, selectedIndex, tabs, panels, registerTab, change } = $derived(context);
|
|
29
28
|
const tabRef = $derived({ current: ref });
|
|
30
|
-
onMount(() =>
|
|
29
|
+
onMount(() => registerTab(tabRef));
|
|
31
30
|
const mySSRIndex = useStableCollectionIndex("tabs");
|
|
32
31
|
const myIndex = $derived.by(() => {
|
|
33
32
|
const index = tabs.findIndex((tab) => tab === tabRef);
|
|
@@ -38,8 +37,8 @@ const activateUsing = $derived((cb) => {
|
|
|
38
37
|
let result = cb();
|
|
39
38
|
if (result === FocusResult.Success && activation === "auto") {
|
|
40
39
|
let newTab = getOwnerDocument(ref)?.activeElement;
|
|
41
|
-
let idx =
|
|
42
|
-
if (idx !== -1)
|
|
40
|
+
let idx = context.tabs.findIndex((tab) => tab.current === newTab);
|
|
41
|
+
if (idx !== -1) change(idx);
|
|
43
42
|
}
|
|
44
43
|
return result;
|
|
45
44
|
});
|
|
@@ -48,7 +47,7 @@ const handleKeyDown = (event) => {
|
|
|
48
47
|
if (event.key === " " || event.key === "Enter") {
|
|
49
48
|
event.preventDefault();
|
|
50
49
|
event.stopPropagation();
|
|
51
|
-
|
|
50
|
+
change(myIndex);
|
|
52
51
|
return;
|
|
53
52
|
}
|
|
54
53
|
switch (event.key) {
|
|
@@ -86,7 +85,7 @@ const handleSelection = () => {
|
|
|
86
85
|
if (ready) return;
|
|
87
86
|
ready = true;
|
|
88
87
|
ref?.focus({ preventScroll: true });
|
|
89
|
-
|
|
88
|
+
change(myIndex);
|
|
90
89
|
microTask(() => {
|
|
91
90
|
ready = false;
|
|
92
91
|
});
|