@flightlesslabs/dodo-ui 0.7.2 → 0.9.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.
Files changed (138) hide show
  1. package/dist/index.d.ts +18 -2
  2. package/dist/index.js +11 -0
  3. package/dist/stories/components/Form/NumericInput/Events/Events.stories.svelte +126 -0
  4. package/dist/stories/components/Form/NumericInput/Events/Events.stories.svelte.d.ts +18 -0
  5. package/dist/stories/components/Form/NumericInput/NumericInput.stories.svelte +79 -0
  6. package/dist/stories/components/Form/NumericInput/NumericInput.stories.svelte.d.ts +21 -0
  7. package/dist/stories/components/Form/NumericInput/NumericInput.svelte +161 -0
  8. package/dist/stories/components/Form/NumericInput/NumericInput.svelte.d.ts +69 -0
  9. package/dist/stories/components/Form/NumericInput/Validation/Validation.stories.svelte +84 -0
  10. package/dist/stories/components/Form/NumericInput/Validation/Validation.stories.svelte.d.ts +18 -0
  11. package/dist/stories/components/Form/PasswordInput/Events/Events.stories.svelte +27 -6
  12. package/dist/stories/components/Form/PasswordInput/PasswordInput.svelte +5 -3
  13. package/dist/stories/components/Form/PasswordInput/PasswordInput.svelte.d.ts +7 -1
  14. package/dist/stories/components/Form/Select/Customize/Customize.stories.svelte +16 -1
  15. package/dist/stories/components/Form/Select/DropDownArrow/DropDownArrow.stories.svelte +59 -0
  16. package/dist/stories/components/Form/Select/DropDownArrow/DropDownArrow.stories.svelte.d.ts +18 -0
  17. package/dist/stories/components/Form/Select/Events/Events.stories.svelte +27 -0
  18. package/dist/stories/components/Form/Select/Positions/AutoPosition/AutoPosition.stories.svelte +54 -0
  19. package/dist/stories/components/Form/Select/Positions/AutoPosition/AutoPosition.stories.svelte.d.ts +18 -0
  20. package/dist/stories/components/Form/Select/Positions/Positions.stories.svelte +83 -0
  21. package/dist/stories/components/Form/Select/Positions/Positions.stories.svelte.d.ts +18 -0
  22. package/dist/stories/components/Form/Select/Select.svelte +110 -123
  23. package/dist/stories/components/Form/Select/Select.svelte.d.ts +22 -3
  24. package/dist/stories/components/Form/TextInput/Events/Events.stories.svelte +27 -0
  25. package/dist/stories/components/Form/TextInput/TextInput.svelte +5 -3
  26. package/dist/stories/components/Form/TextInput/TextInput.svelte.d.ts +10 -1
  27. package/dist/stories/components/Layout/Menu/DynamicMenu/Customize/Customize.stories.svelte +28 -0
  28. package/dist/stories/components/Layout/Menu/DynamicMenu/Customize/Customize.stories.svelte.d.ts +18 -0
  29. package/dist/stories/components/Layout/Menu/DynamicMenu/DynamicMenu.stories.svelte +51 -0
  30. package/dist/stories/components/Layout/Menu/DynamicMenu/DynamicMenu.stories.svelte.d.ts +22 -0
  31. package/dist/stories/components/Layout/Menu/DynamicMenu/DynamicMenu.svelte +129 -0
  32. package/dist/stories/components/Layout/Menu/DynamicMenu/DynamicMenu.svelte.d.ts +81 -0
  33. package/dist/stories/components/Layout/Menu/DynamicMenu/Events/Events.stories.svelte +46 -0
  34. package/dist/stories/components/Layout/Menu/DynamicMenu/Events/Events.stories.svelte.d.ts +18 -0
  35. package/dist/stories/components/Layout/Menu/DynamicMenu/KeybaordNavigation/KeybaordNavigation.stories.svelte +27 -0
  36. package/dist/stories/components/Layout/Menu/DynamicMenu/KeybaordNavigation/KeybaordNavigation.stories.svelte.d.ts +18 -0
  37. package/dist/stories/components/Layout/Menu/DynamicMenu/Options/OptionFormat.mdx +72 -0
  38. package/dist/stories/components/Layout/Menu/MenuItem/MenuItem.svelte.d.ts +1 -1
  39. package/dist/stories/developer tools/components/DynamicInput/DynamicInput.svelte +23 -4
  40. package/dist/stories/developer tools/components/DynamicInput/DynamicInput.svelte.d.ts +13 -2
  41. package/dist/stories/developer tools/components/DynamicInput/Events/Events.stories.svelte +115 -0
  42. package/dist/stories/developer tools/components/DynamicInput/Events/Events.stories.svelte.d.ts +18 -0
  43. package/dist/stories/developer tools/helpers/Numbers/cleanNumericString/cleanNumericString.d.ts +13 -0
  44. package/dist/stories/developer tools/helpers/Numbers/cleanNumericString/cleanNumericString.js +26 -0
  45. package/dist/stories/developer tools/helpers/Numbers/cleanNumericString/index.mdx +20 -0
  46. package/dist/stories/developer tools/helpers/Numbers/isValidNumberValue/index.mdx +71 -0
  47. package/dist/stories/developer tools/helpers/Numbers/isValidNumberValue/isValidNumberValue.d.ts +51 -0
  48. package/dist/stories/developer tools/helpers/Numbers/isValidNumberValue/isValidNumberValue.js +96 -0
  49. package/dist/stories/developer tools/helpers/logger/index.mdx +63 -0
  50. package/dist/stories/developer tools/helpers/logger/logger.d.ts +24 -0
  51. package/dist/stories/developer tools/helpers/logger/logger.js +31 -0
  52. package/package.json +15 -17
  53. package/src/lib/index.ts +33 -0
  54. package/src/lib/stories/Home.mdx +59 -0
  55. package/src/lib/stories/assets/dark-theme-toggle.png +0 -0
  56. package/src/lib/stories/components/Form/Button/Button.stories.svelte +61 -0
  57. package/src/lib/stories/components/Form/Button/Color/Color.stories.svelte +43 -0
  58. package/src/lib/stories/components/Form/Button/Events/Events.stories.svelte +36 -0
  59. package/src/lib/stories/components/Form/Button/IconButton/IconButton.stories.svelte +43 -0
  60. package/src/lib/stories/components/Form/Button/Roundness/Roundness.stories.svelte +23 -0
  61. package/src/lib/stories/components/Form/Button/Size/Size.stories.svelte +16 -0
  62. package/src/lib/stories/components/Form/Button/Variant/Variant.stories.svelte +18 -0
  63. package/src/lib/stories/components/Form/FormControl/FormControl.stories.svelte +28 -0
  64. package/src/lib/stories/components/Form/Label/Label.stories.svelte +13 -0
  65. package/src/lib/stories/components/Form/Message/Color/Color.stories.svelte +36 -0
  66. package/src/lib/stories/components/Form/Message/Message.stories.svelte +27 -0
  67. package/src/lib/stories/components/Form/Message/Size/Size.stories.svelte +22 -0
  68. package/src/lib/stories/components/Form/NumericInput/Events/Events.stories.svelte +134 -0
  69. package/src/lib/stories/components/Form/NumericInput/NumericInput.stories.svelte +84 -0
  70. package/src/lib/stories/components/Form/NumericInput/NumericInput.svelte +286 -0
  71. package/src/lib/stories/components/Form/NumericInput/Validation/Validation.stories.svelte +87 -0
  72. package/src/lib/stories/components/Form/PasswordInput/Events/Events.stories.svelte +132 -0
  73. package/src/lib/stories/components/Form/PasswordInput/PasswordInput.stories.svelte +59 -0
  74. package/src/lib/stories/components/Form/PasswordInput/PasswordInput.svelte +15 -3
  75. package/src/lib/stories/components/Form/PasswordInput/Roundness/Roundness.stories.svelte +20 -0
  76. package/src/lib/stories/components/Form/PasswordInput/Size/Size.stories.svelte +16 -0
  77. package/src/lib/stories/components/Form/PasswordInput/WithIcon/WithIcon.stories.svelte +31 -0
  78. package/src/lib/stories/components/Form/Select/Customize/Customize.stories.svelte +139 -0
  79. package/src/lib/stories/components/Form/Select/DropDownArrow/DropDownArrow.stories.svelte +63 -0
  80. package/src/lib/stories/components/Form/Select/Events/Events.stories.svelte +174 -0
  81. package/src/lib/stories/components/Form/Select/Options/OptionFormat.mdx +40 -0
  82. package/src/lib/stories/components/Form/Select/Positions/AutoPosition/AutoPosition.stories.svelte +58 -0
  83. package/src/lib/stories/components/Form/Select/Positions/Positions.stories.svelte +87 -0
  84. package/src/lib/stories/components/Form/Select/Roundness/Roundness.stories.svelte +32 -0
  85. package/src/lib/stories/components/Form/Select/Select.stories.svelte +121 -0
  86. package/src/lib/stories/components/Form/Select/Select.svelte +166 -146
  87. package/src/lib/stories/components/Form/Select/Size/Size.stories.svelte +28 -0
  88. package/src/lib/stories/components/Form/Select/WithIcon/WithIcon.stories.svelte +43 -0
  89. package/src/lib/stories/components/Form/TextInput/Events/Events.stories.svelte +125 -0
  90. package/src/lib/stories/components/Form/TextInput/Roundness/Roundness.stories.svelte +21 -0
  91. package/src/lib/stories/components/Form/TextInput/Size/Size.stories.svelte +17 -0
  92. package/src/lib/stories/components/Form/TextInput/TextInput.stories.svelte +43 -0
  93. package/src/lib/stories/components/Form/TextInput/TextInput.svelte +18 -3
  94. package/src/lib/stories/components/Form/TextInput/WithIcon/WithIcon.stories.svelte +47 -0
  95. package/src/lib/stories/components/Layout/Menu/DynamicMenu/Customize/Customize.stories.svelte +30 -0
  96. package/src/lib/stories/components/Layout/Menu/DynamicMenu/DynamicMenu.stories.svelte +56 -0
  97. package/src/lib/stories/components/Layout/Menu/DynamicMenu/DynamicMenu.svelte +262 -0
  98. package/src/lib/stories/components/Layout/Menu/DynamicMenu/Events/Events.stories.svelte +48 -0
  99. package/src/lib/stories/components/Layout/Menu/DynamicMenu/KeybaordNavigation/KeybaordNavigation.stories.svelte +29 -0
  100. package/src/lib/stories/components/Layout/Menu/DynamicMenu/Options/OptionFormat.mdx +72 -0
  101. package/src/lib/stories/components/Layout/Menu/Menu.stories.svelte +69 -0
  102. package/src/lib/stories/components/Layout/Menu/MenuItem/MenuItem.stories.svelte +34 -0
  103. package/src/lib/stories/components/Layout/Menu/MenuItem/MenuItem.svelte +1 -1
  104. package/src/lib/stories/components/Layout/Menu/MenuItem/Size/Size.stories.svelte +16 -0
  105. package/src/lib/stories/components/Layout/Menu/MenuItem/Type/Type.stories.svelte +21 -0
  106. package/src/lib/stories/components/Layout/Menu/Size/Size.stories.svelte +37 -0
  107. package/src/lib/stories/components/Layout/Paper/Color/Color.stories.svelte +63 -0
  108. package/src/lib/stories/components/Layout/Paper/Paper.stories.svelte +50 -0
  109. package/src/lib/stories/components/Layout/Paper/Roundness/Roundness.stories.svelte +25 -0
  110. package/src/lib/stories/components/Layout/Paper/Shadow/Shadow.stories.svelte +24 -0
  111. package/src/lib/stories/components/Layout/Separator/Color/Color.stories.svelte +19 -0
  112. package/src/lib/stories/components/Layout/Separator/Separator.stories.svelte +30 -0
  113. package/src/lib/stories/developer tools/Intro.mdx +9 -0
  114. package/src/lib/stories/developer tools/components/DynamicInput/DynamicInput.stories.svelte +53 -0
  115. package/src/lib/stories/developer tools/components/DynamicInput/DynamicInput.svelte +43 -3
  116. package/src/lib/stories/developer tools/components/DynamicInput/Events/Events.stories.svelte +121 -0
  117. package/src/lib/stories/developer tools/components/DynamicInput/Size/Size.stories.svelte +17 -0
  118. package/src/lib/stories/developer tools/components/InputEnclosure/InputEnclosure.stories.svelte +38 -0
  119. package/src/lib/stories/developer tools/components/InputEnclosure/Roundness/Roundness.stories.svelte +20 -0
  120. package/src/lib/stories/developer tools/components/InputEnclosure/Size/Size.stories.svelte +16 -0
  121. package/src/lib/stories/developer tools/components/InputEnclosure/WithIcon/WithIcon.stories.svelte +47 -0
  122. package/src/lib/stories/developer tools/components/Popper/Popper.stories.svelte +124 -0
  123. package/src/lib/stories/developer tools/components/Popper/PopperPopup/PopperPopup.stories.svelte +64 -0
  124. package/src/lib/stories/developer tools/components/Popper/Positions/AutoPosition/AutoPosition.stories.svelte +92 -0
  125. package/src/lib/stories/developer tools/components/Popper/Positions/Positions.stories.svelte +114 -0
  126. package/src/lib/stories/developer tools/components/UtilityButton/Size/Size.stories.svelte +25 -0
  127. package/src/lib/stories/developer tools/components/UtilityButton/UtilityButton.stories.svelte +30 -0
  128. package/src/lib/stories/developer tools/directives/clickOutside/index.mdx +25 -0
  129. package/src/lib/stories/developer tools/helpers/Numbers/cleanNumericString/cleanNumericString.ts +27 -0
  130. package/src/lib/stories/developer tools/helpers/Numbers/cleanNumericString/index.mdx +20 -0
  131. package/src/lib/stories/developer tools/helpers/Numbers/isValidNumberValue/index.mdx +71 -0
  132. package/src/lib/stories/developer tools/helpers/Numbers/isValidNumberValue/isValidNumberValue.ts +156 -0
  133. package/src/lib/stories/developer tools/helpers/logger/index.mdx +63 -0
  134. package/src/lib/stories/developer tools/helpers/logger/logger.ts +46 -0
  135. package/src/lib/stories/developer tools/philosophy/Colors/Colors.mdx +43 -0
  136. package/src/lib/stories/developer tools/philosophy/Colors/Colors.stories.svelte +22 -0
  137. package/src/lib/stories/developer tools/philosophy/Colors/Opacity.stories.svelte +11 -0
  138. package/src/lib/stories/developer tools/philosophy/Themes.mdx +23 -0
@@ -31,7 +31,6 @@ const { Story } = defineMeta({
31
31
  }}
32
32
  />
33
33
 
34
- <!-- `e: PasswordInputToggleEvent` -->
35
34
  <Story
36
35
  name="Toggle"
37
36
  args={{
@@ -43,7 +42,6 @@ const { Story } = defineMeta({
43
42
  }}
44
43
  />
45
44
 
46
- <!-- `e: TextInputFocusEvent` -->
47
45
  <Story
48
46
  name="Focus"
49
47
  args={{
@@ -55,7 +53,6 @@ const { Story } = defineMeta({
55
53
  }}
56
54
  />
57
55
 
58
- <!-- `e: TextInputFocusEvent` -->
59
56
  <Story
60
57
  name="Blur"
61
58
  args={{
@@ -67,7 +64,6 @@ const { Story } = defineMeta({
67
64
  }}
68
65
  />
69
66
 
70
- <!-- `e: TextInputClipboardEvent` -->
71
67
  <Story
72
68
  name="Copy"
73
69
  args={{
@@ -79,7 +75,6 @@ const { Story } = defineMeta({
79
75
  }}
80
76
  />
81
77
 
82
- <!-- `e: TextInputClipboardEvent` -->
83
78
  <Story
84
79
  name="Cut"
85
80
  args={{
@@ -91,7 +86,6 @@ const { Story } = defineMeta({
91
86
  }}
92
87
  />
93
88
 
94
- <!-- `e: TextInputClipboardEvent` -->
95
89
  <Story
96
90
  name="Paste"
97
91
  args={{
@@ -102,3 +96,30 @@ const { Story } = defineMeta({
102
96
  },
103
97
  }}
104
98
  />
99
+
100
+ <Story
101
+ name="KeyDown"
102
+ args={{
103
+ onkeydown: (e: TextInputKeyboardEvent) => {
104
+ console.log('onkeydown Event', e.key);
105
+ },
106
+ }}
107
+ />
108
+
109
+ <Story
110
+ name="KeyPress"
111
+ args={{
112
+ onkeypress: (e: TextInputKeyboardEvent) => {
113
+ console.log('onkeypress Event', e.key);
114
+ },
115
+ }}
116
+ />
117
+
118
+ <Story
119
+ name="KeyUp"
120
+ args={{
121
+ onkeyup: (e: TextInputKeyboardEvent) => {
122
+ console.log('onkeyup Event', e.key);
123
+ },
124
+ }}
125
+ />
@@ -5,21 +5,19 @@
5
5
  import UtilityButton from '../../../developer tools/components/UtilityButton/UtilityButton.svelte';
6
6
  import InputEnclosure from '../../../developer tools/components/InputEnclosure/InputEnclosure.svelte';
7
7
  import { DynamicInput } from '../../../../index.js';
8
- let { size = 'normal', roundness = 1, outline = true, name, id, class: className = '', disabled = false, oninput, onchange, onblur, onfocus, onpaste, oncopy, oncut, before, after, customPasswordToggleIcon, error = false, passwordToggle = true, passwordToggleState = $bindable(), value = $bindable(), placeholder, ontoggle, ref = $bindable(), readonly = false, } = $props();
8
+ let { size = 'normal', roundness = 1, outline = true, name, id, class: className = '', disabled = false, oninput, onchange, onblur, onfocus, onpaste, oncopy, oncut, onkeydown, onkeypress, onkeyup, before, after, customPasswordToggleIcon, error = false, passwordToggle = true, passwordToggleState = $bindable(), value = $bindable(), placeholder, ontoggle, ref = $bindable(), readonly = false, } = $props();
9
9
  let focused = $state(false);
10
10
  let toggle = $state(passwordToggleState);
11
11
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
12
12
  let customPasswordToggleIconTyped = customPasswordToggleIcon;
13
13
  function onfocusMod(e) {
14
14
  const eTyped = e;
15
- focused = true;
16
15
  if (onfocus) {
17
16
  onfocus(eTyped);
18
17
  }
19
18
  }
20
19
  function onblurMod(e) {
21
20
  const eTyped = e;
22
- focused = false;
23
21
  if (onblur) {
24
22
  onblur(eTyped);
25
23
  }
@@ -51,6 +49,7 @@ function ontoggleMod(e) {
51
49
  {id}
52
50
  {disabled}
53
51
  bind:ref
52
+ bind:focused
54
53
  {oninput}
55
54
  {onchange}
56
55
  onfocus={onfocusMod}
@@ -58,6 +57,9 @@ function ontoggleMod(e) {
58
57
  {onpaste}
59
58
  {oncopy}
60
59
  {oncut}
60
+ onkeydown={onkeydown ? (e) => onkeydown(e as TextInputKeyboardEvent) : undefined}
61
+ onkeypress={onkeypress ? (e) => onkeypress(e as TextInputKeyboardEvent) : undefined}
62
+ onkeyup={onkeyup ? (e) => onkeyup(e as TextInputKeyboardEvent) : undefined}
61
63
  {placeholder}
62
64
  bind:value
63
65
  {readonly}
@@ -1,7 +1,7 @@
1
1
  import type { ComponentSize } from '../../../../types/size.js';
2
2
  import type { ComponentRoundness } from '../../../../types/roundness.js';
3
3
  import type { Snippet } from 'svelte';
4
- import type { ChangeEventHandler, ClipboardEventHandler, FocusEventHandler, FormEventHandler } from 'svelte/elements';
4
+ import type { ChangeEventHandler, ClipboardEventHandler, FocusEventHandler, FormEventHandler, KeyboardEventHandler } from 'svelte/elements';
5
5
  export type PasswordInputToggleEvent = {
6
6
  event: Event;
7
7
  toggle: boolean;
@@ -57,6 +57,12 @@ export interface PasswordInputProps {
57
57
  oncut?: ClipboardEventHandler<HTMLInputElement>;
58
58
  /** ontoggle event handler */
59
59
  ontoggle?: (e: PasswordInputToggleEvent) => void;
60
+ /** onkeydown event handler */
61
+ onkeydown?: KeyboardEventHandler<HTMLInputElement>;
62
+ /** onkeypress event handler */
63
+ onkeypress?: KeyboardEventHandler<HTMLInputElement>;
64
+ /** onkeyup event handler */
65
+ onkeyup?: KeyboardEventHandler<HTMLInputElement>;
60
66
  }
61
67
  declare const PasswordInput: import("svelte").Component<PasswordInputProps, {}, "ref" | "value" | "passwordToggleState">;
62
68
  type PasswordInput = ReturnType<typeof PasswordInput>;
@@ -3,6 +3,7 @@ import Select, {} from '../Select.svelte';
3
3
  import { selectOptions, storySelectArgTypes } from '../Select.stories.svelte';
4
4
  import { Menu } from '../../../../../index.js';
5
5
  import MenuItem from '../../../Layout/Menu/MenuItem/MenuItem.svelte';
6
+ import Icon from '@iconify/svelte';
6
7
  // More on how to set up stories at: https://storybook.js.org/docs/writing-stories
7
8
  const { Story } = defineMeta({
8
9
  component: Select,
@@ -30,6 +31,19 @@ let value = $state(options[0]);
30
31
  </Select>
31
32
  </Story>
32
33
 
34
+ <!-- Format look and feel Dropdown Arrow icon -->
35
+ <Story name="CustomDropdownArrowIcon" asChild>
36
+ <Select {options} {value} onselect={(val: SelectOption) => (value = val)}>
37
+ {#snippet customDropdownArrowIcon(open)}
38
+ {#if open}
39
+ <Icon icon="mingcute:up-fill" width="24" height="24" />
40
+ {:else}
41
+ <Icon icon="mingcute:down-fill" width="24" height="24" />
42
+ {/if}
43
+ {/snippet}
44
+ </Select>
45
+ </Story>
46
+
33
47
  <!-- Format look and feel of Popper menu item. -->
34
48
  <Story name="CustomMenuItem" asChild>
35
49
  <Select {options} {value} onselect={(val: SelectOption) => (value = val)}>
@@ -51,13 +65,14 @@ let value = $state(options[0]);
51
65
  <!-- Format look and feel of Popup. -->
52
66
  <Story name="CustomPopup" asChild>
53
67
  <Select {options} {value}>
54
- {#snippet customPopupContent(options, selectedOption)}
68
+ {#snippet customPopupContent(options, selectedOption, onselect)}
55
69
  <Menu size="small" separator>
56
70
  {#each options as option (option.value)}
57
71
  <MenuItem
58
72
  type="button"
59
73
  disabled={option.disabled}
60
74
  selected={selectedOption.value === option.value}
75
+ onclick={() => onselect(option)}
61
76
  >
62
77
  <b>{option.label}</b>
63
78
  </MenuItem>
@@ -0,0 +1,59 @@
1
+ <script module lang="ts">import { defineMeta } from '@storybook/addon-svelte-csf';
2
+ import Select, {} from '../Select.svelte';
3
+ import { selectOptions, storySelectArgTypes } from '../Select.stories.svelte';
4
+ import Icon from '@iconify/svelte';
5
+ // More on how to set up stories at: https://storybook.js.org/docs/writing-stories
6
+ const { Story } = defineMeta({
7
+ component: Select,
8
+ tags: ['autodocs'],
9
+ argTypes: storySelectArgTypes,
10
+ parameters: {
11
+ docs: {
12
+ story: {
13
+ height: '400px',
14
+ inline: false,
15
+ },
16
+ },
17
+ },
18
+ });
19
+ const options = selectOptions;
20
+ let value = $state(options[0]);
21
+ </script>
22
+
23
+ <Story
24
+ name="PositionAfter"
25
+ args={{ options, value, onselect: (val: SelectOption) => (value = val) }}
26
+ />
27
+
28
+ <Story
29
+ name="PositionBefore"
30
+ args={{
31
+ options,
32
+ value,
33
+ onselect: (val: SelectOption) => (value = val),
34
+ dropdownArrowPosition: 'before',
35
+ }}
36
+ />
37
+
38
+ <Story
39
+ name="HideArrow"
40
+ args={{
41
+ options,
42
+ value,
43
+ onselect: (val: SelectOption) => (value = val),
44
+ dropdownArrowPosition: false,
45
+ }}
46
+ />
47
+
48
+ <!-- Format look and feel Dropdown Arrow icon -->
49
+ <Story name="CustomDropdownArrowIcon" asChild>
50
+ <Select {options} {value} onselect={(val: SelectOption) => (value = val)}>
51
+ {#snippet customDropdownArrowIcon(open)}
52
+ {#if open}
53
+ <Icon icon="mingcute:up-fill" width="24" height="24" />
54
+ {:else}
55
+ <Icon icon="mingcute:down-fill" width="24" height="24" />
56
+ {/if}
57
+ {/snippet}
58
+ </Select>
59
+ </Story>
@@ -0,0 +1,18 @@
1
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
2
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
+ $$bindings?: Bindings;
4
+ } & Exports;
5
+ (internal: unknown, props: {
6
+ $$events?: Events;
7
+ $$slots?: Slots;
8
+ }): Exports & {
9
+ $set?: any;
10
+ $on?: any;
11
+ };
12
+ z_$$bindings?: Bindings;
13
+ }
14
+ declare const DropDownArrow: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
15
+ [evt: string]: CustomEvent<any>;
16
+ }, {}, {}, string>;
17
+ type DropDownArrow = InstanceType<typeof DropDownArrow>;
18
+ export default DropDownArrow;
@@ -136,3 +136,30 @@ let value = $state(options[0]);
136
136
  },
137
137
  }}
138
138
  />
139
+
140
+ <Story
141
+ name="KeyDown"
142
+ args={{
143
+ onkeydown: (e: DynamicInputKeyboardEvent) => {
144
+ console.log('onkeydown Event', e.key);
145
+ },
146
+ }}
147
+ />
148
+
149
+ <Story
150
+ name="KeyPress"
151
+ args={{
152
+ onkeypress: (e: DynamicInputKeyboardEvent) => {
153
+ console.log('onkeypress Event', e.key);
154
+ },
155
+ }}
156
+ />
157
+
158
+ <Story
159
+ name="KeyUp"
160
+ args={{
161
+ onkeyup: (e: DynamicInputKeyboardEvent) => {
162
+ console.log('onkeyup Event', e.key);
163
+ },
164
+ }}
165
+ />
@@ -0,0 +1,54 @@
1
+ <script module lang="ts">import { defineMeta } from '@storybook/addon-svelte-csf';
2
+ import { selectOptions, storySelectArgTypes } from '../../Select.stories.svelte';
3
+ import Select, {} from '../../Select.svelte';
4
+ // More on how to set up stories at: https://storybook.js.org/docs/writing-stories
5
+ const { Story } = defineMeta({
6
+ component: Select,
7
+ tags: ['autodocs'],
8
+ argTypes: storySelectArgTypes,
9
+ parameters: {
10
+ docs: {
11
+ story: {
12
+ height: '200px',
13
+ inline: false,
14
+ },
15
+ },
16
+ },
17
+ });
18
+ const options = selectOptions;
19
+ let value = $state(options[0]);
20
+ </script>
21
+
22
+ <!-- Positions will auto adjust depending on the space on top and bottom -->
23
+ <Story
24
+ name="PositionAutoAdjust"
25
+ args={{
26
+ options,
27
+ value,
28
+ onselect: (val: SelectOption) => (value = val),
29
+ }}
30
+ />
31
+
32
+ <!-- Positions will not auto adjust if you use `lockPoistions` -->
33
+ <Story
34
+ name="LockPoistions"
35
+ args={{
36
+ options,
37
+ value,
38
+ onselect: (val: SelectOption) => (value = val),
39
+ popupPositionY: 'top',
40
+ lockPoistions: true,
41
+ }}
42
+ />
43
+
44
+ <!-- you can also adjust `popperHeightForVerticalPosition` to achive the same -->
45
+ <Story
46
+ name="HeightForVerticalPosition"
47
+ args={{
48
+ options,
49
+ value,
50
+ onselect: (val: SelectOption) => (value = val),
51
+ popupPositionY: 'top',
52
+ popperHeightForVerticalPosition: 3,
53
+ }}
54
+ />
@@ -0,0 +1,18 @@
1
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
2
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
+ $$bindings?: Bindings;
4
+ } & Exports;
5
+ (internal: unknown, props: {
6
+ $$events?: Events;
7
+ $$slots?: Slots;
8
+ }): Exports & {
9
+ $set?: any;
10
+ $on?: any;
11
+ };
12
+ z_$$bindings?: Bindings;
13
+ }
14
+ declare const AutoPosition: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
15
+ [evt: string]: CustomEvent<any>;
16
+ }, {}, {}, string>;
17
+ type AutoPosition = InstanceType<typeof AutoPosition>;
18
+ export default AutoPosition;
@@ -0,0 +1,83 @@
1
+ <script module lang="ts">import { defineMeta } from '@storybook/addon-svelte-csf';
2
+ import { selectOptions, storySelectArgTypes } from '../Select.stories.svelte';
3
+ import Select, {} from '../Select.svelte';
4
+ // More on how to set up stories at: https://storybook.js.org/docs/writing-stories
5
+ const { Story } = defineMeta({
6
+ component: Select,
7
+ tags: ['autodocs'],
8
+ argTypes: storySelectArgTypes,
9
+ parameters: {
10
+ layout: 'centered',
11
+ docs: {
12
+ story: {
13
+ height: '600px',
14
+ inline: false,
15
+ },
16
+ },
17
+ },
18
+ });
19
+ const options = selectOptions;
20
+ let value = $state(options[0]);
21
+ </script>
22
+
23
+ <Story
24
+ name="BottomLeft"
25
+ args={{ options, value, onselect: (val: SelectOption) => (value = val), popupMaxHeight: '200px' }}
26
+ />
27
+
28
+ <Story
29
+ name="BottomCenter"
30
+ args={{
31
+ options,
32
+ value,
33
+ onselect: (val: SelectOption) => (value = val),
34
+ popupPositionX: 'center',
35
+ popupMaxHeight: '200px',
36
+ }}
37
+ />
38
+
39
+ <Story
40
+ name="BottomRight"
41
+ args={{
42
+ options,
43
+ value,
44
+ onselect: (val: SelectOption) => (value = val),
45
+ popupPositionX: 'right',
46
+ popupMaxHeight: '200px',
47
+ }}
48
+ />
49
+
50
+ <Story
51
+ name="TopLeft"
52
+ args={{
53
+ options,
54
+ value,
55
+ onselect: (val: SelectOption) => (value = val),
56
+ popupPositionY: 'top',
57
+ popupMaxHeight: '200px',
58
+ }}
59
+ />
60
+
61
+ <Story
62
+ name="TopCenter"
63
+ args={{
64
+ options,
65
+ value,
66
+ onselect: (val: SelectOption) => (value = val),
67
+ popupPositionY: 'top',
68
+ popupPositionX: 'center',
69
+ popupMaxHeight: '200px',
70
+ }}
71
+ />
72
+
73
+ <Story
74
+ name="TopRight"
75
+ args={{
76
+ options,
77
+ value,
78
+ onselect: (val: SelectOption) => (value = val),
79
+ popupPositionY: 'top',
80
+ popupPositionX: 'right',
81
+ popupMaxHeight: '200px',
82
+ }}
83
+ />
@@ -0,0 +1,18 @@
1
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
2
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
+ $$bindings?: Bindings;
4
+ } & Exports;
5
+ (internal: unknown, props: {
6
+ $$events?: Events;
7
+ $$slots?: Slots;
8
+ }): Exports & {
9
+ $set?: any;
10
+ $on?: any;
11
+ };
12
+ z_$$bindings?: Bindings;
13
+ }
14
+ declare const Positions: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
15
+ [evt: string]: CustomEvent<any>;
16
+ }, {}, {}, string>;
17
+ type Positions = InstanceType<typeof Positions>;
18
+ export default Positions;