@geoffcox/sterling-svelte 1.0.12 → 2.0.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.svelte +8 -46
- package/dist/Button.svelte.d.ts +9 -65
- package/dist/Callout.svelte +47 -72
- package/dist/Callout.svelte.d.ts +14 -55
- package/dist/Callout.types.d.ts +11 -0
- package/dist/Checkbox.svelte +12 -48
- package/dist/Checkbox.svelte.d.ts +9 -62
- package/dist/Dialog.svelte +30 -38
- package/dist/Dialog.svelte.d.ts +13 -36
- package/dist/Dropdown.svelte +39 -71
- package/dist/Dropdown.svelte.d.ts +17 -76
- package/dist/Input.svelte +16 -50
- package/dist/Input.svelte.d.ts +12 -74
- package/dist/Label.svelte +55 -161
- package/dist/Label.svelte.d.ts +16 -81
- package/dist/Link.svelte +9 -41
- package/dist/Link.svelte.d.ts +11 -64
- package/dist/List.svelte +35 -85
- package/dist/List.svelte.d.ts +19 -74
- package/dist/List.types.d.ts +3 -11
- package/dist/ListItem.svelte +27 -56
- package/dist/ListItem.svelte.d.ts +12 -66
- package/dist/Menu.svelte +18 -45
- package/dist/Menu.svelte.d.ts +13 -63
- package/dist/MenuBar.svelte +36 -78
- package/dist/MenuBar.svelte.d.ts +12 -57
- package/dist/MenuButton.svelte +56 -85
- package/dist/MenuButton.svelte.d.ts +19 -70
- package/dist/MenuItem.svelte +107 -151
- package/dist/MenuItem.svelte.d.ts +21 -82
- package/dist/MenuItem.types.d.ts +1 -9
- package/dist/MenuSeparator.svelte +9 -7
- package/dist/MenuSeparator.svelte.d.ts +6 -20
- package/dist/Popover.svelte +45 -64
- package/dist/Popover.svelte.d.ts +14 -58
- package/dist/Progress.constants.d.ts +1 -1
- package/dist/Progress.constants.js +1 -1
- package/dist/Progress.svelte +24 -71
- package/dist/Progress.svelte.d.ts +11 -60
- package/dist/Progress.types.d.ts +3 -3
- package/dist/Radio.svelte +19 -92
- package/dist/Radio.svelte.d.ts +11 -63
- package/dist/Select.svelte +55 -94
- package/dist/Select.svelte.d.ts +19 -82
- package/dist/Slider.svelte +41 -98
- package/dist/Slider.svelte.d.ts +18 -65
- package/dist/Switch.svelte +29 -78
- package/dist/Switch.svelte.d.ts +20 -73
- package/dist/Tab.svelte +23 -66
- package/dist/Tab.svelte.d.ts +11 -70
- package/dist/TabList.svelte +50 -76
- package/dist/TabList.svelte.d.ts +17 -69
- package/dist/TabList.types.d.ts +3 -11
- package/dist/TextArea.svelte +17 -59
- package/dist/TextArea.svelte.d.ts +18 -68
- package/dist/Tooltip.svelte +23 -66
- package/dist/Tooltip.svelte.d.ts +9 -69
- package/dist/Tree.svelte +32 -83
- package/dist/Tree.svelte.d.ts +14 -66
- package/dist/Tree.types.d.ts +3 -11
- package/dist/TreeChevron.svelte +10 -49
- package/dist/TreeChevron.svelte.d.ts +8 -52
- package/dist/TreeItem.svelte +105 -159
- package/dist/TreeItem.svelte.d.ts +21 -100
- package/dist/TreeItem.types.d.ts +2 -12
- package/dist/actions/clickOutside.d.ts +1 -0
- package/dist/actions/clickOutside.js +1 -0
- package/dist/actions/extraClass.d.ts +8 -0
- package/dist/actions/extraClass.js +14 -0
- package/dist/index.d.ts +4 -12
- package/dist/index.js +3 -9
- package/package.json +20 -22
- package/dist/Button.constants.d.ts +0 -2
- package/dist/Button.constants.js +0 -2
- package/dist/Button.types.d.ts +0 -6
- package/dist/ColorPicker.constants.d.ts +0 -1
- package/dist/ColorPicker.constants.js +0 -1
- package/dist/ColorPicker.svelte +0 -287
- package/dist/ColorPicker.svelte.d.ts +0 -52
- package/dist/ColorPicker.types.d.ts +0 -4
- package/dist/ColorPicker.types.js +0 -1
- package/dist/HexColorSliders.svelte +0 -103
- package/dist/HexColorSliders.svelte.d.ts +0 -51
- package/dist/HslColorSliders.svelte +0 -128
- package/dist/HslColorSliders.svelte.d.ts +0 -51
- package/dist/Label.types.d.ts +0 -6
- package/dist/Label.types.js +0 -1
- package/dist/MenuItemDisplay.svelte +0 -32
- package/dist/MenuItemDisplay.svelte.d.ts +0 -39
- package/dist/RgbColorSliders.svelte +0 -93
- package/dist/RgbColorSliders.svelte.d.ts +0 -24
- package/dist/TreeItemDisplay.svelte +0 -74
- package/dist/TreeItemDisplay.svelte.d.ts +0 -73
- package/dist/css/Button.base.css +0 -54
- package/dist/css/Button.colorful.css +0 -17
- package/dist/css/Button.css +0 -8
- package/dist/css/Button.disabled.css +0 -22
- package/dist/css/Button.secondary.colorful.css +0 -15
- package/dist/css/Button.secondary.css +0 -11
- package/dist/css/Button.shapes.css +0 -14
- package/dist/css/Button.tool.colorful.css +0 -13
- package/dist/css/Button.tool.css +0 -18
- package/dist/css/Callout.base.css +0 -55
- package/dist/css/Callout.colorful.css +0 -5
- package/dist/css/Callout.css +0 -2
- package/dist/css/Checkbox.base.css +0 -121
- package/dist/css/Checkbox.colorful.css +0 -17
- package/dist/css/Checkbox.css +0 -3
- package/dist/css/Checkbox.disabled.css +0 -28
- package/dist/css/ColorPicker.base.css +0 -23
- package/dist/css/ColorPicker.css +0 -1
- package/dist/css/Dialog.base.css +0 -114
- package/dist/css/Dialog.css +0 -1
- package/dist/css/Dropdown.base.css +0 -105
- package/dist/css/Dropdown.colorful.css +0 -23
- package/dist/css/Dropdown.composed.css +0 -11
- package/dist/css/Dropdown.css +0 -4
- package/dist/css/Dropdown.disabled.css +0 -32
- package/dist/css/HexColorSliders.base.css +0 -87
- package/dist/css/HexColorSliders.css +0 -1
- package/dist/css/HslColorSliders.base.css +0 -105
- package/dist/css/HslColorSliders.css +0 -1
- package/dist/css/Input.base.css +0 -72
- package/dist/css/Input.colorful.css +0 -22
- package/dist/css/Input.composed.css +0 -12
- package/dist/css/Input.css +0 -4
- package/dist/css/Input.disabled.css +0 -24
- package/dist/css/Label.base.css +0 -114
- package/dist/css/Label.boxed.colorful.css +0 -21
- package/dist/css/Label.boxed.css +0 -31
- package/dist/css/Label.colorful.css +0 -3
- package/dist/css/Label.css +0 -5
- package/dist/css/Label.disabled.css +0 -9
- package/dist/css/Link.base.css +0 -43
- package/dist/css/Link.colorful.css +0 -15
- package/dist/css/Link.css +0 -11
- package/dist/css/Link.disabled.css +0 -10
- package/dist/css/Link.ghost.colorful.css +0 -7
- package/dist/css/Link.ghost.css +0 -11
- package/dist/css/Link.text-underline.css +0 -8
- package/dist/css/Link.text-underline.ghost.css +0 -13
- package/dist/css/Link.undecorated.colorful.css +0 -8
- package/dist/css/Link.undecorated.css +0 -8
- package/dist/css/Link.undecorated.ghost.css +0 -8
- package/dist/css/Link.undecorated.underline.css +0 -8
- package/dist/css/List.base.css +0 -84
- package/dist/css/List.composed.css +0 -8
- package/dist/css/List.css +0 -3
- package/dist/css/List.disabled.css +0 -7
- package/dist/css/ListItem.base.css +0 -33
- package/dist/css/ListItem.css +0 -2
- package/dist/css/ListItem.disabled.css +0 -28
- package/dist/css/Menu.base.css +0 -21
- package/dist/css/Menu.css +0 -1
- package/dist/css/MenuBar.base.css +0 -9
- package/dist/css/MenuBar.css +0 -1
- package/dist/css/MenuButton.base.css +0 -13
- package/dist/css/MenuButton.css +0 -1
- package/dist/css/MenuItem.base.css +0 -48
- package/dist/css/MenuItem.css +0 -1
- package/dist/css/MenuItemDisplay.base.css +0 -79
- package/dist/css/MenuItemDisplay.css +0 -2
- package/dist/css/MenuItemDisplay.disabled.css +0 -28
- package/dist/css/MenuSeparator.base.css +0 -5
- package/dist/css/MenuSeparator.css +0 -1
- package/dist/css/Popover.css +0 -21
- package/dist/css/Progress.base.css +0 -85
- package/dist/css/Progress.css +0 -2
- package/dist/css/Progress.disabled.css +0 -17
- package/dist/css/Radio.base.css +0 -109
- package/dist/css/Radio.colorful.css +0 -18
- package/dist/css/Radio.css +0 -3
- package/dist/css/Radio.disabled.css +0 -28
- package/dist/css/RgbColorSliders.base.css +0 -94
- package/dist/css/RgbColorSliders.css +0 -1
- package/dist/css/Select.base.css +0 -101
- package/dist/css/Select.colorful.css +0 -24
- package/dist/css/Select.composed.css +0 -12
- package/dist/css/Select.css +0 -4
- package/dist/css/Select.disabled.css +0 -28
- package/dist/css/Slider.base.css +0 -152
- package/dist/css/Slider.colorful.css +0 -11
- package/dist/css/Slider.composed.css +0 -8
- package/dist/css/Slider.css +0 -4
- package/dist/css/Slider.disabled.css +0 -30
- package/dist/css/Switch.base.css +0 -175
- package/dist/css/Switch.colorful.css +0 -45
- package/dist/css/Switch.css +0 -3
- package/dist/css/Switch.disabled.css +0 -30
- package/dist/css/Tab.base.css +0 -96
- package/dist/css/Tab.colorful.css +0 -13
- package/dist/css/Tab.css +0 -3
- package/dist/css/Tab.disabled.css +0 -36
- package/dist/css/TabList.base.css +0 -34
- package/dist/css/TabList.css +0 -1
- package/dist/css/TextArea.base.css +0 -62
- package/dist/css/TextArea.colorful.css +0 -17
- package/dist/css/TextArea.composed.css +0 -8
- package/dist/css/TextArea.css +0 -4
- package/dist/css/TextArea.disabled.css +0 -28
- package/dist/css/Tooltip.base.css +0 -6
- package/dist/css/Tooltip.css +0 -1
- package/dist/css/Tree.base.css +0 -49
- package/dist/css/Tree.composed.css +0 -8
- package/dist/css/Tree.css +0 -3
- package/dist/css/Tree.disabled.css +0 -27
- package/dist/css/TreeChevron.base.css +0 -86
- package/dist/css/TreeChevron.css +0 -1
- package/dist/css/TreeItem.base.css +0 -3
- package/dist/css/TreeItem.css +0 -1
- package/dist/css/TreeItemDisplay.base.css +0 -48
- package/dist/css/TreeItemDisplay.colorful.css +0 -9
- package/dist/css/TreeItemDisplay.css +0 -3
- package/dist/css/TreeItemDisplay.disabled.css +0 -28
- package/dist/css/dark-mode.css +0 -134
- package/dist/css/light-mode.css +0 -134
- package/dist/css/sterling.css +0 -37
- package/dist/package.json +0 -108
- /package/dist/{Button.types.js → Callout.types.js} +0 -0
package/dist/Button.svelte
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
<
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export let variant = '';
|
|
5
|
-
// ----- State ----- //
|
|
1
|
+
<svelte:options runes={true} />
|
|
2
|
+
|
|
3
|
+
<script lang="ts">let { children, class: _class, ...rest } = $props();
|
|
6
4
|
let buttonRef;
|
|
7
|
-
// ----- Methods ----- //
|
|
8
5
|
export const click = () => {
|
|
9
6
|
buttonRef?.click();
|
|
10
7
|
};
|
|
@@ -16,48 +13,13 @@ export const focus = (options) => {
|
|
|
16
13
|
};
|
|
17
14
|
</script>
|
|
18
15
|
|
|
19
|
-
<!--
|
|
20
|
-
@component
|
|
21
|
-
A styled HTML button element.
|
|
22
|
-
-->
|
|
23
16
|
<button
|
|
24
17
|
bind:this={buttonRef}
|
|
25
|
-
class={
|
|
26
|
-
{disabled}
|
|
18
|
+
class={['sterling-button', _class].filter(Boolean).join(' ')}
|
|
27
19
|
type="button"
|
|
28
|
-
|
|
29
|
-
on:click
|
|
30
|
-
on:drag
|
|
31
|
-
on:dragend
|
|
32
|
-
on:dragenter
|
|
33
|
-
on:dragleave
|
|
34
|
-
on:dragover
|
|
35
|
-
on:dragstart
|
|
36
|
-
on:drop
|
|
37
|
-
on:dblclick
|
|
38
|
-
on:focus
|
|
39
|
-
on:focusin
|
|
40
|
-
on:focusout
|
|
41
|
-
on:keydown
|
|
42
|
-
on:keypress
|
|
43
|
-
on:keyup
|
|
44
|
-
on:mousedown
|
|
45
|
-
on:mouseenter
|
|
46
|
-
on:mouseleave
|
|
47
|
-
on:mousemove
|
|
48
|
-
on:mouseover
|
|
49
|
-
on:mouseout
|
|
50
|
-
on:mouseup
|
|
51
|
-
on:pointercancel
|
|
52
|
-
on:pointerdown
|
|
53
|
-
on:pointerenter
|
|
54
|
-
on:pointerleave
|
|
55
|
-
on:pointermove
|
|
56
|
-
on:pointerover
|
|
57
|
-
on:pointerout
|
|
58
|
-
on:pointerup
|
|
59
|
-
on:wheel|passive
|
|
60
|
-
{...$$restProps}
|
|
20
|
+
{...rest}
|
|
61
21
|
>
|
|
62
|
-
|
|
22
|
+
{#if children}
|
|
23
|
+
{@render children()}
|
|
24
|
+
{/if}
|
|
63
25
|
</button>
|
package/dist/Button.svelte.d.ts
CHANGED
|
@@ -1,65 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
};
|
|
11
|
-
events: {
|
|
12
|
-
blur: FocusEvent;
|
|
13
|
-
click: MouseEvent;
|
|
14
|
-
drag: DragEvent;
|
|
15
|
-
dragend: DragEvent;
|
|
16
|
-
dragenter: DragEvent;
|
|
17
|
-
dragleave: DragEvent;
|
|
18
|
-
dragover: DragEvent;
|
|
19
|
-
dragstart: DragEvent;
|
|
20
|
-
drop: DragEvent;
|
|
21
|
-
dblclick: MouseEvent;
|
|
22
|
-
focus: FocusEvent;
|
|
23
|
-
focusin: FocusEvent;
|
|
24
|
-
focusout: FocusEvent;
|
|
25
|
-
keydown: KeyboardEvent;
|
|
26
|
-
keypress: KeyboardEvent;
|
|
27
|
-
keyup: KeyboardEvent;
|
|
28
|
-
mousedown: MouseEvent;
|
|
29
|
-
mouseenter: MouseEvent;
|
|
30
|
-
mouseleave: MouseEvent;
|
|
31
|
-
mousemove: MouseEvent;
|
|
32
|
-
mouseover: MouseEvent;
|
|
33
|
-
mouseout: MouseEvent;
|
|
34
|
-
mouseup: MouseEvent;
|
|
35
|
-
pointercancel: PointerEvent;
|
|
36
|
-
pointerdown: PointerEvent;
|
|
37
|
-
pointerenter: PointerEvent;
|
|
38
|
-
pointerleave: PointerEvent;
|
|
39
|
-
pointermove: PointerEvent;
|
|
40
|
-
pointerover: PointerEvent;
|
|
41
|
-
pointerout: PointerEvent;
|
|
42
|
-
pointerup: PointerEvent;
|
|
43
|
-
wheel: WheelEvent;
|
|
44
|
-
} & {
|
|
45
|
-
[evt: string]: CustomEvent<any>;
|
|
46
|
-
};
|
|
47
|
-
slots: {
|
|
48
|
-
default: {
|
|
49
|
-
disabled: boolean;
|
|
50
|
-
variant: string;
|
|
51
|
-
};
|
|
52
|
-
};
|
|
53
|
-
exports?: undefined;
|
|
54
|
-
bindings?: undefined;
|
|
55
|
-
};
|
|
56
|
-
export type ButtonProps = typeof __propDef.props;
|
|
57
|
-
export type ButtonEvents = typeof __propDef.events;
|
|
58
|
-
export type ButtonSlots = typeof __propDef.slots;
|
|
59
|
-
/** A styled HTML button element. */
|
|
60
|
-
export default class Button extends SvelteComponent<ButtonProps, ButtonEvents, ButtonSlots> {
|
|
61
|
-
get click(): () => void;
|
|
62
|
-
get blur(): () => void;
|
|
63
|
-
get focus(): (options?: FocusOptions | undefined) => void;
|
|
64
|
-
}
|
|
65
|
-
export {};
|
|
1
|
+
/// <reference types="svelte" />
|
|
2
|
+
import type { HTMLButtonAttributes } from 'svelte/elements';
|
|
3
|
+
declare const Button: import("svelte").Component<HTMLButtonAttributes, {
|
|
4
|
+
click: () => void;
|
|
5
|
+
blur: () => void;
|
|
6
|
+
focus: (options?: FocusOptions) => void;
|
|
7
|
+
}, "">;
|
|
8
|
+
type Button = ReturnType<typeof Button>;
|
|
9
|
+
export default Button;
|
package/dist/Callout.svelte
CHANGED
|
@@ -1,37 +1,21 @@
|
|
|
1
|
-
<
|
|
1
|
+
<svelte:options runes={true} />
|
|
2
|
+
|
|
3
|
+
<script lang="ts">import { getContext, tick } from 'svelte';
|
|
2
4
|
import { arrow, autoUpdate, computePosition, flip, offset } from '@floating-ui/dom';
|
|
3
5
|
import { portal } from './actions/portal';
|
|
4
6
|
import { fade } from 'svelte/transition';
|
|
5
7
|
import { prefersReducedMotion } from './mediaQueries/prefersReducedMotion';
|
|
6
8
|
import { STERLING_PORTAL_HOST_ID, STERLING_PORTAL_CONTEXT_ID } from './Portal.constants';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
export let mainAxisOffset = 0;
|
|
14
|
-
/** When true, the callout is open and visible. */
|
|
15
|
-
export let open = false;
|
|
16
|
-
/** How the callout should be positioned relative to the reference element. */
|
|
17
|
-
export let placement = 'top-start';
|
|
18
|
-
/** The host container for the callout. */
|
|
19
|
-
export let portalHost = undefined;
|
|
20
|
-
/** The reference to the element anchoring the position of the callout. */
|
|
21
|
-
export let reference;
|
|
22
|
-
/** Additional class names to apply. */
|
|
23
|
-
export let variant = '';
|
|
24
|
-
// ----- State ----- //
|
|
25
|
-
let popupRef;
|
|
26
|
-
let arrowRef;
|
|
27
|
-
let popupPosition = { x: 0, y: 0 };
|
|
28
|
-
$: floatingUIPlacement = placement;
|
|
29
|
-
let bodyHeight = 0;
|
|
9
|
+
let { children, conditionalRender = $bindable(true), crossAxisOffset = $bindable(0), mainAxisOffset = $bindable(0), open = $bindable(false), placement = $bindable('top-start'), portalHost, reference, class: _class, ...rest } = $props();
|
|
10
|
+
let popupRef = $state(undefined);
|
|
11
|
+
let arrowRef = $state(undefined);
|
|
12
|
+
let popupPosition = $state({ x: 0, y: 0 });
|
|
13
|
+
let floatingUIPlacement = $derived(placement);
|
|
14
|
+
let bodyHeight = $state(0);
|
|
30
15
|
let resizeObserver = undefined;
|
|
31
16
|
const { portalHost: contextPortalHost } = getContext(STERLING_PORTAL_CONTEXT_ID) || {
|
|
32
17
|
portalHost: undefined
|
|
33
18
|
};
|
|
34
|
-
// ----- Portal Host ----- //
|
|
35
19
|
const ensurePortalHost = async () => {
|
|
36
20
|
await tick();
|
|
37
21
|
// use the host set from context, usually set from a Dialog
|
|
@@ -49,18 +33,18 @@ const ensurePortalHost = async () => {
|
|
|
49
33
|
}
|
|
50
34
|
portalHost = host;
|
|
51
35
|
};
|
|
52
|
-
|
|
53
|
-
$: middleware = [
|
|
36
|
+
let middleware = $derived([
|
|
54
37
|
offset({ mainAxis: mainAxisOffset, crossAxis: crossAxisOffset }),
|
|
55
38
|
flip(),
|
|
56
|
-
arrow({ element: arrowRef, padding: 8 })
|
|
57
|
-
];
|
|
39
|
+
arrowRef && arrow({ element: arrowRef, padding: 8 })
|
|
40
|
+
]);
|
|
58
41
|
const computeCalloutPosition = async () => {
|
|
59
42
|
if (reference && popupRef) {
|
|
60
43
|
popupPosition = await computePosition(reference, popupRef, {
|
|
61
44
|
placement: floatingUIPlacement,
|
|
62
45
|
middleware
|
|
63
46
|
});
|
|
47
|
+
console.log('popupPosition', popupPosition);
|
|
64
48
|
}
|
|
65
49
|
else {
|
|
66
50
|
popupPosition = { x: 0, y: 0 };
|
|
@@ -70,12 +54,23 @@ const computeCalloutPosition = async () => {
|
|
|
70
54
|
let cleanupAutoUpdate = () => { };
|
|
71
55
|
const autoUpdateCalloutPosition = () => {
|
|
72
56
|
cleanupAutoUpdate();
|
|
57
|
+
cleanupAutoUpdate = () => { };
|
|
73
58
|
if (reference && popupRef) {
|
|
74
59
|
cleanupAutoUpdate = autoUpdate(reference, popupRef, computeCalloutPosition);
|
|
75
60
|
}
|
|
76
61
|
};
|
|
77
|
-
|
|
78
|
-
|
|
62
|
+
$effect(() => {
|
|
63
|
+
autoUpdateCalloutPosition();
|
|
64
|
+
return () => {
|
|
65
|
+
cleanupAutoUpdate();
|
|
66
|
+
cleanupAutoUpdate = () => { };
|
|
67
|
+
};
|
|
68
|
+
});
|
|
69
|
+
$effect(() => {
|
|
70
|
+
bodyHeight;
|
|
71
|
+
reference;
|
|
72
|
+
computeCalloutPosition();
|
|
73
|
+
});
|
|
79
74
|
// ----- Arrow ----- //
|
|
80
75
|
const getArrowPlacementStyle = (position) => {
|
|
81
76
|
if (position?.placement && arrowRef) {
|
|
@@ -112,14 +107,20 @@ const getArrowOffsetStyle = (position) => {
|
|
|
112
107
|
}
|
|
113
108
|
return '';
|
|
114
109
|
};
|
|
115
|
-
|
|
110
|
+
let arrowStyle = $derived(getArrowPlacementStyle(popupPosition) + getArrowOffsetStyle(popupPosition));
|
|
116
111
|
// ----- Animation ----- //
|
|
117
112
|
const fadeNoOp = (node, params) => {
|
|
118
113
|
return { delay: 0, duration: 0 };
|
|
119
114
|
};
|
|
120
|
-
|
|
115
|
+
let fadeMotion = $derived(!$prefersReducedMotion ? fade : fadeNoOp);
|
|
121
116
|
// ----- EventHandlers ----- //
|
|
122
|
-
|
|
117
|
+
const onKeydown = (event) => {
|
|
118
|
+
if (event.key === 'Escape') {
|
|
119
|
+
open = false;
|
|
120
|
+
}
|
|
121
|
+
rest.onkeydown?.(event);
|
|
122
|
+
};
|
|
123
|
+
$effect(() => {
|
|
123
124
|
ensurePortalHost();
|
|
124
125
|
resizeObserver = new ResizeObserver((entries) => {
|
|
125
126
|
bodyHeight = entries[0].target.clientHeight;
|
|
@@ -132,11 +133,6 @@ onMount(() => {
|
|
|
132
133
|
resizeObserver = undefined;
|
|
133
134
|
};
|
|
134
135
|
});
|
|
135
|
-
const onKeydown = (event) => {
|
|
136
|
-
if (event.key === 'Escape') {
|
|
137
|
-
open = false;
|
|
138
|
-
}
|
|
139
|
-
};
|
|
140
136
|
ensurePortalHost();
|
|
141
137
|
</script>
|
|
142
138
|
|
|
@@ -146,10 +142,10 @@ ensurePortalHost();
|
|
|
146
142
|
class="sterling-callout-portal"
|
|
147
143
|
transition:fadeMotion|global={{ duration: 250 }}
|
|
148
144
|
>
|
|
149
|
-
<!-- svelte-ignore
|
|
145
|
+
<!-- svelte-ignore a11y_no_noninteractive_element_interactions -->
|
|
150
146
|
<div
|
|
151
147
|
bind:this={popupRef}
|
|
152
|
-
class={
|
|
148
|
+
class={['sterling-callout', _class].filter(Boolean).join(' ')}
|
|
153
149
|
class:open
|
|
154
150
|
class:top={popupPosition.placement === 'top'}
|
|
155
151
|
class:top-start={popupPosition.placement === 'top-start'}
|
|
@@ -164,39 +160,18 @@ ensurePortalHost();
|
|
|
164
160
|
class:left-start={popupPosition.placement === 'left-start'}
|
|
165
161
|
class:left-end={popupPosition.placement === 'left-end'}
|
|
166
162
|
role="tooltip"
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
on:copy
|
|
170
|
-
on:cut
|
|
171
|
-
on:dblclick
|
|
172
|
-
on:dragend
|
|
173
|
-
on:dragenter
|
|
174
|
-
on:dragleave
|
|
175
|
-
on:dragover
|
|
176
|
-
on:dragstart
|
|
177
|
-
on:drop
|
|
178
|
-
on:focus
|
|
179
|
-
on:focusin
|
|
180
|
-
on:focusout
|
|
181
|
-
on:keydown
|
|
182
|
-
on:keypress
|
|
183
|
-
on:keyup
|
|
184
|
-
on:mousedown
|
|
185
|
-
on:mouseenter
|
|
186
|
-
on:mouseleave
|
|
187
|
-
on:mousemove
|
|
188
|
-
on:mouseover
|
|
189
|
-
on:mouseout
|
|
190
|
-
on:mouseup
|
|
191
|
-
on:scroll
|
|
192
|
-
on:wheel|passive
|
|
193
|
-
on:paste
|
|
194
|
-
on:keydown={onKeydown}
|
|
195
|
-
{...$$restProps}
|
|
163
|
+
{...rest}
|
|
164
|
+
onkeydown={onKeydown}
|
|
196
165
|
style="left:{popupPosition.x}px; top:{popupPosition.y}px"
|
|
197
166
|
>
|
|
198
|
-
|
|
199
|
-
|
|
167
|
+
{#if children}
|
|
168
|
+
{#if typeof children === 'string'}
|
|
169
|
+
<div class="callout-text">{children}</div>
|
|
170
|
+
{:else}
|
|
171
|
+
{@render children()}
|
|
172
|
+
{/if}
|
|
173
|
+
{/if}
|
|
174
|
+
<div class="arrow" bind:this={arrowRef} style={arrowStyle}></div>
|
|
200
175
|
</div>
|
|
201
176
|
</div>
|
|
202
177
|
{/if}
|
package/dist/Callout.svelte.d.ts
CHANGED
|
@@ -1,56 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
variant?: string | undefined;
|
|
13
|
-
};
|
|
14
|
-
events: {
|
|
15
|
-
blur: FocusEvent;
|
|
16
|
-
click: MouseEvent;
|
|
17
|
-
copy: ClipboardEvent;
|
|
18
|
-
cut: ClipboardEvent;
|
|
19
|
-
dblclick: MouseEvent;
|
|
20
|
-
dragend: DragEvent;
|
|
21
|
-
dragenter: DragEvent;
|
|
22
|
-
dragleave: DragEvent;
|
|
23
|
-
dragover: DragEvent;
|
|
24
|
-
dragstart: DragEvent;
|
|
25
|
-
drop: DragEvent;
|
|
26
|
-
focus: FocusEvent;
|
|
27
|
-
focusin: FocusEvent;
|
|
28
|
-
focusout: FocusEvent;
|
|
29
|
-
keydown: KeyboardEvent;
|
|
30
|
-
keypress: KeyboardEvent;
|
|
31
|
-
keyup: KeyboardEvent;
|
|
32
|
-
mousedown: MouseEvent;
|
|
33
|
-
mouseenter: MouseEvent;
|
|
34
|
-
mouseleave: MouseEvent;
|
|
35
|
-
mousemove: MouseEvent;
|
|
36
|
-
mouseover: MouseEvent;
|
|
37
|
-
mouseout: MouseEvent;
|
|
38
|
-
mouseup: MouseEvent;
|
|
39
|
-
scroll: Event;
|
|
40
|
-
wheel: WheelEvent;
|
|
41
|
-
paste: ClipboardEvent;
|
|
42
|
-
} & {
|
|
43
|
-
[evt: string]: CustomEvent<any>;
|
|
44
|
-
};
|
|
45
|
-
slots: {
|
|
46
|
-
default: {};
|
|
47
|
-
};
|
|
48
|
-
exports?: undefined;
|
|
49
|
-
bindings?: undefined;
|
|
1
|
+
/// <reference types="svelte" />
|
|
2
|
+
import type { PopoverPlacement } from './Popover.types';
|
|
3
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
4
|
+
type Props = HTMLAttributes<HTMLDivElement> & {
|
|
5
|
+
conditionalRender?: boolean | null;
|
|
6
|
+
crossAxisOffset?: number;
|
|
7
|
+
mainAxisOffset?: number;
|
|
8
|
+
open?: boolean | null;
|
|
9
|
+
placement?: PopoverPlacement;
|
|
10
|
+
portalHost?: HTMLElement;
|
|
11
|
+
reference?: HTMLElement | null;
|
|
50
12
|
};
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
export
|
|
54
|
-
export default class Callout extends SvelteComponent<CalloutProps, CalloutEvents, CalloutSlots> {
|
|
55
|
-
}
|
|
56
|
-
export {};
|
|
13
|
+
declare const Callout: import("svelte").Component<Props, {}, "conditionalRender" | "crossAxisOffset" | "mainAxisOffset" | "open" | "placement">;
|
|
14
|
+
type Callout = ReturnType<typeof Callout>;
|
|
15
|
+
export default Callout;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
2
|
+
import type { PopoverPlacement } from './Popover.types';
|
|
3
|
+
export type CalloutProps = HTMLAttributes<HTMLDivElement> & {
|
|
4
|
+
conditionalRender?: boolean | null;
|
|
5
|
+
crossAxisOffset?: number;
|
|
6
|
+
mainAxisOffset?: number;
|
|
7
|
+
open?: boolean | null;
|
|
8
|
+
placement?: PopoverPlacement;
|
|
9
|
+
portalHost?: HTMLElement;
|
|
10
|
+
reference?: HTMLElement | null;
|
|
11
|
+
};
|
package/dist/Checkbox.svelte
CHANGED
|
@@ -1,18 +1,14 @@
|
|
|
1
|
-
<
|
|
1
|
+
<svelte:options runes={true} />
|
|
2
|
+
|
|
3
|
+
<script lang="ts">import { idGenerator } from './idGenerator';
|
|
2
4
|
import { usingKeyboard } from './mediaQueries/usingKeyboard';
|
|
3
|
-
|
|
4
|
-
export let checked = false;
|
|
5
|
-
export let disabled = false;
|
|
6
|
-
export let id = undefined;
|
|
7
|
-
/** Additional class names to apply. */
|
|
8
|
-
export let variant = '';
|
|
9
|
-
// ----- State ----- //
|
|
5
|
+
let { id, children, checked = $bindable(false), class: _class, disabled = $bindable(false), ...rest } = $props();
|
|
10
6
|
let inputRef;
|
|
11
|
-
|
|
12
|
-
if (
|
|
7
|
+
$effect(() => {
|
|
8
|
+
if (children && id === undefined) {
|
|
13
9
|
id = idGenerator.nextId('Checkbox');
|
|
14
10
|
}
|
|
15
|
-
}
|
|
11
|
+
});
|
|
16
12
|
// ----- Methods ----- //
|
|
17
13
|
export const blur = () => {
|
|
18
14
|
inputRef?.blur();
|
|
@@ -30,50 +26,18 @@ export const focus = (options) => {
|
|
|
30
26
|
A styled HTML input type=checkbox element.
|
|
31
27
|
-->
|
|
32
28
|
<div
|
|
33
|
-
class={
|
|
29
|
+
class={['sterling-checkbox', _class].filter(Boolean).join(' ')}
|
|
34
30
|
class:checked
|
|
35
31
|
class:disabled
|
|
36
32
|
class:using-keyboard={$usingKeyboard}
|
|
37
33
|
>
|
|
38
34
|
<div class="container">
|
|
39
|
-
<input
|
|
40
|
-
|
|
41
|
-
bind:checked
|
|
42
|
-
{disabled}
|
|
43
|
-
{id}
|
|
44
|
-
type="checkbox"
|
|
45
|
-
on:blur
|
|
46
|
-
on:click
|
|
47
|
-
on:change
|
|
48
|
-
on:dblclick
|
|
49
|
-
on:dragend
|
|
50
|
-
on:dragenter
|
|
51
|
-
on:dragleave
|
|
52
|
-
on:dragover
|
|
53
|
-
on:dragstart
|
|
54
|
-
on:drop
|
|
55
|
-
on:focus
|
|
56
|
-
on:focusin
|
|
57
|
-
on:focusout
|
|
58
|
-
on:keydown
|
|
59
|
-
on:keypress
|
|
60
|
-
on:keyup
|
|
61
|
-
on:input
|
|
62
|
-
on:mousedown
|
|
63
|
-
on:mouseenter
|
|
64
|
-
on:mouseleave
|
|
65
|
-
on:mousemove
|
|
66
|
-
on:mouseover
|
|
67
|
-
on:mouseout
|
|
68
|
-
on:mouseup
|
|
69
|
-
on:wheel|passive
|
|
70
|
-
{...$$restProps}
|
|
71
|
-
/>
|
|
72
|
-
<div class="indicator" />
|
|
35
|
+
<input bind:this={inputRef} bind:checked {disabled} {id} type="checkbox" {...rest} />
|
|
36
|
+
<div class="indicator"></div>
|
|
73
37
|
</div>
|
|
74
|
-
{#if
|
|
38
|
+
{#if children}
|
|
75
39
|
<label for={id}>
|
|
76
|
-
|
|
40
|
+
{@render children()}
|
|
77
41
|
</label>
|
|
78
42
|
{/if}
|
|
79
43
|
</div>
|
|
@@ -1,63 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
props: {
|
|
4
|
-
[x: string]: any;
|
|
5
|
-
checked?: boolean | undefined;
|
|
6
|
-
disabled?: boolean | undefined;
|
|
7
|
-
id?: string | undefined;
|
|
8
|
-
variant?: string | undefined;
|
|
9
|
-
blur?: (() => void) | undefined;
|
|
10
|
-
click?: (() => void) | undefined;
|
|
11
|
-
focus?: ((options?: FocusOptions) => void) | undefined;
|
|
12
|
-
};
|
|
13
|
-
events: {
|
|
14
|
-
blur: FocusEvent;
|
|
15
|
-
click: MouseEvent;
|
|
16
|
-
change: Event;
|
|
17
|
-
dblclick: MouseEvent;
|
|
18
|
-
dragend: DragEvent;
|
|
19
|
-
dragenter: DragEvent;
|
|
20
|
-
dragleave: DragEvent;
|
|
21
|
-
dragover: DragEvent;
|
|
22
|
-
dragstart: DragEvent;
|
|
23
|
-
drop: DragEvent;
|
|
24
|
-
focus: FocusEvent;
|
|
25
|
-
focusin: FocusEvent;
|
|
26
|
-
focusout: FocusEvent;
|
|
27
|
-
keydown: KeyboardEvent;
|
|
28
|
-
keypress: KeyboardEvent;
|
|
29
|
-
keyup: KeyboardEvent;
|
|
30
|
-
input: Event;
|
|
31
|
-
mousedown: MouseEvent;
|
|
32
|
-
mouseenter: MouseEvent;
|
|
33
|
-
mouseleave: MouseEvent;
|
|
34
|
-
mousemove: MouseEvent;
|
|
35
|
-
mouseover: MouseEvent;
|
|
36
|
-
mouseout: MouseEvent;
|
|
37
|
-
mouseup: MouseEvent;
|
|
38
|
-
wheel: WheelEvent;
|
|
39
|
-
} & {
|
|
40
|
-
[evt: string]: CustomEvent<any>;
|
|
41
|
-
};
|
|
42
|
-
slots: {
|
|
43
|
-
default: {
|
|
44
|
-
checked: boolean;
|
|
45
|
-
disabled: boolean;
|
|
46
|
-
inputId: string | undefined;
|
|
47
|
-
value: any;
|
|
48
|
-
variant: string;
|
|
49
|
-
};
|
|
50
|
-
};
|
|
51
|
-
exports?: undefined;
|
|
52
|
-
bindings?: undefined;
|
|
53
|
-
};
|
|
54
|
-
export type CheckboxProps = typeof __propDef.props;
|
|
55
|
-
export type CheckboxEvents = typeof __propDef.events;
|
|
56
|
-
export type CheckboxSlots = typeof __propDef.slots;
|
|
1
|
+
/// <reference types="svelte" />
|
|
2
|
+
import type { HTMLInputAttributes } from 'svelte/elements';
|
|
57
3
|
/** A styled HTML input type=checkbox element. */
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
}
|
|
63
|
-
|
|
4
|
+
declare const Checkbox: import("svelte").Component<HTMLInputAttributes, {
|
|
5
|
+
blur: () => void;
|
|
6
|
+
click: () => void;
|
|
7
|
+
focus: (options?: FocusOptions) => void;
|
|
8
|
+
}, "disabled" | "checked">;
|
|
9
|
+
type Checkbox = ReturnType<typeof Checkbox>;
|
|
10
|
+
export default Checkbox;
|
package/dist/Dialog.svelte
CHANGED
|
@@ -1,25 +1,15 @@
|
|
|
1
|
-
<
|
|
1
|
+
<svelte:options runes={true} />
|
|
2
|
+
|
|
3
|
+
<script lang="ts">import { onMount, setContext, tick } from 'svelte';
|
|
2
4
|
import Button from './Button.svelte';
|
|
3
5
|
import { STERLING_PORTAL_CONTEXT_ID } from './Portal.constants';
|
|
4
6
|
import { writable } from 'svelte/store';
|
|
5
7
|
const dialogFadeDuration = 250;
|
|
6
|
-
|
|
7
|
-
/** When true, clicking outside the dialog causes the dialog close. */
|
|
8
|
-
export let backdropCloses = false;
|
|
9
|
-
/** When true, the dialog is open; otherwise the dialog is closed. */
|
|
10
|
-
export let open = false;
|
|
11
|
-
/**
|
|
12
|
-
* The return value from the dialog:
|
|
13
|
-
* - an empty string indicates cancellation
|
|
14
|
-
* - a value indicates form submission.
|
|
15
|
-
*/
|
|
16
|
-
export let returnValue = '';
|
|
17
|
-
/** Additional class names to apply. */
|
|
18
|
-
export let variant = '';
|
|
19
|
-
// ----- State ----- //
|
|
8
|
+
let { backdropCloses = false, open = $bindable(false), body, class: _class, content, footer, header, returnValue = $bindable(''), headerTitle, ...rest } = $props();
|
|
20
9
|
let dialogRef;
|
|
21
10
|
let contentRef;
|
|
22
11
|
let formRef;
|
|
12
|
+
// svelte-ignore non_reactive_update
|
|
23
13
|
let closing = false;
|
|
24
14
|
const portalHostStore = writable(undefined);
|
|
25
15
|
// ----- Context ----- //
|
|
@@ -101,9 +91,9 @@ const onSubmit = (event) => {
|
|
|
101
91
|
return false;
|
|
102
92
|
}
|
|
103
93
|
};
|
|
104
|
-
|
|
94
|
+
$effect(() => {
|
|
105
95
|
updateDialog(open);
|
|
106
|
-
}
|
|
96
|
+
});
|
|
107
97
|
onMount(() => {
|
|
108
98
|
updateDialog(open);
|
|
109
99
|
// Use the dialog for any element portals
|
|
@@ -116,44 +106,46 @@ onMount(() => {
|
|
|
116
106
|
});
|
|
117
107
|
</script>
|
|
118
108
|
|
|
119
|
-
<!-- @component
|
|
120
|
-
A styled <dialog> element
|
|
121
|
-
|
|
122
|
-
- Slots for typical dialog content.
|
|
123
|
-
- Props and events to make using <dialog> easier
|
|
124
|
-
-->
|
|
125
109
|
<dialog
|
|
126
110
|
bind:this={dialogRef}
|
|
127
|
-
class={`sterling-dialog ${
|
|
111
|
+
class={`sterling-dialog ${_class}`}
|
|
128
112
|
class:open
|
|
129
113
|
class:closing
|
|
130
|
-
|
|
131
|
-
on:cancel
|
|
132
|
-
{...$$restProps}
|
|
114
|
+
{...rest}
|
|
133
115
|
>
|
|
134
|
-
<form method="dialog" bind:this={formRef}
|
|
116
|
+
<form method="dialog" bind:this={formRef} onsubmit={onSubmit}>
|
|
135
117
|
<div class="content" bind:this={contentRef}>
|
|
136
|
-
|
|
118
|
+
{#if content}
|
|
119
|
+
{@render content()}
|
|
120
|
+
{:else}
|
|
137
121
|
<div class="header">
|
|
138
|
-
|
|
122
|
+
{#if header}
|
|
123
|
+
{@render header()}
|
|
124
|
+
{:else}
|
|
139
125
|
<div class="title">
|
|
140
|
-
|
|
126
|
+
{#if headerTitle}
|
|
127
|
+
{#if typeof headerTitle === 'string'}
|
|
128
|
+
{headerTitle}
|
|
129
|
+
{:else}
|
|
130
|
+
{@render headerTitle()}
|
|
131
|
+
{/if}
|
|
132
|
+
{/if}
|
|
141
133
|
</div>
|
|
142
134
|
<div class="close">
|
|
143
|
-
<Button
|
|
144
|
-
<div class="close-x"
|
|
135
|
+
<Button class={`circular tool`} onclick={() => closeDialog()}>
|
|
136
|
+
<div class="close-x"></div>
|
|
145
137
|
</Button>
|
|
146
138
|
</div>
|
|
147
|
-
|
|
139
|
+
{/if}
|
|
148
140
|
</div>
|
|
149
141
|
<div class="body">
|
|
150
|
-
|
|
142
|
+
{@render body?.()}
|
|
151
143
|
</div>
|
|
152
|
-
<div class="separator"
|
|
144
|
+
<div class="separator"></div>
|
|
153
145
|
<div class="footer">
|
|
154
|
-
|
|
146
|
+
{@render footer?.()}
|
|
155
147
|
</div>
|
|
156
|
-
|
|
148
|
+
{/if}
|
|
157
149
|
</div>
|
|
158
150
|
</form>
|
|
159
151
|
</dialog>
|