@hyvor/design 1.1.3 → 1.1.5

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.
@@ -1,4 +1,5 @@
1
1
  <script lang="ts">
2
+ import { legacyHandlers } from '../../legacy.js';
2
3
  import { createBubbler } from 'svelte/legacy';
3
4
 
4
5
  const bubble = createBubbler();
@@ -16,6 +17,17 @@
16
17
  end?: import('svelte').Snippet;
17
18
  action?: import('svelte').Snippet;
18
19
  [key: string]: any;
20
+
21
+ onkeyup?: (event: KeyboardEvent) => void;
22
+ onkeydown?: (event: KeyboardEvent) => void;
23
+ onkeypress?: (event: KeyboardEvent) => void;
24
+ onfocus?: (event: FocusEvent) => void;
25
+ onblur?: (event: FocusEvent) => void;
26
+ onclick?: (event: MouseEvent) => void;
27
+ onmouseover?: (event: MouseEvent) => void;
28
+ onmouseenter?: (event: MouseEvent) => void;
29
+ onmouseleave?: (event: MouseEvent) => void;
30
+ onchange?: (event: Event) => void;
19
31
  }
20
32
 
21
33
  let {
@@ -30,6 +42,18 @@
30
42
  children,
31
43
  end,
32
44
  action,
45
+
46
+ onkeyup,
47
+ onkeydown,
48
+ onkeypress,
49
+ onfocus,
50
+ onblur,
51
+ onclick,
52
+ onmouseover,
53
+ onmouseenter,
54
+ onmouseleave,
55
+ onchange,
56
+
33
57
  ...rest
34
58
  }: Props = $props();
35
59
  </script>
@@ -38,16 +62,18 @@
38
62
  this={as}
39
63
  class="button {size} {color} {variant} {align}"
40
64
  class:block
41
- onkeyup={bubble('keyup')}
42
- onkeydown={bubble('keydown')}
43
- onkeypress={bubble('keypress')}
44
- onfocus={bubble('focus')}
45
- onblur={bubble('blur')}
46
- onclick={bubble('click')}
47
- onmouseover={bubble('mouseover')}
48
- onmouseenter={bubble('mouseenter')}
49
- onmouseleave={bubble('mouseleave')}
50
- onchange={bubble('change')}
65
+
66
+ onkeyup={legacyHandlers(onkeyup, bubble('keyup'))}
67
+ onkeydown={legacyHandlers(onkeydown, bubble('keydown'))}
68
+ onkeypress={legacyHandlers(onkeypress, bubble('keypress'))}
69
+ onfocus={legacyHandlers(onfocus, bubble('focus'))}
70
+ onblur={legacyHandlers(onblur, bubble('blur'))}
71
+ onclick={legacyHandlers(onclick, bubble('click'))}
72
+ onmouseover={legacyHandlers(onmouseover, bubble('mouseover'))}
73
+ onmouseenter={legacyHandlers(onmouseenter, bubble('mouseenter'))}
74
+ onmouseleave={legacyHandlers(onmouseleave, bubble('mouseleave'))}
75
+ onchange={legacyHandlers(onchange, bubble('change'))}
76
+
51
77
  role="button"
52
78
  tabindex="0"
53
79
  bind:this={button}
@@ -11,6 +11,16 @@ interface Props {
11
11
  end?: import('svelte').Snippet;
12
12
  action?: import('svelte').Snippet;
13
13
  [key: string]: any;
14
+ onkeyup?: (event: KeyboardEvent) => void;
15
+ onkeydown?: (event: KeyboardEvent) => void;
16
+ onkeypress?: (event: KeyboardEvent) => void;
17
+ onfocus?: (event: FocusEvent) => void;
18
+ onblur?: (event: FocusEvent) => void;
19
+ onclick?: (event: MouseEvent) => void;
20
+ onmouseover?: (event: MouseEvent) => void;
21
+ onmouseenter?: (event: MouseEvent) => void;
22
+ onmouseleave?: (event: MouseEvent) => void;
23
+ onchange?: (event: Event) => void;
14
24
  }
15
25
  declare const Button: import("svelte").Component<Props, {}, "button">;
16
26
  type Button = ReturnType<typeof Button>;
@@ -0,0 +1,78 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from "svelte";
3
+ import Button from "../Button/Button.svelte";
4
+
5
+ interface Props {
6
+ children: Snippet;
7
+ tabs: string[];
8
+ }
9
+
10
+ let { children, tabs }: Props = $props();
11
+ let activeTab = $state(tabs[0]);
12
+
13
+ function activateTab(tab: string) {
14
+ activeTab = tab;
15
+
16
+ const pres = blocksEl.querySelectorAll("pre");
17
+ const tabIndex = tabs.indexOf(tab);
18
+
19
+ pres.forEach((pre, index) => {
20
+ if (index === tabIndex) {
21
+ pre.style.display = "block";
22
+ } else {
23
+ pre.style.display = "none";
24
+ }
25
+ });
26
+ }
27
+
28
+ let blocksEl: HTMLDivElement;
29
+ </script>
30
+
31
+ <div class="tabbed">
32
+
33
+ <div class="selectors">
34
+ {#each tabs as tab}
35
+ <Button
36
+ size="x-small"
37
+ color={activeTab === tab ? 'accent' : 'input'}
38
+ onclick={() => activateTab(tab)}
39
+ >{tab}</Button>
40
+ {/each}
41
+ </div>
42
+
43
+ <div class="blocks" bind:this={blocksEl}>
44
+ {@render children()}
45
+ </div>
46
+
47
+ </div>
48
+
49
+ <style>
50
+
51
+ .tabbed {
52
+ margin: 1.5rem 0 1rem 0;
53
+ position: relative
54
+ }
55
+
56
+ .selectors {
57
+ display: inline-flex;
58
+ position: absolute;
59
+ top: 0;
60
+ left: 20px;
61
+ z-index: 1;
62
+ transform: translateY(-50%);
63
+ gap: 3px;
64
+ }
65
+
66
+ .selectors > :global(button) {
67
+ border: 1px solid var(--border);
68
+ }
69
+
70
+ .blocks > :global(pre:not(:first-child)) {
71
+ display: none;
72
+ }
73
+
74
+ .blocks > :global(pre) {
75
+ margin: 0
76
+ }
77
+
78
+ </style>
@@ -0,0 +1,8 @@
1
+ import type { Snippet } from "svelte";
2
+ interface Props {
3
+ children: Snippet;
4
+ tabs: string[];
5
+ }
6
+ declare const TabbedCodeBlock: import("svelte").Component<Props, {}, "">;
7
+ type TabbedCodeBlock = ReturnType<typeof TabbedCodeBlock>;
8
+ export default TabbedCodeBlock;
@@ -11,6 +11,7 @@ export { default as BoxShadowPicker } from './BoxShadowPicker/BoxShadowPicker.sv
11
11
  export { default as Callout } from './Callout/Callout.svelte';
12
12
  export { default as Checkbox } from './Checkbox/Checkbox.svelte';
13
13
  export { default as CodeBlock } from './CodeBlock/CodeBlock.svelte';
14
+ export { default as TabbedCodeBlock } from './CodeBlock/TabbedCodeBlock.svelte';
14
15
  export { default as ColorPicker } from './ColorPicker/ColorPicker.svelte';
15
16
  export { default as DarkProvider } from './Dark/DarkProvider.svelte';
16
17
  export { default as DarkToggle } from './Dark/DarkToggle.svelte';
@@ -11,6 +11,7 @@ export { default as BoxShadowPicker } from './BoxShadowPicker/BoxShadowPicker.sv
11
11
  export { default as Callout } from './Callout/Callout.svelte';
12
12
  export { default as Checkbox } from './Checkbox/Checkbox.svelte';
13
13
  export { default as CodeBlock } from './CodeBlock/CodeBlock.svelte';
14
+ export { default as TabbedCodeBlock } from './CodeBlock/TabbedCodeBlock.svelte';
14
15
  export { default as ColorPicker } from './ColorPicker/ColorPicker.svelte';
15
16
  export { default as DarkProvider } from './Dark/DarkProvider.svelte';
16
17
  export { default as DarkToggle } from './Dark/DarkToggle.svelte';
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Event can be KeyboardEvent, MouseEvent, TouchEvent, FocusEvent, or Event
3
+ */
4
+ type CustomEventListener = (event: any) => void;
5
+ /**
6
+ * Extends svelte4 handlers to support undefined
7
+ */
8
+ export declare function legacyHandlers(...eventHandlers: (CustomEventListener | undefined)[]): EventListener;
9
+ export {};
package/dist/legacy.js ADDED
@@ -0,0 +1,8 @@
1
+ import { handlers } from "svelte/legacy";
2
+ /**
3
+ * Extends svelte4 handlers to support undefined
4
+ */
5
+ export function legacyHandlers(...eventHandlers) {
6
+ const all = eventHandlers.filter(h => h !== undefined);
7
+ return handlers(...all);
8
+ }
package/package.json CHANGED
@@ -59,5 +59,5 @@
59
59
  "publishConfig": {
60
60
  "access": "public"
61
61
  },
62
- "version": "1.1.3"
62
+ "version": "1.1.5"
63
63
  }