@sprawlify/svelte 0.0.44 → 0.0.45
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/components/carousel/carousel-anatomy.d.ts +1 -1
- package/dist/components/color-picker/color-picker-anatomy.d.ts +1 -1
- package/dist/components/combobox/combobox-anatomy.d.ts +1 -1
- package/dist/components/combobox/combobox-root-provider.svelte +3 -3
- package/dist/components/combobox/combobox-root-provider.svelte.d.ts +1 -1
- package/dist/components/date-picker/date-picker-anatomy.d.ts +1 -0
- package/dist/components/date-picker/date-picker-anatomy.js +2 -0
- package/dist/components/date-picker/date-picker-clear-trigger.svelte +19 -0
- package/dist/components/date-picker/date-picker-clear-trigger.svelte.d.ts +8 -0
- package/dist/components/date-picker/date-picker-content.svelte +27 -0
- package/dist/components/date-picker/date-picker-content.svelte.d.ts +8 -0
- package/dist/components/date-picker/date-picker-context.svelte +18 -0
- package/dist/components/date-picker/date-picker-context.svelte.d.ts +8 -0
- package/dist/components/date-picker/date-picker-control.svelte +19 -0
- package/dist/components/date-picker/date-picker-control.svelte.d.ts +8 -0
- package/dist/components/date-picker/date-picker-input.svelte +22 -0
- package/dist/components/date-picker/date-picker-input.svelte.d.ts +9 -0
- package/dist/components/date-picker/date-picker-label.svelte +19 -0
- package/dist/components/date-picker/date-picker-label.svelte.d.ts +8 -0
- package/dist/components/date-picker/date-picker-month-select.svelte +25 -0
- package/dist/components/date-picker/date-picker-month-select.svelte.d.ts +8 -0
- package/dist/components/date-picker/date-picker-next-trigger.svelte +21 -0
- package/dist/components/date-picker/date-picker-next-trigger.svelte.d.ts +8 -0
- package/dist/components/date-picker/date-picker-positioner.svelte +23 -0
- package/dist/components/date-picker/date-picker-positioner.svelte.d.ts +8 -0
- package/dist/components/date-picker/date-picker-preset-trigger.svelte +25 -0
- package/dist/components/date-picker/date-picker-preset-trigger.svelte.d.ts +9 -0
- package/dist/components/date-picker/date-picker-prev-trigger.svelte +21 -0
- package/dist/components/date-picker/date-picker-prev-trigger.svelte.d.ts +8 -0
- package/dist/components/date-picker/date-picker-range-text.svelte +27 -0
- package/dist/components/date-picker/date-picker-range-text.svelte.d.ts +8 -0
- package/dist/components/date-picker/date-picker-root-provider.svelte +34 -0
- package/dist/components/date-picker/date-picker-root-provider.svelte.d.ts +13 -0
- package/dist/components/date-picker/date-picker-root.svelte +109 -0
- package/dist/components/date-picker/date-picker-root.svelte.d.ts +10 -0
- package/dist/components/date-picker/date-picker-table-body.svelte +19 -0
- package/dist/components/date-picker/date-picker-table-body.svelte.d.ts +8 -0
- package/dist/components/date-picker/date-picker-table-cell-trigger.svelte +38 -0
- package/dist/components/date-picker/date-picker-table-cell-trigger.svelte.d.ts +8 -0
- package/dist/components/date-picker/date-picker-table-cell.svelte +50 -0
- package/dist/components/date-picker/date-picker-table-cell.svelte.d.ts +9 -0
- package/dist/components/date-picker/date-picker-table-head.svelte +22 -0
- package/dist/components/date-picker/date-picker-table-head.svelte.d.ts +8 -0
- package/dist/components/date-picker/date-picker-table-header.svelte +22 -0
- package/dist/components/date-picker/date-picker-table-header.svelte.d.ts +8 -0
- package/dist/components/date-picker/date-picker-table-row.svelte +22 -0
- package/dist/components/date-picker/date-picker-table-row.svelte.d.ts +8 -0
- package/dist/components/date-picker/date-picker-table.svelte +29 -0
- package/dist/components/date-picker/date-picker-table.svelte.d.ts +9 -0
- package/dist/components/date-picker/date-picker-trigger.svelte +19 -0
- package/dist/components/date-picker/date-picker-trigger.svelte.d.ts +8 -0
- package/dist/components/date-picker/date-picker-view-control.svelte +21 -0
- package/dist/components/date-picker/date-picker-view-control.svelte.d.ts +8 -0
- package/dist/components/date-picker/date-picker-view-trigger.svelte +21 -0
- package/dist/components/date-picker/date-picker-view-trigger.svelte.d.ts +8 -0
- package/dist/components/date-picker/date-picker-view.svelte +25 -0
- package/dist/components/date-picker/date-picker-view.svelte.d.ts +9 -0
- package/dist/components/date-picker/date-picker-year-select.svelte +25 -0
- package/dist/components/date-picker/date-picker-year-select.svelte.d.ts +8 -0
- package/dist/components/date-picker/date-picker.d.ts +26 -0
- package/dist/components/date-picker/date-picker.js +26 -0
- package/dist/components/date-picker/index.d.ts +32 -0
- package/dist/components/date-picker/index.js +31 -0
- package/dist/components/date-picker/use-date-picker-context.d.ts +6 -0
- package/dist/components/date-picker/use-date-picker-context.js +6 -0
- package/dist/components/date-picker/use-date-picker-table-cell-props-context.d.ts +10 -0
- package/dist/components/date-picker/use-date-picker-table-cell-props-context.js +6 -0
- package/dist/components/date-picker/use-date-picker-table-props-context.d.ts +5 -0
- package/dist/components/date-picker/use-date-picker-table-props-context.js +6 -0
- package/dist/components/date-picker/use-date-picker-view-props-context.d.ts +5 -0
- package/dist/components/date-picker/use-date-picker-view-props-context.js +6 -0
- package/dist/components/date-picker/use-date-picker.svelte.d.ts +9 -0
- package/dist/components/date-picker/use-date-picker.svelte.js +20 -0
- package/dist/components/dialog/dialog-anatomy.d.ts +1 -0
- package/dist/components/dialog/dialog-anatomy.js +1 -0
- package/dist/components/dialog/dialog-backdrop.svelte +32 -0
- package/dist/components/dialog/dialog-backdrop.svelte.d.ts +9 -0
- package/dist/components/dialog/dialog-close-trigger.svelte +19 -0
- package/dist/components/dialog/dialog-close-trigger.svelte.d.ts +8 -0
- package/dist/components/dialog/dialog-content.svelte +29 -0
- package/dist/components/dialog/dialog-content.svelte.d.ts +9 -0
- package/dist/components/dialog/dialog-context.svelte +18 -0
- package/dist/components/dialog/dialog-context.svelte.d.ts +8 -0
- package/dist/components/dialog/dialog-description.svelte +19 -0
- package/dist/components/dialog/dialog-description.svelte.d.ts +8 -0
- package/dist/components/dialog/dialog-positioner.svelte +23 -0
- package/dist/components/dialog/dialog-positioner.svelte.d.ts +8 -0
- package/dist/components/dialog/dialog-root-provider.svelte +36 -0
- package/dist/components/dialog/dialog-root-provider.svelte.d.ts +11 -0
- package/dist/components/dialog/dialog-root.svelte +52 -0
- package/dist/components/dialog/dialog-root.svelte.d.ts +11 -0
- package/dist/components/dialog/dialog-title.svelte +19 -0
- package/dist/components/dialog/dialog-title.svelte.d.ts +8 -0
- package/dist/components/dialog/dialog-trigger.svelte +29 -0
- package/dist/components/dialog/dialog-trigger.svelte.d.ts +8 -0
- package/dist/components/dialog/dialog.d.ts +11 -0
- package/dist/components/dialog/dialog.js +10 -0
- package/dist/components/dialog/index.d.ts +17 -0
- package/dist/components/dialog/index.js +14 -0
- package/dist/components/dialog/use-dialog-context.d.ts +4 -0
- package/dist/components/dialog/use-dialog-context.js +4 -0
- package/dist/components/dialog/use-dialog.svelte.d.ts +9 -0
- package/dist/components/dialog/use-dialog.svelte.js +20 -0
- package/dist/components/download-trigger/download-trigger.svelte +43 -0
- package/dist/components/download-trigger/download-trigger.svelte.d.ts +14 -0
- package/dist/components/download-trigger/index.d.ts +1 -0
- package/dist/components/download-trigger/index.js +1 -0
- package/dist/components/editable/editable-anatomy.d.ts +1 -0
- package/dist/components/editable/editable-anatomy.js +1 -0
- package/dist/components/editable/editable-area.svelte +19 -0
- package/dist/components/editable/editable-area.svelte.d.ts +8 -0
- package/dist/components/editable/editable-cancel-trigger.svelte +19 -0
- package/dist/components/editable/editable-cancel-trigger.svelte.d.ts +8 -0
- package/dist/components/editable/editable-context.svelte +18 -0
- package/dist/components/editable/editable-context.svelte.d.ts +8 -0
- package/dist/components/editable/editable-control.svelte +19 -0
- package/dist/components/editable/editable-control.svelte.d.ts +8 -0
- package/dist/components/editable/editable-edit-trigger.svelte +19 -0
- package/dist/components/editable/editable-edit-trigger.svelte.d.ts +8 -0
- package/dist/components/editable/editable-input.svelte +19 -0
- package/dist/components/editable/editable-input.svelte.d.ts +8 -0
- package/dist/components/editable/editable-label.svelte +19 -0
- package/dist/components/editable/editable-label.svelte.d.ts +8 -0
- package/dist/components/editable/editable-preview.svelte +25 -0
- package/dist/components/editable/editable-preview.svelte.d.ts +8 -0
- package/dist/components/editable/editable-root-provider.svelte +23 -0
- package/dist/components/editable/editable-root-provider.svelte.d.ts +10 -0
- package/dist/components/editable/editable-root.svelte +40 -0
- package/dist/components/editable/editable-root.svelte.d.ts +9 -0
- package/dist/components/editable/editable-split-props.d.ts +2 -0
- package/dist/components/editable/editable-split-props.js +33 -0
- package/dist/components/editable/editable-submit-trigger.svelte +19 -0
- package/dist/components/editable/editable-submit-trigger.svelte.d.ts +8 -0
- package/dist/components/editable/editable.d.ts +12 -0
- package/dist/components/editable/editable.js +11 -0
- package/dist/components/editable/index.d.ts +18 -0
- package/dist/components/editable/index.js +15 -0
- package/dist/components/editable/use-editable-context.d.ts +4 -0
- package/dist/components/editable/use-editable-context.js +4 -0
- package/dist/components/editable/use-editable.svelte.d.ts +9 -0
- package/dist/components/editable/use-editable.svelte.js +30 -0
- package/package.json +22 -2
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { createContext } from '../../utils/create-context';
|
|
2
|
+
export const [DatePickerTablePropsProvider, useDatePickerTablePropsContext] = createContext({
|
|
3
|
+
name: 'DatePickerTablePropsContext',
|
|
4
|
+
hookName: 'useDatePickerTablePropsContext',
|
|
5
|
+
providerName: '<DatePickerTablePropsProvider />',
|
|
6
|
+
});
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Accessor } from '../../types';
|
|
2
|
+
import type { ViewProps } from '@sprawlify/primitives/machines/date-picker';
|
|
3
|
+
export interface UseDatePickerViewPropsContext extends Accessor<ViewProps> {
|
|
4
|
+
}
|
|
5
|
+
export declare const DatePickerViewPropsProvider: (opts: UseDatePickerViewPropsContext) => void, useDatePickerViewPropsContext: (fallback?: UseDatePickerViewPropsContext | undefined) => UseDatePickerViewPropsContext;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { createContext } from '../../utils/create-context';
|
|
2
|
+
export const [DatePickerViewPropsProvider, useDatePickerViewPropsContext] = createContext({
|
|
3
|
+
name: 'DatePickerViewPropsContext',
|
|
4
|
+
hookName: 'useDatePickerViewPropsContext',
|
|
5
|
+
providerName: '<DatePickerViewPropsProvider />',
|
|
6
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Accessor, Optional } from '../../types';
|
|
2
|
+
import * as datePicker from '@sprawlify/primitives/machines/date-picker';
|
|
3
|
+
import { type PropTypes } from '../../core';
|
|
4
|
+
import { type MaybeFunction } from '@sprawlify/primitives/utils';
|
|
5
|
+
export interface UseDatePickerProps extends Optional<Omit<datePicker.Props, 'dir' | 'getRootNode'>, 'id'> {
|
|
6
|
+
}
|
|
7
|
+
export interface UseDatePickerReturn extends Accessor<datePicker.Api<PropTypes>> {
|
|
8
|
+
}
|
|
9
|
+
export declare const useDatePicker: (props?: MaybeFunction<UseDatePickerProps>) => UseDatePickerReturn;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as datePicker from '@sprawlify/primitives/machines/date-picker';
|
|
2
|
+
import { normalizeProps, useMachine } from '../../core';
|
|
3
|
+
import { runIfFn } from '@sprawlify/primitives/utils';
|
|
4
|
+
import { useEnvironmentContext, useLocaleContext } from '../../providers';
|
|
5
|
+
export const useDatePicker = (props) => {
|
|
6
|
+
const env = useEnvironmentContext();
|
|
7
|
+
const locale = useLocaleContext();
|
|
8
|
+
const machineProps = $derived.by(() => {
|
|
9
|
+
const resolvedProps = runIfFn(props);
|
|
10
|
+
return {
|
|
11
|
+
dir: locale().dir,
|
|
12
|
+
locale: locale().locale,
|
|
13
|
+
getRootNode: env().getRootNode,
|
|
14
|
+
...resolvedProps,
|
|
15
|
+
};
|
|
16
|
+
});
|
|
17
|
+
const service = useMachine(datePicker.machine, () => machineProps);
|
|
18
|
+
const api = $derived(datePicker.connect(service, normalizeProps));
|
|
19
|
+
return () => api;
|
|
20
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { anatomy as dialogAnatomy } from '@sprawlify/primitives/machines/dialog';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { anatomy as dialogAnatomy } from '@sprawlify/primitives/machines/dialog';
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<script module lang="ts">
|
|
2
|
+
import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types'
|
|
3
|
+
|
|
4
|
+
export interface DialogBackdropBaseProps extends PolymorphicProps<'div'>, RefAttribute {
|
|
5
|
+
ref?: Element | null
|
|
6
|
+
}
|
|
7
|
+
export interface DialogBackdropProps extends Assign<HTMLProps<'div'>, DialogBackdropBaseProps> {}
|
|
8
|
+
</script>
|
|
9
|
+
|
|
10
|
+
<script lang="ts">
|
|
11
|
+
import { useRenderStrategyPropsContext } from '../../utils/render-strategy'
|
|
12
|
+
import { mergeProps } from '../../core'
|
|
13
|
+
import { Sprawlify } from '../factory'
|
|
14
|
+
import { usePresence } from '../presence'
|
|
15
|
+
import { useDialogContext } from './use-dialog-context'
|
|
16
|
+
|
|
17
|
+
let { ref = $bindable(null), ...props }: DialogBackdropProps = $props()
|
|
18
|
+
|
|
19
|
+
const dialog = useDialogContext()
|
|
20
|
+
const renderStrategyProps = useRenderStrategyPropsContext()
|
|
21
|
+
|
|
22
|
+
const presence = usePresence(() => ({ ...renderStrategyProps, present: dialog().open }))
|
|
23
|
+
const mergedProps = $derived(mergeProps(dialog().getBackdropProps(), presence().getPresenceProps(), props))
|
|
24
|
+
|
|
25
|
+
function setNode(node: Element | null) {
|
|
26
|
+
presence().setNode(node)
|
|
27
|
+
}
|
|
28
|
+
</script>
|
|
29
|
+
|
|
30
|
+
{#if !presence().unmounted}
|
|
31
|
+
<Sprawlify as="div" bind:ref {...mergedProps} {@attach setNode} />
|
|
32
|
+
{/if}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types';
|
|
2
|
+
export interface DialogBackdropBaseProps extends PolymorphicProps<'div'>, RefAttribute {
|
|
3
|
+
ref?: Element | null;
|
|
4
|
+
}
|
|
5
|
+
export interface DialogBackdropProps extends Assign<HTMLProps<'div'>, DialogBackdropBaseProps> {
|
|
6
|
+
}
|
|
7
|
+
declare const DialogBackdrop: import("svelte").Component<DialogBackdropProps, {}, "ref">;
|
|
8
|
+
type DialogBackdrop = ReturnType<typeof DialogBackdrop>;
|
|
9
|
+
export default DialogBackdrop;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<script module lang="ts">
|
|
2
|
+
import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types'
|
|
3
|
+
|
|
4
|
+
export interface DialogCloseTriggerBaseProps extends PolymorphicProps<'button'>, RefAttribute {}
|
|
5
|
+
export interface DialogCloseTriggerProps extends Assign<HTMLProps<'button'>, DialogCloseTriggerBaseProps> {}
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<script lang="ts">
|
|
9
|
+
import { mergeProps } from '../../core'
|
|
10
|
+
import { Sprawlify } from '../factory'
|
|
11
|
+
import { useDialogContext } from './use-dialog-context'
|
|
12
|
+
|
|
13
|
+
let { ref = $bindable(null), ...props }: DialogCloseTriggerProps = $props()
|
|
14
|
+
|
|
15
|
+
const dialog = useDialogContext()
|
|
16
|
+
const mergedProps = $derived(mergeProps(dialog().getCloseTriggerProps(), props))
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<Sprawlify as="button" bind:ref {...mergedProps} />
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types';
|
|
2
|
+
export interface DialogCloseTriggerBaseProps extends PolymorphicProps<'button'>, RefAttribute {
|
|
3
|
+
}
|
|
4
|
+
export interface DialogCloseTriggerProps extends Assign<HTMLProps<'button'>, DialogCloseTriggerBaseProps> {
|
|
5
|
+
}
|
|
6
|
+
declare const DialogCloseTrigger: import("svelte").Component<DialogCloseTriggerProps, {}, "ref">;
|
|
7
|
+
type DialogCloseTrigger = ReturnType<typeof DialogCloseTrigger>;
|
|
8
|
+
export default DialogCloseTrigger;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<script module lang="ts">
|
|
2
|
+
import type { Assign, HTMLProps, PolymorphicProps } from '../../types'
|
|
3
|
+
|
|
4
|
+
export interface DialogContentBaseProps extends PolymorphicProps<'div'> {
|
|
5
|
+
ref?: Element | null
|
|
6
|
+
}
|
|
7
|
+
export interface DialogContentProps extends Assign<HTMLProps<'div'>, DialogContentBaseProps> {}
|
|
8
|
+
</script>
|
|
9
|
+
|
|
10
|
+
<script lang="ts">
|
|
11
|
+
import { mergeProps } from '../../core'
|
|
12
|
+
import { Sprawlify } from '../factory'
|
|
13
|
+
import { usePresenceContext } from '../presence'
|
|
14
|
+
import { useDialogContext } from './use-dialog-context'
|
|
15
|
+
|
|
16
|
+
let { ref = $bindable(null), ...props }: DialogContentProps = $props()
|
|
17
|
+
|
|
18
|
+
const dialog = useDialogContext()
|
|
19
|
+
const presence = usePresenceContext()
|
|
20
|
+
const mergedProps = $derived(mergeProps(dialog().getContentProps(), presence().getPresenceProps(), props))
|
|
21
|
+
|
|
22
|
+
function setNode(node: Element | null) {
|
|
23
|
+
presence().setNode(node)
|
|
24
|
+
}
|
|
25
|
+
</script>
|
|
26
|
+
|
|
27
|
+
{#if !presence().unmounted}
|
|
28
|
+
<Sprawlify as="div" bind:ref {...mergedProps} {@attach setNode} />
|
|
29
|
+
{/if}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Assign, HTMLProps, PolymorphicProps } from '../../types';
|
|
2
|
+
export interface DialogContentBaseProps extends PolymorphicProps<'div'> {
|
|
3
|
+
ref?: Element | null;
|
|
4
|
+
}
|
|
5
|
+
export interface DialogContentProps extends Assign<HTMLProps<'div'>, DialogContentBaseProps> {
|
|
6
|
+
}
|
|
7
|
+
declare const DialogContent: import("svelte").Component<DialogContentProps, {}, "ref">;
|
|
8
|
+
type DialogContent = ReturnType<typeof DialogContent>;
|
|
9
|
+
export default DialogContent;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<script module lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte'
|
|
3
|
+
import type { UseDialogContext } from './use-dialog-context'
|
|
4
|
+
|
|
5
|
+
export interface DialogContextProps {
|
|
6
|
+
children: Snippet<[UseDialogContext]>
|
|
7
|
+
}
|
|
8
|
+
</script>
|
|
9
|
+
|
|
10
|
+
<script lang="ts">
|
|
11
|
+
import { useDialogContext } from './use-dialog-context'
|
|
12
|
+
|
|
13
|
+
const { children }: DialogContextProps = $props()
|
|
14
|
+
|
|
15
|
+
const dialog = useDialogContext()
|
|
16
|
+
</script>
|
|
17
|
+
|
|
18
|
+
{@render children(dialog)}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { UseDialogContext } from './use-dialog-context';
|
|
3
|
+
export interface DialogContextProps {
|
|
4
|
+
children: Snippet<[UseDialogContext]>;
|
|
5
|
+
}
|
|
6
|
+
declare const DialogContext: import("svelte").Component<DialogContextProps, {}, "">;
|
|
7
|
+
type DialogContext = ReturnType<typeof DialogContext>;
|
|
8
|
+
export default DialogContext;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<script module lang="ts">
|
|
2
|
+
import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types'
|
|
3
|
+
|
|
4
|
+
export interface DialogDescriptionBaseProps extends PolymorphicProps<'p'>, RefAttribute {}
|
|
5
|
+
export interface DialogDescriptionProps extends Assign<HTMLProps<'p'>, DialogDescriptionBaseProps> {}
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<script lang="ts">
|
|
9
|
+
import { mergeProps } from '../../core'
|
|
10
|
+
import { Sprawlify } from '../factory'
|
|
11
|
+
import { useDialogContext } from './use-dialog-context'
|
|
12
|
+
|
|
13
|
+
let { ref = $bindable(null), ...props }: DialogDescriptionProps = $props()
|
|
14
|
+
|
|
15
|
+
const dialog = useDialogContext()
|
|
16
|
+
const mergedProps = $derived(mergeProps(dialog().getDescriptionProps(), props))
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<Sprawlify as="p" bind:ref {...mergedProps} />
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types';
|
|
2
|
+
export interface DialogDescriptionBaseProps extends PolymorphicProps<'p'>, RefAttribute {
|
|
3
|
+
}
|
|
4
|
+
export interface DialogDescriptionProps extends Assign<HTMLProps<'p'>, DialogDescriptionBaseProps> {
|
|
5
|
+
}
|
|
6
|
+
declare const DialogDescription: import("svelte").Component<DialogDescriptionProps, {}, "ref">;
|
|
7
|
+
type DialogDescription = ReturnType<typeof DialogDescription>;
|
|
8
|
+
export default DialogDescription;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<script module lang="ts">
|
|
2
|
+
import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types'
|
|
3
|
+
|
|
4
|
+
export interface DialogPositionerBaseProps extends PolymorphicProps<'div'>, RefAttribute {}
|
|
5
|
+
export interface DialogPositionerProps extends Assign<HTMLProps<'div'>, DialogPositionerBaseProps> {}
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<script lang="ts">
|
|
9
|
+
import { mergeProps } from '../../core'
|
|
10
|
+
import { Sprawlify } from '../factory'
|
|
11
|
+
import { usePresenceContext } from '../presence'
|
|
12
|
+
import { useDialogContext } from './use-dialog-context'
|
|
13
|
+
|
|
14
|
+
let { ref = $bindable(null), ...props }: DialogPositionerProps = $props()
|
|
15
|
+
|
|
16
|
+
const dialog = useDialogContext()
|
|
17
|
+
const presence = usePresenceContext()
|
|
18
|
+
const mergedProps = $derived(mergeProps(dialog().getPositionerProps(), props))
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
{#if !presence().unmounted}
|
|
22
|
+
<Sprawlify as="div" bind:ref {...mergedProps} />
|
|
23
|
+
{/if}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types';
|
|
2
|
+
export interface DialogPositionerBaseProps extends PolymorphicProps<'div'>, RefAttribute {
|
|
3
|
+
}
|
|
4
|
+
export interface DialogPositionerProps extends Assign<HTMLProps<'div'>, DialogPositionerBaseProps> {
|
|
5
|
+
}
|
|
6
|
+
declare const DialogPositioner: import("svelte").Component<DialogPositionerProps, {}, "ref">;
|
|
7
|
+
type DialogPositioner = ReturnType<typeof DialogPositioner>;
|
|
8
|
+
export default DialogPositioner;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<script module lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte'
|
|
3
|
+
import type { UseDialogReturn } from './use-dialog.svelte'
|
|
4
|
+
|
|
5
|
+
export interface DialogRootProviderBaseProps {
|
|
6
|
+
value: UseDialogReturn
|
|
7
|
+
}
|
|
8
|
+
export interface DialogRootProviderProps extends DialogRootProviderBaseProps {
|
|
9
|
+
children?: Snippet
|
|
10
|
+
}
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
<script lang="ts">
|
|
14
|
+
import { RenderStrategyPropsProvider, splitRenderStrategyProps } from '../../utils/render-strategy'
|
|
15
|
+
import { PresenceProvider, usePresence } from '../presence'
|
|
16
|
+
import { splitPresenceProps } from '../presence/split-presence-props.svelte'
|
|
17
|
+
import { DialogProvider } from './use-dialog-context'
|
|
18
|
+
|
|
19
|
+
let { value, children, ...props }: DialogRootProviderProps = $props()
|
|
20
|
+
|
|
21
|
+
const [presenceProps] = $derived(splitPresenceProps(props))
|
|
22
|
+
const [renderStrategyProps] = $derived(splitRenderStrategyProps(presenceProps))
|
|
23
|
+
|
|
24
|
+
const presenceMachineProps = $derived.by(() => ({
|
|
25
|
+
...presenceProps,
|
|
26
|
+
present: value().open,
|
|
27
|
+
}))
|
|
28
|
+
|
|
29
|
+
const presence = usePresence(() => presenceMachineProps)
|
|
30
|
+
|
|
31
|
+
DialogProvider(value)
|
|
32
|
+
RenderStrategyPropsProvider(() => renderStrategyProps)
|
|
33
|
+
PresenceProvider(presence)
|
|
34
|
+
</script>
|
|
35
|
+
|
|
36
|
+
{@render children?.()}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { UseDialogReturn } from './use-dialog.svelte';
|
|
3
|
+
export interface DialogRootProviderBaseProps {
|
|
4
|
+
value: UseDialogReturn;
|
|
5
|
+
}
|
|
6
|
+
export interface DialogRootProviderProps extends DialogRootProviderBaseProps {
|
|
7
|
+
children?: Snippet;
|
|
8
|
+
}
|
|
9
|
+
declare const DialogRootProvider: import("svelte").Component<DialogRootProviderProps, {}, "">;
|
|
10
|
+
type DialogRootProvider = ReturnType<typeof DialogRootProvider>;
|
|
11
|
+
export default DialogRootProvider;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
<script module lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte'
|
|
3
|
+
import type { UsePresenceProps } from '../presence'
|
|
4
|
+
import type { UseDialogProps } from './use-dialog.svelte'
|
|
5
|
+
|
|
6
|
+
export interface DialogRootBaseProps extends UseDialogProps, UsePresenceProps {}
|
|
7
|
+
export interface DialogRootProps extends DialogRootBaseProps {
|
|
8
|
+
children?: Snippet
|
|
9
|
+
}
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<script lang="ts">
|
|
13
|
+
import { PresenceProvider, usePresence } from '../presence'
|
|
14
|
+
import { splitPresenceProps } from '../presence/split-presence-props.svelte'
|
|
15
|
+
import { RenderStrategyPropsProvider, splitRenderStrategyProps } from '../../utils/render-strategy'
|
|
16
|
+
import { DialogProvider } from './use-dialog-context'
|
|
17
|
+
import { useDialog } from './use-dialog.svelte'
|
|
18
|
+
|
|
19
|
+
let { open = $bindable(), children, ...props }: DialogRootProps = $props()
|
|
20
|
+
|
|
21
|
+
const providedId = $props.id()
|
|
22
|
+
|
|
23
|
+
const [presenceProps, localProps] = $derived(splitPresenceProps(props))
|
|
24
|
+
const [renderStrategyProps] = $derived(splitRenderStrategyProps(presenceProps))
|
|
25
|
+
|
|
26
|
+
const machineProps = $derived.by<UseDialogProps>(() => {
|
|
27
|
+
return {
|
|
28
|
+
...localProps,
|
|
29
|
+
id: localProps.id ?? providedId,
|
|
30
|
+
open,
|
|
31
|
+
onOpenChange(details) {
|
|
32
|
+
localProps.onOpenChange?.(details)
|
|
33
|
+
if (open !== undefined) open = details.open
|
|
34
|
+
},
|
|
35
|
+
}
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
const dialog = useDialog(() => machineProps)
|
|
39
|
+
|
|
40
|
+
const presenceMachineProps = $derived.by<UsePresenceProps>(() => ({
|
|
41
|
+
...presenceProps,
|
|
42
|
+
present: dialog().open,
|
|
43
|
+
}))
|
|
44
|
+
|
|
45
|
+
const presence = usePresence(() => presenceMachineProps)
|
|
46
|
+
|
|
47
|
+
DialogProvider(dialog)
|
|
48
|
+
RenderStrategyPropsProvider(() => renderStrategyProps)
|
|
49
|
+
PresenceProvider(presence)
|
|
50
|
+
</script>
|
|
51
|
+
|
|
52
|
+
{@render children?.()}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { UsePresenceProps } from '../presence';
|
|
3
|
+
import type { UseDialogProps } from './use-dialog.svelte';
|
|
4
|
+
export interface DialogRootBaseProps extends UseDialogProps, UsePresenceProps {
|
|
5
|
+
}
|
|
6
|
+
export interface DialogRootProps extends DialogRootBaseProps {
|
|
7
|
+
children?: Snippet;
|
|
8
|
+
}
|
|
9
|
+
declare const DialogRoot: import("svelte").Component<DialogRootProps, {}, "open">;
|
|
10
|
+
type DialogRoot = ReturnType<typeof DialogRoot>;
|
|
11
|
+
export default DialogRoot;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<script module lang="ts">
|
|
2
|
+
import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types'
|
|
3
|
+
|
|
4
|
+
export interface DialogTitleBaseProps extends PolymorphicProps<'h2'>, RefAttribute {}
|
|
5
|
+
export interface DialogTitleProps extends Assign<HTMLProps<'h2'>, DialogTitleBaseProps> {}
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<script lang="ts">
|
|
9
|
+
import { mergeProps } from '../../core'
|
|
10
|
+
import { Sprawlify } from '../factory'
|
|
11
|
+
import { useDialogContext } from './use-dialog-context'
|
|
12
|
+
|
|
13
|
+
let { ref = $bindable(null), ...props }: DialogTitleProps = $props()
|
|
14
|
+
|
|
15
|
+
const dialog = useDialogContext()
|
|
16
|
+
const mergedProps = $derived(mergeProps(dialog().getTitleProps(), props))
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<Sprawlify as="h2" bind:ref {...mergedProps} />
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types';
|
|
2
|
+
export interface DialogTitleBaseProps extends PolymorphicProps<'h2'>, RefAttribute {
|
|
3
|
+
}
|
|
4
|
+
export interface DialogTitleProps extends Assign<HTMLProps<'h2'>, DialogTitleBaseProps> {
|
|
5
|
+
}
|
|
6
|
+
declare const DialogTitle: import("svelte").Component<DialogTitleProps, {}, "ref">;
|
|
7
|
+
type DialogTitle = ReturnType<typeof DialogTitle>;
|
|
8
|
+
export default DialogTitle;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<script module lang="ts">
|
|
2
|
+
import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types'
|
|
3
|
+
|
|
4
|
+
export interface DialogTriggerBaseProps extends PolymorphicProps<'button'>, RefAttribute {}
|
|
5
|
+
export interface DialogTriggerProps extends Assign<HTMLProps<'button'>, DialogTriggerBaseProps> {}
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<script lang="ts">
|
|
9
|
+
import { mergeProps } from '../../core'
|
|
10
|
+
import { Sprawlify } from '../factory'
|
|
11
|
+
import { usePresenceContext } from '../presence'
|
|
12
|
+
import { useDialogContext } from './use-dialog-context'
|
|
13
|
+
|
|
14
|
+
let { ref = $bindable(null), ...props }: DialogTriggerProps = $props()
|
|
15
|
+
|
|
16
|
+
const dialog = useDialogContext()
|
|
17
|
+
const presence = usePresenceContext()
|
|
18
|
+
const mergedProps = $derived(
|
|
19
|
+
mergeProps(
|
|
20
|
+
{
|
|
21
|
+
...dialog().getTriggerProps(),
|
|
22
|
+
'aria-controls': presence().unmounted ? undefined : dialog().getTriggerProps()['aria-controls'],
|
|
23
|
+
},
|
|
24
|
+
props,
|
|
25
|
+
),
|
|
26
|
+
)
|
|
27
|
+
</script>
|
|
28
|
+
|
|
29
|
+
<Sprawlify as="button" bind:ref {...mergedProps} />
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types';
|
|
2
|
+
export interface DialogTriggerBaseProps extends PolymorphicProps<'button'>, RefAttribute {
|
|
3
|
+
}
|
|
4
|
+
export interface DialogTriggerProps extends Assign<HTMLProps<'button'>, DialogTriggerBaseProps> {
|
|
5
|
+
}
|
|
6
|
+
declare const DialogTrigger: import("svelte").Component<DialogTriggerProps, {}, "ref">;
|
|
7
|
+
type DialogTrigger = ReturnType<typeof DialogTrigger>;
|
|
8
|
+
export default DialogTrigger;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type { FocusOutsideEvent, InteractOutsideEvent, OpenChangeDetails, PointerDownOutsideEvent, } from '@sprawlify/primitives/machines/dialog';
|
|
2
|
+
export { default as Backdrop, type DialogBackdropBaseProps as BackdropBaseProps, type DialogBackdropProps as BackdropProps, } from './dialog-backdrop.svelte';
|
|
3
|
+
export { default as CloseTrigger, type DialogCloseTriggerBaseProps as CloseTriggerBaseProps, type DialogCloseTriggerProps as CloseTriggerProps, } from './dialog-close-trigger.svelte';
|
|
4
|
+
export { default as Content, type DialogContentBaseProps as ContentBaseProps, type DialogContentProps as ContentProps, } from './dialog-content.svelte';
|
|
5
|
+
export { default as Context, type DialogContextProps as ContextProps } from './dialog-context.svelte';
|
|
6
|
+
export { default as Description, type DialogDescriptionBaseProps as DescriptionBaseProps, type DialogDescriptionProps as DescriptionProps, } from './dialog-description.svelte';
|
|
7
|
+
export { default as Positioner, type DialogPositionerBaseProps as PositionerBaseProps, type DialogPositionerProps as PositionerProps, } from './dialog-positioner.svelte';
|
|
8
|
+
export { default as Root, type DialogRootBaseProps as RootBaseProps, type DialogRootProps as RootProps, } from './dialog-root.svelte';
|
|
9
|
+
export { default as RootProvider, type DialogRootProviderBaseProps as RootProviderBaseProps, type DialogRootProviderProps as RootProviderProps, } from './dialog-root-provider.svelte';
|
|
10
|
+
export { default as Title, type DialogTitleBaseProps as TitleBaseProps, type DialogTitleProps as TitleProps, } from './dialog-title.svelte';
|
|
11
|
+
export { default as Trigger, type DialogTriggerBaseProps as TriggerBaseProps, type DialogTriggerProps as TriggerProps, } from './dialog-trigger.svelte';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { default as Backdrop, } from './dialog-backdrop.svelte';
|
|
2
|
+
export { default as CloseTrigger, } from './dialog-close-trigger.svelte';
|
|
3
|
+
export { default as Content, } from './dialog-content.svelte';
|
|
4
|
+
export { default as Context } from './dialog-context.svelte';
|
|
5
|
+
export { default as Description, } from './dialog-description.svelte';
|
|
6
|
+
export { default as Positioner, } from './dialog-positioner.svelte';
|
|
7
|
+
export { default as Root, } from './dialog-root.svelte';
|
|
8
|
+
export { default as RootProvider, } from './dialog-root-provider.svelte';
|
|
9
|
+
export { default as Title, } from './dialog-title.svelte';
|
|
10
|
+
export { default as Trigger, } from './dialog-trigger.svelte';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type { FocusOutsideEvent as DialogFocusOutsideEvent, InteractOutsideEvent as DialogInteractOutsideEvent, OpenChangeDetails as DialogOpenChangeDetails, PointerDownOutsideEvent as DialogPointerDownOutsideEvent, } from '@sprawlify/primitives/machines/dialog';
|
|
2
|
+
export { default as DialogBackdrop, type DialogBackdropBaseProps, type DialogBackdropProps, } from './dialog-backdrop.svelte';
|
|
3
|
+
export { default as DialogCloseTrigger, type DialogCloseTriggerBaseProps, type DialogCloseTriggerProps, } from './dialog-close-trigger.svelte';
|
|
4
|
+
export { default as DialogContent, type DialogContentBaseProps, type DialogContentProps } from './dialog-content.svelte';
|
|
5
|
+
export { default as DialogContext, type DialogContextProps } from './dialog-context.svelte';
|
|
6
|
+
export { default as DialogDescription, type DialogDescriptionBaseProps, type DialogDescriptionProps, } from './dialog-description.svelte';
|
|
7
|
+
export { default as Positioner, type DialogPositionerBaseProps, type DialogPositionerProps, } from './dialog-positioner.svelte';
|
|
8
|
+
export { default as Root, type DialogRootBaseProps, type DialogRootProps } from './dialog-root.svelte';
|
|
9
|
+
export { default as RootProvider, type DialogRootProviderBaseProps, type DialogRootProviderProps, } from './dialog-root-provider.svelte';
|
|
10
|
+
export { default as Title, type DialogTitleBaseProps, type DialogTitleProps } from './dialog-title.svelte';
|
|
11
|
+
export { default as Trigger, type DialogTriggerBaseProps, type DialogTriggerProps } from './dialog-trigger.svelte';
|
|
12
|
+
export { dialogAnatomy } from './dialog-anatomy';
|
|
13
|
+
export { useDialogContext } from './use-dialog-context';
|
|
14
|
+
export type { UseDialogContext } from './use-dialog-context';
|
|
15
|
+
export { useDialog } from './use-dialog.svelte';
|
|
16
|
+
export type { UseDialogProps, UseDialogReturn } from './use-dialog.svelte';
|
|
17
|
+
export * as Dialog from './dialog';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export { default as DialogBackdrop, } from './dialog-backdrop.svelte';
|
|
2
|
+
export { default as DialogCloseTrigger, } from './dialog-close-trigger.svelte';
|
|
3
|
+
export { default as DialogContent } from './dialog-content.svelte';
|
|
4
|
+
export { default as DialogContext } from './dialog-context.svelte';
|
|
5
|
+
export { default as DialogDescription, } from './dialog-description.svelte';
|
|
6
|
+
export { default as Positioner, } from './dialog-positioner.svelte';
|
|
7
|
+
export { default as Root } from './dialog-root.svelte';
|
|
8
|
+
export { default as RootProvider, } from './dialog-root-provider.svelte';
|
|
9
|
+
export { default as Title } from './dialog-title.svelte';
|
|
10
|
+
export { default as Trigger } from './dialog-trigger.svelte';
|
|
11
|
+
export { dialogAnatomy } from './dialog-anatomy';
|
|
12
|
+
export { useDialogContext } from './use-dialog-context';
|
|
13
|
+
export { useDialog } from './use-dialog.svelte';
|
|
14
|
+
export * as Dialog from './dialog';
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { UseDialogReturn } from './use-dialog.svelte';
|
|
2
|
+
export interface UseDialogContext extends UseDialogReturn {
|
|
3
|
+
}
|
|
4
|
+
export declare const DialogProvider: (opts: UseDialogContext) => void, useDialogContext: (fallback?: UseDialogContext | undefined) => UseDialogContext;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Accessor, Optional } from '../../types';
|
|
2
|
+
import * as dialog from '@sprawlify/primitives/machines/dialog';
|
|
3
|
+
import { type PropTypes } from '../../core';
|
|
4
|
+
import { type MaybeFunction } from '@sprawlify/primitives/utils';
|
|
5
|
+
export interface UseDialogProps extends Optional<Omit<dialog.Props, 'getRootNode' | 'dir'>, 'id'> {
|
|
6
|
+
}
|
|
7
|
+
export interface UseDialogReturn extends Accessor<dialog.Api<PropTypes>> {
|
|
8
|
+
}
|
|
9
|
+
export declare const useDialog: (props?: MaybeFunction<UseDialogProps>) => UseDialogReturn;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { useEnvironmentContext } from '../../providers/environment';
|
|
2
|
+
import { useLocaleContext } from '../../providers/locale';
|
|
3
|
+
import * as dialog from '@sprawlify/primitives/machines/dialog';
|
|
4
|
+
import { normalizeProps, useMachine } from '../../core';
|
|
5
|
+
import { runIfFn } from '@sprawlify/primitives/utils';
|
|
6
|
+
export const useDialog = (props) => {
|
|
7
|
+
const env = useEnvironmentContext();
|
|
8
|
+
const locale = useLocaleContext();
|
|
9
|
+
const machineProps = $derived.by(() => {
|
|
10
|
+
const resolvedProps = runIfFn(props) || {};
|
|
11
|
+
return {
|
|
12
|
+
getRootNode: env().getRootNode,
|
|
13
|
+
dir: locale().dir,
|
|
14
|
+
...resolvedProps,
|
|
15
|
+
};
|
|
16
|
+
});
|
|
17
|
+
const service = useMachine(dialog.machine, () => machineProps);
|
|
18
|
+
const api = $derived(dialog.connect(service, normalizeProps));
|
|
19
|
+
return () => api;
|
|
20
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types'
|
|
3
|
+
import { getWindow } from '@sprawlify/primitives/dom-query'
|
|
4
|
+
import { type FileMimeType, downloadFile } from '@sprawlify/primitives/file-utils'
|
|
5
|
+
import { isFunction } from '@sprawlify/primitives/utils'
|
|
6
|
+
import { Sprawlify } from '../factory'
|
|
7
|
+
|
|
8
|
+
export type DownloadableData = string | Blob | File
|
|
9
|
+
export type MaybePromise<T> = T | Promise<T>
|
|
10
|
+
|
|
11
|
+
export interface DownloadTriggerBaseProps extends PolymorphicProps<'button'>, RefAttribute {
|
|
12
|
+
fileName: string
|
|
13
|
+
data: DownloadableData | (() => MaybePromise<DownloadableData>)
|
|
14
|
+
mimeType: FileMimeType
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface DownloadTriggerProps extends Assign<HTMLProps<'button'>, DownloadTriggerBaseProps> {}
|
|
18
|
+
|
|
19
|
+
let { ref = $bindable(null), fileName, data, mimeType, onclick, ...restProps }: DownloadTriggerProps = $props()
|
|
20
|
+
|
|
21
|
+
const download = (fileData: DownloadableData, win: Window & typeof globalThis) => {
|
|
22
|
+
downloadFile({ file: fileData, name: fileName, type: mimeType, win })
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const handleClick = (e: MouseEvent & { currentTarget: HTMLButtonElement }) => {
|
|
26
|
+
const win = getWindow(e.currentTarget)
|
|
27
|
+
onclick?.(e)
|
|
28
|
+
if (e.defaultPrevented) return
|
|
29
|
+
|
|
30
|
+
if (isFunction(data)) {
|
|
31
|
+
const maybePromise = data()
|
|
32
|
+
if (maybePromise instanceof Promise) {
|
|
33
|
+
maybePromise.then((result) => download(result, win))
|
|
34
|
+
} else {
|
|
35
|
+
download(maybePromise, win)
|
|
36
|
+
}
|
|
37
|
+
} else {
|
|
38
|
+
download(data, win)
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
</script>
|
|
42
|
+
|
|
43
|
+
<Sprawlify as="button" bind:ref {...restProps} type="button" onclick={handleClick} />
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Assign, HTMLProps, PolymorphicProps, RefAttribute } from '../../types';
|
|
2
|
+
import { type FileMimeType } from '@sprawlify/primitives/file-utils';
|
|
3
|
+
export type DownloadableData = string | Blob | File;
|
|
4
|
+
export type MaybePromise<T> = T | Promise<T>;
|
|
5
|
+
export interface DownloadTriggerBaseProps extends PolymorphicProps<'button'>, RefAttribute {
|
|
6
|
+
fileName: string;
|
|
7
|
+
data: DownloadableData | (() => MaybePromise<DownloadableData>);
|
|
8
|
+
mimeType: FileMimeType;
|
|
9
|
+
}
|
|
10
|
+
export interface DownloadTriggerProps extends Assign<HTMLProps<'button'>, DownloadTriggerBaseProps> {
|
|
11
|
+
}
|
|
12
|
+
declare const DownloadTrigger: import("svelte").Component<DownloadTriggerProps, {}, "ref">;
|
|
13
|
+
type DownloadTrigger = ReturnType<typeof DownloadTrigger>;
|
|
14
|
+
export default DownloadTrigger;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as DownloadTrigger, type DownloadTriggerBaseProps, type DownloadTriggerProps, } from './download-trigger.svelte';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as DownloadTrigger, } from './download-trigger.svelte';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { anatomy as editableAnatomy } from '@sprawlify/primitives/machines/editable';
|