@flightlesslabs/dodo-ui 0.6.6 → 0.7.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/index.d.ts +28 -7
- package/dist/index.js +12 -2
- package/dist/stories/Home.mdx +1 -1
- package/dist/stories/components/Form/Button/Button.svelte +2 -2
- package/dist/stories/components/Form/Button/Button.svelte.d.ts +8 -5
- package/dist/stories/components/Form/FormControl/FormControl.svelte +3 -0
- package/dist/stories/components/Form/FormControl/FormControl.svelte.d.ts +1 -1
- package/dist/stories/components/Form/Label/Label.svelte +5 -2
- package/dist/stories/components/Form/Label/Label.svelte.d.ts +1 -1
- package/dist/stories/components/Form/Message/Message.svelte +5 -2
- package/dist/stories/components/Form/Message/Message.svelte.d.ts +1 -1
- package/dist/stories/components/Form/PasswordInput/PasswordInput.svelte +25 -32
- package/dist/stories/components/Form/PasswordInput/PasswordInput.svelte.d.ts +5 -5
- 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/TextInput.svelte +9 -28
- package/dist/stories/components/Form/TextInput/TextInput.svelte.d.ts +8 -5
- 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 +1 -1
- package/dist/stories/components/Layout/Paper/Paper.stories.svelte +1 -1
- package/dist/stories/components/Layout/Paper/Paper.svelte.d.ts +5 -5
- 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/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/dist/stories/{components/Form/SimpleSelect/Size/Size.stories.svelte → developer tools/components/DynamicInput/Size/Size.stories.svelte } +5 -8
- package/dist/stories/developer tools/components/DynamicInput/Size/Size.stories.svelte.d.ts +26 -0
- package/dist/stories/developer tools/components/InputEnclosure/InputEnclosure.svelte +6 -2
- package/dist/stories/developer tools/components/InputEnclosure/InputEnclosure.svelte.d.ts +1 -1
- 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 +3 -5
- package/dist/stories/developer tools/components/UtilityButton/UtilityButton.stories.svelte +0 -4
- package/dist/stories/developer tools/components/UtilityButton/UtilityButton.svelte +5 -2
- package/dist/stories/developer tools/components/UtilityButton/UtilityButton.svelte.d.ts +1 -1
- 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/styles/_z-index.css +9 -0
- package/dist/styles/global.css +1 -0
- package/dist/types/position.d.ts +4 -0
- package/dist/types/position.js +2 -0
- package/package.json +3 -3
- package/src/lib/index.ts +50 -9
- package/src/lib/stories/components/Form/Button/Button.svelte +14 -10
- package/src/lib/stories/components/Form/FormControl/FormControl.svelte +7 -4
- package/src/lib/stories/components/Form/Label/Label.svelte +4 -2
- package/src/lib/stories/components/Form/Message/Message.svelte +4 -2
- package/src/lib/stories/components/Form/PasswordInput/PasswordInput.svelte +48 -49
- package/src/lib/stories/components/Form/Select/Select.svelte +501 -0
- package/src/lib/stories/components/Form/TextInput/TextInput.svelte +32 -59
- 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 +8 -9
- 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 +5 -2
- 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 +4 -2
- package/src/lib/stories/developer tools/directives/clickOutside/clickOutside.ts +17 -0
- package/src/lib/styles/_z-index.css +9 -0
- package/src/lib/styles/global.css +1 -0
- package/src/lib/types/position.ts +5 -0
- package/dist/stories/components/Form/SimpleSelect/Events/Events.stories.svelte +0 -47
- package/dist/stories/components/Form/SimpleSelect/Roundness/Roundness.stories.svelte +0 -24
- package/dist/stories/components/Form/SimpleSelect/SimpleSelect.stories.svelte +0 -57
- package/dist/stories/components/Form/SimpleSelect/SimpleSelect.svelte +0 -69
- package/dist/stories/components/Form/SimpleSelect/SimpleSelect.svelte.d.ts +0 -51
- package/dist/stories/components/Form/SimpleSelect/WithIcon/WithIcon.stories.svelte +0 -36
- package/src/lib/stories/components/Form/SimpleSelect/SimpleSelect.svelte +0 -160
- /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
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
|
|
1
|
+
<script lang="ts" module>export {};
|
|
2
|
+
</script>
|
|
3
|
+
|
|
4
|
+
<script lang="ts">"use strict";
|
|
5
|
+
let { children, size = 'normal', name, id, title, class: className = '', disabled = false, onclick, ref = $bindable(), } = $props();
|
|
3
6
|
</script>
|
|
4
7
|
|
|
5
8
|
<button
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ComponentSize } from '../../../../types/size.js';
|
|
2
2
|
import type { Snippet } from 'svelte';
|
|
3
3
|
import type { MouseEventHandler } from 'svelte/elements';
|
|
4
|
-
interface UtilityButtonProps {
|
|
4
|
+
export interface UtilityButtonProps {
|
|
5
5
|
/** Button contents goes here*/
|
|
6
6
|
children?: Snippet;
|
|
7
7
|
/** Button ref */
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export function clickOutside(node, callback) {
|
|
2
|
+
const handleClick = (event) => {
|
|
3
|
+
const target = event.target;
|
|
4
|
+
if (node && !node.contains(target) && !event.defaultPrevented) {
|
|
5
|
+
callback();
|
|
6
|
+
}
|
|
7
|
+
};
|
|
8
|
+
document.addEventListener('click', handleClick, true);
|
|
9
|
+
return {
|
|
10
|
+
destroy() {
|
|
11
|
+
document.removeEventListener('click', handleClick, true);
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Source } from '@storybook/blocks';
|
|
2
|
+
|
|
3
|
+
# Click Outside
|
|
4
|
+
|
|
5
|
+
Event that fires after clicking outside the target component
|
|
6
|
+
|
|
7
|
+
<Source
|
|
8
|
+
dark
|
|
9
|
+
language="js"
|
|
10
|
+
code={`
|
|
11
|
+
import { clickOutside } '@flightlesslabs/dodo-ui';
|
|
12
|
+
`}
|
|
13
|
+
/>
|
|
14
|
+
|
|
15
|
+
Attach it to a component
|
|
16
|
+
|
|
17
|
+
<Source
|
|
18
|
+
dark
|
|
19
|
+
language="js"
|
|
20
|
+
code={`
|
|
21
|
+
<div
|
|
22
|
+
use:clickOutside={onClickOutside}
|
|
23
|
+
...
|
|
24
|
+
`}
|
|
25
|
+
/>
|
package/dist/styles/global.css
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flightlesslabs/dodo-ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.1",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"build": "vite build && pnpm run prepack",
|
|
6
6
|
"preview": "vite preview",
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"@vitest/coverage-v8": "^3.1.4",
|
|
69
69
|
"eslint": "^9.27.0",
|
|
70
70
|
"eslint-config-prettier": "^10.1.5",
|
|
71
|
-
"eslint-plugin-svelte": "^3.
|
|
71
|
+
"eslint-plugin-svelte": "^3.9.0",
|
|
72
72
|
"globals": "^16.1.0",
|
|
73
73
|
"playwright": "^1.52.0",
|
|
74
74
|
"prettier": "^3.5.3",
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
"sass": "^1.89.0",
|
|
78
78
|
"storybook": "^8.6.14",
|
|
79
79
|
"storybook-dark-mode": "^4.0.2",
|
|
80
|
-
"svelte": "^5.
|
|
80
|
+
"svelte": "^5.32.1",
|
|
81
81
|
"svelte-check": "^4.2.1",
|
|
82
82
|
"svelte-preprocess": "^6.0.3",
|
|
83
83
|
"typescript": "^5.8.3",
|
package/src/lib/index.ts
CHANGED
|
@@ -12,11 +12,33 @@ export type { ComponentSize } from './types/size.js';
|
|
|
12
12
|
|
|
13
13
|
export type { ComponentWeight } from './types/weight.js';
|
|
14
14
|
|
|
15
|
+
export type { PositionY, PositionX } from './types/position.js';
|
|
16
|
+
|
|
17
|
+
/** developer tools: directives: clickOutside */
|
|
18
|
+
export { clickOutside } from '$lib/stories/developer tools/directives/clickOutside/clickOutside.js';
|
|
19
|
+
|
|
15
20
|
/** developer tools: components: UtilityButton */
|
|
16
21
|
export { default as UtilityButton } from '$lib/stories/developer tools/components/UtilityButton/UtilityButton.svelte';
|
|
22
|
+
export type { UtilityButtonProps } from '$lib/stories/developer tools/components/UtilityButton/UtilityButton.svelte';
|
|
17
23
|
|
|
18
24
|
/** developer tools: components: InputEnclosure */
|
|
19
25
|
export { default as InputEnclosure } from '$lib/stories/developer tools/components/InputEnclosure/InputEnclosure.svelte';
|
|
26
|
+
export type { InputEnclosureProps } from '$lib/stories/developer tools/components/InputEnclosure/InputEnclosure.svelte';
|
|
27
|
+
|
|
28
|
+
/** developer tools: components: DynamicInput */
|
|
29
|
+
export { default as DynamicInput } from '$lib/stories/developer tools/components/DynamicInput/DynamicInput.svelte';
|
|
30
|
+
export type {
|
|
31
|
+
DynamicInputVariant,
|
|
32
|
+
DynamicInputProps,
|
|
33
|
+
DynamicInputClickEvent,
|
|
34
|
+
DynamicInputFocusEvent,
|
|
35
|
+
} from '$lib/stories/developer tools/components/DynamicInput/DynamicInput.svelte';
|
|
36
|
+
|
|
37
|
+
/** developer tools: components: Popper */
|
|
38
|
+
export { default as Popper } from '$lib/stories/developer tools/components/Popper/Popper.svelte';
|
|
39
|
+
export type { PopperProps } from '$lib/stories/developer tools/components/Popper/Popper.svelte';
|
|
40
|
+
export { default as PopperPopup } from '$lib/stories/developer tools/components/Popper/PopperPopup/PopperPopup.svelte';
|
|
41
|
+
export type { PopperPopupProps } from '$lib/stories/developer tools/components/Popper/PopperPopup/PopperPopup.svelte';
|
|
20
42
|
|
|
21
43
|
/** Form: Button */
|
|
22
44
|
export { default as Button } from '$lib/stories/components/Form/Button/Button.svelte';
|
|
@@ -24,6 +46,8 @@ export type {
|
|
|
24
46
|
ButtonLinkTarget,
|
|
25
47
|
ButtonLinkReferrerpolicy,
|
|
26
48
|
ButtonType,
|
|
49
|
+
ButtonProps,
|
|
50
|
+
ButtonClickEvent,
|
|
27
51
|
} from '$lib/stories/components/Form/Button/Button.svelte';
|
|
28
52
|
|
|
29
53
|
/** Form: TextInput */
|
|
@@ -32,28 +56,45 @@ export type {
|
|
|
32
56
|
TextInputType,
|
|
33
57
|
TextInputFocusEvent,
|
|
34
58
|
TextInputClipboardEvent,
|
|
59
|
+
TextInputInputEvent,
|
|
60
|
+
TextInputProps,
|
|
35
61
|
} from '$lib/stories/components/Form/TextInput/TextInput.svelte';
|
|
36
62
|
|
|
37
63
|
/** Form: PasswordInput */
|
|
38
64
|
export { default as PasswordInput } from '$lib/stories/components/Form/PasswordInput/PasswordInput.svelte';
|
|
39
|
-
export type {
|
|
65
|
+
export type {
|
|
66
|
+
PasswordInputToggleEvent,
|
|
67
|
+
PasswordInputProps,
|
|
68
|
+
} from '$lib/stories/components/Form/PasswordInput/PasswordInput.svelte';
|
|
40
69
|
|
|
41
70
|
/** Form: Label */
|
|
42
71
|
export { default as Label } from '$lib/stories/components/Form/Label/Label.svelte';
|
|
72
|
+
export type { LabelProps } from '$lib/stories/components/Form/Label/Label.svelte';
|
|
43
73
|
|
|
44
74
|
/** Form: FormControl */
|
|
45
75
|
export { default as FormControl } from '$lib/stories/components/Form/FormControl/FormControl.svelte';
|
|
76
|
+
export type { FormControlProps } from '$lib/stories/components/Form/FormControl/FormControl.svelte';
|
|
46
77
|
|
|
47
78
|
/** Form: Message */
|
|
48
79
|
export { default as Message } from '$lib/stories/components/Form/Message/Message.svelte';
|
|
49
|
-
|
|
50
|
-
/** Form: SimpleSelect */
|
|
51
|
-
export { default as SimpleSelect } from '$lib/stories/components/Form/SimpleSelect/SimpleSelect.svelte';
|
|
52
|
-
export type {
|
|
53
|
-
SimpleSelectFocusEvent,
|
|
54
|
-
SimpleSelectOption,
|
|
55
|
-
} from '$lib/stories/components/Form/SimpleSelect/SimpleSelect.svelte';
|
|
80
|
+
export type { MessageProps } from '$lib/stories/components/Form/Message/Message.svelte';
|
|
56
81
|
|
|
57
82
|
/** Layout: Paper */
|
|
58
83
|
export { default as Paper } from '$lib/stories/components/Layout/Paper/Paper.svelte';
|
|
59
|
-
export type { PaperColor } from '$lib/stories/components/Layout/Paper/Paper.svelte';
|
|
84
|
+
export type { PaperColor, PaperProps } from '$lib/stories/components/Layout/Paper/Paper.svelte';
|
|
85
|
+
|
|
86
|
+
/** Layout: Separator */
|
|
87
|
+
export { default as Separator } from '$lib/stories/components/Layout/Separator/Separator.svelte';
|
|
88
|
+
export type {
|
|
89
|
+
SeparatorProps,
|
|
90
|
+
SeparatorOrientation,
|
|
91
|
+
} from '$lib/stories/components/Layout/Separator/Separator.svelte';
|
|
92
|
+
|
|
93
|
+
/** Layout: Menu */
|
|
94
|
+
export { default as Menu } from '$lib/stories/components/Layout/Menu/Menu.svelte';
|
|
95
|
+
export type { MenuProps } from '$lib/stories/components/Layout/Menu/Menu.svelte';
|
|
96
|
+
export { default as MenuItem } from '$lib/stories/components/Layout/Menu/MenuItem/MenuItem.svelte';
|
|
97
|
+
export type {
|
|
98
|
+
MenuItemType,
|
|
99
|
+
MenuItemProps,
|
|
100
|
+
} from '$lib/stories/components/Layout/Menu/MenuItem/MenuItem.svelte';
|
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
<script lang="ts" module>
|
|
2
|
+
import type { ComponentColor } from '$lib/types/colors.js';
|
|
3
|
+
import type { ComponentRoundness } from '$lib/types/roundness.js';
|
|
4
|
+
import type { ComponentSize } from '$lib/types/size.js';
|
|
5
|
+
import type { ComponentWeight } from '$lib/types/weight.js';
|
|
6
|
+
|
|
7
|
+
import type { Snippet } from 'svelte';
|
|
8
|
+
import type { MouseEventHandler } from 'svelte/elements';
|
|
9
|
+
|
|
2
10
|
export type ButtonLinkTarget =
|
|
3
11
|
| '_self'
|
|
4
12
|
| '_blank'
|
|
@@ -10,18 +18,12 @@
|
|
|
10
18
|
export type ButtonLinkReferrerpolicy = ReferrerPolicy | undefined | null;
|
|
11
19
|
export type ButtonType = 'button' | 'submit';
|
|
12
20
|
export const buttonTypeArray: ButtonType[] = ['button', 'submit'];
|
|
13
|
-
</script>
|
|
14
21
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
import type { ComponentSize } from '$lib/types/size.js';
|
|
19
|
-
import type { ComponentWeight } from '$lib/types/weight.js';
|
|
22
|
+
export type ButtonClickEvent = MouseEvent & {
|
|
23
|
+
currentTarget: EventTarget & HTMLButtonElement;
|
|
24
|
+
};
|
|
20
25
|
|
|
21
|
-
|
|
22
|
-
import type { MouseEventHandler } from 'svelte/elements';
|
|
23
|
-
|
|
24
|
-
interface ButtonProps {
|
|
26
|
+
export interface ButtonProps {
|
|
25
27
|
/** Button contents goes here */
|
|
26
28
|
children?: Snippet;
|
|
27
29
|
/** Button ref */
|
|
@@ -78,7 +80,9 @@
|
|
|
78
80
|
/** Link button: referrerpolicy */
|
|
79
81
|
referrerpolicy?: ButtonLinkReferrerpolicy;
|
|
80
82
|
}
|
|
83
|
+
</script>
|
|
81
84
|
|
|
85
|
+
<script lang="ts">
|
|
82
86
|
let {
|
|
83
87
|
children,
|
|
84
88
|
type = 'button',
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
<script lang="ts">
|
|
1
|
+
<script lang="ts" module>
|
|
2
2
|
import type { Snippet } from 'svelte';
|
|
3
|
-
import Label from '../Label/Label.svelte';
|
|
4
|
-
import Message from '../Message/Message.svelte';
|
|
5
3
|
|
|
6
|
-
interface FormControlProps {
|
|
4
|
+
export interface FormControlProps {
|
|
7
5
|
/** FormControl contents goes here */
|
|
8
6
|
children?: Snippet;
|
|
9
7
|
/** Label for FormControl */
|
|
@@ -19,6 +17,11 @@
|
|
|
19
17
|
/** Custom css class*/
|
|
20
18
|
class?: string;
|
|
21
19
|
}
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
<script lang="ts">
|
|
23
|
+
import Label from '../Label/Label.svelte';
|
|
24
|
+
import Message from '../Message/Message.svelte';
|
|
22
25
|
|
|
23
26
|
let {
|
|
24
27
|
children,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
<script lang="ts">
|
|
1
|
+
<script lang="ts" module>
|
|
2
2
|
import type { Snippet } from 'svelte';
|
|
3
3
|
|
|
4
|
-
interface LabelProps {
|
|
4
|
+
export interface LabelProps {
|
|
5
5
|
/** Label contents goes here */
|
|
6
6
|
children?: Snippet;
|
|
7
7
|
/** Label ref */
|
|
@@ -13,7 +13,9 @@
|
|
|
13
13
|
/** Custom css class*/
|
|
14
14
|
class?: string;
|
|
15
15
|
}
|
|
16
|
+
</script>
|
|
16
17
|
|
|
18
|
+
<script lang="ts">
|
|
17
19
|
let {
|
|
18
20
|
children,
|
|
19
21
|
class: className = '',
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
<script lang="ts">
|
|
1
|
+
<script lang="ts" module>
|
|
2
2
|
import type { ComponentColor } from '$lib/types/colors.js';
|
|
3
3
|
|
|
4
4
|
import type { ComponentSize } from '$lib/types/size.js';
|
|
5
5
|
|
|
6
6
|
import type { Snippet } from 'svelte';
|
|
7
7
|
|
|
8
|
-
interface MessageProps {
|
|
8
|
+
export interface MessageProps {
|
|
9
9
|
/** Message contents goes here */
|
|
10
10
|
children?: Snippet;
|
|
11
11
|
/** Message ref */
|
|
@@ -17,7 +17,9 @@
|
|
|
17
17
|
/** Custom css class*/
|
|
18
18
|
class?: string;
|
|
19
19
|
}
|
|
20
|
+
</script>
|
|
20
21
|
|
|
22
|
+
<script lang="ts">
|
|
21
23
|
let {
|
|
22
24
|
children,
|
|
23
25
|
class: className = '',
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
<script lang="ts" module>
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
toggle: boolean;
|
|
5
|
-
};
|
|
6
|
-
</script>
|
|
7
|
-
|
|
8
|
-
<script lang="ts">
|
|
2
|
+
import type { ComponentSize } from '$lib/types/size.js';
|
|
3
|
+
import type { ComponentRoundness } from '$lib/types/roundness.js';
|
|
9
4
|
import type { Snippet } from 'svelte';
|
|
10
5
|
import type {
|
|
11
6
|
ChangeEventHandler,
|
|
@@ -13,14 +8,13 @@
|
|
|
13
8
|
FocusEventHandler,
|
|
14
9
|
FormEventHandler,
|
|
15
10
|
} from 'svelte/elements';
|
|
16
|
-
import type { TextInputFocusEvent } from '../TextInput/TextInput.svelte';
|
|
17
|
-
import Icon from '@iconify/svelte';
|
|
18
|
-
import UtilityButton from '$lib/stories/developer tools/components/UtilityButton/UtilityButton.svelte';
|
|
19
|
-
import InputEnclosure from '$lib/stories/developer tools/components/InputEnclosure/InputEnclosure.svelte';
|
|
20
|
-
import type { ComponentSize } from '$lib/types/size.js';
|
|
21
|
-
import type { ComponentRoundness } from '$lib/types/roundness.js';
|
|
22
11
|
|
|
23
|
-
|
|
12
|
+
export type PasswordInputToggleEvent = {
|
|
13
|
+
event: Event;
|
|
14
|
+
toggle: boolean;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export interface PasswordInputProps {
|
|
24
18
|
/** How large should the button be? */
|
|
25
19
|
size?: ComponentSize;
|
|
26
20
|
/** Input ref */
|
|
@@ -72,6 +66,14 @@
|
|
|
72
66
|
/** ontoggle event handler */
|
|
73
67
|
ontoggle?: (e: PasswordInputToggleEvent) => void;
|
|
74
68
|
}
|
|
69
|
+
</script>
|
|
70
|
+
|
|
71
|
+
<script lang="ts">
|
|
72
|
+
import Icon from '@iconify/svelte';
|
|
73
|
+
import UtilityButton from '$lib/stories/developer tools/components/UtilityButton/UtilityButton.svelte';
|
|
74
|
+
import InputEnclosure from '$lib/stories/developer tools/components/InputEnclosure/InputEnclosure.svelte';
|
|
75
|
+
import type { TextInputFocusEvent } from '../TextInput/TextInput.svelte';
|
|
76
|
+
import { DynamicInput, type DynamicInputFocusEvent } from '$lib/index.js';
|
|
75
77
|
|
|
76
78
|
let {
|
|
77
79
|
size = 'normal',
|
|
@@ -107,19 +109,21 @@
|
|
|
107
109
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
108
110
|
let customPasswordToggleIconTyped = customPasswordToggleIcon as any;
|
|
109
111
|
|
|
110
|
-
function onfocusMod(e:
|
|
112
|
+
function onfocusMod(e: DynamicInputFocusEvent) {
|
|
113
|
+
const eTyped = e as TextInputFocusEvent;
|
|
111
114
|
focused = true;
|
|
112
115
|
|
|
113
116
|
if (onfocus) {
|
|
114
|
-
onfocus(
|
|
117
|
+
onfocus(eTyped);
|
|
115
118
|
}
|
|
116
119
|
}
|
|
117
120
|
|
|
118
|
-
function onblurMod(e:
|
|
121
|
+
function onblurMod(e: DynamicInputFocusEvent) {
|
|
122
|
+
const eTyped = e as TextInputFocusEvent;
|
|
119
123
|
focused = false;
|
|
120
124
|
|
|
121
125
|
if (onblur) {
|
|
122
|
-
onblur(
|
|
126
|
+
onblur(eTyped);
|
|
123
127
|
}
|
|
124
128
|
}
|
|
125
129
|
|
|
@@ -146,11 +150,12 @@
|
|
|
146
150
|
class={['dodo-ui-PasswordInput', `size--${size}`, `roundness--${roundness}`, className].join(' ')}
|
|
147
151
|
>
|
|
148
152
|
<InputEnclosure {outline} {disabled} {error} {focused} {size} {roundness} {before} {after}>
|
|
149
|
-
<
|
|
153
|
+
<DynamicInput
|
|
150
154
|
type={passwordToggle && toggle ? 'text' : 'password'}
|
|
151
155
|
{name}
|
|
152
156
|
{id}
|
|
153
157
|
{disabled}
|
|
158
|
+
bind:ref
|
|
154
159
|
{oninput}
|
|
155
160
|
{onchange}
|
|
156
161
|
onfocus={onfocusMod}
|
|
@@ -160,56 +165,50 @@
|
|
|
160
165
|
{oncut}
|
|
161
166
|
{placeholder}
|
|
162
167
|
bind:value
|
|
163
|
-
bind:this={ref}
|
|
164
168
|
{readonly}
|
|
169
|
+
variant="input"
|
|
165
170
|
/>
|
|
166
171
|
|
|
167
172
|
{#if passwordToggle && !disabled}
|
|
168
|
-
<
|
|
169
|
-
{
|
|
170
|
-
{
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
173
|
+
<div class:after class="passwordToggle">
|
|
174
|
+
<UtilityButton {size} title="Toggle password" onclick={ontoggleMod}>
|
|
175
|
+
{#if customPasswordToggleIcon}
|
|
176
|
+
{@render customPasswordToggleIconTyped(toggle)}
|
|
177
|
+
{:else if toggle}
|
|
178
|
+
<Icon icon="mdi:eye-off" width="24" height="24" />
|
|
179
|
+
{:else}
|
|
180
|
+
<Icon icon="mdi:eye" width="24" height="24" />
|
|
181
|
+
{/if}
|
|
182
|
+
</UtilityButton>
|
|
183
|
+
</div>
|
|
177
184
|
{/if}
|
|
178
185
|
</InputEnclosure>
|
|
179
186
|
</div>
|
|
180
187
|
|
|
181
188
|
<style lang="scss">
|
|
182
189
|
.dodo-ui-PasswordInput {
|
|
183
|
-
input {
|
|
184
|
-
flex: 1;
|
|
185
|
-
border: 0;
|
|
186
|
-
outline: 0;
|
|
187
|
-
height: 100%;
|
|
188
|
-
background-color: transparent;
|
|
189
|
-
font-family: inherit;
|
|
190
|
-
color: inherit;
|
|
191
|
-
letter-spacing: 0.3px;
|
|
192
|
-
}
|
|
193
|
-
|
|
194
190
|
&.size {
|
|
195
191
|
&--normal {
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
192
|
+
.passwordToggle {
|
|
193
|
+
&.after {
|
|
194
|
+
margin-right: calc(var(--dodo-ui-space-small) * 2);
|
|
195
|
+
}
|
|
199
196
|
}
|
|
200
197
|
}
|
|
201
198
|
|
|
202
199
|
&--small {
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
200
|
+
.passwordToggle {
|
|
201
|
+
&.after {
|
|
202
|
+
margin-right: var(--dodo-ui-space);
|
|
203
|
+
}
|
|
206
204
|
}
|
|
207
205
|
}
|
|
208
206
|
|
|
209
207
|
&--large {
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
208
|
+
.passwordToggle {
|
|
209
|
+
&.after {
|
|
210
|
+
margin-right: calc(var(--dodo-ui-space) * 2);
|
|
211
|
+
}
|
|
213
212
|
}
|
|
214
213
|
}
|
|
215
214
|
}
|