webcoreui 0.3.0 → 0.4.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/README.md +5 -2
- package/astro.d.ts +7 -1
- package/astro.js +6 -0
- package/components/Accordion/Accordion.astro +2 -0
- package/components/Accordion/Accordion.svelte +2 -0
- package/components/Accordion/Accordion.tsx +2 -0
- package/components/Alert/Alert.astro +3 -2
- package/components/Alert/Alert.svelte +4 -3
- package/components/Alert/Alert.tsx +3 -2
- package/components/Avatar/Avatar.astro +2 -1
- package/components/Avatar/Avatar.svelte +2 -1
- package/components/Avatar/Avatar.tsx +3 -3
- package/components/Badge/Badge.astro +1 -0
- package/components/Badge/Badge.svelte +3 -2
- package/components/Badge/Badge.tsx +2 -1
- package/components/Button/Button.astro +4 -5
- package/components/Button/Button.svelte +2 -1
- package/components/Button/Button.tsx +2 -1
- package/components/Button/button.ts +1 -1
- package/components/Card/Card.astro +11 -3
- package/components/Card/Card.svelte +5 -2
- package/components/Card/Card.tsx +5 -2
- package/components/Card/card.ts +1 -0
- package/components/Checkbox/Checkbox.astro +1 -0
- package/components/Checkbox/Checkbox.svelte +7 -5
- package/components/Checkbox/Checkbox.tsx +4 -2
- package/components/Collapsible/Collapsible.astro +2 -1
- package/components/Collapsible/Collapsible.svelte +2 -1
- package/components/Collapsible/Collapsible.tsx +55 -54
- package/components/ConditionalWrapper/ConditionalWrapper.astro +2 -1
- package/components/ConditionalWrapper/ConditionalWrapper.tsx +1 -2
- package/components/Group/Group.astro +22 -0
- package/components/Group/Group.svelte +20 -0
- package/components/Group/Group.tsx +22 -0
- package/components/Group/group.module.scss +43 -0
- package/components/Group/group.ts +8 -0
- package/components/Icon/map.ts +2 -0
- package/components/Input/Input.astro +8 -1
- package/components/Input/Input.svelte +15 -3
- package/components/Input/Input.tsx +10 -3
- package/components/Input/input.module.scss +4 -1
- package/components/Input/input.ts +9 -4
- package/components/List/List.astro +169 -0
- package/components/List/List.svelte +147 -0
- package/components/List/List.tsx +168 -0
- package/components/List/list.module.scss +91 -0
- package/components/List/list.ts +37 -0
- package/components/Menu/Menu.astro +2 -1
- package/components/Menu/Menu.svelte +7 -5
- package/components/Menu/Menu.tsx +116 -113
- package/components/Modal/Modal.astro +6 -4
- package/components/Modal/Modal.svelte +8 -6
- package/components/Modal/Modal.tsx +79 -76
- package/components/Modal/modal.ts +1 -0
- package/components/Popover/Popover.astro +4 -1
- package/components/Popover/Popover.svelte +4 -2
- package/components/Popover/Popover.tsx +55 -27
- package/components/Popover/popover.module.scss +1 -0
- package/components/Popover/popover.ts +2 -0
- package/components/Progress/Progress.astro +2 -1
- package/components/Progress/Progress.svelte +2 -1
- package/components/Progress/Progress.tsx +3 -2
- package/components/Radio/Radio.astro +1 -0
- package/components/Radio/Radio.svelte +4 -2
- package/components/Radio/Radio.tsx +3 -2
- package/components/Rating/Rating.astro +3 -1
- package/components/Rating/Rating.svelte +9 -7
- package/components/Rating/Rating.tsx +4 -2
- package/components/Select/Select.astro +135 -0
- package/components/Select/Select.svelte +122 -0
- package/components/Select/Select.tsx +142 -0
- package/components/Select/select.module.scss +25 -0
- package/components/Select/select.ts +21 -0
- package/components/Sheet/Sheet.astro +2 -1
- package/components/Sheet/Sheet.svelte +2 -1
- package/components/Sheet/Sheet.tsx +33 -32
- package/components/Slider/Slider.astro +2 -1
- package/components/Slider/Slider.svelte +2 -1
- package/components/Slider/Slider.tsx +49 -48
- package/components/Spinner/Spinner.astro +4 -3
- package/components/Spinner/Spinner.svelte +3 -2
- package/components/Spinner/Spinner.tsx +4 -3
- package/components/Switch/Switch.astro +2 -1
- package/components/Switch/Switch.svelte +5 -4
- package/components/Switch/Switch.tsx +2 -2
- package/components/Switch/switch.module.scss +1 -1
- package/components/Table/Table.astro +1 -0
- package/components/Table/Table.svelte +2 -1
- package/components/Table/Table.tsx +2 -1
- package/components/Tabs/Tabs.astro +2 -1
- package/components/Tabs/Tabs.svelte +2 -1
- package/components/Tabs/Tabs.tsx +4 -3
- package/components/Textarea/Textarea.astro +1 -0
- package/components/Textarea/Textarea.svelte +3 -1
- package/components/Textarea/Textarea.tsx +52 -50
- package/components/ThemeSwitcher/ThemeSwitcher.astro +108 -107
- package/components/ThemeSwitcher/ThemeSwitcher.svelte +5 -4
- package/components/ThemeSwitcher/ThemeSwitcher.tsx +91 -90
- package/components/Timeline/Timeline.astro +3 -2
- package/components/Timeline/Timeline.svelte +3 -2
- package/components/Timeline/Timeline.tsx +3 -2
- package/components/TimelineItem/TimelineItem.svelte +2 -1
- package/components/TimelineItem/TimelineItem.tsx +2 -1
- package/components/Toast/Toast.astro +3 -1
- package/components/Toast/Toast.svelte +3 -1
- package/components/Toast/Toast.tsx +3 -1
- package/icons/moon.svg +1 -1
- package/icons/search.svg +3 -0
- package/icons.d.ts +1 -0
- package/icons.js +1 -0
- package/index.d.ts +55 -25
- package/package.json +22 -2
- package/react.d.ts +6 -0
- package/react.js +6 -0
- package/scss/config/mixins.scss +12 -10
- package/scss/config/variables.scss +1 -0
- package/scss/config.scss +1 -0
- package/scss/global/utility.scss +2 -0
- package/svelte.d.ts +7 -1
- package/svelte.js +6 -0
- package/utils/cookies.ts +4 -4
- package/utils/debounce.ts +1 -1
- package/utils/event.ts +2 -2
- package/utils/interpolate.ts +5 -5
- package/utils/modal.ts +90 -27
- package/utils/popover.ts +30 -8
- package/utils/toast.ts +6 -2
package/index.d.ts
CHANGED
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
|
|
2
|
+
type ModalCallback = {
|
|
3
|
+
trigger: Element | null
|
|
4
|
+
modal: HTMLElement
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
type Modal = {
|
|
8
|
+
trigger: string
|
|
9
|
+
modal: string
|
|
10
|
+
onOpen?: (args: ModalCallback) => unknown
|
|
11
|
+
onClose?: (args: ModalCallback) => unknown
|
|
12
|
+
}
|
|
13
|
+
|
|
1
14
|
type PopoverPosition = 'top'
|
|
2
15
|
| 'top-start'
|
|
3
16
|
| 'top-end'
|
|
@@ -11,12 +24,20 @@ type PopoverPosition = 'top'
|
|
|
11
24
|
| 'bottom-start'
|
|
12
25
|
| 'bottom-end'
|
|
13
26
|
|
|
27
|
+
type PopoverCallback = {
|
|
28
|
+
trigger: HTMLElement
|
|
29
|
+
popover: HTMLElement
|
|
30
|
+
position: PopoverPosition | undefined
|
|
31
|
+
}
|
|
32
|
+
|
|
14
33
|
type Popover = {
|
|
15
34
|
trigger: string
|
|
16
35
|
popover: string
|
|
17
36
|
position?: PopoverPosition
|
|
18
37
|
offset?: number
|
|
19
38
|
closeOnBlur?: boolean
|
|
39
|
+
onOpen?: (args: PopoverCallback) => unknown
|
|
40
|
+
onClose?: (args: PopoverCallback) => unknown
|
|
20
41
|
}
|
|
21
42
|
|
|
22
43
|
type Toast = {
|
|
@@ -24,46 +45,55 @@ type Toast = {
|
|
|
24
45
|
timeout?: number
|
|
25
46
|
title?: string
|
|
26
47
|
content?: string
|
|
27
|
-
theme?: 'info' | 'success' | 'warning' | 'alert' | null
|
|
28
48
|
position?: 'bottom-left'
|
|
29
49
|
| 'top-left'
|
|
30
50
|
| 'top-right'
|
|
31
51
|
| 'bottom-full'
|
|
32
52
|
| 'top-full'
|
|
53
|
+
| null
|
|
33
54
|
}
|
|
34
55
|
|
|
35
56
|
declare module 'webcoreui' {
|
|
36
|
-
export const classNames
|
|
37
|
-
|
|
38
|
-
export const setCookie
|
|
39
|
-
export const getCookie
|
|
40
|
-
export const removeCookie
|
|
57
|
+
export const classNames: (classes: any[]) => string
|
|
58
|
+
|
|
59
|
+
export const setCookie: (name: string, value: string, days: number) => void
|
|
60
|
+
export const getCookie: (name: string) => string | null
|
|
61
|
+
export const removeCookie: (name: string) => void
|
|
41
62
|
|
|
42
|
-
export const debounce
|
|
63
|
+
export const debounce: <T extends (...args: any[]) => any>(
|
|
64
|
+
fn: T,
|
|
65
|
+
waitFor?: number
|
|
66
|
+
) => {
|
|
67
|
+
(...args: Parameters<T>): void
|
|
68
|
+
cancel: () => void
|
|
69
|
+
}
|
|
43
70
|
|
|
44
|
-
export const dispatch
|
|
45
|
-
export const listen
|
|
46
|
-
remove()
|
|
71
|
+
export const dispatch: (event: string, detail: unknown) => void
|
|
72
|
+
export const listen: (event: string, callback: (e: any) => unknown) => {
|
|
73
|
+
remove: () => void
|
|
47
74
|
}
|
|
48
75
|
|
|
49
|
-
export const clamp
|
|
50
|
-
export const lerp
|
|
51
|
-
export const invlerp
|
|
52
|
-
export const interpolate
|
|
76
|
+
export const clamp: (num: number, min: number, max: number) => number
|
|
77
|
+
export const lerp: (start: number, end: number, value: number) => number
|
|
78
|
+
export const invlerp: (start: number, end: number, value: number) => number
|
|
79
|
+
export const interpolate: (
|
|
53
80
|
value: number,
|
|
54
81
|
input: [start: number, end: number],
|
|
55
|
-
output: [start: number, end: number]
|
|
82
|
+
output: [start: number, end: number]
|
|
56
83
|
) => number
|
|
57
84
|
|
|
58
|
-
export const modal
|
|
59
|
-
|
|
85
|
+
export const modal: (config: Modal | string) => {
|
|
86
|
+
open: () => void
|
|
87
|
+
remove: () => void
|
|
88
|
+
} | void
|
|
89
|
+
export const closeModal: (modal: string) => void
|
|
60
90
|
|
|
61
|
-
export const popover
|
|
62
|
-
remove()
|
|
63
|
-
}
|
|
64
|
-
export const closePopover
|
|
91
|
+
export const popover: (config: Popover) => {
|
|
92
|
+
remove: () => void
|
|
93
|
+
} | void
|
|
94
|
+
export const closePopover: (selector: string) => void
|
|
65
95
|
|
|
66
|
-
export const setDefaultTimeout
|
|
67
|
-
export const toast
|
|
68
|
-
export const hideToast
|
|
69
|
-
}
|
|
96
|
+
export const setDefaultTimeout: (time: number) => number
|
|
97
|
+
export const toast: (config: Toast | string) => void
|
|
98
|
+
export const hideToast: (element: string) => void
|
|
99
|
+
}
|
package/package.json
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "webcoreui",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.4.1",
|
|
5
5
|
"scripts": {
|
|
6
|
+
"prepare": "husky",
|
|
7
|
+
"pre-commit": "lint-staged",
|
|
6
8
|
"dev": "astro dev",
|
|
7
9
|
"build": "astro check && astro build",
|
|
8
10
|
"build:package": "node scripts/build.js",
|
|
9
11
|
"test": "echo \"Error: no test specified\"",
|
|
10
|
-
"create-component": "node scripts/createComponent.js"
|
|
12
|
+
"create-component": "node scripts/createComponent.js",
|
|
13
|
+
"lint": "eslint src/**/* --fix"
|
|
11
14
|
},
|
|
12
15
|
"dependencies": {
|
|
13
16
|
"@astrojs/check": "0.7.0",
|
|
@@ -20,6 +23,20 @@
|
|
|
20
23
|
"svelte": "4.2.18",
|
|
21
24
|
"typescript": "5.4.5"
|
|
22
25
|
},
|
|
26
|
+
"devDependencies": {
|
|
27
|
+
"@eslint/js": "9.9.1",
|
|
28
|
+
"@typescript-eslint/parser": "8.3.0",
|
|
29
|
+
"astro-eslint-parser": "1.0.2",
|
|
30
|
+
"eslint": "9.9.1",
|
|
31
|
+
"eslint-plugin-astro": "1.2.3",
|
|
32
|
+
"eslint-plugin-react": "7.35.0",
|
|
33
|
+
"eslint-plugin-simple-import-sort": "12.1.1",
|
|
34
|
+
"eslint-plugin-svelte": "2.43.0",
|
|
35
|
+
"husky": "9.1.5",
|
|
36
|
+
"lint-staged": "15.2.9",
|
|
37
|
+
"svelte-eslint-parser": "0.41.0",
|
|
38
|
+
"typescript-eslint": "8.3.0"
|
|
39
|
+
},
|
|
23
40
|
"exports": {
|
|
24
41
|
".": "./index.js",
|
|
25
42
|
"./astro": "./astro.js",
|
|
@@ -69,5 +86,8 @@
|
|
|
69
86
|
},
|
|
70
87
|
"bugs": {
|
|
71
88
|
"url": "https://github.com/Frontendland/webcoreui/issues"
|
|
89
|
+
},
|
|
90
|
+
"lint-staged": {
|
|
91
|
+
"*.{js,ts,jsx,tsx,svelte,astro}": "eslint src/**/*"
|
|
72
92
|
}
|
|
73
93
|
}
|
package/react.d.ts
CHANGED
|
@@ -8,14 +8,17 @@ import type { ReactCardProps } from './components/Card/card'
|
|
|
8
8
|
import type { ReactCheckboxProps } from './components/Checkbox/checkbox'
|
|
9
9
|
import type { ReactCollapsibleProps } from './components/Collapsible/collapsible'
|
|
10
10
|
import type { ReactConditionalWrapperProps } from './components/ConditionalWrapper/conditionalwrapper'
|
|
11
|
+
import type { ReactGroupProps } from './components/Group/group'
|
|
11
12
|
import type { IconProps } from './components/Icon/icon'
|
|
12
13
|
import type { ReactInputProps } from './components/Input/input'
|
|
14
|
+
import type { ReactListProps } from './components/List/list'
|
|
13
15
|
import type { ReactMenuProps } from './components/Menu/menu'
|
|
14
16
|
import type { ReactModalProps } from './components/Modal/modal'
|
|
15
17
|
import type { ReactPopoverProps } from './components/Popover/popover'
|
|
16
18
|
import type { ProgressProps } from './components/Progress/progress'
|
|
17
19
|
import type { ReactRadioProps } from './components/Radio/radio'
|
|
18
20
|
import type { RatingProps } from './components/Rating/rating'
|
|
21
|
+
import type { ReactSelectProps } from './components/Select/select'
|
|
19
22
|
import type { ReactSheetProps } from './components/Sheet/sheet'
|
|
20
23
|
import type { ReactSliderProps } from './components/Slider/slider'
|
|
21
24
|
import type { SpinnerProps } from './components/Spinner/spinner'
|
|
@@ -38,14 +41,17 @@ declare module 'webcoreui/react' {
|
|
|
38
41
|
export const Checkbox: FC<ReactCheckboxProps>
|
|
39
42
|
export const Collapsible: FC<ReactCollapsibleProps>
|
|
40
43
|
export const ConditionalWrapper: FC<ReactConditionalWrapperProps>
|
|
44
|
+
export const Group: FC<ReactGroupProps>
|
|
41
45
|
export const Icon: FC<IconProps>
|
|
42
46
|
export const Input: FC<ReactInputProps>
|
|
47
|
+
export const List: FC<ReactListProps>
|
|
43
48
|
export const Menu: FC<ReactMenuProps>
|
|
44
49
|
export const Modal: FC<ReactModalProps>
|
|
45
50
|
export const Popover: FC<ReactPopoverProps>
|
|
46
51
|
export const Progress: FC<ProgressProps>
|
|
47
52
|
export const Radio: FC<ReactRadioProps>
|
|
48
53
|
export const Rating: FC<RatingProps>
|
|
54
|
+
export const Select: FC<ReactSelectProps>
|
|
49
55
|
export const Sheet: FC<ReactSheetProps>
|
|
50
56
|
export const Slider: FC<ReactSliderProps>
|
|
51
57
|
export const Spinner: FC<SpinnerProps>
|
package/react.js
CHANGED
|
@@ -7,14 +7,17 @@ import CardComponent from './components/Card/Card.tsx'
|
|
|
7
7
|
import CheckboxComponent from './components/Checkbox/Checkbox.tsx'
|
|
8
8
|
import CollapsibleComponent from './components/Collapsible/Collapsible.tsx'
|
|
9
9
|
import ConditionalWrapperComponent from './components/ConditionalWrapper/ConditionalWrapper.tsx'
|
|
10
|
+
import GroupComponent from './components/Group/Group.tsx'
|
|
10
11
|
import IconComponent from './components/Icon/Icon.tsx'
|
|
11
12
|
import InputComponent from './components/Input/Input.tsx'
|
|
13
|
+
import ListComponent from './components/List/List.tsx'
|
|
12
14
|
import MenuComponent from './components/Menu/Menu.tsx'
|
|
13
15
|
import ModalComponent from './components/Modal/Modal.tsx'
|
|
14
16
|
import PopoverComponent from './components/Popover/Popover.tsx'
|
|
15
17
|
import ProgressComponent from './components/Progress/Progress.tsx'
|
|
16
18
|
import RadioComponent from './components/Radio/Radio.tsx'
|
|
17
19
|
import RatingComponent from './components/Rating/Rating.tsx'
|
|
20
|
+
import SelectComponent from './components/Select/Select.tsx'
|
|
18
21
|
import SheetComponent from './components/Sheet/Sheet.tsx'
|
|
19
22
|
import SliderComponent from './components/Slider/Slider.tsx'
|
|
20
23
|
import SpinnerComponent from './components/Spinner/Spinner.tsx'
|
|
@@ -36,14 +39,17 @@ export const Card = CardComponent
|
|
|
36
39
|
export const Checkbox = CheckboxComponent
|
|
37
40
|
export const Collapsible = CollapsibleComponent
|
|
38
41
|
export const ConditionalWrapper = ConditionalWrapperComponent
|
|
42
|
+
export const Group = GroupComponent
|
|
39
43
|
export const Icon = IconComponent
|
|
40
44
|
export const Input = InputComponent
|
|
45
|
+
export const List = ListComponent
|
|
41
46
|
export const Menu = MenuComponent
|
|
42
47
|
export const Modal = ModalComponent
|
|
43
48
|
export const Popover = PopoverComponent
|
|
44
49
|
export const Progress = ProgressComponent
|
|
45
50
|
export const Radio = RadioComponent
|
|
46
51
|
export const Rating = RatingComponent
|
|
52
|
+
export const Select = SelectComponent
|
|
47
53
|
export const Sheet = SheetComponent
|
|
48
54
|
export const Slider = SliderComponent
|
|
49
55
|
export const Spinner = SpinnerComponent
|
package/scss/config/mixins.scss
CHANGED
|
@@ -330,18 +330,20 @@
|
|
|
330
330
|
}
|
|
331
331
|
|
|
332
332
|
@mixin transition($args...) {
|
|
333
|
-
$
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
@
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
333
|
+
@if (not $disableAnimations) {
|
|
334
|
+
$property: all;
|
|
335
|
+
$speed: .3s;
|
|
336
|
+
|
|
337
|
+
@each $arg in $args {
|
|
338
|
+
@if (meta.type-of($arg) == 'number') {
|
|
339
|
+
$speed: $arg;
|
|
340
|
+
} @else {
|
|
341
|
+
$property: $arg;
|
|
342
|
+
}
|
|
341
343
|
}
|
|
344
|
+
|
|
345
|
+
transition: $property $speed cubic-bezier(0.4, 0.0, 0.2, 1);
|
|
342
346
|
}
|
|
343
|
-
|
|
344
|
-
transition: $property $speed cubic-bezier(0.4, 0.0, 0.2, 1);
|
|
345
347
|
}
|
|
346
348
|
|
|
347
349
|
@mixin typography($args...) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
$disableAnimations: false !default;
|
package/scss/config.scss
CHANGED
package/scss/global/utility.scss
CHANGED
package/svelte.d.ts
CHANGED
|
@@ -7,14 +7,17 @@ import type { CardProps } from './components/Card/card'
|
|
|
7
7
|
import type { SvelteCheckboxProps } from './components/Checkbox/checkbox'
|
|
8
8
|
import type { CollapsibleProps } from './components/Collapsible/collapsible'
|
|
9
9
|
import type { ConditionalWrapperProps } from './components/ConditionalWrapper/conditionalwrapper'
|
|
10
|
+
import type { GroupProps } from './components/Group/group'
|
|
10
11
|
import type { IconProps } from './components/Icon/icon'
|
|
11
12
|
import type { SvelteInputProps } from './components/Input/input'
|
|
13
|
+
import type { SvelteListProps } from './components/List/list'
|
|
12
14
|
import type { MenuProps } from './components/Menu/menu'
|
|
13
15
|
import type { ModalProps } from './components/Modal/modal'
|
|
14
16
|
import type { PopoverProps } from './components/Popover/popover'
|
|
15
17
|
import type { ProgressProps } from './components/Progress/progress'
|
|
16
18
|
import type { SvelteRadioProps } from './components/Radio/radio'
|
|
17
19
|
import type { RatingProps } from './components/Rating/rating'
|
|
20
|
+
import type { SvelteSelectProps } from './components/Select/select'
|
|
18
21
|
import type { SheetProps } from './components/Sheet/sheet'
|
|
19
22
|
import type { SvelteSliderProps } from './components/Slider/slider'
|
|
20
23
|
import type { SpinnerProps } from './components/Spinner/spinner'
|
|
@@ -26,7 +29,7 @@ import type { ThemeSwitcherProps } from './components/ThemeSwitcher/themeswitche
|
|
|
26
29
|
import type { TimelineProps } from './components/Timeline/timeline'
|
|
27
30
|
import type { TimelineItemProps } from './components/TimelineItem/timelineitem'
|
|
28
31
|
import type { ToastProps } from './components/Toast/toast'
|
|
29
|
-
|
|
32
|
+
|
|
30
33
|
declare module 'webcoreui/svelte' {
|
|
31
34
|
export function Accordion(_props: AccordionProps): any
|
|
32
35
|
export function Alert(_props: AlertProps): any
|
|
@@ -37,14 +40,17 @@ declare module 'webcoreui/svelte' {
|
|
|
37
40
|
export function Checkbox(_props: SvelteCheckboxProps): any
|
|
38
41
|
export function Collapsible(_props: CollapsibleProps): any
|
|
39
42
|
export function ConditionalWrapper(_props: ConditionalWrapperProps): any
|
|
43
|
+
export function Group(_props: GroupProps): any
|
|
40
44
|
export function Icon(_props: IconProps): any
|
|
41
45
|
export function Input(_props: SvelteInputProps): any
|
|
46
|
+
export function List(_props: SvelteListProps): any
|
|
42
47
|
export function Menu(_props: MenuProps): any
|
|
43
48
|
export function Modal(_props: ModalProps): any
|
|
44
49
|
export function Popover(_props: PopoverProps): any
|
|
45
50
|
export function Progress(_props: ProgressProps): any
|
|
46
51
|
export function Radio(_props: SvelteRadioProps): any
|
|
47
52
|
export function Rating(_props: RatingProps): any
|
|
53
|
+
export function Select(_props: SvelteSelectProps): any
|
|
48
54
|
export function Sheet(_props: SheetProps): any
|
|
49
55
|
export function Slider(_props: SvelteSliderProps): any
|
|
50
56
|
export function Spinner(_props: SpinnerProps): any
|
package/svelte.js
CHANGED
|
@@ -7,14 +7,17 @@ import CardComponent from './components/Card/Card.svelte'
|
|
|
7
7
|
import CheckboxComponent from './components/Checkbox/Checkbox.svelte'
|
|
8
8
|
import CollapsibleComponent from './components/Collapsible/Collapsible.svelte'
|
|
9
9
|
import ConditionalWrapperComponent from './components/ConditionalWrapper/ConditionalWrapper.svelte'
|
|
10
|
+
import GroupComponent from './components/Group/Group.svelte'
|
|
10
11
|
import IconComponent from './components/Icon/Icon.svelte'
|
|
11
12
|
import InputComponent from './components/Input/Input.svelte'
|
|
13
|
+
import ListComponent from './components/List/List.svelte'
|
|
12
14
|
import MenuComponent from './components/Menu/Menu.svelte'
|
|
13
15
|
import ModalComponent from './components/Modal/Modal.svelte'
|
|
14
16
|
import PopoverComponent from './components/Popover/Popover.svelte'
|
|
15
17
|
import ProgressComponent from './components/Progress/Progress.svelte'
|
|
16
18
|
import RadioComponent from './components/Radio/Radio.svelte'
|
|
17
19
|
import RatingComponent from './components/Rating/Rating.svelte'
|
|
20
|
+
import SelectComponent from './components/Select/Select.svelte'
|
|
18
21
|
import SheetComponent from './components/Sheet/Sheet.svelte'
|
|
19
22
|
import SliderComponent from './components/Slider/Slider.svelte'
|
|
20
23
|
import SpinnerComponent from './components/Spinner/Spinner.svelte'
|
|
@@ -36,14 +39,17 @@ export const Card = CardComponent
|
|
|
36
39
|
export const Checkbox = CheckboxComponent
|
|
37
40
|
export const Collapsible = CollapsibleComponent
|
|
38
41
|
export const ConditionalWrapper = ConditionalWrapperComponent
|
|
42
|
+
export const Group = GroupComponent
|
|
39
43
|
export const Icon = IconComponent
|
|
40
44
|
export const Input = InputComponent
|
|
45
|
+
export const List = ListComponent
|
|
41
46
|
export const Menu = MenuComponent
|
|
42
47
|
export const Modal = ModalComponent
|
|
43
48
|
export const Popover = PopoverComponent
|
|
44
49
|
export const Progress = ProgressComponent
|
|
45
50
|
export const Radio = RadioComponent
|
|
46
51
|
export const Rating = RatingComponent
|
|
52
|
+
export const Select = SelectComponent
|
|
47
53
|
export const Sheet = SheetComponent
|
|
48
54
|
export const Slider = SliderComponent
|
|
49
55
|
export const Spinner = SpinnerComponent
|
package/utils/cookies.ts
CHANGED
|
@@ -4,17 +4,17 @@ export const setCookie = (name: string, value: string, days: number) => {
|
|
|
4
4
|
if (days) {
|
|
5
5
|
const date = new Date()
|
|
6
6
|
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000))
|
|
7
|
-
expires =
|
|
7
|
+
expires = `; expires=${date.toUTCString()}`
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
document.cookie = name
|
|
10
|
+
document.cookie = `${name}=${value || ''}${expires}; path=/`
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
export const getCookie = (name: string) => {
|
|
14
14
|
const cookies = document.cookie.split(';')
|
|
15
15
|
|
|
16
16
|
for (const cookie of cookies) {
|
|
17
|
-
if (cookie.indexOf(name
|
|
17
|
+
if (cookie.indexOf(`${name}=`) > -1) {
|
|
18
18
|
return cookie.split('=')[1]
|
|
19
19
|
}
|
|
20
20
|
}
|
|
@@ -23,6 +23,6 @@ export const getCookie = (name: string) => {
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
export const removeCookie = (name: string) => {
|
|
26
|
-
document.cookie = name
|
|
26
|
+
document.cookie = `${name}=; Max-Age=-1;`
|
|
27
27
|
}
|
|
28
28
|
|
package/utils/debounce.ts
CHANGED
package/utils/event.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export const dispatch = (event: string, detail:
|
|
1
|
+
export const dispatch = (event: string, detail: unknown) => {
|
|
2
2
|
document.dispatchEvent(new CustomEvent(event, {
|
|
3
3
|
detail
|
|
4
4
|
}))
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
-
export const listen = (event: string, callback: (e: any) =>
|
|
7
|
+
export const listen = (event: string, callback: (e: any) => unknown) => {
|
|
8
8
|
const fn = (e: any) => callback(e.detail)
|
|
9
9
|
|
|
10
10
|
document.addEventListener(event, fn)
|
package/utils/interpolate.ts
CHANGED
|
@@ -3,21 +3,21 @@ export const clamp = (
|
|
|
3
3
|
min: number,
|
|
4
4
|
max: number
|
|
5
5
|
) => Math.min(Math.max(num, min), max)
|
|
6
|
-
|
|
6
|
+
|
|
7
7
|
export const lerp = (
|
|
8
8
|
x: number,
|
|
9
9
|
y: number,
|
|
10
10
|
z: number
|
|
11
|
-
) => x * (1 - z) + y * z
|
|
12
|
-
|
|
11
|
+
) => (x * (1 - z)) + (y * z)
|
|
12
|
+
|
|
13
13
|
export const invlerp = (
|
|
14
14
|
x: number,
|
|
15
15
|
y: number,
|
|
16
16
|
z: number
|
|
17
17
|
) => clamp((z - x) / (y - x), 0, 1)
|
|
18
|
-
|
|
18
|
+
|
|
19
19
|
export const interpolate = (
|
|
20
20
|
value: number,
|
|
21
21
|
input: [x: number, y: number],
|
|
22
|
-
output: [x: number, y: number]
|
|
22
|
+
output: [x: number, y: number]
|
|
23
23
|
) => lerp(output[0], output[1], invlerp(input[0], input[1], value))
|
package/utils/modal.ts
CHANGED
|
@@ -1,59 +1,122 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
type Callback = {
|
|
2
|
+
trigger: Element | null
|
|
3
|
+
modal: HTMLElement
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
type Modal = {
|
|
7
|
+
trigger: string
|
|
8
|
+
modal: string
|
|
9
|
+
onOpen?: (args: Callback) => unknown
|
|
10
|
+
onClose?: (args: Callback) => unknown
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export const modal = (config: Modal | string) => {
|
|
14
|
+
const {
|
|
15
|
+
trigger,
|
|
16
|
+
modal,
|
|
17
|
+
onOpen,
|
|
18
|
+
onClose
|
|
19
|
+
} = (typeof config === 'string' ? {} : config) as Modal
|
|
20
|
+
|
|
21
|
+
const modalSelector = typeof config === 'string' ? config : modal
|
|
22
|
+
|
|
23
|
+
const triggerDOM = document.querySelector(trigger)
|
|
24
|
+
const modalDOM = document.querySelector(modalSelector) as HTMLElement
|
|
25
|
+
|
|
26
|
+
if (modalDOM) {
|
|
27
|
+
const closeOptions = modalDOM.dataset.close?.split(',')
|
|
3
28
|
|
|
4
|
-
if (htmlElement) {
|
|
5
29
|
const handleClose = {
|
|
6
|
-
icon
|
|
7
|
-
const close =
|
|
30
|
+
icon() {
|
|
31
|
+
const close = modalDOM.querySelector('[data-id="close"]')
|
|
8
32
|
|
|
9
33
|
const listener = () => {
|
|
10
|
-
|
|
34
|
+
modalDOM.dataset.show = ''
|
|
11
35
|
|
|
12
|
-
|
|
36
|
+
onClose?.({
|
|
37
|
+
trigger: triggerDOM,
|
|
38
|
+
modal: modalDOM
|
|
39
|
+
})
|
|
13
40
|
}
|
|
14
41
|
|
|
15
|
-
|
|
42
|
+
return {
|
|
43
|
+
add: () => close?.addEventListener('click', listener),
|
|
44
|
+
remove: () => close?.removeEventListener('click', listener)
|
|
45
|
+
}
|
|
16
46
|
},
|
|
17
|
-
|
|
18
|
-
esc
|
|
47
|
+
|
|
48
|
+
esc() {
|
|
19
49
|
const listener = (event: KeyboardEvent) => {
|
|
20
|
-
if (event.key === 'Escape') {
|
|
21
|
-
|
|
50
|
+
if (modalDOM.dataset.show && event.key === 'Escape') {
|
|
51
|
+
modalDOM.dataset.show = ''
|
|
52
|
+
|
|
53
|
+
onClose?.({
|
|
54
|
+
trigger: triggerDOM,
|
|
55
|
+
modal: modalDOM
|
|
56
|
+
})
|
|
22
57
|
|
|
23
|
-
document.removeEventListener('keydown', listener)
|
|
24
58
|
}
|
|
25
59
|
}
|
|
26
60
|
|
|
27
|
-
|
|
61
|
+
return {
|
|
62
|
+
add: () => document.addEventListener('keydown', listener),
|
|
63
|
+
remove: () => document.removeEventListener('keydown', listener)
|
|
64
|
+
}
|
|
28
65
|
},
|
|
29
|
-
|
|
30
|
-
overlay
|
|
31
|
-
const close =
|
|
66
|
+
|
|
67
|
+
overlay() {
|
|
68
|
+
const close = modalDOM.nextElementSibling
|
|
32
69
|
|
|
33
70
|
const listener = () => {
|
|
34
|
-
|
|
71
|
+
modalDOM.dataset.show = ''
|
|
35
72
|
|
|
36
|
-
|
|
73
|
+
onClose?.({
|
|
74
|
+
trigger: triggerDOM,
|
|
75
|
+
modal: modalDOM
|
|
76
|
+
})
|
|
37
77
|
}
|
|
38
78
|
|
|
39
|
-
|
|
79
|
+
return {
|
|
80
|
+
add: () => close?.addEventListener('click', listener),
|
|
81
|
+
remove: () => close?.removeEventListener('click', listener)
|
|
82
|
+
}
|
|
40
83
|
}
|
|
41
84
|
}
|
|
42
85
|
|
|
43
|
-
const
|
|
86
|
+
const handleOpen = () => {
|
|
87
|
+
modalDOM.dataset.show = 'true'
|
|
88
|
+
|
|
89
|
+
onOpen?.({
|
|
90
|
+
trigger: triggerDOM,
|
|
91
|
+
modal: modalDOM
|
|
92
|
+
})
|
|
93
|
+
}
|
|
44
94
|
|
|
45
|
-
|
|
95
|
+
triggerDOM?.addEventListener('click', handleOpen)
|
|
46
96
|
|
|
47
97
|
closeOptions?.forEach(option => {
|
|
48
|
-
handleClose[option as keyof typeof handleClose]()
|
|
98
|
+
handleClose[option as keyof typeof handleClose]().add()
|
|
49
99
|
})
|
|
100
|
+
|
|
101
|
+
return {
|
|
102
|
+
open() {
|
|
103
|
+
handleOpen()
|
|
104
|
+
},
|
|
105
|
+
remove() {
|
|
106
|
+
triggerDOM?.removeEventListener('click', handleOpen)
|
|
107
|
+
|
|
108
|
+
closeOptions?.forEach(option => {
|
|
109
|
+
handleClose[option as keyof typeof handleClose]().remove()
|
|
110
|
+
})
|
|
111
|
+
}
|
|
112
|
+
}
|
|
50
113
|
}
|
|
51
114
|
}
|
|
52
115
|
|
|
53
|
-
export const closeModal = (
|
|
54
|
-
const
|
|
116
|
+
export const closeModal = (modal: string) => {
|
|
117
|
+
const modalDOM = document.querySelector(modal) as HTMLElement
|
|
55
118
|
|
|
56
|
-
if (
|
|
57
|
-
|
|
119
|
+
if (modalDOM) {
|
|
120
|
+
modalDOM.dataset.show = ''
|
|
58
121
|
}
|
|
59
122
|
}
|