@pzerelles/headlessui-svelte 2.1.2-next.8 → 2.1.3-next.1
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 +82 -55
- 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 +180 -122
- 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 +10 -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 +49 -37
- 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 +40 -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 +67 -37
- package/dist/dialog/Dialog.svelte.d.ts +7 -45
- package/dist/dialog/DialogBackdrop.svelte +30 -16
- package/dist/dialog/DialogBackdrop.svelte.d.ts +8 -33
- package/dist/dialog/DialogPanel.svelte +63 -29
- package/dist/dialog/DialogPanel.svelte.d.ts +8 -34
- package/dist/dialog/DialogTitle.svelte +48 -24
- package/dist/dialog/DialogTitle.svelte.d.ts +9 -30
- package/dist/dialog/InternalDialog.svelte +286 -221
- package/dist/dialog/InternalDialog.svelte.d.ts +3 -41
- 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 +59 -0
- package/dist/disclosure/Disclosure.svelte.d.ts +13 -0
- package/dist/disclosure/DisclosureButton.svelte +191 -0
- package/dist/disclosure/DisclosureButton.svelte.d.ts +19 -0
- package/dist/disclosure/DisclosurePanel.svelte +99 -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 +51 -27
- package/dist/field/Field.svelte.d.ts +7 -34
- package/dist/field/index.d.ts +1 -1
- package/dist/fieldset/Fieldset.svelte +46 -30
- package/dist/fieldset/Fieldset.svelte.d.ts +8 -35
- package/dist/fieldset/index.d.ts +1 -1
- package/dist/focus-trap/FocusTrap.svelte +428 -299
- package/dist/focus-trap/FocusTrap.svelte.d.ts +9 -39
- package/dist/{internal/close-provider.d.ts → hooks/use-close.svelte.d.ts} +1 -1
- 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 +7 -6
- package/dist/hooks/use-tab-direction.svelte.js +1 -1
- package/dist/hooks/use-transition.svelte.d.ts +1 -0
- package/dist/hooks/use-transition.svelte.js +32 -7
- package/dist/index.d.ts +1 -20
- package/dist/index.js +2 -20
- package/dist/input/Input.svelte +93 -54
- package/dist/input/Input.svelte.d.ts +17 -32
- 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 +49 -40
- package/dist/internal/FocusSentinel.svelte.d.ts +4 -18
- package/dist/internal/ForcePortalRoot.svelte +11 -3
- package/dist/internal/ForcePortalRoot.svelte.d.ts +4 -18
- package/dist/internal/FormFields.svelte +31 -20
- package/dist/internal/FormFields.svelte.d.ts +4 -18
- package/dist/internal/FormFieldsProvider.svelte +23 -0
- package/dist/internal/FormFieldsProvider.svelte.d.ts +10 -0
- package/dist/internal/FormResolver.svelte +21 -16
- package/dist/internal/FormResolver.svelte.d.ts +4 -18
- package/dist/internal/Hidden.svelte +48 -24
- package/dist/internal/Hidden.svelte.d.ts +8 -35
- package/dist/internal/HoistFormFields.svelte +7 -4
- package/dist/internal/HoistFormFields.svelte.d.ts +4 -18
- package/dist/internal/MainTreeProvider.svelte +91 -38
- package/dist/internal/MainTreeProvider.svelte.d.ts +4 -18
- package/dist/internal/Portal.svelte +18 -14
- 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 +47 -23
- package/dist/internal/floating.svelte.js +90 -272
- package/dist/internal/frozen.svelte.js +1 -1
- package/dist/label/Label.svelte +96 -58
- 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 +26 -4
- package/dist/legend/Legend.svelte.d.ts +10 -34
- package/dist/listbox/Listbox.svelte +518 -397
- package/dist/listbox/Listbox.svelte.d.ts +15 -91
- package/dist/listbox/ListboxButton.svelte +179 -128
- package/dist/listbox/ListboxButton.svelte.d.ts +8 -38
- package/dist/listbox/ListboxOption.svelte +183 -126
- package/dist/listbox/ListboxOption.svelte.d.ts +16 -32
- package/dist/listbox/ListboxOptions.svelte +409 -259
- package/dist/listbox/ListboxOptions.svelte.d.ts +8 -43
- package/dist/listbox/ListboxSelectedOption.svelte +44 -23
- 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 +70 -225
- package/dist/menu/Menu.svelte.d.ts +7 -37
- package/dist/menu/MenuButton.svelte +163 -116
- package/dist/menu/MenuButton.svelte.d.ts +8 -39
- package/dist/menu/MenuHeading.svelte +31 -15
- package/dist/menu/MenuHeading.svelte.d.ts +7 -36
- package/dist/menu/MenuItem.svelte +141 -108
- package/dist/menu/MenuItem.svelte.d.ts +9 -39
- package/dist/menu/MenuItems.svelte +298 -225
- package/dist/menu/MenuItems.svelte.d.ts +8 -43
- package/dist/menu/MenuSection.svelte +24 -10
- package/dist/menu/MenuSection.svelte.d.ts +7 -33
- package/dist/menu/MenuSeparator.svelte +18 -5
- package/dist/menu/MenuSeparator.svelte.d.ts +7 -33
- package/dist/menu/context.svelte.d.ts +2 -1
- package/dist/menu/context.svelte.js +213 -2
- package/dist/menu/index.d.ts +7 -7
- package/dist/menu/index.js +3 -3
- package/dist/popover/Popover.svelte +231 -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/PopoverHoverArea.svelte +169 -0
- package/dist/popover/PopoverHoverArea.svelte.d.ts +18 -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 +7 -0
- package/dist/popover/index.js +7 -0
- package/dist/portal/InternalPortal.svelte +149 -86
- package/dist/portal/InternalPortal.svelte.d.ts +7 -34
- package/dist/portal/Portal.svelte +8 -4
- package/dist/portal/Portal.svelte.d.ts +3 -22
- package/dist/portal/PortalGroup.svelte +23 -10
- package/dist/portal/PortalGroup.svelte.d.ts +5 -34
- package/dist/portal/PortalWrapper.svelte +10 -0
- package/dist/portal/PortalWrapper.svelte.d.ts +9 -0
- 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 +179 -133
- package/dist/switch/Switch.svelte.d.ts +9 -42
- package/dist/switch/SwitchGroup.svelte +45 -32
- 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 +193 -144
- package/dist/tabs/Tab.svelte.d.ts +8 -36
- package/dist/tabs/TabGroup.svelte +78 -213
- package/dist/tabs/TabGroup.svelte.d.ts +7 -57
- package/dist/tabs/TabList.svelte +29 -12
- package/dist/tabs/TabList.svelte.d.ts +8 -31
- package/dist/tabs/TabPanel.svelte +71 -46
- package/dist/tabs/TabPanel.svelte.d.ts +8 -38
- package/dist/tabs/TabPanels.svelte +21 -8
- 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 +89 -55
- package/dist/textarea/Textarea.svelte.d.ts +17 -32
- package/dist/textarea/index.d.ts +1 -1
- package/dist/textarea/index.js +1 -1
- package/dist/transition/InternalTransitionChild.svelte +274 -171
- package/dist/transition/InternalTransitionChild.svelte.d.ts +6 -37
- package/dist/transition/Transition.svelte +97 -68
- package/dist/transition/Transition.svelte.d.ts +8 -38
- package/dist/transition/TransitionChild.svelte +33 -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 +86 -24
- package/dist/utils/ElementOrComponent.svelte.d.ts +19 -30
- package/dist/utils/StableCollection.svelte +54 -36
- 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 +4 -0
- package/dist/utils/floating-ui/svelte/index.js +4 -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 +1 -0
- package/dist/utils/floating-ui/svelte-dom/index.js +1 -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 +319 -55
- package/dist/combobox/Combobox.svelte +0 -6
- package/dist/combobox/Combobox.svelte.d.ts +0 -50
- 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 -44
- package/dist/utils/Generic.svelte.d.ts +0 -35
- package/dist/utils/alternative-types.d.ts +0 -21
- /package/dist/{internal/close-provider.js → hooks/use-close.svelte.js} +0 -0
- /package/dist/utils/{alternative-types.js → floating-ui/svelte/types.js} +0 -0
|
@@ -1,61 +1,88 @@
|
|
|
1
|
-
<script lang="ts" module>
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import type { Props } from "../utils/types.js"
|
|
3
|
+
|
|
4
|
+
const DEFAULT_BUTTON_TAG = "button" as const
|
|
5
|
+
|
|
6
|
+
export type ButtonRenderPropArg = {
|
|
7
|
+
disabled: boolean
|
|
8
|
+
hover: boolean
|
|
9
|
+
focus: boolean
|
|
10
|
+
active: boolean
|
|
11
|
+
autofocus: boolean
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export type ButtonOwnProps = {
|
|
15
|
+
element?: HTMLElement
|
|
16
|
+
disabled?: boolean
|
|
17
|
+
autofocus?: boolean
|
|
18
|
+
type?: "button" | "submit" | "reset"
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export type ButtonProps = Props<typeof DEFAULT_BUTTON_TAG, ButtonRenderPropArg, ButtonOwnProps>
|
|
2
22
|
</script>
|
|
3
23
|
|
|
4
|
-
<script lang="ts"
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
24
|
+
<script lang="ts">
|
|
25
|
+
import { useActivePress } from "../hooks/use-active-press.svelte.js"
|
|
26
|
+
import { useFocusRing } from "../hooks/use-focus-ring.svelte.js"
|
|
27
|
+
import { useDisabled } from "../hooks/use-disabled.js"
|
|
28
|
+
import { useHover } from "../hooks/use-hover.svelte.js"
|
|
29
|
+
import { mergeProps } from "../utils/render.js"
|
|
30
|
+
import ElementOrComponent from "../utils/ElementOrComponent.svelte"
|
|
31
|
+
|
|
32
|
+
const providedDisabled = useDisabled()
|
|
33
|
+
|
|
34
|
+
let {
|
|
35
|
+
element = $bindable(),
|
|
36
|
+
disabled: ownDisabled = false,
|
|
37
|
+
autofocus = false,
|
|
38
|
+
type = "button",
|
|
39
|
+
...theirProps
|
|
40
|
+
}: ButtonProps = $props()
|
|
41
|
+
|
|
42
|
+
const disabled = $derived(providedDisabled.current || ownDisabled)
|
|
43
|
+
|
|
44
|
+
const { isHovered: hover, hoverProps } = $derived(
|
|
45
|
+
useHover({
|
|
46
|
+
get disabled() {
|
|
47
|
+
return disabled
|
|
48
|
+
},
|
|
49
|
+
})
|
|
50
|
+
)
|
|
51
|
+
const { pressed: active, pressProps } = $derived(
|
|
52
|
+
useActivePress({
|
|
53
|
+
get disabled() {
|
|
54
|
+
return disabled
|
|
55
|
+
},
|
|
56
|
+
})
|
|
57
|
+
)
|
|
58
|
+
const { isFocusVisible: focus, focusProps } = $derived(
|
|
59
|
+
useFocusRing({
|
|
60
|
+
get autofocus() {
|
|
61
|
+
return autofocus
|
|
62
|
+
},
|
|
63
|
+
})
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
const slots = $derived({
|
|
67
|
+
disabled,
|
|
68
|
+
hover,
|
|
69
|
+
focus,
|
|
70
|
+
active,
|
|
71
|
+
autofocus,
|
|
38
72
|
})
|
|
39
|
-
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
disabled: disabled || void 0,
|
|
52
|
-
autofocus
|
|
53
|
-
},
|
|
54
|
-
focusProps,
|
|
55
|
-
hoverProps,
|
|
56
|
-
pressProps
|
|
73
|
+
|
|
74
|
+
const ourProps = $derived(
|
|
75
|
+
mergeProps(
|
|
76
|
+
{
|
|
77
|
+
type,
|
|
78
|
+
disabled: disabled || undefined,
|
|
79
|
+
autofocus,
|
|
80
|
+
},
|
|
81
|
+
focusProps,
|
|
82
|
+
hoverProps,
|
|
83
|
+
pressProps
|
|
84
|
+
)
|
|
57
85
|
)
|
|
58
|
-
);
|
|
59
86
|
</script>
|
|
60
87
|
|
|
61
|
-
<ElementOrComponent {ourProps} {theirProps} {
|
|
88
|
+
<ElementOrComponent {ourProps} {theirProps} {slots} defaultTag={DEFAULT_BUTTON_TAG} name="Button" bind:element />
|
|
@@ -1,47 +1,19 @@
|
|
|
1
|
-
import type { Props
|
|
1
|
+
import type { Props } from "../utils/types.js";
|
|
2
2
|
declare const DEFAULT_BUTTON_TAG: "button";
|
|
3
|
-
type ButtonRenderPropArg = {
|
|
3
|
+
export type ButtonRenderPropArg = {
|
|
4
4
|
disabled: boolean;
|
|
5
5
|
hover: boolean;
|
|
6
6
|
focus: boolean;
|
|
7
7
|
active: boolean;
|
|
8
8
|
autofocus: boolean;
|
|
9
9
|
};
|
|
10
|
-
type
|
|
11
|
-
|
|
10
|
+
export type ButtonOwnProps = {
|
|
11
|
+
element?: HTMLElement;
|
|
12
12
|
disabled?: boolean;
|
|
13
13
|
autofocus?: boolean;
|
|
14
14
|
type?: "button" | "submit" | "reset";
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
} & (Exclude<keyof import("../utils/types.js").PropsOf<TTag>, ("as" | "children" | "refName" | "class") | "disabled" | "autofocus" | "type"> extends infer T extends keyof import("../utils/types.js").PropsOf<TTag> ? { [P in T]: import("../utils/types.js").PropsOf<TTag>[P]; } : never) & {
|
|
20
|
-
children?: import("../utils/types.js").Children<ButtonRenderPropArg> | undefined;
|
|
21
|
-
ref?: HTMLElement;
|
|
22
|
-
} & (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) ? {
|
|
23
|
-
class?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: ButtonRenderPropArg) => string) | undefined;
|
|
24
|
-
} : {}) & {
|
|
25
|
-
disabled?: boolean;
|
|
26
|
-
autofocus?: boolean;
|
|
27
|
-
type?: "button" | "submit" | "reset";
|
|
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_BUTTON_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_BUTTON_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 Button: $$IsomorphicComponent;
|
|
46
|
-
type Button<TTag extends ElementType = typeof DEFAULT_BUTTON_TAG> = InstanceType<typeof Button<TTag>>;
|
|
15
|
+
};
|
|
16
|
+
export type ButtonProps = Props<typeof DEFAULT_BUTTON_TAG, ButtonRenderPropArg, ButtonOwnProps>;
|
|
17
|
+
declare const Button: import("svelte").Component<ButtonProps, {}, "element">;
|
|
18
|
+
type Button = ReturnType<typeof Button>;
|
|
47
19
|
export default Button;
|
package/dist/button/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default as Button, type ButtonProps } from "./Button.svelte";
|
|
1
|
+
export { default as Button, type ButtonProps, type ButtonRenderPropArg as ButtonSlot, type ButtonOwnProps, } from "./Button.svelte";
|
package/dist/button/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default as Button } from "./Button.svelte";
|
|
1
|
+
export { default as Button, } from "./Button.svelte";
|
|
@@ -1,129 +1,186 @@
|
|
|
1
|
-
<script lang="ts" module>
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import type { Props } from "../utils/types.js"
|
|
3
|
+
|
|
4
|
+
const DEFAULT_CHECKBOX_TAG = "span" as const
|
|
5
|
+
|
|
6
|
+
export type CheckboxRenderPropArg = {
|
|
7
|
+
checked: boolean
|
|
8
|
+
changing: boolean
|
|
9
|
+
focus: boolean
|
|
10
|
+
active: boolean
|
|
11
|
+
hover: boolean
|
|
12
|
+
autofocus: boolean
|
|
13
|
+
disabled: boolean
|
|
14
|
+
indeterminate: boolean
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
type CheckboxPropsWeControl =
|
|
18
|
+
| "aria-checked"
|
|
19
|
+
| "aria-describedby"
|
|
20
|
+
| "aria-disabled"
|
|
21
|
+
| "aria-labelledby"
|
|
22
|
+
| "role"
|
|
23
|
+
| "tabIndex"
|
|
24
|
+
|
|
25
|
+
export type CheckboxOwnProps<TType = string> = {
|
|
26
|
+
element?: HTMLElement
|
|
27
|
+
id?: string
|
|
28
|
+
value?: TType
|
|
29
|
+
disabled?: boolean
|
|
30
|
+
indeterminate?: boolean
|
|
31
|
+
checked?: boolean
|
|
32
|
+
defaultChecked?: boolean
|
|
33
|
+
autofocus?: boolean
|
|
34
|
+
form?: string
|
|
35
|
+
name?: string
|
|
36
|
+
onchange?: (checked: boolean) => void
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export type CheckboxProps<TType = string> = Props<
|
|
40
|
+
typeof DEFAULT_CHECKBOX_TAG,
|
|
41
|
+
CheckboxRenderPropArg,
|
|
42
|
+
CheckboxOwnProps<TType>
|
|
43
|
+
>
|
|
2
44
|
</script>
|
|
3
45
|
|
|
4
|
-
<script lang="ts" generics="TType
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import
|
|
16
|
-
import
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
46
|
+
<script lang="ts" generics="TType">
|
|
47
|
+
import { tick } from "svelte"
|
|
48
|
+
import { attemptSubmit } from "../utils/form.js"
|
|
49
|
+
import { useProvidedId, htmlid } from "../utils/id.js"
|
|
50
|
+
import { useActivePress } from "../hooks/use-active-press.svelte.js"
|
|
51
|
+
import { useFocusRing } from "../hooks/use-focus-ring.svelte.js"
|
|
52
|
+
import FormFields from "../internal/FormFields.svelte"
|
|
53
|
+
import { useDisabled } from "../hooks/use-disabled.js"
|
|
54
|
+
import { useLabelledBy } from "../label/context.svelte.js"
|
|
55
|
+
import { useDescribedBy } from "../description/context.svelte.js"
|
|
56
|
+
import { useHover } from "../hooks/use-hover.svelte.js"
|
|
57
|
+
import { mergeProps } from "../utils/render.js"
|
|
58
|
+
import ElementOrComponent from "../utils/ElementOrComponent.svelte"
|
|
59
|
+
import { useControllable } from "../hooks/use-controllable.svelte.js"
|
|
60
|
+
|
|
61
|
+
const internalId = htmlid()
|
|
62
|
+
const providedId = useProvidedId()
|
|
63
|
+
const providedDisabled = useDisabled()
|
|
64
|
+
|
|
65
|
+
let {
|
|
66
|
+
element = $bindable(),
|
|
67
|
+
id = providedId || `headlessui-checkbox-${internalId}`,
|
|
68
|
+
disabled: theirDisabled = false,
|
|
69
|
+
autofocus = false,
|
|
70
|
+
checked: controlledChecked = $bindable(),
|
|
71
|
+
defaultChecked: _defaultChecked,
|
|
72
|
+
onchange: controlledOnChange,
|
|
73
|
+
name,
|
|
74
|
+
value,
|
|
75
|
+
form,
|
|
76
|
+
indeterminate = false,
|
|
77
|
+
...theirProps
|
|
78
|
+
}: CheckboxProps<TType> = $props()
|
|
79
|
+
|
|
80
|
+
const defaultChecked = $derived(_defaultChecked)
|
|
81
|
+
const controllable = useControllable(
|
|
82
|
+
{
|
|
83
|
+
get controlledValue() {
|
|
84
|
+
return controlledChecked
|
|
85
|
+
},
|
|
86
|
+
set controlledValue(checked) {
|
|
87
|
+
controlledChecked = checked
|
|
88
|
+
},
|
|
39
89
|
},
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
const {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
90
|
+
(() => controlledOnChange)(),
|
|
91
|
+
(() => defaultChecked)() ?? false
|
|
92
|
+
)
|
|
93
|
+
const { value: checked, onchange } = $derived(controllable)
|
|
94
|
+
|
|
95
|
+
const disabled = $derived(providedDisabled.current || theirDisabled)
|
|
96
|
+
|
|
97
|
+
const { isHovered: hover, hoverProps } = $derived(
|
|
98
|
+
useHover({
|
|
99
|
+
get disabled() {
|
|
100
|
+
return disabled
|
|
101
|
+
},
|
|
102
|
+
})
|
|
103
|
+
)
|
|
104
|
+
const { pressed: active, pressProps } = $derived(
|
|
105
|
+
useActivePress({
|
|
106
|
+
get disabled() {
|
|
107
|
+
return disabled
|
|
108
|
+
},
|
|
109
|
+
})
|
|
110
|
+
)
|
|
111
|
+
const { isFocusVisible: focus, focusProps } = $derived(
|
|
112
|
+
useFocusRing({
|
|
113
|
+
get autofocus() {
|
|
114
|
+
return autofocus
|
|
115
|
+
},
|
|
116
|
+
})
|
|
117
|
+
)
|
|
118
|
+
|
|
119
|
+
const labelledBy = useLabelledBy()
|
|
120
|
+
const describedBy = useDescribedBy()
|
|
121
|
+
|
|
122
|
+
let changing = $state(false)
|
|
123
|
+
|
|
124
|
+
const toggle = () => {
|
|
125
|
+
changing = true
|
|
126
|
+
onchange?.(!checked)
|
|
127
|
+
tick().then(() => {
|
|
128
|
+
changing = false
|
|
129
|
+
})
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
const handleClick = (event: MouseEvent) => {
|
|
133
|
+
if (disabled) return event.preventDefault()
|
|
134
|
+
event.preventDefault()
|
|
135
|
+
toggle()
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
const handleKeyUp = (event: KeyboardEvent) => {
|
|
139
|
+
if (event.key === " ") {
|
|
140
|
+
event.preventDefault()
|
|
141
|
+
toggle()
|
|
142
|
+
} else if (event.key === "Enter") {
|
|
143
|
+
if (event.currentTarget) attemptSubmit(event.currentTarget as HTMLElement)
|
|
67
144
|
}
|
|
68
|
-
})
|
|
69
|
-
);
|
|
70
|
-
const labelledBy = useLabelledBy();
|
|
71
|
-
const describedBy = useDescribedBy();
|
|
72
|
-
let changing = $state(false);
|
|
73
|
-
const toggle = () => {
|
|
74
|
-
changing = true;
|
|
75
|
-
onchange?.(!checked);
|
|
76
|
-
tick().then(() => {
|
|
77
|
-
changing = false;
|
|
78
|
-
});
|
|
79
|
-
};
|
|
80
|
-
const handleClick = (event) => {
|
|
81
|
-
if (disabled) return event.preventDefault();
|
|
82
|
-
event.preventDefault();
|
|
83
|
-
toggle();
|
|
84
|
-
};
|
|
85
|
-
const handleKeyUp = (event) => {
|
|
86
|
-
if (event.key === " ") {
|
|
87
|
-
event.preventDefault();
|
|
88
|
-
toggle();
|
|
89
|
-
} else if (event.key === "Enter") {
|
|
90
|
-
if (event.currentTarget) attemptSubmit(event.currentTarget);
|
|
91
145
|
}
|
|
92
|
-
|
|
93
|
-
const handleKeyPress = (event) => event.preventDefault()
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
146
|
+
|
|
147
|
+
const handleKeyPress = (event: KeyboardEvent) => event.preventDefault()
|
|
148
|
+
|
|
149
|
+
const slot = $derived({
|
|
150
|
+
checked,
|
|
151
|
+
changing,
|
|
152
|
+
focus,
|
|
153
|
+
active,
|
|
154
|
+
hover,
|
|
155
|
+
autofocus: autofocus ?? false,
|
|
156
|
+
disabled,
|
|
157
|
+
indeterminate,
|
|
158
|
+
})
|
|
159
|
+
|
|
160
|
+
const ourProps = $derived(
|
|
161
|
+
mergeProps(
|
|
162
|
+
{
|
|
163
|
+
id,
|
|
164
|
+
role: "checkbox",
|
|
165
|
+
"aria-checked": indeterminate ? ("mixed" as "mixed") : checked ? true : false,
|
|
166
|
+
"aria-labelledby": labelledBy.value,
|
|
167
|
+
"aria-describedby": describedBy.value,
|
|
168
|
+
"aria-disabled": disabled ? true : undefined,
|
|
169
|
+
tabindex: disabled ? undefined : 0,
|
|
170
|
+
onkeyup: disabled ? undefined : handleKeyUp,
|
|
171
|
+
onkeypress: disabled ? undefined : handleKeyPress,
|
|
172
|
+
onclick: disabled ? undefined : handleClick,
|
|
173
|
+
},
|
|
174
|
+
focusProps,
|
|
175
|
+
hoverProps,
|
|
176
|
+
pressProps
|
|
177
|
+
)
|
|
121
178
|
)
|
|
122
|
-
|
|
123
|
-
const reset = $derived(() => {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
})
|
|
179
|
+
|
|
180
|
+
const reset = $derived(() => {
|
|
181
|
+
if (defaultChecked === undefined) return
|
|
182
|
+
return onchange?.(defaultChecked)
|
|
183
|
+
})
|
|
127
184
|
</script>
|
|
128
185
|
|
|
129
186
|
{#if name}
|
|
@@ -135,12 +192,13 @@ const reset = $derived(() => {
|
|
|
135
192
|
onReset={reset}
|
|
136
193
|
/>
|
|
137
194
|
{/if}
|
|
195
|
+
|
|
138
196
|
<ElementOrComponent
|
|
139
197
|
{ourProps}
|
|
140
198
|
{theirProps}
|
|
141
|
-
{slot}
|
|
199
|
+
slots={slot}
|
|
142
200
|
defaultTag={DEFAULT_CHECKBOX_TAG}
|
|
143
201
|
name="Checkbox"
|
|
144
|
-
bind:
|
|
202
|
+
bind:element
|
|
145
203
|
bind:value
|
|
146
204
|
/>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
declare
|
|
3
|
-
type CheckboxRenderPropArg = {
|
|
1
|
+
import type { Props } from "../utils/types.js";
|
|
2
|
+
declare const DEFAULT_CHECKBOX_TAG: "span";
|
|
3
|
+
export type CheckboxRenderPropArg = {
|
|
4
4
|
checked: boolean;
|
|
5
5
|
changing: boolean;
|
|
6
6
|
focus: boolean;
|
|
@@ -10,8 +10,8 @@ type CheckboxRenderPropArg = {
|
|
|
10
10
|
disabled: boolean;
|
|
11
11
|
indeterminate: boolean;
|
|
12
12
|
};
|
|
13
|
-
type
|
|
14
|
-
|
|
13
|
+
export type CheckboxOwnProps<TType = string> = {
|
|
14
|
+
element?: HTMLElement;
|
|
15
15
|
id?: string;
|
|
16
16
|
value?: TType;
|
|
17
17
|
disabled?: boolean;
|
|
@@ -22,43 +22,22 @@ export type CheckboxProps<TTag extends ElementType = typeof DEFAULT_CHECKBOX_TAG
|
|
|
22
22
|
form?: string;
|
|
23
23
|
name?: string;
|
|
24
24
|
onchange?: (checked: boolean) => void;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
children?: import("../utils/types.js").Children<CheckboxRenderPropArg> | undefined;
|
|
31
|
-
ref?: HTMLElement;
|
|
32
|
-
} & (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) ? {
|
|
33
|
-
class?: import("../utils/types.js").PropsOf<TTag>["class"] | ((bag: CheckboxRenderPropArg) => string) | undefined;
|
|
34
|
-
} : {}) & {
|
|
35
|
-
id?: string;
|
|
36
|
-
value?: TType | undefined;
|
|
37
|
-
disabled?: boolean;
|
|
38
|
-
indeterminate?: boolean;
|
|
39
|
-
checked?: boolean;
|
|
40
|
-
defaultChecked?: boolean;
|
|
41
|
-
autofocus?: boolean;
|
|
42
|
-
form?: string;
|
|
43
|
-
name?: string;
|
|
44
|
-
onchange?: (checked: boolean) => void;
|
|
45
|
-
};
|
|
46
|
-
events(): {} & {
|
|
47
|
-
[evt: string]: CustomEvent<any>;
|
|
48
|
-
};
|
|
25
|
+
};
|
|
26
|
+
export type CheckboxProps<TType = string> = Props<typeof DEFAULT_CHECKBOX_TAG, CheckboxRenderPropArg, CheckboxOwnProps<TType>>;
|
|
27
|
+
declare class __sveltets_Render<TType> {
|
|
28
|
+
props(): CheckboxProps<TType>;
|
|
29
|
+
events(): {};
|
|
49
30
|
slots(): {};
|
|
50
|
-
bindings(): "
|
|
31
|
+
bindings(): "element" | "checked";
|
|
51
32
|
exports(): {};
|
|
52
33
|
}
|
|
53
34
|
interface $$IsomorphicComponent {
|
|
54
|
-
new <TType
|
|
55
|
-
$$bindings?: ReturnType<__sveltets_Render<TType
|
|
56
|
-
} & ReturnType<__sveltets_Render<TType
|
|
57
|
-
<TType
|
|
58
|
-
|
|
59
|
-
}): ReturnType<__sveltets_Render<TType, TTag>['exports']>;
|
|
60
|
-
z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
|
|
35
|
+
new <TType>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TType>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TType>['props']>, ReturnType<__sveltets_Render<TType>['events']>, ReturnType<__sveltets_Render<TType>['slots']>> & {
|
|
36
|
+
$$bindings?: ReturnType<__sveltets_Render<TType>['bindings']>;
|
|
37
|
+
} & ReturnType<__sveltets_Render<TType>['exports']>;
|
|
38
|
+
<TType>(internal: unknown, props: ReturnType<__sveltets_Render<TType>['props']> & {}): ReturnType<__sveltets_Render<TType>['exports']>;
|
|
39
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
61
40
|
}
|
|
62
41
|
declare const Checkbox: $$IsomorphicComponent;
|
|
63
|
-
type Checkbox<TType
|
|
42
|
+
type Checkbox<TType> = InstanceType<typeof Checkbox<TType>>;
|
|
64
43
|
export default Checkbox;
|
package/dist/checkbox/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default as Checkbox, type CheckboxProps } from "./Checkbox.svelte";
|
|
1
|
+
export { default as Checkbox, type CheckboxProps, type CheckboxRenderPropArg as CheckboxSlot, type CheckboxOwnProps, } from "./Checkbox.svelte";
|
package/dist/checkbox/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default as Checkbox } from "./Checkbox.svelte";
|
|
1
|
+
export { default as Checkbox, } from "./Checkbox.svelte";
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
<script lang="ts" module>
|
|
2
|
-
import {
|
|
3
|
-
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import Button, { type ButtonProps } from "../button/Button.svelte"
|
|
3
|
+
import { useClose } from "../hooks/use-close.svelte.js"
|
|
4
|
+
|
|
5
|
+
export type CloseButtonProps = ButtonProps
|
|
4
6
|
</script>
|
|
5
7
|
|
|
6
|
-
<script lang="ts"
|
|
7
|
-
const
|
|
8
|
-
|
|
8
|
+
<script lang="ts">
|
|
9
|
+
const closeContext = useClose()
|
|
10
|
+
const close = $derived(closeContext?.close)
|
|
11
|
+
let { element = $bindable(), ...props }: CloseButtonProps = $props()
|
|
9
12
|
</script>
|
|
10
13
|
|
|
11
|
-
<Button onclick={close}
|
|
14
|
+
<Button {...props} onclick={close} bind:element />
|