@flightlesslabs/dodo-ui 0.6.5 → 0.7.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/dist/index.d.ts +32 -9
- package/dist/index.js +12 -2
- package/dist/stories/Home.mdx +4 -6
- package/dist/stories/components/Form/Button/Button.stories.svelte +16 -37
- package/dist/stories/components/Form/Button/Button.svelte +45 -47
- package/dist/stories/components/Form/Button/Button.svelte.d.ts +16 -12
- package/dist/stories/components/Form/Button/Color/Color.stories.svelte +23 -48
- package/dist/stories/components/Form/Button/Events/Events.stories.svelte +1 -7
- package/dist/stories/components/Form/Button/IconButton/IconButton.stories.svelte +4 -12
- package/dist/stories/components/Form/Button/Roundness/Roundness.stories.svelte +5 -31
- package/dist/stories/components/Form/Button/Size/Size.stories.svelte +3 -9
- package/dist/stories/components/Form/Button/Variant/Variant.stories.svelte +5 -8
- package/dist/stories/components/Form/FormControl/FormControl.stories.svelte +11 -12
- package/dist/stories/components/Form/FormControl/FormControl.svelte +6 -8
- package/dist/stories/components/Form/FormControl/FormControl.svelte.d.ts +1 -1
- package/dist/stories/components/Form/Label/Label.stories.svelte +1 -11
- package/dist/stories/components/Form/Label/Label.svelte +6 -5
- package/dist/stories/components/Form/Label/Label.svelte.d.ts +1 -3
- package/dist/stories/components/Form/Message/Color/Color.stories.svelte +9 -9
- package/dist/stories/components/Form/Message/Message.stories.svelte +5 -13
- package/dist/stories/components/Form/Message/Message.svelte +5 -7
- package/dist/stories/components/Form/Message/Message.svelte.d.ts +4 -6
- package/dist/stories/components/Form/Message/Size/Size.stories.svelte +3 -5
- package/dist/stories/components/Form/PasswordInput/Events/Events.stories.svelte +8 -72
- package/dist/stories/components/Form/PasswordInput/PasswordInput.stories.svelte +5 -3
- package/dist/stories/components/Form/PasswordInput/PasswordInput.svelte +26 -33
- package/dist/stories/components/Form/PasswordInput/PasswordInput.svelte.d.ts +6 -5
- package/dist/stories/components/Form/PasswordInput/Roundness/Roundness.stories.svelte +4 -4
- package/dist/stories/components/Form/PasswordInput/WithIcon/WithIcon.stories.svelte +2 -2
- package/dist/stories/components/Form/Select/Customize/Customize.stories.svelte +120 -0
- package/dist/stories/components/Form/Select/Customize/Customize.stories.svelte.d.ts +18 -0
- package/dist/stories/components/Form/Select/Events/Events.stories.svelte +138 -0
- package/dist/stories/components/Form/Select/Options/OptionFormat.mdx +40 -0
- package/dist/stories/components/Form/Select/Roundness/Roundness.stories.svelte +28 -0
- package/dist/stories/components/Form/Select/Roundness/Roundness.stories.svelte.d.ts +18 -0
- package/dist/stories/components/Form/Select/Select.stories.svelte +114 -0
- package/dist/stories/components/Form/Select/Select.stories.svelte.d.ts +22 -0
- package/dist/stories/components/Form/Select/Select.svelte +285 -0
- package/dist/stories/components/Form/Select/Select.svelte.d.ts +87 -0
- package/dist/stories/components/Form/Select/Size/Size.stories.svelte +24 -0
- package/dist/stories/components/Form/Select/Size/Size.stories.svelte.d.ts +18 -0
- package/dist/stories/components/Form/Select/WithIcon/WithIcon.stories.svelte +39 -0
- package/dist/stories/components/Form/Select/WithIcon/WithIcon.stories.svelte.d.ts +18 -0
- package/dist/stories/components/Form/TextInput/Events/Events.stories.svelte +7 -63
- package/dist/stories/components/Form/TextInput/Roundness/Roundness.stories.svelte +4 -4
- package/dist/stories/components/Form/TextInput/TextInput.stories.svelte +6 -4
- package/dist/stories/components/Form/TextInput/TextInput.svelte +18 -30
- package/dist/stories/components/Form/TextInput/TextInput.svelte.d.ts +10 -5
- package/dist/stories/components/Form/TextInput/WithIcon/WithIcon.stories.svelte +4 -4
- package/dist/stories/components/Layout/Menu/Menu.stories.svelte +65 -0
- package/dist/stories/components/Layout/Menu/Menu.stories.svelte.d.ts +21 -0
- package/dist/stories/components/Layout/Menu/Menu.svelte +30 -0
- package/dist/stories/components/Layout/Menu/Menu.svelte.d.ts +23 -0
- package/dist/stories/components/Layout/Menu/MenuItem/MenuItem.stories.svelte +30 -0
- package/dist/stories/components/Layout/Menu/MenuItem/MenuItem.stories.svelte.d.ts +21 -0
- package/dist/stories/components/Layout/Menu/MenuItem/MenuItem.svelte +164 -0
- package/dist/stories/components/Layout/Menu/MenuItem/MenuItem.svelte.d.ts +49 -0
- package/dist/stories/components/Layout/Menu/MenuItem/Size/Size.stories.svelte +16 -0
- package/dist/stories/components/Layout/Menu/MenuItem/Type/Type.stories.svelte +21 -0
- package/dist/stories/components/{Form/SimpleSelect/WithIcon/WithIcon.stories.svelte.d.ts → Layout/Menu/MenuItem/Type/Type.stories.svelte.d.ts} +3 -3
- package/dist/stories/components/Layout/Menu/Size/Size.stories.svelte +37 -0
- package/dist/stories/components/{Form/SimpleSelect/Roundness/Roundness.stories.svelte.d.ts → Layout/Menu/Size/Size.stories.svelte.d.ts} +3 -3
- package/dist/stories/components/Layout/Paper/Color/Color.stories.svelte +63 -0
- package/dist/stories/components/Layout/Paper/Color/Color.stories.svelte.d.ts +26 -0
- package/dist/stories/components/Layout/Paper/Paper.stories.svelte +25 -16
- package/dist/stories/components/Layout/Paper/Paper.svelte +211 -14
- package/dist/stories/components/Layout/Paper/Paper.svelte.d.ts +20 -9
- package/dist/stories/components/Layout/Paper/Roundness/Roundness.stories.svelte +8 -13
- package/dist/stories/components/Layout/Paper/Shadow/Shadow.stories.svelte +6 -24
- package/dist/stories/components/Layout/Paper/utils/scss/mixins.scss +46 -0
- package/dist/stories/components/Layout/Separator/Color/Color.stories.svelte +19 -0
- package/dist/stories/components/Layout/Separator/Color/Color.stories.svelte.d.ts +26 -0
- package/dist/stories/components/Layout/Separator/Separator.stories.svelte +26 -0
- package/dist/stories/components/Layout/Separator/Separator.stories.svelte.d.ts +21 -0
- package/dist/stories/components/Layout/Separator/Separator.svelte +66 -0
- package/dist/stories/components/Layout/Separator/Separator.svelte.d.ts +22 -0
- package/dist/stories/components/Layout/Separator/utils/scss/mixins.scss +24 -0
- package/dist/stories/developer tools/Intro.mdx +2 -0
- package/dist/stories/developer tools/components/DynamicInput/DynamicInput.stories.svelte +49 -0
- package/dist/stories/{components/Form/SimpleSelect/SimpleSelect.stories.svelte.d.ts → developer tools/components/DynamicInput/DynamicInput.stories.svelte.d.ts } +5 -7
- package/dist/stories/developer tools/components/DynamicInput/DynamicInput.svelte +92 -0
- package/dist/stories/developer tools/components/DynamicInput/DynamicInput.svelte.d.ts +60 -0
- package/{src/lib/stories/components/Form/TextInput/Size/Size.stories.svelte → dist/stories/developer tools/components/DynamicInput/Size/Size.stories.svelte } +4 -4
- package/dist/stories/developer tools/components/DynamicInput/Size/Size.stories.svelte.d.ts +26 -0
- package/dist/stories/developer tools/components/InputEnclosure/InputEnclosure.stories.svelte +5 -5
- package/dist/stories/developer tools/components/InputEnclosure/InputEnclosure.svelte +19 -15
- package/dist/stories/developer tools/components/InputEnclosure/InputEnclosure.svelte.d.ts +4 -3
- package/dist/stories/developer tools/components/InputEnclosure/Roundness/Roundness.stories.svelte +4 -4
- package/dist/stories/developer tools/components/InputEnclosure/WithIcon/WithIcon.stories.svelte +4 -4
- package/dist/stories/developer tools/components/Popper/Popper.stories.svelte +119 -0
- package/dist/stories/developer tools/components/Popper/Popper.stories.svelte.d.ts +21 -0
- package/dist/stories/developer tools/components/Popper/Popper.svelte +77 -0
- package/dist/stories/developer tools/components/Popper/Popper.svelte.d.ts +50 -0
- package/dist/stories/developer tools/components/Popper/PopperPopup/PopperPopup.stories.svelte +60 -0
- package/dist/stories/developer tools/components/Popper/PopperPopup/PopperPopup.stories.svelte.d.ts +21 -0
- package/dist/stories/developer tools/components/Popper/PopperPopup/PopperPopup.svelte +66 -0
- package/dist/stories/developer tools/components/Popper/PopperPopup/PopperPopup.svelte.d.ts +34 -0
- package/dist/stories/developer tools/components/Popper/PopperPopup/utils/getPopupPosition.d.ts +21 -0
- package/dist/stories/developer tools/components/Popper/PopperPopup/utils/getPopupPosition.js +62 -0
- package/dist/stories/developer tools/components/Popper/Positions/AutoPosition/AutoPosition.stories.svelte +89 -0
- package/dist/stories/developer tools/components/Popper/Positions/AutoPosition/AutoPosition.stories.svelte.d.ts +18 -0
- package/dist/stories/developer tools/components/Popper/Positions/Positions.stories.svelte +111 -0
- package/dist/stories/developer tools/components/Popper/Positions/Positions.stories.svelte.d.ts +18 -0
- package/dist/stories/developer tools/components/UtilityButton/Size/Size.stories.svelte +6 -8
- package/dist/stories/developer tools/components/UtilityButton/UtilityButton.stories.svelte +4 -7
- package/dist/stories/developer tools/components/UtilityButton/UtilityButton.svelte +8 -5
- package/dist/stories/developer tools/components/UtilityButton/UtilityButton.svelte.d.ts +2 -2
- package/dist/stories/developer tools/directives/clickOutside/clickOutside.d.ts +3 -0
- package/dist/stories/developer tools/directives/clickOutside/clickOutside.js +14 -0
- package/dist/stories/developer tools/directives/clickOutside/index.mdx +25 -0
- package/dist/stories/{philosophy/Colors/Colors.mdx → developer tools/philosophy/Colors/Colors.mdx } +2 -2
- package/dist/stories/{philosophy/Colors/Swatches/Palette.svelte → developer tools/philosophy/Colors/Swatches/Palette.svelte } +1 -1
- package/dist/stories/{philosophy/Colors/Swatches/Swatch.svelte → developer tools/philosophy/Colors/Swatches/Swatch.svelte } +1 -1
- package/dist/stories/{philosophy/Colors/Swatches/Swatches.svelte → developer tools/philosophy/Colors/Swatches/Swatches.svelte } +1 -1
- package/dist/stories/{philosophy/Colors/utils/color.js → developer tools/philosophy/Colors/utils/color.js } +1 -1
- package/dist/stories/{philosophy/Themes.mdx → developer tools/philosophy/Themes.mdx } +1 -1
- package/dist/styles/_colors.css +44 -44
- package/dist/styles/_components.css +6 -3
- package/dist/styles/_shadow.css +13 -20
- package/dist/styles/_space.css +7 -0
- package/dist/styles/_z-index.css +9 -0
- package/dist/styles/global.css +2 -0
- package/dist/types/colors.d.ts +7 -0
- package/dist/types/colors.js +10 -0
- package/dist/types/position.d.ts +4 -0
- package/dist/types/position.js +2 -0
- package/dist/types/roundness.d.ts +3 -0
- package/dist/types/roundness.js +1 -0
- package/dist/types/shadow.d.ts +3 -0
- package/dist/types/shadow.js +1 -0
- package/dist/types/size.d.ts +3 -0
- package/dist/types/size.js +1 -0
- package/dist/types/weight.d.ts +3 -0
- package/dist/types/weight.js +1 -0
- package/package.json +26 -24
- package/src/lib/index.ts +61 -15
- package/src/lib/stories/components/Form/Button/Button.svelte +39 -36
- package/src/lib/stories/components/Form/FormControl/FormControl.svelte +9 -11
- package/src/lib/stories/components/Form/Label/Label.svelte +5 -8
- package/src/lib/stories/components/Form/Message/Message.svelte +11 -16
- package/src/lib/stories/components/Form/PasswordInput/PasswordInput.svelte +50 -50
- package/src/lib/stories/components/Form/Select/Select.svelte +501 -0
- package/src/lib/stories/components/Form/TextInput/TextInput.svelte +43 -60
- package/src/lib/stories/components/Layout/Menu/Menu.svelte +65 -0
- package/src/lib/stories/components/Layout/Menu/MenuItem/MenuItem.svelte +268 -0
- package/src/lib/stories/components/Layout/Paper/Paper.svelte +154 -27
- package/src/lib/stories/components/Layout/Paper/utils/scss/mixins.scss +46 -0
- package/src/lib/stories/components/Layout/Separator/Separator.svelte +96 -0
- package/src/lib/stories/components/Layout/Separator/utils/scss/mixins.scss +24 -0
- package/src/lib/stories/developer tools/components/DynamicInput/DynamicInput.svelte +195 -0
- package/src/lib/stories/developer tools/components/InputEnclosure/InputEnclosure.svelte +22 -18
- package/src/lib/stories/developer tools/components/Popper/Popper.svelte +159 -0
- package/src/lib/stories/developer tools/components/Popper/PopperPopup/PopperPopup.svelte +120 -0
- package/src/lib/stories/developer tools/components/Popper/PopperPopup/utils/getPopupPosition.ts +87 -0
- package/src/lib/stories/developer tools/components/UtilityButton/UtilityButton.svelte +8 -6
- package/src/lib/stories/developer tools/directives/clickOutside/clickOutside.ts +17 -0
- package/src/lib/stories/{philosophy/Colors/Swatches/Palette.svelte → developer tools/philosophy/Colors/Swatches/Palette.svelte } +1 -1
- package/src/lib/stories/{philosophy/Colors/Swatches/Swatch.svelte → developer tools/philosophy/Colors/Swatches/Swatch.svelte } +1 -1
- package/src/lib/stories/{philosophy/Colors/Swatches/Swatches.svelte → developer tools/philosophy/Colors/Swatches/Swatches.svelte } +1 -1
- package/src/lib/stories/{philosophy/Colors/utils/color.ts → developer tools/philosophy/Colors/utils/color.ts } +1 -1
- package/src/lib/styles/_colors.css +44 -44
- package/src/lib/styles/_components.css +6 -3
- package/src/lib/styles/_shadow.css +13 -20
- package/src/lib/styles/_space.css +7 -0
- package/src/lib/styles/_z-index.css +9 -0
- package/src/lib/styles/global.css +2 -0
- package/src/lib/types/colors.ts +16 -0
- package/src/lib/types/position.ts +5 -0
- package/src/lib/types/roundness.ts +3 -0
- package/src/lib/types/shadow.ts +3 -0
- package/src/lib/types/size.ts +3 -0
- package/src/lib/types/weight.ts +3 -0
- package/dist/stories/components/Form/SimpleSelect/Events/Events.stories.svelte +0 -74
- package/dist/stories/components/Form/SimpleSelect/Roundness/Roundness.stories.svelte +0 -24
- package/dist/stories/components/Form/SimpleSelect/SimpleSelect.stories.svelte +0 -59
- package/dist/stories/components/Form/SimpleSelect/SimpleSelect.svelte +0 -69
- package/dist/stories/components/Form/SimpleSelect/SimpleSelect.svelte.d.ts +0 -50
- package/dist/stories/components/Form/SimpleSelect/Size/Size.stories.svelte +0 -20
- package/dist/stories/components/Form/SimpleSelect/WithIcon/WithIcon.stories.svelte +0 -36
- package/dist/types.d.ts +0 -5
- package/dist/types.js +0 -1
- package/src/lib/stories/Home.mdx +0 -61
- package/src/lib/stories/assets/dark-theme-toggle.png +0 -0
- package/src/lib/stories/components/Form/Button/Button.stories.svelte +0 -82
- package/src/lib/stories/components/Form/Button/Color/Color.stories.svelte +0 -68
- package/src/lib/stories/components/Form/Button/Events/Events.stories.svelte +0 -42
- package/src/lib/stories/components/Form/Button/IconButton/IconButton.stories.svelte +0 -51
- package/src/lib/stories/components/Form/Button/Roundness/Roundness.stories.svelte +0 -49
- package/src/lib/stories/components/Form/Button/Size/Size.stories.svelte +0 -22
- package/src/lib/stories/components/Form/Button/Variant/Variant.stories.svelte +0 -21
- package/src/lib/stories/components/Form/FormControl/FormControl.stories.svelte +0 -29
- package/src/lib/stories/components/Form/Label/Label.stories.svelte +0 -23
- package/src/lib/stories/components/Form/Message/Color/Color.stories.svelte +0 -36
- package/src/lib/stories/components/Form/Message/Message.stories.svelte +0 -35
- package/src/lib/stories/components/Form/Message/Size/Size.stories.svelte +0 -24
- package/src/lib/stories/components/Form/PasswordInput/Events/Events.stories.svelte +0 -174
- package/src/lib/stories/components/Form/PasswordInput/PasswordInput.stories.svelte +0 -57
- package/src/lib/stories/components/Form/PasswordInput/Roundness/Roundness.stories.svelte +0 -20
- package/src/lib/stories/components/Form/PasswordInput/Size/Size.stories.svelte +0 -16
- package/src/lib/stories/components/Form/PasswordInput/WithIcon/WithIcon.stories.svelte +0 -31
- package/src/lib/stories/components/Form/SimpleSelect/Events/Events.stories.svelte +0 -79
- package/src/lib/stories/components/Form/SimpleSelect/Roundness/Roundness.stories.svelte +0 -24
- package/src/lib/stories/components/Form/SimpleSelect/SimpleSelect.stories.svelte +0 -64
- package/src/lib/stories/components/Form/SimpleSelect/SimpleSelect.svelte +0 -159
- package/src/lib/stories/components/Form/SimpleSelect/Size/Size.stories.svelte +0 -20
- package/src/lib/stories/components/Form/SimpleSelect/WithIcon/WithIcon.stories.svelte +0 -36
- package/src/lib/stories/components/Form/TextInput/Events/Events.stories.svelte +0 -153
- package/src/lib/stories/components/Form/TextInput/Roundness/Roundness.stories.svelte +0 -21
- package/src/lib/stories/components/Form/TextInput/TextInput.stories.svelte +0 -41
- package/src/lib/stories/components/Form/TextInput/WithIcon/WithIcon.stories.svelte +0 -47
- package/src/lib/stories/components/Layout/Paper/Paper.stories.svelte +0 -41
- package/src/lib/stories/components/Layout/Paper/Roundness/Roundness.stories.svelte +0 -30
- package/src/lib/stories/components/Layout/Paper/Shadow/Shadow.stories.svelte +0 -42
- package/src/lib/stories/developer tools/Intro.mdx +0 -7
- package/src/lib/stories/developer tools/components/InputEnclosure/InputEnclosure.stories.svelte +0 -38
- package/src/lib/stories/developer tools/components/InputEnclosure/Roundness/Roundness.stories.svelte +0 -20
- package/src/lib/stories/developer tools/components/InputEnclosure/Size/Size.stories.svelte +0 -16
- package/src/lib/stories/developer tools/components/InputEnclosure/WithIcon/WithIcon.stories.svelte +0 -47
- package/src/lib/stories/developer tools/components/UtilityButton/Size/Size.stories.svelte +0 -27
- package/src/lib/stories/developer tools/components/UtilityButton/UtilityButton.stories.svelte +0 -33
- package/src/lib/stories/philosophy/Colors/Colors.mdx +0 -43
- package/src/lib/stories/philosophy/Colors/Colors.stories.svelte +0 -22
- package/src/lib/stories/philosophy/Colors/Opacity.stories.svelte +0 -11
- package/src/lib/stories/philosophy/Themes.mdx +0 -23
- package/src/lib/types.ts +0 -6
- /package/dist/stories/components/Form/{SimpleSelect → Select}/Events/Events.stories.svelte.d.ts +0 -0
- /package/dist/stories/components/{Form/SimpleSelect → Layout/Menu/MenuItem}/Size/Size.stories.svelte.d.ts +0 -0
- /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/Colors.stories.svelte +0 -0
- /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/Colors.stories.svelte.d.ts +0 -0
- /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/Colors.svelte +0 -0
- /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/Colors.svelte.d.ts +0 -0
- /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/Opacity.stories.svelte +0 -0
- /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/Opacity.stories.svelte.d.ts +0 -0
- /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/Opacity.svelte +0 -0
- /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/Opacity.svelte.d.ts +0 -0
- /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/Swatches/Palette.svelte.d.ts +0 -0
- /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/Swatches/Swatch.svelte.d.ts +0 -0
- /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/Swatches/Swatches.svelte.d.ts +0 -0
- /package/dist/stories/{philosophy → developer tools/philosophy}/Colors/utils/color.d.ts +0 -0
- /package/src/lib/stories/{philosophy → developer tools/philosophy}/Colors/Colors.svelte +0 -0
- /package/src/lib/stories/{philosophy → developer tools/philosophy}/Colors/Opacity.svelte +0 -0
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
<script lang="ts" module>export {};
|
|
2
|
+
</script>
|
|
3
|
+
|
|
4
|
+
<script lang="ts">import InputEnclosure from '../../../developer tools/components/InputEnclosure/InputEnclosure.svelte';
|
|
5
|
+
import UtilityButton from '../../../developer tools/components/UtilityButton/UtilityButton.svelte';
|
|
6
|
+
import Icon from '@iconify/svelte';
|
|
7
|
+
import { DynamicInput, Menu, MenuItem, Popper, } from '../../../../index.js';
|
|
8
|
+
let { size = 'normal', roundness = 1, outline = true, name, id, class: className = '', disabled = false, onchange, oninput, onselect, onblur, onfocus, onpaste, oncopy, oncut, before, after, error = false, value, placeholder, ref = $bindable(), readonly = false, searchable = false, clearable = false, onclear, options: optionsRaw, customInputContent: customInputContentInternal, customMenuItemContent: customMenuItemContentInternal, customPopupContent: customPopupContentInternal, customPlaceholderMenuItemContent: customPlaceholderMenuItemContentInternal, popupMaxHeight = '300px', paperProps, popperProps, menuProps, menuItemProps, optionsPlaceholder = 'No Options', } = $props();
|
|
9
|
+
let open = $state(false);
|
|
10
|
+
let onInputStart = $state(false);
|
|
11
|
+
const selectedOption = $derived(value);
|
|
12
|
+
let searchTerm = $state(value?.label.trim() || '');
|
|
13
|
+
let options = $state(optionsRaw);
|
|
14
|
+
let menuRef = $state(undefined);
|
|
15
|
+
let menuItemIndex = $state(0);
|
|
16
|
+
$effect(() => {
|
|
17
|
+
if (!onInputStart) {
|
|
18
|
+
options = optionsRaw;
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const searchTermSimplified = searchTerm.trim().toLowerCase();
|
|
22
|
+
if (!searchTermSimplified) {
|
|
23
|
+
options = optionsRaw;
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
options = optionsRaw.filter((item) => item.label.trim().toLowerCase().includes(searchTermSimplified));
|
|
27
|
+
});
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
29
|
+
let customInputContentTyped = customInputContentInternal;
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
31
|
+
let customMenuItemContentTyped = customMenuItemContentInternal;
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
33
|
+
let customPopupContentTyped = customPopupContentInternal;
|
|
34
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
35
|
+
let customPlaceholderMenuItemContentTyped = customPlaceholderMenuItemContentInternal;
|
|
36
|
+
function closeMenu() {
|
|
37
|
+
open = false;
|
|
38
|
+
menuItemIndex = 0;
|
|
39
|
+
ref?.blur();
|
|
40
|
+
}
|
|
41
|
+
function openMenu() {
|
|
42
|
+
open = true;
|
|
43
|
+
const menuItemIndexNew = options.findIndex((item) => item.value === selectedOption?.value);
|
|
44
|
+
if (menuItemIndexNew < 0) {
|
|
45
|
+
menuItemIndex = 0;
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
menuItemIndex = menuItemIndexNew;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function onfocusMod(e) {
|
|
52
|
+
openMenu();
|
|
53
|
+
if (onfocus) {
|
|
54
|
+
onfocus(e);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function onblurMod(e) {
|
|
58
|
+
if (onblur) {
|
|
59
|
+
onblur(e);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
function onClickOutside() {
|
|
63
|
+
searchTerm = selectedOption?.label || '';
|
|
64
|
+
onInputStart = false;
|
|
65
|
+
closeMenu();
|
|
66
|
+
}
|
|
67
|
+
function onselectMod(val) {
|
|
68
|
+
searchTerm = val.label;
|
|
69
|
+
onInputStart = false;
|
|
70
|
+
closeMenu();
|
|
71
|
+
if (onselect) {
|
|
72
|
+
onselect(val);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function oninputMod(e) {
|
|
76
|
+
const target = e.target;
|
|
77
|
+
searchTerm = target.value;
|
|
78
|
+
onInputStart = true;
|
|
79
|
+
if (oninput) {
|
|
80
|
+
oninput(e);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function onclearMod(e) {
|
|
84
|
+
searchTerm = '';
|
|
85
|
+
onInputStart = false;
|
|
86
|
+
closeMenu();
|
|
87
|
+
if (onclear) {
|
|
88
|
+
onclear(e);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
function onKeyBoardEnter(selectedItemIndex) {
|
|
92
|
+
const targetOption = options[selectedItemIndex];
|
|
93
|
+
if (!targetOption) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
if (targetOption.disabled) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
onselectMod(targetOption);
|
|
100
|
+
}
|
|
101
|
+
function onKeyboardNavigation(e) {
|
|
102
|
+
let keyHit = undefined;
|
|
103
|
+
if (!menuRef) {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
if (!open) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
switch (e.key) {
|
|
110
|
+
case 'ArrowDown':
|
|
111
|
+
case 'ArrowUp':
|
|
112
|
+
case 'Enter':
|
|
113
|
+
keyHit = e.key;
|
|
114
|
+
e.preventDefault();
|
|
115
|
+
break;
|
|
116
|
+
default:
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
if (!keyHit) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
const listItems = menuRef.querySelectorAll(':scope > li.dodo-ui-MenuItem');
|
|
123
|
+
if (!listItems.length) {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
for (let index = 0; index < listItems.length; index++) {
|
|
127
|
+
const element = listItems[index];
|
|
128
|
+
element.classList.remove('hover');
|
|
129
|
+
}
|
|
130
|
+
let newMenuItemIndex = menuItemIndex;
|
|
131
|
+
if (keyHit === 'ArrowDown') {
|
|
132
|
+
if (listItems[newMenuItemIndex + 1]) {
|
|
133
|
+
newMenuItemIndex = newMenuItemIndex + 1;
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
newMenuItemIndex = 0;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
else if (keyHit === 'ArrowUp') {
|
|
140
|
+
if (listItems[newMenuItemIndex - 1]) {
|
|
141
|
+
newMenuItemIndex = newMenuItemIndex - 1;
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
newMenuItemIndex = listItems.length - 1;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
else if (keyHit === 'Enter') {
|
|
148
|
+
onKeyBoardEnter(newMenuItemIndex);
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
const targetItem = listItems[newMenuItemIndex];
|
|
152
|
+
targetItem.classList.add('hover');
|
|
153
|
+
targetItem.focus();
|
|
154
|
+
targetItem.scrollIntoView({ block: 'nearest' });
|
|
155
|
+
menuItemIndex = newMenuItemIndex;
|
|
156
|
+
}
|
|
157
|
+
$effect(() => {
|
|
158
|
+
if (!menuRef) {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
if (!open) {
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
const targetItem = menuRef.querySelector(':scope > li.dodo-ui-MenuItem.selected');
|
|
165
|
+
if (targetItem) {
|
|
166
|
+
targetItem.classList.add('hover');
|
|
167
|
+
targetItem.focus();
|
|
168
|
+
targetItem.scrollIntoView({ block: 'nearest' });
|
|
169
|
+
}
|
|
170
|
+
window.addEventListener('keydown', onKeyboardNavigation);
|
|
171
|
+
return () => {
|
|
172
|
+
window.removeEventListener('keydown', onKeyboardNavigation);
|
|
173
|
+
};
|
|
174
|
+
});
|
|
175
|
+
</script>
|
|
176
|
+
|
|
177
|
+
<div class={['dodo-ui-Select', className].join(' ')}>
|
|
178
|
+
<Popper fullWidth {open} {onClickOutside} {...popperProps} {popupMaxHeight} {paperProps}>
|
|
179
|
+
<div
|
|
180
|
+
class:outline
|
|
181
|
+
class:disabled
|
|
182
|
+
class:error
|
|
183
|
+
class={[
|
|
184
|
+
'Select',
|
|
185
|
+
`size--${size}`,
|
|
186
|
+
`${open ? 'focused' : ''}`,
|
|
187
|
+
`roundness--${roundness}`,
|
|
188
|
+
className,
|
|
189
|
+
].join(' ')}
|
|
190
|
+
>
|
|
191
|
+
<InputEnclosure
|
|
192
|
+
{outline}
|
|
193
|
+
{disabled}
|
|
194
|
+
{error}
|
|
195
|
+
focused={open}
|
|
196
|
+
{size}
|
|
197
|
+
{roundness}
|
|
198
|
+
{before}
|
|
199
|
+
{after}
|
|
200
|
+
>
|
|
201
|
+
<DynamicInput
|
|
202
|
+
type="text"
|
|
203
|
+
{name}
|
|
204
|
+
{id}
|
|
205
|
+
{disabled}
|
|
206
|
+
bind:ref
|
|
207
|
+
oninput={oninputMod}
|
|
208
|
+
{onchange}
|
|
209
|
+
onfocus={onfocusMod}
|
|
210
|
+
onblur={onblurMod}
|
|
211
|
+
{onpaste}
|
|
212
|
+
{oncopy}
|
|
213
|
+
{oncut}
|
|
214
|
+
{placeholder}
|
|
215
|
+
value={searchable ? searchTerm : selectedOption?.label}
|
|
216
|
+
{readonly}
|
|
217
|
+
variant={searchable ? 'input' : 'button'}
|
|
218
|
+
>
|
|
219
|
+
{#snippet customInputContent()}
|
|
220
|
+
{#if customInputContentTyped}
|
|
221
|
+
{@render customInputContentTyped(selectedOption)}
|
|
222
|
+
{:else}
|
|
223
|
+
{selectedOption?.label || placeholder}
|
|
224
|
+
{/if}
|
|
225
|
+
{/snippet}
|
|
226
|
+
</DynamicInput>
|
|
227
|
+
|
|
228
|
+
{#if selectedOption?.label && clearable && !disabled}
|
|
229
|
+
<div class:after class="SelectClear">
|
|
230
|
+
<UtilityButton {size} title="Clear" onclick={onclearMod}>
|
|
231
|
+
<Icon icon="material-symbols:close-small" width="24" height="24" />
|
|
232
|
+
</UtilityButton>
|
|
233
|
+
</div>
|
|
234
|
+
{/if}
|
|
235
|
+
</InputEnclosure>
|
|
236
|
+
</div>
|
|
237
|
+
|
|
238
|
+
{#snippet popupChildren()}
|
|
239
|
+
{#if customPopupContentTyped}
|
|
240
|
+
{@render customPopupContentTyped(options, selectedOption)}
|
|
241
|
+
{:else}
|
|
242
|
+
<Menu bind:ref={menuRef} {...menuProps}>
|
|
243
|
+
{#if options.length}
|
|
244
|
+
{#each options as option (option.value)}
|
|
245
|
+
<MenuItem
|
|
246
|
+
onclick={() => onselectMod(option)}
|
|
247
|
+
type="button"
|
|
248
|
+
disabled={option.disabled}
|
|
249
|
+
selected={selectedOption?.value === option.value}
|
|
250
|
+
{...menuItemProps}
|
|
251
|
+
>
|
|
252
|
+
{#if customMenuItemContentTyped}
|
|
253
|
+
{@render customMenuItemContentTyped(
|
|
254
|
+
option,
|
|
255
|
+
selectedOption?.value === option.value,
|
|
256
|
+
)}
|
|
257
|
+
{:else}
|
|
258
|
+
{option.label}
|
|
259
|
+
{/if}
|
|
260
|
+
</MenuItem>
|
|
261
|
+
{/each}
|
|
262
|
+
{:else}
|
|
263
|
+
<MenuItem type="text" disabled={true} {...menuItemProps}>
|
|
264
|
+
{#if customPlaceholderMenuItemContentTyped}
|
|
265
|
+
{@render customPlaceholderMenuItemContentTyped()}
|
|
266
|
+
{:else}
|
|
267
|
+
{optionsPlaceholder}
|
|
268
|
+
{/if}
|
|
269
|
+
</MenuItem>
|
|
270
|
+
{/if}
|
|
271
|
+
</Menu>
|
|
272
|
+
{/if}
|
|
273
|
+
{/snippet}
|
|
274
|
+
</Popper>
|
|
275
|
+
</div>
|
|
276
|
+
|
|
277
|
+
<style>.dodo-ui-Select .Select.size--normal .SelectClear.after {
|
|
278
|
+
margin-right: calc(var(--dodo-ui-space-small) * 2);
|
|
279
|
+
}
|
|
280
|
+
.dodo-ui-Select .Select.size--small .SelectClear.after {
|
|
281
|
+
margin-right: var(--dodo-ui-space);
|
|
282
|
+
}
|
|
283
|
+
.dodo-ui-Select .Select.size--large .SelectClear.after {
|
|
284
|
+
margin-right: calc(var(--dodo-ui-space) * 2);
|
|
285
|
+
}</style>
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import type { ComponentSize } from '../../../../types/size.js';
|
|
2
|
+
import type { ComponentRoundness } from '../../../../types/roundness.js';
|
|
3
|
+
import type { Snippet } from 'svelte';
|
|
4
|
+
import type { ChangeEventHandler, ClipboardEventHandler, FocusEventHandler, FormEventHandler, MouseEventHandler } from 'svelte/elements';
|
|
5
|
+
export type SelectOption = {
|
|
6
|
+
value: string | number | boolean | null | undefined;
|
|
7
|
+
label: string;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
};
|
|
10
|
+
export interface SelectProps {
|
|
11
|
+
/** How large should the button be? */
|
|
12
|
+
size?: ComponentSize;
|
|
13
|
+
/** want a searchable Select? */
|
|
14
|
+
options: SelectOption[];
|
|
15
|
+
/** want a searchable Select? */
|
|
16
|
+
searchable?: boolean;
|
|
17
|
+
/** want a clearable Select? */
|
|
18
|
+
clearable?: boolean;
|
|
19
|
+
/** onselect event handler */
|
|
20
|
+
onselect?: (val: SelectOption) => void;
|
|
21
|
+
/** onclear event handler */
|
|
22
|
+
onclear?: MouseEventHandler<HTMLButtonElement>;
|
|
23
|
+
/** Select ref */
|
|
24
|
+
ref?: HTMLInputElement | HTMLButtonElement;
|
|
25
|
+
/** How round should the border radius be? */
|
|
26
|
+
roundness?: ComponentRoundness;
|
|
27
|
+
/** Add a border around the button. Default True */
|
|
28
|
+
outline?: boolean;
|
|
29
|
+
/** Select value */
|
|
30
|
+
value: SelectOption | undefined;
|
|
31
|
+
/** How round should the border radius be? */
|
|
32
|
+
placeholder?: string;
|
|
33
|
+
/** Placeholder if there are no options found*/
|
|
34
|
+
optionsPlaceholder?: string;
|
|
35
|
+
/** disabled state */
|
|
36
|
+
disabled?: boolean;
|
|
37
|
+
/** Read only ? */
|
|
38
|
+
readonly?: boolean;
|
|
39
|
+
/** is there any associated Error ? */
|
|
40
|
+
error?: boolean;
|
|
41
|
+
/** Name */
|
|
42
|
+
name?: string;
|
|
43
|
+
/** Id */
|
|
44
|
+
id?: string;
|
|
45
|
+
/** Icon before button content */
|
|
46
|
+
before?: Snippet;
|
|
47
|
+
/** Icon after button content */
|
|
48
|
+
after?: Snippet;
|
|
49
|
+
/** Custom css class*/
|
|
50
|
+
class?: string;
|
|
51
|
+
/** onchange event handler */
|
|
52
|
+
onchange?: ChangeEventHandler<HTMLInputElement>;
|
|
53
|
+
/** oninput event handler */
|
|
54
|
+
oninput?: FormEventHandler<HTMLInputElement>;
|
|
55
|
+
/** onblur event handler */
|
|
56
|
+
onblur?: FocusEventHandler<HTMLInputElement | HTMLButtonElement>;
|
|
57
|
+
/** onfocus event handler */
|
|
58
|
+
onfocus?: FocusEventHandler<HTMLInputElement | HTMLButtonElement>;
|
|
59
|
+
/** onpaste event handler */
|
|
60
|
+
onpaste?: ClipboardEventHandler<HTMLInputElement>;
|
|
61
|
+
/** oncopy event handler */
|
|
62
|
+
oncopy?: ClipboardEventHandler<HTMLInputElement>;
|
|
63
|
+
/** oncut event handler */
|
|
64
|
+
oncut?: ClipboardEventHandler<HTMLInputElement>;
|
|
65
|
+
/** custom Content Formatting for variant button */
|
|
66
|
+
customInputContent?: (val: SelectOption) => Snippet;
|
|
67
|
+
/** custom Content Formatting for variant button */
|
|
68
|
+
customMenuItemContent?: (val: SelectOption, selected: boolean) => Snippet;
|
|
69
|
+
/** Custom Popup Content */
|
|
70
|
+
customPopupContent?: (options: SelectOption[], selectedOption: SelectOption) => Snippet;
|
|
71
|
+
/** custom Content Formatting for variant button */
|
|
72
|
+
customPlaceholderMenuItemContent?: () => Snippet;
|
|
73
|
+
/** PopperPopup Max height. Use css compatible value */
|
|
74
|
+
popupMaxHeight?: string;
|
|
75
|
+
/** PaperProps: Paper component props for Popup */
|
|
76
|
+
paperProps?: Partial<PaperProps>;
|
|
77
|
+
/** PopperProps: Popper component props */
|
|
78
|
+
popperProps?: Partial<PopperProps>;
|
|
79
|
+
/** MenuProps: Menu component props */
|
|
80
|
+
menuProps?: Partial<MenuProps>;
|
|
81
|
+
/** MenuItem: Menu component props */
|
|
82
|
+
menuItemProps?: Partial<MenuItemProps>;
|
|
83
|
+
}
|
|
84
|
+
import { type MenuItemProps, type MenuProps, type PaperProps, type PopperProps } from '../../../../index.js';
|
|
85
|
+
declare const Select: import("svelte").Component<SelectProps, {}, "ref">;
|
|
86
|
+
type Select = ReturnType<typeof Select>;
|
|
87
|
+
export default Select;
|
|
@@ -0,0 +1,24 @@
|
|
|
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
|
+
// 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: '400px',
|
|
13
|
+
inline: false,
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
const options = selectOptions;
|
|
19
|
+
let value = $state(options[0]);
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
<Story name="Normal" args={{ options, value }} />
|
|
23
|
+
<Story name="Small" args={{ options, value, size: 'small' }} />
|
|
24
|
+
<Story name="Large" args={{ options, value, size: 'large' }} />
|
|
@@ -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 Size: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
|
|
15
|
+
[evt: string]: CustomEvent<any>;
|
|
16
|
+
}, {}, {}, string>;
|
|
17
|
+
type Size = InstanceType<typeof Size>;
|
|
18
|
+
export default Size;
|
|
@@ -0,0 +1,39 @@
|
|
|
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
|
+
<!-- Select icon in front. -->
|
|
24
|
+
<Story name="Icon Before" asChild>
|
|
25
|
+
<Select {value} {options}>
|
|
26
|
+
{#snippet before()}
|
|
27
|
+
<Icon icon="material-symbols:content-copy" />
|
|
28
|
+
{/snippet}
|
|
29
|
+
</Select>
|
|
30
|
+
</Story>
|
|
31
|
+
|
|
32
|
+
<!-- Select icon in front. -->
|
|
33
|
+
<Story name="Icon After" asChild>
|
|
34
|
+
<Select {value} {options}>
|
|
35
|
+
{#snippet after()}
|
|
36
|
+
<Icon icon="material-symbols:download-2" />
|
|
37
|
+
{/snippet}
|
|
38
|
+
</Select>
|
|
39
|
+
</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 WithIcon: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
|
|
15
|
+
[evt: string]: CustomEvent<any>;
|
|
16
|
+
}, {}, {}, string>;
|
|
17
|
+
type WithIcon = InstanceType<typeof WithIcon>;
|
|
18
|
+
export default WithIcon;
|
|
@@ -18,15 +18,7 @@ const { Story } = defineMeta({
|
|
|
18
18
|
console.log('Input Event', target.value);
|
|
19
19
|
},
|
|
20
20
|
}}
|
|
21
|
-
|
|
22
|
-
<TextInput
|
|
23
|
-
oninput={(e: Event) => {
|
|
24
|
-
const target = e.target as HTMLInputElement;
|
|
25
|
-
|
|
26
|
-
console.log('Input Event', target.value);
|
|
27
|
-
}}
|
|
28
|
-
/>
|
|
29
|
-
</Story>
|
|
21
|
+
/>
|
|
30
22
|
|
|
31
23
|
<Story
|
|
32
24
|
name="Change"
|
|
@@ -37,15 +29,7 @@ const { Story } = defineMeta({
|
|
|
37
29
|
console.log('onChange Event', target.value);
|
|
38
30
|
},
|
|
39
31
|
}}
|
|
40
|
-
|
|
41
|
-
<TextInput
|
|
42
|
-
onchange={(e: Event) => {
|
|
43
|
-
const target = e.target as HTMLInputElement;
|
|
44
|
-
|
|
45
|
-
console.log('onchange Event', target.value);
|
|
46
|
-
}}
|
|
47
|
-
/>
|
|
48
|
-
</Story>
|
|
32
|
+
/>
|
|
49
33
|
|
|
50
34
|
<!-- `e: TextInputFocusEvent` -->
|
|
51
35
|
<Story
|
|
@@ -57,15 +41,7 @@ const { Story } = defineMeta({
|
|
|
57
41
|
console.log('onfocus Event', target);
|
|
58
42
|
},
|
|
59
43
|
}}
|
|
60
|
-
|
|
61
|
-
<TextInput
|
|
62
|
-
onfocus={(e: TextInputFocusEvent) => {
|
|
63
|
-
const target = e.target as HTMLInputElement;
|
|
64
|
-
|
|
65
|
-
console.log('onfocus Event', target);
|
|
66
|
-
}}
|
|
67
|
-
/>
|
|
68
|
-
</Story>
|
|
44
|
+
/>
|
|
69
45
|
|
|
70
46
|
<!-- `e: TextInputFocusEvent` -->
|
|
71
47
|
<Story
|
|
@@ -77,15 +53,7 @@ const { Story } = defineMeta({
|
|
|
77
53
|
console.log('onblur Event', target);
|
|
78
54
|
},
|
|
79
55
|
}}
|
|
80
|
-
|
|
81
|
-
<TextInput
|
|
82
|
-
onblur={(e: TextInputFocusEvent) => {
|
|
83
|
-
const target = e.target as HTMLInputElement;
|
|
84
|
-
|
|
85
|
-
console.log('onblur Event', target);
|
|
86
|
-
}}
|
|
87
|
-
/>
|
|
88
|
-
</Story>
|
|
56
|
+
/>
|
|
89
57
|
|
|
90
58
|
<!-- `e: TextInputClipboardEvent` -->
|
|
91
59
|
<Story
|
|
@@ -97,15 +65,7 @@ const { Story } = defineMeta({
|
|
|
97
65
|
console.log('oncopy Event', target);
|
|
98
66
|
},
|
|
99
67
|
}}
|
|
100
|
-
|
|
101
|
-
<TextInput
|
|
102
|
-
oncopy={(e: TextInputClipboardEvent) => {
|
|
103
|
-
const target = e.target as HTMLInputElement;
|
|
104
|
-
|
|
105
|
-
console.log('oncopy Event', target);
|
|
106
|
-
}}
|
|
107
|
-
/>
|
|
108
|
-
</Story>
|
|
68
|
+
/>
|
|
109
69
|
|
|
110
70
|
<!-- `e: TextInputClipboardEvent` -->
|
|
111
71
|
<Story
|
|
@@ -117,15 +77,7 @@ const { Story } = defineMeta({
|
|
|
117
77
|
console.log('oncut Event', target);
|
|
118
78
|
},
|
|
119
79
|
}}
|
|
120
|
-
|
|
121
|
-
<TextInput
|
|
122
|
-
oncut={(e: TextInputClipboardEvent) => {
|
|
123
|
-
const target = e.target as HTMLInputElement;
|
|
124
|
-
|
|
125
|
-
console.log('oncut Event', target);
|
|
126
|
-
}}
|
|
127
|
-
/>
|
|
128
|
-
</Story>
|
|
80
|
+
/>
|
|
129
81
|
|
|
130
82
|
<!-- `e: TextInputClipboardEvent` -->
|
|
131
83
|
<Story
|
|
@@ -137,12 +89,4 @@ const { Story } = defineMeta({
|
|
|
137
89
|
console.log('onpaste Event', target);
|
|
138
90
|
},
|
|
139
91
|
}}
|
|
140
|
-
|
|
141
|
-
<TextInput
|
|
142
|
-
onpaste={(e: TextInputClipboardEvent) => {
|
|
143
|
-
const target = e.target as HTMLInputElement;
|
|
144
|
-
|
|
145
|
-
console.log('onpaste Event', target);
|
|
146
|
-
}}
|
|
147
|
-
/>
|
|
148
|
-
</Story>
|
|
92
|
+
/>
|
|
@@ -12,10 +12,10 @@
|
|
|
12
12
|
});
|
|
13
13
|
</script>
|
|
14
14
|
|
|
15
|
-
<Story name="Roundness
|
|
15
|
+
<Story name="Roundness 1" />
|
|
16
16
|
|
|
17
|
-
<Story name="Roundness
|
|
17
|
+
<Story name="Roundness 2" args={{ roundness: 2 }} />
|
|
18
18
|
|
|
19
|
-
<Story name="Roundness
|
|
19
|
+
<Story name="Roundness 3" args={{ roundness: 3 }} />
|
|
20
20
|
|
|
21
|
-
<Story name="Roundness
|
|
21
|
+
<Story name="Roundness 0" args={{ roundness: 0 }} />
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
<script module lang="ts">import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
2
|
-
import TextInput from './TextInput.svelte';
|
|
2
|
+
import TextInput, { textInputTypeArray } from './TextInput.svelte';
|
|
3
|
+
import { componentRoundnessArray } from '../../../../types/roundness.js';
|
|
4
|
+
import { componentSizeArray } from '../../../../types/size.js';
|
|
3
5
|
export const storyTextInputArgTypes = {
|
|
4
6
|
type: {
|
|
5
7
|
control: { type: 'select' },
|
|
6
|
-
options:
|
|
8
|
+
options: textInputTypeArray,
|
|
7
9
|
},
|
|
8
10
|
roundness: {
|
|
9
11
|
control: { type: 'select' },
|
|
10
|
-
options:
|
|
12
|
+
options: componentRoundnessArray,
|
|
11
13
|
},
|
|
12
14
|
size: {
|
|
13
15
|
control: { type: 'select' },
|
|
14
|
-
options:
|
|
16
|
+
options: componentSizeArray,
|
|
15
17
|
},
|
|
16
18
|
};
|
|
17
19
|
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories
|