@pzerelles/headlessui-svelte 2.1.2-next.5 → 2.1.2-next.50
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 +16 -19
- package/dist/button/Button.svelte.d.ts +8 -36
- package/dist/button/index.d.ts +1 -1
- package/dist/button/index.js +1 -1
- package/dist/checkbox/Checkbox.svelte +31 -27
- package/dist/checkbox/Checkbox.svelte.d.ts +17 -38
- package/dist/checkbox/index.d.ts +1 -1
- package/dist/checkbox/index.js +1 -1
- package/dist/close-button/CloseButton.svelte +4 -7
- package/dist/close-button/CloseButton.svelte.d.ts +3 -46
- package/dist/close-button/index.d.ts +1 -0
- package/dist/close-button/index.js +1 -0
- package/dist/data-interactive/DataInteractive.svelte +6 -22
- package/dist/data-interactive/DataInteractive.svelte.d.ts +9 -34
- package/dist/data-interactive/index.d.ts +1 -1
- package/dist/data-interactive/index.js +1 -1
- package/dist/description/Description.svelte +29 -24
- package/dist/description/Description.svelte.d.ts +9 -30
- package/dist/description/context.svelte.js +14 -16
- package/dist/description/index.d.ts +1 -1
- package/dist/dialog/Dialog.svelte +315 -31
- package/dist/dialog/Dialog.svelte.d.ts +7 -45
- package/dist/dialog/DialogBackdrop.svelte +11 -14
- package/dist/dialog/DialogBackdrop.svelte.d.ts +8 -33
- package/dist/dialog/DialogPanel.svelte +23 -19
- package/dist/dialog/DialogPanel.svelte.d.ts +8 -34
- package/dist/dialog/DialogTitle.svelte +17 -8
- package/dist/dialog/DialogTitle.svelte.d.ts +9 -30
- package/dist/dialog/context.svelte.js +2 -2
- package/dist/dialog/index.d.ts +4 -4
- package/dist/dialog/index.js +4 -4
- package/dist/disclosure/Disclosure.svelte +61 -0
- package/dist/disclosure/Disclosure.svelte.d.ts +14 -0
- package/dist/disclosure/DisclosureButton.svelte +191 -0
- package/dist/disclosure/DisclosureButton.svelte.d.ts +19 -0
- package/dist/disclosure/DisclosurePanel.svelte +98 -0
- package/dist/disclosure/DisclosurePanel.svelte.d.ts +16 -0
- package/dist/disclosure/context.svelte.d.ts +32 -0
- package/dist/disclosure/context.svelte.js +94 -0
- package/dist/disclosure/index.d.ts +3 -0
- package/dist/disclosure/index.js +3 -0
- package/dist/field/Field.svelte +27 -26
- package/dist/field/Field.svelte.d.ts +7 -34
- package/dist/field/index.d.ts +1 -1
- package/dist/fieldset/Fieldset.svelte +21 -20
- package/dist/fieldset/Fieldset.svelte.d.ts +8 -35
- package/dist/fieldset/index.d.ts +1 -1
- package/dist/focus-trap/FocusTrap.svelte +29 -36
- package/dist/focus-trap/FocusTrap.svelte.d.ts +8 -38
- package/dist/hooks/use-controllable.svelte.js +3 -2
- 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-element-size.svelte.js +1 -1
- 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-focus-ring.svelte.js +1 -1
- package/dist/hooks/use-inert-others.svelte.js +10 -10
- package/dist/hooks/use-is-top-layer.svelte.js +2 -2
- package/dist/hooks/use-resolve-button-type.svelte.js +0 -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/hooks/use-transition.svelte.js +2 -2
- package/dist/index.d.ts +6 -2
- package/dist/index.js +6 -2
- package/dist/input/Input.svelte +28 -21
- package/dist/input/Input.svelte.d.ts +16 -33
- package/dist/input/index.d.ts +1 -1
- package/dist/input/index.js +1 -1
- package/dist/internal/FloatingProvider.svelte +17 -0
- package/dist/internal/FloatingProvider.svelte.d.ts +8 -0
- package/dist/internal/FocusSentinel.svelte +33 -32
- package/dist/internal/FocusSentinel.svelte.d.ts +4 -18
- package/dist/internal/ForcePortalRoot.svelte.d.ts +4 -18
- package/dist/internal/FormFields.svelte +18 -13
- package/dist/internal/FormFields.svelte.d.ts +4 -18
- package/dist/internal/FormFieldsProvider.svelte +17 -0
- package/dist/internal/FormFieldsProvider.svelte.d.ts +7 -0
- package/dist/internal/FormResolver.svelte +6 -2
- package/dist/internal/FormResolver.svelte.d.ts +4 -18
- package/dist/internal/Hidden.svelte +10 -10
- package/dist/internal/Hidden.svelte.d.ts +6 -33
- package/dist/internal/MainTreeProvider.svelte +1 -1
- package/dist/internal/MainTreeProvider.svelte.d.ts +4 -18
- package/dist/internal/Portal.svelte.d.ts +4 -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/internal/frozen.svelte.js +1 -1
- package/dist/label/Label.svelte +17 -13
- package/dist/label/Label.svelte.d.ts +8 -33
- package/dist/label/context.svelte.js +1 -1
- package/dist/label/index.d.ts +1 -1
- package/dist/legend/Legend.svelte +22 -15
- package/dist/legend/Legend.svelte.d.ts +10 -34
- package/dist/listbox/Listbox.svelte +79 -151
- package/dist/listbox/Listbox.svelte.d.ts +16 -91
- package/dist/listbox/ListboxButton.svelte +31 -29
- package/dist/listbox/ListboxButton.svelte.d.ts +8 -38
- package/dist/listbox/ListboxOption.svelte +40 -27
- package/dist/listbox/ListboxOption.svelte.d.ts +16 -32
- package/dist/listbox/ListboxOptions.svelte +126 -72
- package/dist/listbox/ListboxOptions.svelte.d.ts +8 -43
- package/dist/listbox/ListboxSelectedOption.svelte +24 -26
- package/dist/listbox/ListboxSelectedOption.svelte.d.ts +14 -39
- package/dist/listbox/context.svelte.d.ts +76 -0
- package/dist/listbox/context.svelte.js +36 -0
- package/dist/listbox/index.d.ts +5 -5
- package/dist/listbox/index.js +4 -4
- package/dist/menu/Menu.svelte +22 -266
- package/dist/menu/Menu.svelte.d.ts +7 -37
- package/dist/menu/MenuButton.svelte +29 -24
- package/dist/menu/MenuButton.svelte.d.ts +8 -39
- package/dist/menu/MenuHeading.svelte +12 -16
- package/dist/menu/MenuHeading.svelte.d.ts +7 -36
- package/dist/menu/MenuItem.svelte +18 -23
- package/dist/menu/MenuItem.svelte.d.ts +9 -39
- package/dist/menu/MenuItems.svelte +33 -34
- package/dist/menu/MenuItems.svelte.d.ts +8 -43
- package/dist/menu/MenuSection.svelte +9 -12
- package/dist/menu/MenuSection.svelte.d.ts +7 -33
- package/dist/menu/MenuSeparator.svelte +9 -12
- package/dist/menu/MenuSeparator.svelte.d.ts +7 -33
- 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/menu/index.js +3 -3
- package/dist/popover/Popover.svelte +228 -0
- package/dist/popover/Popover.svelte.d.ts +15 -0
- package/dist/popover/PopoverBackdrop.svelte +83 -0
- package/dist/popover/PopoverBackdrop.svelte.d.ts +17 -0
- package/dist/popover/PopoverButton.svelte +324 -0
- package/dist/popover/PopoverButton.svelte.d.ts +21 -0
- package/dist/popover/PopoverGroup.svelte +66 -0
- package/dist/popover/PopoverGroup.svelte.d.ts +9 -0
- package/dist/popover/PopoverPanel.svelte +359 -0
- package/dist/popover/PopoverPanel.svelte.d.ts +22 -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 +17 -17
- package/dist/portal/InternalPortal.svelte.d.ts +6 -33
- package/dist/portal/Portal.svelte +7 -6
- package/dist/portal/Portal.svelte.d.ts +3 -22
- package/dist/portal/PortalGroup.svelte +6 -14
- package/dist/portal/PortalGroup.svelte.d.ts +5 -34
- package/dist/radio-group/Radio.svelte +142 -0
- package/dist/radio-group/Radio.svelte.d.ts +35 -0
- package/dist/radio-group/RadioGroup.svelte +222 -0
- package/dist/radio-group/RadioGroup.svelte.d.ts +34 -0
- package/dist/radio-group/RadioOption.svelte +145 -0
- package/dist/radio-group/RadioOption.svelte.d.ts +37 -0
- package/dist/radio-group/contest.svelte.d.ts +30 -0
- package/dist/radio-group/contest.svelte.js +40 -0
- package/dist/radio-group/index.d.ts +3 -0
- package/dist/radio-group/index.js +3 -0
- package/dist/select/Select.svelte +112 -0
- package/dist/select/Select.svelte.d.ts +21 -0
- package/dist/select/index.d.ts +1 -0
- package/dist/select/index.js +1 -0
- package/dist/switch/Switch.svelte +27 -28
- package/dist/switch/Switch.svelte.d.ts +9 -42
- package/dist/switch/SwitchGroup.svelte +5 -5
- package/dist/switch/SwitchGroup.svelte.d.ts +8 -30
- package/dist/switch/index.d.ts +1 -1
- package/dist/switch/index.js +1 -1
- package/dist/tabs/Tab.svelte +28 -31
- package/dist/tabs/Tab.svelte.d.ts +8 -36
- package/dist/tabs/TabGroup.svelte +42 -264
- package/dist/tabs/TabGroup.svelte.d.ts +7 -57
- package/dist/tabs/TabList.svelte +13 -16
- package/dist/tabs/TabList.svelte.d.ts +8 -31
- package/dist/tabs/TabPanel.svelte +20 -20
- package/dist/tabs/TabPanel.svelte.d.ts +8 -38
- package/dist/tabs/TabPanels.svelte +11 -9
- package/dist/tabs/TabPanels.svelte.d.ts +8 -30
- package/dist/tabs/context.svelte.d.ts +31 -0
- package/dist/tabs/context.svelte.js +134 -0
- package/dist/tabs/index.d.ts +5 -5
- package/dist/tabs/index.js +4 -4
- package/dist/textarea/Textarea.svelte +24 -20
- package/dist/textarea/Textarea.svelte.d.ts +18 -30
- package/dist/textarea/index.d.ts +1 -1
- package/dist/textarea/index.js +1 -1
- package/dist/transition/InternalTransitionChild.svelte +36 -22
- package/dist/transition/InternalTransitionChild.svelte.d.ts +6 -37
- package/dist/transition/Transition.svelte +16 -17
- package/dist/transition/Transition.svelte.d.ts +8 -38
- package/dist/transition/TransitionChild.svelte +13 -12
- package/dist/transition/TransitionChild.svelte.d.ts +11 -38
- package/dist/transition/context.svelte.js +11 -11
- package/dist/transition/index.d.ts +2 -2
- package/dist/transition/index.js +2 -2
- package/dist/utils/DisabledProvider.svelte +10 -0
- package/dist/utils/DisabledProvider.svelte.d.ts +8 -0
- package/dist/utils/ElementOrComponent.svelte +58 -17
- package/dist/utils/ElementOrComponent.svelte.d.ts +19 -30
- package/dist/utils/StableCollection.svelte.d.ts +4 -18
- package/dist/utils/floating-ui/svelte/components/FloatingNode.svelte +32 -0
- package/dist/utils/floating-ui/svelte/components/FloatingNode.svelte.d.ts +8 -0
- package/dist/utils/floating-ui/svelte/components/FloatingTree.svelte +94 -0
- package/dist/utils/floating-ui/svelte/components/FloatingTree.svelte.d.ts +26 -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/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 +183 -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/state.js +4 -4
- package/dist/utils/style.d.ts +2 -0
- package/dist/utils/style.js +6 -0
- package/dist/utils/types.d.ts +13 -19
- package/package.json +54 -53
- package/dist/combobox/Combobox.svelte +0 -53
- package/dist/combobox/Combobox.svelte.d.ts +0 -50
- package/dist/dialog/InternalDialog.svelte +0 -294
- package/dist/dialog/InternalDialog.svelte.d.ts +0 -42
- package/dist/internal/HoistFormFields.svelte +0 -14
- package/dist/internal/HoistFormFields.svelte.d.ts +0 -21
- package/dist/internal/id.d.ts +0 -8
- package/dist/internal/id.js +0 -11
- package/dist/listbox/ListboxStates.d.ts +0 -12
- package/dist/listbox/ListboxStates.js +0 -15
- package/dist/utils/Generic.svelte +0 -56
- package/dist/utils/Generic.svelte.d.ts +0 -35
- package/dist/utils/alternative-types.d.ts +0 -21
- /package/dist/utils/{alternative-types.js → floating-ui/svelte/types.js} +0 -0
|
@@ -1,35 +1,12 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Props } from "../utils/types.js";
|
|
2
2
|
declare const DEFAULT_LIST_TAG: "div";
|
|
3
|
-
type ListRenderPropArg = {
|
|
3
|
+
export type ListRenderPropArg = {
|
|
4
4
|
selectedIndex: number;
|
|
5
5
|
};
|
|
6
|
-
type
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
children?: import("../utils/types.js").Children<ListRenderPropArg> | undefined;
|
|
13
|
-
ref?: HTMLElement;
|
|
14
|
-
} & (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) ? {
|
|
15
|
-
class?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: ListRenderPropArg) => string) | undefined;
|
|
16
|
-
} : {});
|
|
17
|
-
events(): {} & {
|
|
18
|
-
[evt: string]: CustomEvent<any>;
|
|
19
|
-
};
|
|
20
|
-
slots(): {};
|
|
21
|
-
bindings(): "ref";
|
|
22
|
-
exports(): {};
|
|
23
|
-
}
|
|
24
|
-
interface $$IsomorphicComponent {
|
|
25
|
-
new <TTag extends ElementType = typeof DEFAULT_LIST_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']>> & {
|
|
26
|
-
$$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
|
|
27
|
-
} & ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
28
|
-
<TTag extends ElementType = typeof DEFAULT_LIST_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
|
|
29
|
-
$$events?: ReturnType<__sveltets_Render<TTag>['events']>;
|
|
30
|
-
}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
31
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
32
|
-
}
|
|
33
|
-
declare const TabList: $$IsomorphicComponent;
|
|
34
|
-
type TabList<TTag extends ElementType = typeof DEFAULT_LIST_TAG> = InstanceType<typeof TabList<TTag>>;
|
|
6
|
+
export type TabListOwnProps = {
|
|
7
|
+
element?: HTMLElement;
|
|
8
|
+
};
|
|
9
|
+
export type TabListProps = Props<typeof DEFAULT_LIST_TAG, ListRenderPropArg, TabListOwnProps>;
|
|
10
|
+
declare const TabList: import("svelte").Component<TabListProps, {}, "element">;
|
|
11
|
+
type TabList = ReturnType<typeof TabList>;
|
|
35
12
|
export default TabList;
|
|
@@ -1,47 +1,47 @@
|
|
|
1
1
|
<script lang="ts" module>
|
|
2
|
-
import type {
|
|
2
|
+
import type { Props } from "../utils/types.js"
|
|
3
3
|
|
|
4
4
|
const DEFAULT_PANEL_TAG = "div" as const
|
|
5
|
-
type PanelRenderPropArg = {
|
|
5
|
+
export type PanelRenderPropArg = {
|
|
6
6
|
selected: boolean
|
|
7
7
|
focus: boolean
|
|
8
8
|
}
|
|
9
9
|
type PanelPropsWeControl = "role" | "aria-labelledby"
|
|
10
10
|
const PanelRenderFeatures = RenderFeatures.RenderStrategy | RenderFeatures.Static
|
|
11
11
|
|
|
12
|
-
export type
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
export type TabPanelOwnProps = PropsForFeatures<typeof PanelRenderFeatures> & {
|
|
13
|
+
element?: HTMLElement
|
|
14
|
+
id?: string
|
|
15
|
+
tabIndex?: number
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export type TabPanelProps = Props<typeof DEFAULT_PANEL_TAG, PanelRenderPropArg, TabPanelOwnProps>
|
|
18
19
|
</script>
|
|
19
20
|
|
|
20
|
-
<script lang="ts"
|
|
21
|
+
<script lang="ts">
|
|
21
22
|
import { useId } from "../hooks/use-id.js"
|
|
22
23
|
import { mergeProps, RenderFeatures, type PropsForFeatures } from "../utils/render.js"
|
|
23
|
-
import { useActions, useData } from "./TabGroup.svelte"
|
|
24
24
|
import { useStableCollectionIndex } from "../utils/StableCollection.svelte"
|
|
25
25
|
import { useFocusRing } from "../hooks/use-focus-ring.svelte.js"
|
|
26
26
|
import Hidden from "../internal/Hidden.svelte"
|
|
27
27
|
import type { MutableRefObject } from "../utils/ref.svelte.js"
|
|
28
28
|
import { onMount } from "svelte"
|
|
29
29
|
import ElementOrComponent from "../utils/ElementOrComponent.svelte"
|
|
30
|
+
import { useTabs } from "./context.svelte.js"
|
|
30
31
|
|
|
31
32
|
const internalId = useId()
|
|
32
33
|
let {
|
|
33
|
-
|
|
34
|
+
element = $bindable(),
|
|
34
35
|
id = `headlessui-tabs-panel-${internalId}`,
|
|
35
36
|
tabIndex = 0,
|
|
36
37
|
...theirProps
|
|
37
|
-
}:
|
|
38
|
-
const
|
|
39
|
-
const { selectedIndex, tabs, panels } = $derived(
|
|
40
|
-
const actions = useActions("Tab.Panel")
|
|
38
|
+
}: TabPanelProps = $props()
|
|
39
|
+
const context = useTabs("TabPanel")
|
|
40
|
+
const { selectedIndex, tabs, panels, registerPanel } = $derived(context)
|
|
41
41
|
|
|
42
|
-
const panelRef = $derived<MutableRefObject<HTMLElement | undefined>>({ current:
|
|
42
|
+
const panelRef = $derived<MutableRefObject<HTMLElement | undefined>>({ current: element })
|
|
43
43
|
|
|
44
|
-
onMount(() =>
|
|
44
|
+
onMount(() => registerPanel(panelRef))
|
|
45
45
|
|
|
46
46
|
const mySSRIndex = useStableCollectionIndex("panels")
|
|
47
47
|
|
|
@@ -72,15 +72,15 @@
|
|
|
72
72
|
</script>
|
|
73
73
|
|
|
74
74
|
{#if !selected && (theirProps.unmount ?? true) && !(theirProps.static ?? false)}
|
|
75
|
-
<Hidden aria-hidden="true" {...ourProps} bind:
|
|
75
|
+
<Hidden aria-hidden="true" {...ourProps} bind:element />
|
|
76
76
|
{:else}
|
|
77
77
|
<ElementOrComponent
|
|
78
78
|
{ourProps}
|
|
79
79
|
{theirProps}
|
|
80
|
-
{slot}
|
|
80
|
+
slots={slot}
|
|
81
81
|
defaultTag={DEFAULT_PANEL_TAG}
|
|
82
82
|
features={PanelRenderFeatures}
|
|
83
83
|
name="TabPanel"
|
|
84
|
-
bind:
|
|
84
|
+
bind:element
|
|
85
85
|
/>
|
|
86
86
|
{/if}
|
|
@@ -1,47 +1,17 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Props } from "../utils/types.js";
|
|
2
2
|
declare const DEFAULT_PANEL_TAG: "div";
|
|
3
|
-
type PanelRenderPropArg = {
|
|
3
|
+
export type PanelRenderPropArg = {
|
|
4
4
|
selected: boolean;
|
|
5
5
|
focus: boolean;
|
|
6
6
|
};
|
|
7
|
-
type PanelPropsWeControl = "role" | "aria-labelledby";
|
|
8
7
|
declare const PanelRenderFeatures: number;
|
|
9
|
-
export type
|
|
8
|
+
export type TabPanelOwnProps = PropsForFeatures<typeof PanelRenderFeatures> & {
|
|
9
|
+
element?: HTMLElement;
|
|
10
10
|
id?: string;
|
|
11
11
|
tabIndex?: number;
|
|
12
|
-
}
|
|
12
|
+
};
|
|
13
|
+
export type TabPanelProps = Props<typeof DEFAULT_PANEL_TAG, PanelRenderPropArg, TabPanelOwnProps>;
|
|
13
14
|
import { type PropsForFeatures } from "../utils/render.js";
|
|
14
|
-
declare
|
|
15
|
-
|
|
16
|
-
as?: TTag | undefined;
|
|
17
|
-
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "refName" | "class") | "unmount" | "static" | "id" | "tabIndex" | PanelPropsWeControl> 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("../utils/types.js").Children<PanelRenderPropArg> | undefined;
|
|
19
|
-
ref?: HTMLElement;
|
|
20
|
-
} & (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) ? {
|
|
21
|
-
class?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: PanelRenderPropArg) => string) | undefined;
|
|
22
|
-
} : {}) & {
|
|
23
|
-
static?: boolean | undefined;
|
|
24
|
-
unmount?: boolean | undefined;
|
|
25
|
-
} & {
|
|
26
|
-
id?: string;
|
|
27
|
-
tabIndex?: number;
|
|
28
|
-
};
|
|
29
|
-
events(): {} & {
|
|
30
|
-
[evt: string]: CustomEvent<any>;
|
|
31
|
-
};
|
|
32
|
-
slots(): {};
|
|
33
|
-
bindings(): "ref";
|
|
34
|
-
exports(): {};
|
|
35
|
-
}
|
|
36
|
-
interface $$IsomorphicComponent {
|
|
37
|
-
new <TTag extends ElementType = typeof DEFAULT_PANEL_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']>> & {
|
|
38
|
-
$$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
|
|
39
|
-
} & ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
40
|
-
<TTag extends ElementType = typeof DEFAULT_PANEL_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
|
|
41
|
-
$$events?: ReturnType<__sveltets_Render<TTag>['events']>;
|
|
42
|
-
}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
43
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
44
|
-
}
|
|
45
|
-
declare const TabPanel: $$IsomorphicComponent;
|
|
46
|
-
type TabPanel<TTag extends ElementType = typeof DEFAULT_PANEL_TAG> = InstanceType<typeof TabPanel<TTag>>;
|
|
15
|
+
declare const TabPanel: import("svelte").Component<TabPanelProps, {}, "element">;
|
|
16
|
+
type TabPanel = ReturnType<typeof TabPanel>;
|
|
47
17
|
export default TabPanel;
|
|
@@ -1,23 +1,25 @@
|
|
|
1
1
|
<script lang="ts" module>
|
|
2
2
|
import ElementOrComponent from "../utils/ElementOrComponent.svelte"
|
|
3
|
-
import type {
|
|
4
|
-
import {
|
|
3
|
+
import type { Props } from "../utils/types.js"
|
|
4
|
+
import { useTabs } from "./context.svelte.js"
|
|
5
5
|
|
|
6
6
|
let DEFAULT_PANELS_TAG = "div" as const
|
|
7
|
-
type PanelsRenderPropArg = {
|
|
7
|
+
export type PanelsRenderPropArg = {
|
|
8
8
|
selectedIndex: number
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
export type
|
|
11
|
+
export type TabPanelsOwnProps = { element?: HTMLElement }
|
|
12
|
+
|
|
13
|
+
export type TabPanelsProps = Props<typeof DEFAULT_PANELS_TAG, PanelsRenderPropArg, TabPanelsOwnProps>
|
|
12
14
|
</script>
|
|
13
15
|
|
|
14
|
-
<script lang="ts"
|
|
15
|
-
const
|
|
16
|
-
const { selectedIndex } = $derived(
|
|
16
|
+
<script lang="ts">
|
|
17
|
+
const context = useTabs("TabPanels")
|
|
18
|
+
const { selectedIndex } = $derived(context)
|
|
17
19
|
|
|
18
20
|
const slot = $derived({ selectedIndex } satisfies PanelsRenderPropArg)
|
|
19
21
|
|
|
20
|
-
let {
|
|
22
|
+
let { element = $bindable(), ...theirProps }: TabPanelsProps = $props()
|
|
21
23
|
</script>
|
|
22
24
|
|
|
23
|
-
<ElementOrComponent {theirProps} {slot} defaultTag={DEFAULT_PANELS_TAG} name="TabPanel" bind:
|
|
25
|
+
<ElementOrComponent {theirProps} slots={slot} defaultTag={DEFAULT_PANELS_TAG} name="TabPanel" bind:element />
|
|
@@ -1,34 +1,12 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Props } from "../utils/types.js";
|
|
2
2
|
declare let DEFAULT_PANELS_TAG: "div";
|
|
3
|
-
type PanelsRenderPropArg = {
|
|
3
|
+
export type PanelsRenderPropArg = {
|
|
4
4
|
selectedIndex: number;
|
|
5
5
|
};
|
|
6
|
-
export type
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
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: PanelsRenderPropArg) => string) | undefined;
|
|
15
|
-
} : {});
|
|
16
|
-
events(): {} & {
|
|
17
|
-
[evt: string]: CustomEvent<any>;
|
|
18
|
-
};
|
|
19
|
-
slots(): {};
|
|
20
|
-
bindings(): "ref";
|
|
21
|
-
exports(): {};
|
|
22
|
-
}
|
|
23
|
-
interface $$IsomorphicComponent {
|
|
24
|
-
new <TTag extends ElementType = typeof DEFAULT_PANELS_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
|
-
$$bindings?: ReturnType<__sveltets_Render<TTag>['bindings']>;
|
|
26
|
-
} & ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
27
|
-
<TTag extends ElementType = typeof DEFAULT_PANELS_TAG>(internal: unknown, props: ReturnType<__sveltets_Render<TTag>['props']> & {
|
|
28
|
-
$$events?: ReturnType<__sveltets_Render<TTag>['events']>;
|
|
29
|
-
}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
30
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
31
|
-
}
|
|
32
|
-
declare const TabPanels: $$IsomorphicComponent;
|
|
33
|
-
type TabPanels<TTag extends ElementType = typeof DEFAULT_PANELS_TAG> = InstanceType<typeof TabPanels<TTag>>;
|
|
6
|
+
export type TabPanelsOwnProps = {
|
|
7
|
+
element?: HTMLElement;
|
|
8
|
+
};
|
|
9
|
+
export type TabPanelsProps = Props<typeof DEFAULT_PANELS_TAG, PanelsRenderPropArg, TabPanelsOwnProps>;
|
|
10
|
+
declare const TabPanels: import("svelte").Component<TabPanelsProps, {}, "element">;
|
|
11
|
+
type TabPanels = ReturnType<typeof TabPanels>;
|
|
34
12
|
export default TabPanels;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { MutableRefObject } from "../utils/ref.svelte.js";
|
|
2
|
+
export declare enum Direction {
|
|
3
|
+
Forwards = 0,
|
|
4
|
+
Backwards = 1
|
|
5
|
+
}
|
|
6
|
+
export declare enum Ordering {
|
|
7
|
+
Less = -1,
|
|
8
|
+
Equal = 0,
|
|
9
|
+
Greater = 1
|
|
10
|
+
}
|
|
11
|
+
export type TabsContext = {
|
|
12
|
+
info: {
|
|
13
|
+
isControlled: boolean;
|
|
14
|
+
};
|
|
15
|
+
selectedIndex: number;
|
|
16
|
+
orientation: "horizontal" | "vertical";
|
|
17
|
+
activation: "manual" | "auto";
|
|
18
|
+
tabs: MutableRefObject<HTMLElement | undefined>[];
|
|
19
|
+
panels: MutableRefObject<HTMLElement | undefined>[];
|
|
20
|
+
registerTab: (tab: MutableRefObject<HTMLElement | undefined>) => () => void;
|
|
21
|
+
registerPanel: (panel: MutableRefObject<HTMLElement | undefined>) => () => void;
|
|
22
|
+
change: (index: number) => void;
|
|
23
|
+
};
|
|
24
|
+
export declare function useTabs(component: string): TabsContext;
|
|
25
|
+
export declare const createTabContext: (props: {
|
|
26
|
+
vertical: boolean;
|
|
27
|
+
manual: boolean;
|
|
28
|
+
selectedIndex: number | undefined;
|
|
29
|
+
defaultIndex: number;
|
|
30
|
+
change: (index: number) => void;
|
|
31
|
+
}) => TabsContext;
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { sortByDomNode } from "../utils/focus-management.js";
|
|
2
|
+
import { match } from "../utils/match.js";
|
|
3
|
+
import { getContext, setContext } from "svelte";
|
|
4
|
+
export var Direction;
|
|
5
|
+
(function (Direction) {
|
|
6
|
+
Direction[Direction["Forwards"] = 0] = "Forwards";
|
|
7
|
+
Direction[Direction["Backwards"] = 1] = "Backwards";
|
|
8
|
+
})(Direction || (Direction = {}));
|
|
9
|
+
export var Ordering;
|
|
10
|
+
(function (Ordering) {
|
|
11
|
+
Ordering[Ordering["Less"] = -1] = "Less";
|
|
12
|
+
Ordering[Ordering["Equal"] = 0] = "Equal";
|
|
13
|
+
Ordering[Ordering["Greater"] = 1] = "Greater";
|
|
14
|
+
})(Ordering || (Ordering = {}));
|
|
15
|
+
export function useTabs(component) {
|
|
16
|
+
const context = getContext("TabsContext");
|
|
17
|
+
if (!context) {
|
|
18
|
+
const err = new Error(`<${component} /> is missing a parent <TabGroup /> component.`);
|
|
19
|
+
if (Error.captureStackTrace)
|
|
20
|
+
Error.captureStackTrace(err, useTabs);
|
|
21
|
+
throw err;
|
|
22
|
+
}
|
|
23
|
+
return context;
|
|
24
|
+
}
|
|
25
|
+
export const createTabContext = (props) => {
|
|
26
|
+
let _selectedIndex = $state($state.snapshot(props.selectedIndex ?? props.defaultIndex));
|
|
27
|
+
let tabs = $state.raw([]);
|
|
28
|
+
let panels = $state.raw([]);
|
|
29
|
+
const isControlled = $derived(props.selectedIndex !== undefined);
|
|
30
|
+
const context = {
|
|
31
|
+
info: {
|
|
32
|
+
get isControlled() {
|
|
33
|
+
return isControlled;
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
get orientation() {
|
|
37
|
+
return props.vertical ? "vertical" : "horizontal";
|
|
38
|
+
},
|
|
39
|
+
get activation() {
|
|
40
|
+
return props.manual ? "manual" : "auto";
|
|
41
|
+
},
|
|
42
|
+
get selectedIndex() {
|
|
43
|
+
return _selectedIndex;
|
|
44
|
+
},
|
|
45
|
+
set selectedIndex(index) {
|
|
46
|
+
if (index === _selectedIndex)
|
|
47
|
+
return;
|
|
48
|
+
tabs = sortByDomNode(tabs, (tab) => tab.current ?? null);
|
|
49
|
+
panels = sortByDomNode(panels, (panel) => panel.current ?? null);
|
|
50
|
+
const focusableTabs = tabs.filter((tab) => !tab?.current?.hasAttribute("disabled"));
|
|
51
|
+
if (
|
|
52
|
+
// Underflow
|
|
53
|
+
index < 0 ||
|
|
54
|
+
// Overflow
|
|
55
|
+
index > tabs.length - 1) {
|
|
56
|
+
const direction = match(Math.sign(index - _selectedIndex), {
|
|
57
|
+
[Ordering.Less]: () => Direction.Backwards,
|
|
58
|
+
[Ordering.Equal]: () => {
|
|
59
|
+
return match(Math.sign(index), {
|
|
60
|
+
[Ordering.Less]: () => Direction.Forwards,
|
|
61
|
+
[Ordering.Equal]: () => Direction.Forwards,
|
|
62
|
+
[Ordering.Greater]: () => Direction.Backwards,
|
|
63
|
+
});
|
|
64
|
+
},
|
|
65
|
+
[Ordering.Greater]: () => Direction.Forwards,
|
|
66
|
+
});
|
|
67
|
+
// If there are no focusable tabs then.
|
|
68
|
+
// We won't change the selected index
|
|
69
|
+
// because it's likely the user is
|
|
70
|
+
// lazy loading tabs and there's
|
|
71
|
+
// nothing to focus on yet
|
|
72
|
+
if (focusableTabs.length === 0)
|
|
73
|
+
return;
|
|
74
|
+
const nextSelectedIndex = match(direction, {
|
|
75
|
+
[Direction.Forwards]: () => tabs.findIndex((tab) => tab === focusableTabs[0]),
|
|
76
|
+
[Direction.Backwards]: () => tabs.findIndex((tab) => tab === focusableTabs[focusableTabs.length - 1]),
|
|
77
|
+
});
|
|
78
|
+
if (nextSelectedIndex !== -1)
|
|
79
|
+
_selectedIndex = nextSelectedIndex;
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
// Middle
|
|
83
|
+
const before = tabs.slice(0, index);
|
|
84
|
+
const after = tabs.slice(index);
|
|
85
|
+
const next = [...after, ...before].find((tab) => focusableTabs.some((_tab) => _tab === tab));
|
|
86
|
+
if (!next)
|
|
87
|
+
return;
|
|
88
|
+
let selectedIndex = tabs.findIndex((tab) => tab === next) ?? _selectedIndex;
|
|
89
|
+
if (selectedIndex === -1)
|
|
90
|
+
selectedIndex = _selectedIndex;
|
|
91
|
+
if (selectedIndex !== _selectedIndex)
|
|
92
|
+
_selectedIndex = selectedIndex;
|
|
93
|
+
},
|
|
94
|
+
get tabs() {
|
|
95
|
+
return tabs;
|
|
96
|
+
},
|
|
97
|
+
get panels() {
|
|
98
|
+
return panels;
|
|
99
|
+
},
|
|
100
|
+
registerTab(tab) {
|
|
101
|
+
const unregisterTab = (tab) => {
|
|
102
|
+
tabs = tabs.filter((_tab) => _tab !== tab);
|
|
103
|
+
};
|
|
104
|
+
if (tabs.some((_tab) => _tab === tab))
|
|
105
|
+
return () => unregisterTab(tab);
|
|
106
|
+
tabs = sortByDomNode([...tabs, tab], (tab) => tab.current ?? null);
|
|
107
|
+
const activeTab = tabs[_selectedIndex];
|
|
108
|
+
// When the component is uncontrolled, then we want to maintain the actively
|
|
109
|
+
// selected tab even if new tabs are inserted or removed before the active
|
|
110
|
+
// tab.
|
|
111
|
+
//
|
|
112
|
+
// When the component is controlled, then we don't want to do this and
|
|
113
|
+
// instead we want to select the tab based on the `selectedIndex` prop.
|
|
114
|
+
if (isControlled) {
|
|
115
|
+
const selectedIndex = tabs.findIndex((tab) => tab === activeTab);
|
|
116
|
+
if (selectedIndex !== _selectedIndex)
|
|
117
|
+
_selectedIndex = selectedIndex;
|
|
118
|
+
}
|
|
119
|
+
return () => unregisterTab(tab);
|
|
120
|
+
},
|
|
121
|
+
registerPanel(panel) {
|
|
122
|
+
const unregisterPanel = (panel) => {
|
|
123
|
+
panels = panels.filter((_panel) => _panel !== panel);
|
|
124
|
+
};
|
|
125
|
+
if (!panels.some((_panel) => _panel === panel)) {
|
|
126
|
+
panels = sortByDomNode([...panels, panel], (panel) => panel.current ?? null);
|
|
127
|
+
}
|
|
128
|
+
return () => unregisterPanel(panel);
|
|
129
|
+
},
|
|
130
|
+
change: props.change,
|
|
131
|
+
};
|
|
132
|
+
setContext("TabsContext", context);
|
|
133
|
+
return context;
|
|
134
|
+
};
|
package/dist/tabs/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { default as Tab, type TabProps } from "./Tab.svelte";
|
|
2
|
-
export { default as TabGroup, type TabGroupProps } from "./TabGroup.svelte";
|
|
3
|
-
export { default as TabList, type TabListProps } from "./TabList.svelte";
|
|
4
|
-
export { default as TabPanel, type TabPanelProps } from "./TabPanel.svelte";
|
|
5
|
-
export { default as TabPanels, type TabPanelsProps } from "./TabPanels.svelte";
|
|
1
|
+
export { default as Tab, type TabProps, type TabRenderPropArg as TabSlot, type TabOwnProps } from "./Tab.svelte";
|
|
2
|
+
export { default as TabGroup, type TabGroupProps, type TabsRenderPropArg as TabGroupSlot, type TabGroupOwnProps, } from "./TabGroup.svelte";
|
|
3
|
+
export { default as TabList, type TabListProps, type ListRenderPropArg as TabListSlot, type TabListOwnProps, } from "./TabList.svelte";
|
|
4
|
+
export { default as TabPanel, type TabPanelProps, type PanelRenderPropArg as TabPanelSlot, type TabPanelOwnProps, } from "./TabPanel.svelte";
|
|
5
|
+
export { default as TabPanels, type TabPanelsProps, type PanelsRenderPropArg as TabPanelsSlot, } from "./TabPanels.svelte";
|
package/dist/tabs/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { default as Tab } from "./Tab.svelte";
|
|
2
|
-
export { default as TabGroup } from "./TabGroup.svelte";
|
|
3
|
-
export { default as TabList } from "./TabList.svelte";
|
|
4
|
-
export { default as TabPanel } from "./TabPanel.svelte";
|
|
5
|
-
export { default as TabPanels } from "./TabPanels.svelte";
|
|
2
|
+
export { default as TabGroup, } from "./TabGroup.svelte";
|
|
3
|
+
export { default as TabList, } from "./TabList.svelte";
|
|
4
|
+
export { default as TabPanel, } from "./TabPanel.svelte";
|
|
5
|
+
export { default as TabPanels, } from "./TabPanels.svelte";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
<script lang="ts" module>
|
|
2
|
-
import type {
|
|
2
|
+
import type { Props } from "../utils/types.js"
|
|
3
3
|
|
|
4
4
|
const DEFAULT_TEXTAREA_TAG = "textarea" as const
|
|
5
5
|
|
|
6
|
-
type TextareaRenderPropArg = {
|
|
6
|
+
export type TextareaRenderPropArg = {
|
|
7
7
|
disabled: boolean
|
|
8
8
|
hover: boolean
|
|
9
9
|
focus: boolean
|
|
@@ -12,22 +12,26 @@
|
|
|
12
12
|
}
|
|
13
13
|
type TextareaPropsWeControl = "aria-labelledby" | "aria-describedby"
|
|
14
14
|
|
|
15
|
-
export type
|
|
16
|
-
|
|
15
|
+
export type TextareaOwnProps<TValue = string> = {
|
|
16
|
+
element?: HTMLElement
|
|
17
|
+
id?: string
|
|
18
|
+
value?: TValue
|
|
19
|
+
disabled?: boolean
|
|
20
|
+
invalid?: boolean
|
|
21
|
+
autofocus?: boolean
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export type TextareaProps<TValue = string> = Props<
|
|
25
|
+
typeof DEFAULT_TEXTAREA_TAG,
|
|
17
26
|
TextareaRenderPropArg,
|
|
18
|
-
|
|
19
|
-
{
|
|
20
|
-
disabled?: boolean
|
|
21
|
-
invalid?: boolean
|
|
22
|
-
autoFocus?: boolean
|
|
23
|
-
}
|
|
27
|
+
TextareaOwnProps<TValue>
|
|
24
28
|
>
|
|
25
29
|
</script>
|
|
26
30
|
|
|
27
|
-
<script lang="ts" generics="
|
|
31
|
+
<script lang="ts" generics="TValue = string">
|
|
28
32
|
import { htmlid } from "../utils/id.js"
|
|
29
33
|
import { useDisabled } from "../hooks/use-disabled.js"
|
|
30
|
-
import { useProvidedId } from "../
|
|
34
|
+
import { useProvidedId } from "../utils/id.js"
|
|
31
35
|
import { useLabelledBy } from "../label/context.svelte.js"
|
|
32
36
|
import { useDescribedBy } from "../description/context.svelte.js"
|
|
33
37
|
import { useHover } from "../hooks/use-hover.svelte.js"
|
|
@@ -40,15 +44,15 @@
|
|
|
40
44
|
const providedDisabled = useDisabled()
|
|
41
45
|
|
|
42
46
|
let {
|
|
43
|
-
|
|
44
|
-
value = $bindable
|
|
45
|
-
id =
|
|
47
|
+
element = $bindable(),
|
|
48
|
+
value = $bindable(),
|
|
49
|
+
id = providedId || `headlessui-input-${internalId}`,
|
|
46
50
|
disabled: theirDisabled = false,
|
|
47
|
-
autofocus = false
|
|
51
|
+
autofocus = false,
|
|
48
52
|
invalid = false,
|
|
49
53
|
...theirProps
|
|
50
|
-
}:
|
|
51
|
-
const disabled = $derived(providedDisabled
|
|
54
|
+
}: TextareaProps<TValue> = $props()
|
|
55
|
+
const disabled = $derived(providedDisabled.current || theirDisabled)
|
|
52
56
|
|
|
53
57
|
const labelledBy = useLabelledBy()
|
|
54
58
|
const describedBy = useDescribedBy()
|
|
@@ -89,9 +93,9 @@
|
|
|
89
93
|
<ElementOrComponent
|
|
90
94
|
{ourProps}
|
|
91
95
|
{theirProps}
|
|
92
|
-
{slot}
|
|
96
|
+
slots={slot}
|
|
93
97
|
defaultTag={DEFAULT_TEXTAREA_TAG}
|
|
94
98
|
name="Textarea"
|
|
95
|
-
bind:
|
|
99
|
+
bind:element
|
|
96
100
|
bind:value
|
|
97
101
|
/>
|
|
@@ -1,47 +1,35 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Props } from "../utils/types.js";
|
|
2
2
|
declare const DEFAULT_TEXTAREA_TAG: "textarea";
|
|
3
|
-
type TextareaRenderPropArg = {
|
|
3
|
+
export type TextareaRenderPropArg = {
|
|
4
4
|
disabled: boolean;
|
|
5
5
|
hover: boolean;
|
|
6
6
|
focus: boolean;
|
|
7
7
|
autofocus: boolean;
|
|
8
8
|
invalid: boolean;
|
|
9
9
|
};
|
|
10
|
-
type
|
|
11
|
-
|
|
10
|
+
export type TextareaOwnProps<TValue = string> = {
|
|
11
|
+
element?: HTMLElement;
|
|
12
|
+
id?: string;
|
|
13
|
+
value?: TValue;
|
|
12
14
|
disabled?: boolean;
|
|
13
15
|
invalid?: boolean;
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
children?: import("../utils/types.js").Children<TextareaRenderPropArg> | undefined;
|
|
21
|
-
ref?: HTMLElement;
|
|
22
|
-
} & (true extends (PropsOf<TTag> extends infer T_1 ? T_1 extends 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) ? {
|
|
23
|
-
class?: PropsOf<TTag>["class"] | ((bag: TextareaRenderPropArg) => string) | undefined;
|
|
24
|
-
} : {}) & {
|
|
25
|
-
disabled?: boolean;
|
|
26
|
-
invalid?: boolean;
|
|
27
|
-
autoFocus?: boolean;
|
|
28
|
-
};
|
|
29
|
-
events(): {} & {
|
|
30
|
-
[evt: string]: CustomEvent<any>;
|
|
31
|
-
};
|
|
16
|
+
autofocus?: boolean;
|
|
17
|
+
};
|
|
18
|
+
export type TextareaProps<TValue = string> = Props<typeof DEFAULT_TEXTAREA_TAG, TextareaRenderPropArg, TextareaOwnProps<TValue>>;
|
|
19
|
+
declare class __sveltets_Render<TValue = string> {
|
|
20
|
+
props(): TextareaProps<TValue>;
|
|
21
|
+
events(): {};
|
|
32
22
|
slots(): {};
|
|
33
|
-
bindings(): "
|
|
23
|
+
bindings(): "element" | "value";
|
|
34
24
|
exports(): {};
|
|
35
25
|
}
|
|
36
26
|
interface $$IsomorphicComponent {
|
|
37
|
-
new <
|
|
38
|
-
$$bindings?: ReturnType<__sveltets_Render<
|
|
39
|
-
} & ReturnType<__sveltets_Render<
|
|
40
|
-
<
|
|
41
|
-
$$events?: ReturnType<__sveltets_Render<TTag>['events']>;
|
|
42
|
-
}): ReturnType<__sveltets_Render<TTag>['exports']>;
|
|
27
|
+
new <TValue = string>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TValue>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TValue>['props']>, ReturnType<__sveltets_Render<TValue>['events']>, ReturnType<__sveltets_Render<TValue>['slots']>> & {
|
|
28
|
+
$$bindings?: ReturnType<__sveltets_Render<TValue>['bindings']>;
|
|
29
|
+
} & ReturnType<__sveltets_Render<TValue>['exports']>;
|
|
30
|
+
<TValue = string>(internal: unknown, props: ReturnType<__sveltets_Render<TValue>['props']> & {}): ReturnType<__sveltets_Render<TValue>['exports']>;
|
|
43
31
|
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
44
32
|
}
|
|
45
33
|
declare const Textarea: $$IsomorphicComponent;
|
|
46
|
-
type Textarea<
|
|
34
|
+
type Textarea<TValue = string> = InstanceType<typeof Textarea<TValue>>;
|
|
47
35
|
export default Textarea;
|
package/dist/textarea/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default as Textarea, type TextareaProps } from "./Textarea.svelte";
|
|
1
|
+
export { default as Textarea, type TextareaProps, type TextareaRenderPropArg as TextareaSlot, type TextareaOwnProps, } from "./Textarea.svelte";
|
package/dist/textarea/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default as Textarea } from "./Textarea.svelte";
|
|
1
|
+
export { default as Textarea, } from "./Textarea.svelte";
|