svelte-time-input 0.3.0 → 0.5.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/README.md CHANGED
@@ -5,7 +5,7 @@ Segmented time input fields for your Svelte 5 app. Svelte port of the input part
5
5
  ## Installation
6
6
 
7
7
  ```sh
8
- npm install svelte-time-input
8
+ npm install svelte-time-input svelte-date-utils
9
9
  ```
10
10
 
11
11
  Requires Svelte 5 or later. It installs `svelte-date-input` as a dependency.
@@ -15,13 +15,18 @@ Requires Svelte 5 or later. It installs `svelte-date-input` as a dependency.
15
15
  ```svelte
16
16
  <script lang="ts">
17
17
  import TimeInput from 'svelte-time-input';
18
+ import { AdapterDate } from 'svelte-date-utils';
19
+ import { provideDateAdapter } from 'svelte-date-utils';
18
20
 
21
+ provideDateAdapter(new AdapterDate());
19
22
  let value = $state<string | null>('22:15');
20
23
  </script>
21
24
 
22
25
  <TimeInput name="time" onChange={(nextValue) => (value = nextValue)} {value} />
23
26
  ```
24
27
 
28
+ The adapter is required and comes from Svelte context. Call `provideDateAdapter(adapter)` in this component or an ancestor before rendering `TimeInput`; without it, the input throws an error. The public time value remains an `HH:mm[:ss]` string, while the adapter supplies date operations used internally. `AdapterDate` uses native `Date`; date-fns, Luxon and `@internationalized/date` adapters are exported from `svelte-date-utils/date-fns`, `svelte-date-utils/luxon` and `svelte-date-utils/internationalized`.
29
+
25
30
  `value` is an `HH:mm[:ss]` string (a `Date` is accepted too) and `onChange` receives such a string, or `null`.
26
31
 
27
32
  ## Props
@@ -1,10 +1,12 @@
1
- <script lang="ts">
1
+ <script lang="ts" generics="T">
2
2
  import { SegmentedInput } from 'svelte-date-input';
3
3
 
4
4
  import type { ComponentProps } from 'svelte';
5
- import type { LooseValuePiece, TimeDetail } from 'svelte-date-input';
5
+ import type { TimeDetail } from 'svelte-date-input';
6
6
 
7
- type TimeInputProps = Omit<
7
+ type LooseValuePiece<T> = string | T | null;
8
+
9
+ type TimeInputProps<T> = Omit<
8
10
  ComponentProps<typeof SegmentedInput>,
9
11
  | 'dayAriaLabel'
10
12
  | 'dayPlaceholder'
@@ -32,10 +34,10 @@
32
34
  /**
33
35
  * Time as an `HH:mm[:ss]` string or a Date.
34
36
  */
35
- value?: LooseValuePiece;
37
+ value?: LooseValuePiece<T>;
36
38
  };
37
39
 
38
- let { onChange, ...props }: TimeInputProps = $props();
40
+ let { onChange, ...props }: TimeInputProps<T> = $props();
39
41
  </script>
40
42
 
41
43
  <SegmentedInput
@@ -1,7 +1,8 @@
1
1
  import { SegmentedInput } from 'svelte-date-input';
2
2
  import type { ComponentProps } from 'svelte';
3
- import type { LooseValuePiece, TimeDetail } from 'svelte-date-input';
4
- type TimeInputProps = Omit<ComponentProps<typeof SegmentedInput>, 'dayAriaLabel' | 'dayPlaceholder' | 'kind' | 'maxDate' | 'maxDetail' | 'minDate' | 'monthAriaLabel' | 'monthPlaceholder' | 'onChange' | 'value' | 'yearAriaLabel' | 'yearPlaceholder'> & {
3
+ import type { TimeDetail } from 'svelte-date-input';
4
+ type LooseValuePiece<T> = string | T | null;
5
+ type TimeInputProps<T> = Omit<ComponentProps<typeof SegmentedInput>, 'dayAriaLabel' | 'dayPlaceholder' | 'kind' | 'maxDate' | 'maxDetail' | 'minDate' | 'monthAriaLabel' | 'monthPlaceholder' | 'onChange' | 'value' | 'yearAriaLabel' | 'yearPlaceholder'> & {
5
6
  /**
6
7
  * The most detailed field the user shall see.
7
8
  *
@@ -15,8 +16,29 @@ type TimeInputProps = Omit<ComponentProps<typeof SegmentedInput>, 'dayAriaLabel'
15
16
  /**
16
17
  * Time as an `HH:mm[:ss]` string or a Date.
17
18
  */
18
- value?: LooseValuePiece;
19
+ value?: LooseValuePiece<T>;
19
20
  };
20
- declare const TimeInput: import("svelte").Component<TimeInputProps, {}, "">;
21
- type TimeInput = ReturnType<typeof TimeInput>;
21
+ declare function $$render<T>(): {
22
+ props: TimeInputProps<T>;
23
+ exports: {};
24
+ bindings: "";
25
+ slots: {};
26
+ events: {};
27
+ };
28
+ declare class __sveltets_Render<T> {
29
+ props(): ReturnType<typeof $$render<T>>['props'];
30
+ events(): ReturnType<typeof $$render<T>>['events'];
31
+ slots(): ReturnType<typeof $$render<T>>['slots'];
32
+ bindings(): "";
33
+ exports(): {};
34
+ }
35
+ interface $$IsomorphicComponent {
36
+ new <T>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
37
+ $$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
38
+ } & ReturnType<__sveltets_Render<T>['exports']>;
39
+ <T>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
40
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
41
+ }
42
+ declare const TimeInput: $$IsomorphicComponent;
43
+ type TimeInput<T> = InstanceType<typeof TimeInput<T>>;
22
44
  export default TimeInput;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svelte-time-input",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "description": "Segmented time input fields for your Svelte app.",
5
5
  "keywords": [
6
6
  "input",
@@ -49,7 +49,7 @@
49
49
  "watch": "svelte-package --input src --output dist --watch"
50
50
  },
51
51
  "dependencies": {
52
- "svelte-date-input": "^0.3.0"
52
+ "svelte-date-input": "^0.5.0"
53
53
  },
54
54
  "devDependencies": {
55
55
  "@sveltejs/package": "^3.0.1",
@@ -1,10 +1,12 @@
1
- <script lang="ts">
1
+ <script lang="ts" generics="T">
2
2
  import { SegmentedInput } from 'svelte-date-input';
3
3
 
4
4
  import type { ComponentProps } from 'svelte';
5
- import type { LooseValuePiece, TimeDetail } from 'svelte-date-input';
5
+ import type { TimeDetail } from 'svelte-date-input';
6
6
 
7
- type TimeInputProps = Omit<
7
+ type LooseValuePiece<T> = string | T | null;
8
+
9
+ type TimeInputProps<T> = Omit<
8
10
  ComponentProps<typeof SegmentedInput>,
9
11
  | 'dayAriaLabel'
10
12
  | 'dayPlaceholder'
@@ -32,10 +34,10 @@
32
34
  /**
33
35
  * Time as an `HH:mm[:ss]` string or a Date.
34
36
  */
35
- value?: LooseValuePiece;
37
+ value?: LooseValuePiece<T>;
36
38
  };
37
39
 
38
- let { onChange, ...props }: TimeInputProps = $props();
40
+ let { onChange, ...props }: TimeInputProps<T> = $props();
39
41
  </script>
40
42
 
41
43
  <SegmentedInput