@tuspe/components 1.8.5 → 1.8.7

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 CHANGED
@@ -62,11 +62,13 @@ Easily replace most buttons in your project with this versatile button component
62
62
  noCenter?: boolean
63
63
  noHeight?: boolean
64
64
  noPadding?: boolean
65
+ noSpinner?: boolean
65
66
  onclick?: any
66
67
  preload?: 'hover' | 'tap'
67
68
  rel?: string
68
69
  role?: string
69
70
  rounded?: 'full' | 'lg' | 'none' | 'sm'
71
+ spinnerColor?: 'black' | 'white'
70
72
  target?: '_blank' | '_top' | undefined
71
73
  title?: string | undefined
72
74
  type?: 'submit'
@@ -25,11 +25,13 @@
25
25
  noCenter?: boolean
26
26
  noHeight?: boolean
27
27
  noPadding?: boolean
28
+ noSpinner?: boolean
28
29
  onclick?: any
29
30
  preload?: 'hover' | 'tap'
30
31
  rel?: string
31
32
  role?: string
32
33
  rounded?: 'full' | 'lg' | 'none' | 'sm'
34
+ spinnerColor?: 'black' | 'white'
33
35
  target?: '_blank' | '_top' | undefined
34
36
  title?: string | undefined
35
37
  type?: 'submit'
@@ -60,11 +62,13 @@
60
62
  noCenter = false,
61
63
  noHeight,
62
64
  noPadding,
65
+ noSpinner,
63
66
  onclick = undefined,
64
67
  preload,
65
68
  rel = 'noopener noreferrer',
66
69
  role,
67
70
  rounded = 'sm',
71
+ spinnerColor = 'white',
68
72
  target,
69
73
  title,
70
74
  type,
@@ -139,11 +143,40 @@
139
143
  </button>
140
144
  {:else}
141
145
  <button {onclick} class={classes} {disabled} {title} {type}>
142
- {@render children?.()}
146
+ {#if $loading && !noSpinner}
147
+ <span class={`loader ${spinnerColor}`}></span>
148
+ {:else}
149
+ {@render children?.()}
150
+ {/if}
143
151
  </button>
144
152
  {/if}
145
153
 
146
154
  <style scoped>
155
+ .loader {
156
+ animation: rotation 1s linear infinite;
157
+ border-radius: 50%;
158
+ border-right: 6px solid transparent;
159
+ border-top-style: solid;
160
+ border-top-width: 6px;
161
+ box-sizing: border-box;
162
+ display: inline-block;
163
+ height: 20px;
164
+ width: 20px;
165
+ }
166
+ .loader.white {
167
+ border-top-color: #000;
168
+ }
169
+ .loader.white {
170
+ border-top-color: #fff;
171
+ }
172
+ @keyframes rotation {
173
+ 0% {
174
+ transform: rotate(0deg);
175
+ }
176
+ 100% {
177
+ transform: rotate(360deg);
178
+ }
179
+ }
147
180
  a {
148
181
  text-decoration: none;
149
182
  }
@@ -22,11 +22,13 @@ interface Props {
22
22
  noCenter?: boolean;
23
23
  noHeight?: boolean;
24
24
  noPadding?: boolean;
25
+ noSpinner?: boolean;
25
26
  onclick?: any;
26
27
  preload?: 'hover' | 'tap';
27
28
  rel?: string;
28
29
  role?: string;
29
30
  rounded?: 'full' | 'lg' | 'none' | 'sm';
31
+ spinnerColor?: 'black' | 'white';
30
32
  target?: '_blank' | '_top' | undefined;
31
33
  title?: string | undefined;
32
34
  type?: 'submit';
@@ -7,17 +7,18 @@
7
7
  onchange?: () => void
8
8
  checked?: boolean
9
9
  disabled?: boolean
10
+ group?: boolean
10
11
  id?: string
11
12
  outerClass?: string
12
13
  required?: boolean
13
- value?: string
14
+ value?: number | string
14
15
  }
15
16
 
16
- let {children, onchange, checked = $bindable(false), disabled, id, outerClass, required, value}: Props = $props()
17
+ let {children, onchange, checked = $bindable(false), disabled, group = $bindable(), id, outerClass, required, value, ...props}: Props = $props()
17
18
  </script>
18
19
 
19
20
  <label class={outerClass}>
20
- <input bind:checked disabled={disabled || $loading} {id} {onchange} {required} type="checkbox" {value} />
21
+ <input bind:checked disabled={disabled || $loading} {id} {onchange} {required} type="checkbox" {value} {...props} />
21
22
  <span>
22
23
  {@render children?.()}
23
24
  {#if required}<sup>*</sup>{/if}
@@ -4,11 +4,12 @@ interface Props {
4
4
  onchange?: () => void;
5
5
  checked?: boolean;
6
6
  disabled?: boolean;
7
+ group?: boolean;
7
8
  id?: string;
8
9
  outerClass?: string;
9
10
  required?: boolean;
10
- value?: string;
11
+ value?: number | string;
11
12
  }
12
- declare const Checkbox: import("svelte").Component<Props, {}, "checked">;
13
+ declare const Checkbox: import("svelte").Component<Props, {}, "checked" | "group">;
13
14
  type Checkbox = ReturnType<typeof Checkbox>;
14
15
  export default Checkbox;
package/dist/Input.svelte CHANGED
@@ -35,7 +35,8 @@
35
35
  required = false,
36
36
  step,
37
37
  type = 'text',
38
- value = $bindable()
38
+ value = $bindable(),
39
+ ...props
39
40
  }: Props = $props()
40
41
 
41
42
  let classes = $state('')
@@ -63,9 +64,23 @@
63
64
  {required}
64
65
  {placeholder}
65
66
  rows={4}
67
+ {...props}
66
68
  ></textarea>
67
69
  {:else if ['date', 'number'].includes(type)}
68
- <input bind:value class={classes} disabled={disabled || $loading} lang="fi-FI" {max} {min} {onchange} {required} {step} {type} {placeholder} />
70
+ <input
71
+ bind:value
72
+ class={classes}
73
+ disabled={disabled || $loading}
74
+ lang="fi-FI"
75
+ {max}
76
+ {min}
77
+ {onchange}
78
+ {required}
79
+ {step}
80
+ {type}
81
+ {placeholder}
82
+ {...props}
83
+ />
69
84
  {:else}
70
85
  <input
71
86
  bind:value
@@ -78,6 +93,7 @@
78
93
  maxlength={max ? Number(max) : undefined}
79
94
  minlength={min ? Number(min) : undefined}
80
95
  onkeyup={onchange}
96
+ {...props}
81
97
  />
82
98
  {#if type === 'search'}
83
99
  <svg
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tuspe/components",
3
- "version": "1.8.5",
3
+ "version": "1.8.7",
4
4
  "description": "A reusable SvelteKit component library for form elements, breadcrumbs, prices and images.",
5
5
  "keywords": [
6
6
  "svelteKit",
@@ -60,23 +60,23 @@
60
60
  "svelte": "^5.20.2"
61
61
  },
62
62
  "devDependencies": {
63
- "@eslint/compat": "^1.2.8",
64
- "@eslint/js": "^9.24.0",
63
+ "@eslint/compat": "^1.2.9",
64
+ "@eslint/js": "^9.26.0",
65
65
  "@sveltejs/adapter-static": "^3.0.8",
66
- "@sveltejs/kit": "^2.20.5",
67
- "@sveltejs/package": "^2.3.10",
66
+ "@sveltejs/kit": "^2.20.8",
67
+ "@sveltejs/package": "^2.3.11",
68
68
  "@sveltejs/vite-plugin-svelte": "^5.0.3",
69
69
  "eslint-config-prettier": "^10.1.2",
70
70
  "eslint-plugin-svelte": "^3.5.1",
71
- "eslint": "^9.24.0",
71
+ "eslint": "^9.26.0",
72
72
  "globals": "^16.0.0",
73
73
  "prettier-plugin-svelte": "^3.3.3",
74
74
  "prettier": "^3.5.3",
75
- "publint": "^0.3.11",
76
- "svelte-check": "^4.1.5",
77
- "svelte": "^5.25.12",
78
- "typescript-eslint": "^8.29.1",
75
+ "publint": "^0.3.12",
76
+ "svelte-check": "^4.1.7",
77
+ "svelte": "^5.28.2",
78
+ "typescript-eslint": "^8.31.1",
79
79
  "typescript": "^5.8.3",
80
- "vite": "^6.2.6"
80
+ "vite": "^6.3.4"
81
81
  }
82
- }
82
+ }