kosui 0.1.2 → 0.4.0
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/README.md +34 -3
- package/dist/alert/alert.svelte +16 -157
- package/dist/alert/alert.svelte.d.ts +3 -26
- package/dist/alert/index.d.ts +1 -1
- package/dist/alert/index.js +1 -1
- package/dist/autocomplete/autocomplete.svelte +126 -12
- package/dist/autocomplete/autocomplete.svelte.d.ts +30 -6
- package/dist/autocomplete/index.d.ts +1 -5
- package/dist/autocomplete/index.js +1 -5
- package/dist/avatar/avatar.svelte +16 -10
- package/dist/badge/badge.svelte +31 -20
- package/dist/badge/badge.svelte.d.ts +8 -4
- package/dist/badge/index.d.ts +1 -1
- package/dist/base.d.ts +4 -8
- package/dist/base.js +14 -28
- package/dist/box/box.svelte +2 -14
- package/dist/box/box.svelte.d.ts +0 -2
- package/dist/breadcrumbs/breadcrumbs.svelte +38 -19
- package/dist/breadcrumbs/breadcrumbs.svelte.d.ts +6 -4
- package/dist/breadcrumbs/index.d.ts +1 -1
- package/dist/breadcrumbs/index.js +1 -1
- package/dist/button/button.svelte +96 -31
- package/dist/button/button.svelte.d.ts +11 -5
- package/dist/button/index.d.ts +1 -1
- package/dist/button/index.js +1 -1
- package/dist/chip/chip.svelte +62 -14
- package/dist/chip/chip.svelte.d.ts +2 -1
- package/dist/command/action.svelte.js +13 -18
- package/dist/command/command-palette.svelte +163 -0
- package/dist/command/command-palette.svelte.d.ts +11 -0
- package/dist/command/index.d.ts +1 -8
- package/dist/command/index.js +1 -8
- package/dist/common/divider.svelte +10 -5
- package/dist/common/divider.svelte.d.ts +3 -3
- package/dist/common/index.d.ts +0 -2
- package/dist/common/index.js +0 -2
- package/dist/dialog/dialog-provider.svelte +70 -0
- package/dist/dialog/dialog-provider.svelte.d.ts +7 -0
- package/dist/dialog/dialog.svelte +33 -35
- package/dist/dialog/dialog.svelte.d.ts +4 -8
- package/dist/dialog/dialogs.svelte.d.ts +49 -0
- package/dist/dialog/dialogs.svelte.js +73 -0
- package/dist/dialog/index.d.ts +2 -3
- package/dist/dialog/index.js +2 -3
- package/dist/fab/fab.svelte +30 -10
- package/dist/fab/fab.svelte.d.ts +3 -2
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/dist/input/field.d.ts +8 -0
- package/dist/input/field.js +7 -0
- package/dist/input/index.d.ts +2 -1
- package/dist/input/index.js +2 -1
- package/dist/input/input.svelte +21 -66
- package/dist/input/input.svelte.d.ts +6 -16
- package/dist/link/link.svelte +33 -42
- package/dist/link/link.svelte.d.ts +4 -3
- package/dist/markdown/index.d.ts +2 -25
- package/dist/markdown/index.js +0 -24
- package/dist/markdown/markdown-tokens.svelte +166 -6
- package/dist/markdown/markdown-tokens.svelte.d.ts +2 -0
- package/dist/markdown/markdown.svelte +62 -173
- package/dist/markdown/markdown.svelte.d.ts +7 -27
- package/dist/markdown/parse.d.ts +5 -0
- package/dist/markdown/parse.js +30 -0
- package/dist/markdown/types.d.ts +28 -0
- package/dist/markdown/types.js +1 -0
- package/dist/menu/index.d.ts +3 -6
- package/dist/menu/index.js +3 -6
- package/dist/menu/menu-actions.svelte +44 -38
- package/dist/menu/menu-context.d.ts +4 -0
- package/dist/menu/menu-context.js +2 -0
- package/dist/menu/menu-group.svelte +40 -0
- package/dist/menu/menu-group.svelte.d.ts +11 -0
- package/dist/menu/menu-item.svelte +31 -54
- package/dist/menu/menu-item.svelte.d.ts +7 -5
- package/dist/menu/menu.svelte +160 -15
- package/dist/menu/menu.svelte.d.ts +15 -4
- package/dist/merge-props.d.ts +1 -1
- package/dist/merge-props.js +10 -5
- package/dist/modal/modal.svelte +60 -83
- package/dist/modal/modal.svelte.d.ts +5 -4
- package/dist/popover/index.d.ts +1 -1
- package/dist/popover/index.js +1 -1
- package/dist/popover/popover.svelte +58 -111
- package/dist/popover/popover.svelte.d.ts +6 -8
- package/dist/progress/circular-progress.svelte +64 -30
- package/dist/progress/circular-progress.svelte.d.ts +7 -8
- package/dist/shortcut/index.d.ts +2 -2
- package/dist/shortcut/index.js +1 -1
- package/dist/shortcut/shortcut-hint.svelte +36 -0
- package/dist/shortcut/shortcut-hint.svelte.d.ts +9 -0
- package/dist/shortcut/shortcut.d.ts +19 -14
- package/dist/shortcut/shortcut.js +105 -52
- package/dist/skeleton/skeleton.svelte +13 -8
- package/dist/skeleton/skeleton.svelte.d.ts +2 -5
- package/dist/slider/index.d.ts +1 -8
- package/dist/slider/index.js +1 -8
- package/dist/slider/slider.svelte +180 -211
- package/dist/slider/slider.svelte.d.ts +11 -32
- package/dist/switch/index.d.ts +1 -2
- package/dist/switch/index.js +1 -2
- package/dist/switch/switch.svelte +36 -60
- package/dist/switch/switch.svelte.d.ts +6 -17
- package/dist/textarea/index.d.ts +1 -1
- package/dist/textarea/index.js +1 -1
- package/dist/textarea/textarea.svelte +23 -63
- package/dist/textarea/textarea.svelte.d.ts +8 -18
- package/dist/theme.css +191 -0
- package/dist/toggle/index.d.ts +0 -1
- package/dist/toggle/index.js +0 -1
- package/dist/toggle/toggle-button.svelte +72 -38
- package/dist/toggle/toggle-button.svelte.d.ts +4 -4
- package/dist/toggle/toggle-context.d.ts +10 -0
- package/dist/toggle/toggle-context.js +2 -0
- package/dist/toggle/toggle-group.svelte +41 -22
- package/dist/toggle/toggle-group.svelte.d.ts +7 -4
- package/dist/tooltip/tooltip.svelte +67 -26
- package/dist/tooltip/tooltip.svelte.d.ts +10 -4
- package/dist/utils.d.ts +9 -3
- package/dist/utils.js +10 -0
- package/package.json +21 -13
- package/dist/autocomplete/autocomplete-content.svelte +0 -47
- package/dist/autocomplete/autocomplete-content.svelte.d.ts +0 -10
- package/dist/autocomplete/autocomplete-context.svelte.d.ts +0 -12
- package/dist/autocomplete/autocomplete-context.svelte.js +0 -34
- package/dist/autocomplete/autocomplete-input.svelte +0 -36
- package/dist/autocomplete/autocomplete-input.svelte.d.ts +0 -5
- package/dist/autocomplete/autocomplete-item.svelte +0 -68
- package/dist/autocomplete/autocomplete-item.svelte.d.ts +0 -11
- package/dist/base.css +0 -71
- package/dist/bindable.svelte.d.ts +0 -7
- package/dist/bindable.svelte.js +0 -25
- package/dist/command/command-content.svelte +0 -15
- package/dist/command/command-content.svelte.d.ts +0 -8
- package/dist/command/command-context.svelte.d.ts +0 -5
- package/dist/command/command-context.svelte.js +0 -13
- package/dist/command/command-input.svelte +0 -44
- package/dist/command/command-input.svelte.d.ts +0 -7
- package/dist/command/command-item.svelte +0 -66
- package/dist/command/command-item.svelte.d.ts +0 -11
- package/dist/command/command-search.svelte +0 -28
- package/dist/command/command-search.svelte.d.ts +0 -5
- package/dist/command/command.svelte +0 -19
- package/dist/command/command.svelte.d.ts +0 -8
- package/dist/command/commander.svelte +0 -107
- package/dist/command/commander.svelte.d.ts +0 -9
- package/dist/common/header.svelte +0 -35
- package/dist/common/header.svelte.d.ts +0 -10
- package/dist/common/item-context.svelte.d.ts +0 -12
- package/dist/common/item-context.svelte.js +0 -77
- package/dist/dialog/dialog-button.svelte +0 -25
- package/dist/dialog/dialog-button.svelte.d.ts +0 -32
- package/dist/dialog/dialoguer-context.svelte.d.ts +0 -53
- package/dist/dialog/dialoguer-context.svelte.js +0 -85
- package/dist/dialog/dialoguer.svelte +0 -65
- package/dist/dialog/dialoguer.svelte.d.ts +0 -7
- package/dist/markdown/markdown-blockquote.svelte +0 -14
- package/dist/markdown/markdown-blockquote.svelte.d.ts +0 -7
- package/dist/markdown/markdown-br.svelte +0 -12
- package/dist/markdown/markdown-br.svelte.d.ts +0 -7
- package/dist/markdown/markdown-code.svelte +0 -14
- package/dist/markdown/markdown-code.svelte.d.ts +0 -7
- package/dist/markdown/markdown-codespan.svelte +0 -15
- package/dist/markdown/markdown-codespan.svelte.d.ts +0 -7
- package/dist/markdown/markdown-context.svelte.d.ts +0 -26
- package/dist/markdown/markdown-context.svelte.js +0 -30
- package/dist/markdown/markdown-def.svelte +0 -15
- package/dist/markdown/markdown-def.svelte.d.ts +0 -7
- package/dist/markdown/markdown-del.svelte +0 -14
- package/dist/markdown/markdown-del.svelte.d.ts +0 -7
- package/dist/markdown/markdown-em.svelte +0 -14
- package/dist/markdown/markdown-em.svelte.d.ts +0 -7
- package/dist/markdown/markdown-escape.svelte +0 -8
- package/dist/markdown/markdown-escape.svelte.d.ts +0 -5
- package/dist/markdown/markdown-heading.svelte +0 -16
- package/dist/markdown/markdown-heading.svelte.d.ts +0 -7
- package/dist/markdown/markdown-hr.svelte +0 -12
- package/dist/markdown/markdown-hr.svelte.d.ts +0 -7
- package/dist/markdown/markdown-html.svelte +0 -9
- package/dist/markdown/markdown-html.svelte.d.ts +0 -5
- package/dist/markdown/markdown-image.svelte +0 -12
- package/dist/markdown/markdown-image.svelte.d.ts +0 -7
- package/dist/markdown/markdown-link.svelte +0 -17
- package/dist/markdown/markdown-link.svelte.d.ts +0 -7
- package/dist/markdown/markdown-list-item.svelte +0 -14
- package/dist/markdown/markdown-list-item.svelte.d.ts +0 -7
- package/dist/markdown/markdown-list.svelte +0 -19
- package/dist/markdown/markdown-list.svelte.d.ts +0 -7
- package/dist/markdown/markdown-paragraph.svelte +0 -16
- package/dist/markdown/markdown-paragraph.svelte.d.ts +0 -7
- package/dist/markdown/markdown-space.svelte +0 -8
- package/dist/markdown/markdown-space.svelte.d.ts +0 -5
- package/dist/markdown/markdown-strong.svelte +0 -15
- package/dist/markdown/markdown-strong.svelte.d.ts +0 -7
- package/dist/markdown/markdown-table-cell.svelte +0 -16
- package/dist/markdown/markdown-table-cell.svelte.d.ts +0 -7
- package/dist/markdown/markdown-table.svelte +0 -36
- package/dist/markdown/markdown-table.svelte.d.ts +0 -7
- package/dist/markdown/markdown-text.svelte +0 -8
- package/dist/markdown/markdown-text.svelte.d.ts +0 -5
- package/dist/markdown/markdown-token.svelte +0 -25
- package/dist/markdown/markdown-token.svelte.d.ts +0 -7
- package/dist/menu/menu-content.svelte +0 -47
- package/dist/menu/menu-content.svelte.d.ts +0 -10
- package/dist/menu/menu-context.svelte.d.ts +0 -18
- package/dist/menu/menu-context.svelte.js +0 -118
- package/dist/menu/menu-trigger-button.svelte +0 -31
- package/dist/menu/menu-trigger-button.svelte.d.ts +0 -5
- package/dist/menu/menu-trigger.svelte +0 -42
- package/dist/menu/menu-trigger.svelte.d.ts +0 -10
- package/dist/ordered-html-elements.d.ts +0 -7
- package/dist/ordered-html-elements.js +0 -29
- package/dist/portal/index.d.ts +0 -2
- package/dist/portal/index.js +0 -2
- package/dist/portal/portal.svelte +0 -15
- package/dist/portal/portal.svelte.d.ts +0 -8
- package/dist/portal/proxy.svelte +0 -13
- package/dist/portal/proxy.svelte.d.ts +0 -7
- package/dist/shortcut/shortcut-badge.svelte +0 -41
- package/dist/shortcut/shortcut-badge.svelte.d.ts +0 -11
- package/dist/slider/slider-context.svelte.d.ts +0 -50
- package/dist/slider/slider-context.svelte.js +0 -198
- package/dist/slider/slider-handle-label-arrow.svelte +0 -18
- package/dist/slider/slider-handle-label-arrow.svelte.d.ts +0 -6
- package/dist/slider/slider-handle-label.svelte +0 -35
- package/dist/slider/slider-handle-label.svelte.d.ts +0 -6
- package/dist/slider/slider-handle.svelte +0 -54
- package/dist/slider/slider-handle.svelte.d.ts +0 -6
- package/dist/slider/slider-mark-dot.svelte +0 -25
- package/dist/slider/slider-mark-dot.svelte.d.ts +0 -6
- package/dist/slider/slider-mark-label.svelte +0 -37
- package/dist/slider/slider-mark-label.svelte.d.ts +0 -9
- package/dist/slider/slider-mark.svelte +0 -33
- package/dist/slider/slider-mark.svelte.d.ts +0 -9
- package/dist/switch/switch-thumb.svelte +0 -52
- package/dist/switch/switch-thumb.svelte.d.ts +0 -7
- package/dist/toggle/toggle-context.svelte.d.ts +0 -9
- package/dist/toggle/toggle-context.svelte.js +0 -32
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { MarkdownComponentProps } from "./index.js";
|
|
2
|
-
import type { Tokens } from "marked";
|
|
3
|
-
declare const MarkdownText: import("svelte").Component<MarkdownComponentProps<Tokens.Text>, {}, "">;
|
|
4
|
-
type MarkdownText = ReturnType<typeof MarkdownText>;
|
|
5
|
-
export default MarkdownText;
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { getMarkdownContext, MarkdownTokens } from "./index.js";
|
|
3
|
-
import type { MarkedToken } from "marked";
|
|
4
|
-
|
|
5
|
-
export type MarkdownTokenProps = {
|
|
6
|
-
token: MarkedToken;
|
|
7
|
-
};
|
|
8
|
-
let { token }: MarkdownTokenProps = $props();
|
|
9
|
-
|
|
10
|
-
const ctx = getMarkdownContext();
|
|
11
|
-
|
|
12
|
-
let renderer = $derived(ctx.getRenderer(token.type));
|
|
13
|
-
</script>
|
|
14
|
-
|
|
15
|
-
{#snippet children()}
|
|
16
|
-
{#if "tokens" in token && token["tokens"]}
|
|
17
|
-
<MarkdownTokens tokens={token["tokens"] as MarkedToken[]} />
|
|
18
|
-
{:else}
|
|
19
|
-
{token.raw}
|
|
20
|
-
{/if}
|
|
21
|
-
{/snippet}
|
|
22
|
-
|
|
23
|
-
{#if renderer}
|
|
24
|
-
{@render renderer({ token, children })}
|
|
25
|
-
{/if}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { MarkedToken } from "marked";
|
|
2
|
-
export type MarkdownTokenProps = {
|
|
3
|
-
token: MarkedToken;
|
|
4
|
-
};
|
|
5
|
-
declare const MarkdownToken: import("svelte").Component<MarkdownTokenProps, {}, "">;
|
|
6
|
-
type MarkdownToken = ReturnType<typeof MarkdownToken>;
|
|
7
|
-
export default MarkdownToken;
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
<script module lang="ts">
|
|
2
|
-
import { baseClasses, type Variants } from "../base.js";
|
|
3
|
-
import { getMenuContext } from "./index.js";
|
|
4
|
-
import { mergeComponentProps } from "../merge-props.js";
|
|
5
|
-
import { Popover, type PopoverProps } from "../popover/index.js";
|
|
6
|
-
import type { ClassName } from "../utils.js";
|
|
7
|
-
import type { Snippet } from "svelte";
|
|
8
|
-
import { twMerge } from "tailwind-merge";
|
|
9
|
-
|
|
10
|
-
export type MenuContentProps = {
|
|
11
|
-
children: Snippet;
|
|
12
|
-
} & ClassName &
|
|
13
|
-
Variants &
|
|
14
|
-
Omit<PopoverProps, "children" | "open">;
|
|
15
|
-
</script>
|
|
16
|
-
|
|
17
|
-
<script lang="ts">
|
|
18
|
-
let {
|
|
19
|
-
children,
|
|
20
|
-
class: className,
|
|
21
|
-
variant = "elevated",
|
|
22
|
-
color = "primary",
|
|
23
|
-
shape = "rounded",
|
|
24
|
-
placement = "bottom",
|
|
25
|
-
...restProps
|
|
26
|
-
}: MenuContentProps = $props();
|
|
27
|
-
|
|
28
|
-
const ctx = getMenuContext();
|
|
29
|
-
</script>
|
|
30
|
-
|
|
31
|
-
<Popover
|
|
32
|
-
bind:open={ctx.open}
|
|
33
|
-
role="menu"
|
|
34
|
-
class={twMerge(
|
|
35
|
-
baseClasses({ variant, color, shape }),
|
|
36
|
-
"max-h-[60%] border bg-m3-surface-container-highest p-1 shadow",
|
|
37
|
-
className,
|
|
38
|
-
)}
|
|
39
|
-
{placement}
|
|
40
|
-
anchorEl={ctx.anchorEl}
|
|
41
|
-
{...mergeComponentProps(Popover, restProps, {
|
|
42
|
-
onmouseleave: () => ctx.blur(),
|
|
43
|
-
onKeydownWhileOpen: (event) => ctx.handleKeyDown(event),
|
|
44
|
-
})}
|
|
45
|
-
>
|
|
46
|
-
{@render children()}
|
|
47
|
-
</Popover>
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { type Variants } from "../base.js";
|
|
2
|
-
import { type PopoverProps } from "../popover/index.js";
|
|
3
|
-
import type { ClassName } from "../utils.js";
|
|
4
|
-
import type { Snippet } from "svelte";
|
|
5
|
-
export type MenuContentProps = {
|
|
6
|
-
children: Snippet;
|
|
7
|
-
} & ClassName & Variants & Omit<PopoverProps, "children" | "open">;
|
|
8
|
-
declare const MenuContent: import("svelte").Component<MenuContentProps, {}, "">;
|
|
9
|
-
type MenuContent = ReturnType<typeof MenuContent>;
|
|
10
|
-
export default MenuContent;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
export declare class MenuContext {
|
|
2
|
-
#private;
|
|
3
|
-
focused: HTMLElement | undefined;
|
|
4
|
-
constructor(getOpen: () => boolean, setOpen: (val: boolean) => void, getAnchorEl: () => HTMLElement | undefined, setAnchorEl: (anchorEl: HTMLElement | undefined) => void);
|
|
5
|
-
get open(): boolean;
|
|
6
|
-
set open(value: boolean);
|
|
7
|
-
get anchorEl(): HTMLElement | undefined;
|
|
8
|
-
set anchorEl(value: HTMLElement | undefined);
|
|
9
|
-
close(): void;
|
|
10
|
-
get items(): HTMLElement[];
|
|
11
|
-
add(item: HTMLElement): () => void;
|
|
12
|
-
delete(item: HTMLElement): void;
|
|
13
|
-
focus(item?: HTMLElement): void;
|
|
14
|
-
blur(): void;
|
|
15
|
-
handleKeyDown(event: KeyboardEvent): void;
|
|
16
|
-
}
|
|
17
|
-
export declare function setMenuContext(state: MenuContext): MenuContext;
|
|
18
|
-
export declare function getMenuContext(): MenuContext;
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
import { Bindable } from "../bindable.svelte.js";
|
|
2
|
-
import { OrderedHTMLElements } from "../ordered-html-elements.js";
|
|
3
|
-
import { Shortcut } from "../shortcut/index.js";
|
|
4
|
-
import { TypingBuffer } from "../utils.js";
|
|
5
|
-
import { getContext, setContext } from "svelte";
|
|
6
|
-
export class MenuContext {
|
|
7
|
-
#open;
|
|
8
|
-
#anchorEl;
|
|
9
|
-
#items = new OrderedHTMLElements();
|
|
10
|
-
focused = $state();
|
|
11
|
-
#buffer = new TypingBuffer();
|
|
12
|
-
constructor(getOpen, setOpen, getAnchorEl, setAnchorEl) {
|
|
13
|
-
this.#open = new Bindable(getOpen());
|
|
14
|
-
this.#open.bind(getOpen, setOpen);
|
|
15
|
-
this.#anchorEl = new Bindable(getAnchorEl());
|
|
16
|
-
this.#anchorEl.bind(getAnchorEl, setAnchorEl);
|
|
17
|
-
}
|
|
18
|
-
get open() {
|
|
19
|
-
return this.#open.value;
|
|
20
|
-
}
|
|
21
|
-
set open(value) {
|
|
22
|
-
this.#open.value = value;
|
|
23
|
-
}
|
|
24
|
-
get anchorEl() {
|
|
25
|
-
return this.#anchorEl.value;
|
|
26
|
-
}
|
|
27
|
-
set anchorEl(value) {
|
|
28
|
-
this.#anchorEl.value = value;
|
|
29
|
-
}
|
|
30
|
-
close() {
|
|
31
|
-
this.open = false;
|
|
32
|
-
this.anchorEl?.focus();
|
|
33
|
-
}
|
|
34
|
-
get items() {
|
|
35
|
-
return this.#items.items;
|
|
36
|
-
}
|
|
37
|
-
add(item) {
|
|
38
|
-
this.#items.add(item);
|
|
39
|
-
return () => this.delete(item);
|
|
40
|
-
}
|
|
41
|
-
delete(item) {
|
|
42
|
-
this.#items.delete(item);
|
|
43
|
-
}
|
|
44
|
-
focus(item) {
|
|
45
|
-
if (!item)
|
|
46
|
-
return;
|
|
47
|
-
this.focused = item;
|
|
48
|
-
this.focused.focus();
|
|
49
|
-
}
|
|
50
|
-
blur() {
|
|
51
|
-
this.focused?.blur();
|
|
52
|
-
this.focused = undefined;
|
|
53
|
-
}
|
|
54
|
-
handleKeyDown(event) {
|
|
55
|
-
if (!this.items)
|
|
56
|
-
return;
|
|
57
|
-
if (Shortcut.ARROW_UP.matches(event) ||
|
|
58
|
-
Shortcut.TAB_BACKWARD.matches(event)) {
|
|
59
|
-
if (!this.focused) {
|
|
60
|
-
this.focus(this.items[this.items.length - 1]);
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
let activeIndex = this.items.indexOf(this.focused);
|
|
64
|
-
do {
|
|
65
|
-
activeIndex =
|
|
66
|
-
(activeIndex - 1 + this.items.length) % this.items.length;
|
|
67
|
-
} while (this.items[activeIndex].disabled);
|
|
68
|
-
this.focus(this.items[activeIndex]);
|
|
69
|
-
}
|
|
70
|
-
event.preventDefault();
|
|
71
|
-
event.stopImmediatePropagation();
|
|
72
|
-
}
|
|
73
|
-
else if (Shortcut.ARROW_DOWN.matches(event) ||
|
|
74
|
-
Shortcut.TAB_FORWARD.matches(event)) {
|
|
75
|
-
if (!this.focused) {
|
|
76
|
-
this.focus(this.items[0]);
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
let activeIndex = this.items.indexOf(this.focused);
|
|
80
|
-
do {
|
|
81
|
-
activeIndex = (activeIndex + 1) % this.items.length;
|
|
82
|
-
} while (this.items[activeIndex].disabled);
|
|
83
|
-
this.focus(this.items[activeIndex]);
|
|
84
|
-
}
|
|
85
|
-
event.preventDefault();
|
|
86
|
-
event.stopImmediatePropagation();
|
|
87
|
-
}
|
|
88
|
-
else if (Shortcut.HOME.matches(event)) {
|
|
89
|
-
this.focus(this.items[0]);
|
|
90
|
-
event.preventDefault();
|
|
91
|
-
event.stopImmediatePropagation();
|
|
92
|
-
}
|
|
93
|
-
else if (Shortcut.END.matches(event)) {
|
|
94
|
-
this.focus(this.items[this.items.length - 1]);
|
|
95
|
-
event.preventDefault();
|
|
96
|
-
event.stopImmediatePropagation();
|
|
97
|
-
}
|
|
98
|
-
else if (Shortcut.ENTER.matches(event)) {
|
|
99
|
-
event.stopImmediatePropagation();
|
|
100
|
-
}
|
|
101
|
-
else if (Shortcut.isChar(event)) {
|
|
102
|
-
const prefix = this.#buffer.append(event.key);
|
|
103
|
-
const matchedItem = this.items.find((menuItem) => (menuItem.textContent?.trim().toLowerCase() ?? "").startsWith(prefix.toLowerCase()));
|
|
104
|
-
this.focus(matchedItem);
|
|
105
|
-
event.preventDefault();
|
|
106
|
-
event.stopImmediatePropagation();
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
export function setMenuContext(state) {
|
|
111
|
-
return setContext(MenuContext, state);
|
|
112
|
-
}
|
|
113
|
-
export function getMenuContext() {
|
|
114
|
-
const ctx = getContext(MenuContext);
|
|
115
|
-
if (!ctx)
|
|
116
|
-
throw new Error("MenuContext is undefined");
|
|
117
|
-
return ctx;
|
|
118
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
<script lang="ts" module>
|
|
2
|
-
import { Button, type ButtonProps } from "../button/index.js";
|
|
3
|
-
import { getMenuContext } from "./index.js";
|
|
4
|
-
import { mergeProps } from "../merge-props.js";
|
|
5
|
-
import { Shortcut } from "../shortcut/index.js";
|
|
6
|
-
|
|
7
|
-
export type MenuTriggerButtonProps = {} & ButtonProps;
|
|
8
|
-
</script>
|
|
9
|
-
|
|
10
|
-
<script lang="ts">
|
|
11
|
-
let { ...restProps }: MenuTriggerButtonProps = $props();
|
|
12
|
-
|
|
13
|
-
const ctx = getMenuContext();
|
|
14
|
-
</script>
|
|
15
|
-
|
|
16
|
-
<Button
|
|
17
|
-
bind:el={ctx.anchorEl}
|
|
18
|
-
{...mergeProps(
|
|
19
|
-
{
|
|
20
|
-
onclick: () => (ctx.open = !ctx.open),
|
|
21
|
-
onkeydown: (event: KeyboardEvent) => {
|
|
22
|
-
if (Shortcut.ENTER.matches(event) || Shortcut.SPACE.matches(event)) {
|
|
23
|
-
event.stopImmediatePropagation();
|
|
24
|
-
}
|
|
25
|
-
},
|
|
26
|
-
"aria-haspopup": "menu",
|
|
27
|
-
"aria-expanded": ctx.open,
|
|
28
|
-
},
|
|
29
|
-
restProps,
|
|
30
|
-
)}
|
|
31
|
-
/>
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { type ButtonProps } from "../button/index.js";
|
|
2
|
-
export type MenuTriggerButtonProps = {} & ButtonProps;
|
|
3
|
-
declare const MenuTriggerButton: import("svelte").Component<MenuTriggerButtonProps, {}, "">;
|
|
4
|
-
type MenuTriggerButton = ReturnType<typeof MenuTriggerButton>;
|
|
5
|
-
export default MenuTriggerButton;
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
<script lang="ts" module>
|
|
2
|
-
import type { Variants } from "../base.js";
|
|
3
|
-
import { getMenuContext } from "./index.js";
|
|
4
|
-
import { mergeProps } from "../merge-props.js";
|
|
5
|
-
import { Shortcut } from "../shortcut/index.js";
|
|
6
|
-
import type { ClassName } from "../utils.js";
|
|
7
|
-
import type { Snippet } from "svelte";
|
|
8
|
-
import type { HTMLButtonAttributes } from "svelte/elements";
|
|
9
|
-
import { twMerge } from "tailwind-merge";
|
|
10
|
-
|
|
11
|
-
export type MenuTriggerProps = {
|
|
12
|
-
children?: Snippet;
|
|
13
|
-
} & ClassName &
|
|
14
|
-
Variants &
|
|
15
|
-
HTMLButtonAttributes;
|
|
16
|
-
</script>
|
|
17
|
-
|
|
18
|
-
<script lang="ts">
|
|
19
|
-
let { children, class: className, ...restProps }: MenuTriggerProps = $props();
|
|
20
|
-
|
|
21
|
-
const ctx = getMenuContext();
|
|
22
|
-
</script>
|
|
23
|
-
|
|
24
|
-
<button
|
|
25
|
-
bind:this={ctx.anchorEl}
|
|
26
|
-
class={twMerge(className)}
|
|
27
|
-
{...mergeProps(
|
|
28
|
-
{
|
|
29
|
-
onclick: () => (ctx.open = !ctx.open),
|
|
30
|
-
onkeydown: (event: KeyboardEvent) => {
|
|
31
|
-
if (Shortcut.ENTER.matches(event) || Shortcut.SPACE.matches(event)) {
|
|
32
|
-
event.stopImmediatePropagation();
|
|
33
|
-
}
|
|
34
|
-
},
|
|
35
|
-
"aria-haspopup": "menu",
|
|
36
|
-
"aria-expanded": ctx.open,
|
|
37
|
-
},
|
|
38
|
-
restProps,
|
|
39
|
-
)}
|
|
40
|
-
>
|
|
41
|
-
{@render children?.()}
|
|
42
|
-
</button>
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { Variants } from "../base.js";
|
|
2
|
-
import type { ClassName } from "../utils.js";
|
|
3
|
-
import type { Snippet } from "svelte";
|
|
4
|
-
import type { HTMLButtonAttributes } from "svelte/elements";
|
|
5
|
-
export type MenuTriggerProps = {
|
|
6
|
-
children?: Snippet;
|
|
7
|
-
} & ClassName & Variants & HTMLButtonAttributes;
|
|
8
|
-
declare const MenuTrigger: import("svelte").Component<MenuTriggerProps, {}, "">;
|
|
9
|
-
type MenuTrigger = ReturnType<typeof MenuTrigger>;
|
|
10
|
-
export default MenuTrigger;
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
export class OrderedHTMLElements {
|
|
2
|
-
#items = [];
|
|
3
|
-
get items() {
|
|
4
|
-
return this.#items;
|
|
5
|
-
}
|
|
6
|
-
getInsertionIndex(item) {
|
|
7
|
-
if (this.#items.includes(item)) {
|
|
8
|
-
throw new Error(`Ordered items already contains ${item}`);
|
|
9
|
-
}
|
|
10
|
-
for (let i = 0; i < this.#items.length; i++) {
|
|
11
|
-
const position = item.compareDocumentPosition(this.#items[i]);
|
|
12
|
-
if ((position & Node.DOCUMENT_POSITION_FOLLOWING) !== 0) {
|
|
13
|
-
return i;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
return this.#items.length;
|
|
17
|
-
}
|
|
18
|
-
add(item) {
|
|
19
|
-
const index = this.getInsertionIndex(item);
|
|
20
|
-
this.#items.splice(index, 0, item);
|
|
21
|
-
}
|
|
22
|
-
delete(item) {
|
|
23
|
-
const index = this.#items.indexOf(item);
|
|
24
|
-
if (index === -1) {
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
this.items.splice(index, 1);
|
|
28
|
-
}
|
|
29
|
-
}
|
package/dist/portal/index.d.ts
DELETED
package/dist/portal/index.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
<script lang="ts" module>
|
|
2
|
-
import { Proxy } from "./index.js";
|
|
3
|
-
import { mount, unmount, type Snippet } from "svelte";
|
|
4
|
-
|
|
5
|
-
export type PortalProps = { children?: Snippet; target?: HTMLElement };
|
|
6
|
-
</script>
|
|
7
|
-
|
|
8
|
-
<script lang="ts">
|
|
9
|
-
const { children, target = document.body }: PortalProps = $props();
|
|
10
|
-
|
|
11
|
-
$effect(() => {
|
|
12
|
-
const instance = mount(Proxy, { target, props: { children } });
|
|
13
|
-
return () => unmount(instance);
|
|
14
|
-
});
|
|
15
|
-
</script>
|
package/dist/portal/proxy.svelte
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
<script lang="ts" module>
|
|
2
|
-
import type { Snippet } from "svelte";
|
|
3
|
-
|
|
4
|
-
export type ProxyProps = { children?: Snippet };
|
|
5
|
-
</script>
|
|
6
|
-
|
|
7
|
-
<script lang="ts">
|
|
8
|
-
const { children }: ProxyProps = $props();
|
|
9
|
-
</script>
|
|
10
|
-
|
|
11
|
-
{#if children}
|
|
12
|
-
{@render children()}
|
|
13
|
-
{/if}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
<script module lang="ts">
|
|
2
|
-
import { Box } from "../box/index.js";
|
|
3
|
-
import type { Shortcut } from "./index.js";
|
|
4
|
-
import { noop, type ClassName, type ElementRef } from "../utils.js";
|
|
5
|
-
import type { HTMLInputAttributes } from "svelte/elements";
|
|
6
|
-
import { twMerge, type ClassNameValue } from "tailwind-merge";
|
|
7
|
-
|
|
8
|
-
export type ShortcutBadgeProps = {
|
|
9
|
-
shortcut: Shortcut;
|
|
10
|
-
badgeClass?: ClassNameValue;
|
|
11
|
-
} & ElementRef &
|
|
12
|
-
ClassName &
|
|
13
|
-
HTMLInputAttributes;
|
|
14
|
-
</script>
|
|
15
|
-
|
|
16
|
-
<script lang="ts">
|
|
17
|
-
let {
|
|
18
|
-
shortcut,
|
|
19
|
-
el = $bindable(),
|
|
20
|
-
ref = noop,
|
|
21
|
-
class: className,
|
|
22
|
-
badgeClass,
|
|
23
|
-
}: ShortcutBadgeProps = $props();
|
|
24
|
-
</script>
|
|
25
|
-
|
|
26
|
-
<div
|
|
27
|
-
bind:this={el}
|
|
28
|
-
use:ref
|
|
29
|
-
class={twMerge("flex gap-1 text-m3-on-surface", className)}
|
|
30
|
-
>
|
|
31
|
-
{#each shortcut as symbol, index (index)}
|
|
32
|
-
<Box
|
|
33
|
-
variant="elevated"
|
|
34
|
-
color="secondary"
|
|
35
|
-
centered
|
|
36
|
-
class={twMerge("h-5 min-w-5 rounded border p-1 text-xs", badgeClass)}
|
|
37
|
-
>
|
|
38
|
-
{symbol}
|
|
39
|
-
</Box>
|
|
40
|
-
{/each}
|
|
41
|
-
</div>
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { Shortcut } from "./index.js";
|
|
2
|
-
import { type ClassName, type ElementRef } from "../utils.js";
|
|
3
|
-
import type { HTMLInputAttributes } from "svelte/elements";
|
|
4
|
-
import { type ClassNameValue } from "tailwind-merge";
|
|
5
|
-
export type ShortcutBadgeProps = {
|
|
6
|
-
shortcut: Shortcut;
|
|
7
|
-
badgeClass?: ClassNameValue;
|
|
8
|
-
} & ElementRef & ClassName & HTMLInputAttributes;
|
|
9
|
-
declare const ShortcutBadge: import("svelte").Component<ShortcutBadgeProps, {}, "el">;
|
|
10
|
-
type ShortcutBadge = ReturnType<typeof ShortcutBadge>;
|
|
11
|
-
export default ShortcutBadge;
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import type { SliderColor, SliderHandleLabelArrowProps, SliderHandleLabelProps, SliderHandleProps, SliderMarkDotProps, SliderMarkLabelProps, SliderMarkProps, SliderRadius, SliderSize } from "./index.js";
|
|
2
|
-
import { type Snippet } from "svelte";
|
|
3
|
-
export type Mark = {
|
|
4
|
-
value: number;
|
|
5
|
-
label?: string;
|
|
6
|
-
};
|
|
7
|
-
export declare class SliderContext {
|
|
8
|
-
#private;
|
|
9
|
-
onChange: ((value: number) => void) | undefined;
|
|
10
|
-
onChangeEnd: ((value: number) => void) | undefined;
|
|
11
|
-
handleRenderer: Snippet<[SliderHandleProps]>;
|
|
12
|
-
handleLabelRenderer: Snippet<[SliderHandleLabelProps]>;
|
|
13
|
-
handleLabelArrowRenderer: Snippet<[SliderHandleLabelArrowProps]>;
|
|
14
|
-
markRenderer: Snippet<[SliderMarkProps]>;
|
|
15
|
-
markDotRenderer: Snippet<[SliderMarkDotProps]>;
|
|
16
|
-
markLabelRenderer: Snippet<[SliderMarkLabelProps]>;
|
|
17
|
-
sliderEl: HTMLDivElement;
|
|
18
|
-
hovered: boolean;
|
|
19
|
-
clicked: boolean;
|
|
20
|
-
dragging: boolean;
|
|
21
|
-
focused: boolean;
|
|
22
|
-
constructor(getValue: () => number, setValue: (val: number) => void, min: () => number, max: () => number, step: () => number, marks: () => Mark[], disabled: () => boolean, label: (value: number) => string, labelAlwaysOn: () => boolean, inverted: () => boolean, restrictToMarks: () => boolean, color: () => SliderColor, size: () => SliderSize, radius: () => SliderRadius, onChange: ((value: number) => void) | undefined, onChangeEnd: ((value: number) => void) | undefined, handleRenderer: Snippet<[SliderHandleProps]>, handleLabelRenderer: Snippet<[SliderHandleLabelProps]>, handleLabelArrowRenderer: Snippet<[SliderHandleLabelArrowProps]>, markRenderer: Snippet<[SliderMarkProps]>, markDotRenderer: Snippet<[SliderMarkDotProps]>, markLabelRenderer: Snippet<[SliderMarkLabelProps]>);
|
|
23
|
-
get value(): number;
|
|
24
|
-
set value(value: number);
|
|
25
|
-
get min(): number;
|
|
26
|
-
get max(): number;
|
|
27
|
-
get step(): number;
|
|
28
|
-
get marks(): Mark[];
|
|
29
|
-
get disabled(): boolean;
|
|
30
|
-
get label(): string;
|
|
31
|
-
get labelAlwaysOn(): boolean;
|
|
32
|
-
get inverted(): boolean;
|
|
33
|
-
get restrictToMarks(): boolean;
|
|
34
|
-
get color(): SliderColor;
|
|
35
|
-
get size(): SliderSize;
|
|
36
|
-
get radius(): SliderRadius;
|
|
37
|
-
get position(): number;
|
|
38
|
-
get animated(): boolean;
|
|
39
|
-
clamp: (val: number, minVal: number, maxVal: number) => number;
|
|
40
|
-
getValueFromPosition: (position: number) => number;
|
|
41
|
-
getPositionFromValue: (val: number) => number;
|
|
42
|
-
pointerDown: (event: PointerEvent) => void;
|
|
43
|
-
pointerMove: (event: PointerEvent) => void;
|
|
44
|
-
pointerUp: (event: PointerEvent) => void;
|
|
45
|
-
keyDown: (event: KeyboardEvent) => void;
|
|
46
|
-
focus: () => void;
|
|
47
|
-
blur: () => void;
|
|
48
|
-
}
|
|
49
|
-
export declare function setSliderContext(state: SliderContext): SliderContext;
|
|
50
|
-
export declare function getSliderContext(): SliderContext;
|