sveltacular 0.0.51 → 0.0.53

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.
@@ -4,8 +4,8 @@ import type { SearchFunction } from '../list-box/list-box.js';
4
4
  declare const __propDef: {
5
5
  props: {
6
6
  mode?: "new" | "existing" | undefined;
7
- newValue?: string | undefined;
8
- existingValue?: string | undefined;
7
+ newValue?: string | null | undefined;
8
+ existingValue?: string | null | undefined;
9
9
  items?: DropdownOption[] | undefined;
10
10
  size?: FormFieldSizeOptions | undefined;
11
11
  disabled?: boolean | undefined;
@@ -1,17 +1,26 @@
1
- <script>import { currentDateTime } from "../../helpers/date.js";
1
+ <script>import { currentDateTime, isDate, isDateOrDateTime, isDateTime } from "../../helpers/date.js";
2
2
  import { uniqueId } from "../../helpers/unique-id.js";
3
3
  import FormField from "../form-field.svelte";
4
4
  import FormLabel from "../form-label.svelte";
5
5
  const id = uniqueId();
6
6
  export let value = void 0;
7
+ export let defaultValue = void 0;
7
8
  export let size = "full";
8
9
  export let placeholder = "";
9
10
  export let nullable = false;
10
11
  export let enabled = true;
11
12
  export let type = "date";
12
13
  export let required = false;
13
- const defaultValue = value || currentDateTime();
14
- const getDefaultValue = () => type == "date" ? defaultValue.substring(0, 10) : defaultValue;
14
+ const _defaultValue = defaultValue !== void 0 ? defaultValue : value || currentDateTime();
15
+ const getDefaultValue = () => {
16
+ if (nullable && !isDateOrDateTime(String(_defaultValue))) {
17
+ return null;
18
+ }
19
+ if (type === "date") {
20
+ return isDate(String(_defaultValue)) ? _defaultValue : currentDateTime().substring(0, 10);
21
+ }
22
+ return isDateTime(String(_defaultValue)) ? _defaultValue : currentDateTime();
23
+ };
15
24
  const checkChanged = () => {
16
25
  if (nullable) {
17
26
  value = enabled ? getDefaultValue() : "";
@@ -2,7 +2,8 @@ import { SvelteComponent } from "svelte";
2
2
  import type { FormFieldSizeOptions } from '../../index.js';
3
3
  declare const __propDef: {
4
4
  props: {
5
- value?: string | undefined;
5
+ value?: string | undefined | null;
6
+ defaultValue?: string | undefined | null;
6
7
  size?: FormFieldSizeOptions | undefined;
7
8
  placeholder?: string | undefined;
8
9
  nullable?: boolean | undefined;
@@ -1,5 +1,4 @@
1
1
  <script>import LinkIcon from "../../icons/link-icon.svelte";
2
- import Icon from "../../images/icon.svelte";
3
2
  import FormField from "../form-field.svelte";
4
3
  import FormLabel from "../form-label.svelte";
5
4
  export let size = "md";
@@ -3,7 +3,7 @@ import type { FormFieldSizeOptions } from '../../index.js';
3
3
  declare const __propDef: {
4
4
  props: {
5
5
  size?: FormFieldSizeOptions | undefined;
6
- value: string;
6
+ value: string | null;
7
7
  href?: string | undefined;
8
8
  };
9
9
  events: {
@@ -2,7 +2,7 @@ import { SvelteComponent } from "svelte";
2
2
  import type { FormFieldSizeOptions } from '../../index.js';
3
3
  declare const __propDef: {
4
4
  props: {
5
- value: number;
5
+ value: number | null;
6
6
  symbol?: string | undefined;
7
7
  allowCents?: boolean | undefined;
8
8
  placeholder?: string | undefined;
@@ -14,6 +14,12 @@ export let prefix = null;
14
14
  export let suffix = null;
15
15
  export let step = 1;
16
16
  const valueChanged = () => {
17
+ if (value === null || value === void 0)
18
+ return;
19
+ if (value < min)
20
+ value = min;
21
+ if (value > max)
22
+ value = max;
17
23
  value = roundToDecimals(value, decimals);
18
24
  };
19
25
  </script>
@@ -2,7 +2,7 @@ import { SvelteComponent } from "svelte";
2
2
  import type { FormFieldSizeOptions } from '../../types/form.js';
3
3
  declare const __propDef: {
4
4
  props: {
5
- value?: number | undefined;
5
+ value?: number | null | undefined;
6
6
  placeholder?: string | undefined;
7
7
  size?: FormFieldSizeOptions | undefined;
8
8
  type?: ("number" | "currency") | undefined;
@@ -86,7 +86,7 @@ const keyDown = (event) => {
86
86
  if (isDelete && newValue.length === 0 && props.prevId)
87
87
  props.prevId.focus();
88
88
  };
89
- setValue(value);
89
+ setValue(value ?? "");
90
90
  $:
91
91
  areaCode || localExt || lastFour ? publishChange() : null;
92
92
  </script>
@@ -2,7 +2,7 @@ import { SvelteComponent } from "svelte";
2
2
  import { type FormFieldSizeOptions } from '../../index.js';
3
3
  declare const __propDef: {
4
4
  props: {
5
- value?: string | undefined;
5
+ value?: string | null | undefined;
6
6
  size?: FormFieldSizeOptions | undefined;
7
7
  };
8
8
  events: {
@@ -1,7 +1,7 @@
1
1
  import { SvelteComponent } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
- value?: string | number | boolean | undefined;
4
+ value?: string | number | boolean | null | undefined;
5
5
  group?: string | undefined;
6
6
  disabled?: boolean | undefined;
7
7
  };
@@ -3,7 +3,7 @@ import FormLabel from "../form-label.svelte";
3
3
  import { uniqueId } from "../../helpers/unique-id.js";
4
4
  import RadioBox from "./radio-box.svelte";
5
5
  const id = uniqueId();
6
- export let value = "";
6
+ export let group = "";
7
7
  export let items = [];
8
8
  export let size = "full";
9
9
  export let disabled = false;
@@ -16,7 +16,7 @@ export let required = false;
16
16
  {/if}
17
17
  <div>
18
18
  {#each items as item}
19
- <RadioBox bind:group={value} {disabled} value={item.value}>{item.name}</RadioBox>
19
+ <RadioBox bind:group={group} {disabled} value={item.value}>{item.name}</RadioBox>
20
20
  {/each}
21
21
  </div>
22
22
  </FormField>
@@ -2,7 +2,7 @@ import { SvelteComponent } from "svelte";
2
2
  import type { DropdownOption, FormFieldSizeOptions } from '../../types/form.js';
3
3
  declare const __propDef: {
4
4
  props: {
5
- value?: string | undefined;
5
+ group?: string | undefined;
6
6
  items?: DropdownOption[] | undefined;
7
7
  size?: FormFieldSizeOptions | undefined;
8
8
  disabled?: boolean | undefined;
@@ -3,7 +3,7 @@ import type { FormFieldSizeOptions } from '../../types/form.js';
3
3
  declare const __propDef: {
4
4
  props: {
5
5
  size?: FormFieldSizeOptions | undefined;
6
- value?: string | undefined;
6
+ value?: string | null | undefined;
7
7
  placeholder?: string | undefined;
8
8
  rows?: number | undefined;
9
9
  disabled?: boolean | undefined;
@@ -33,21 +33,22 @@ const onKeyPress = (e) => {
33
33
  }
34
34
  };
35
35
  const onInput = (e) => {
36
+ const cleanValue = String(value);
36
37
  if (textCase === "lower") {
37
- value = value.toLowerCase();
38
+ value = cleanValue.toLowerCase();
38
39
  } else if (textCase === "upper") {
39
- value = value.toUpperCase();
40
+ value = cleanValue.toUpperCase();
40
41
  }
41
42
  if (type === "email") {
42
- value = value.replace(/\s/g, "");
43
+ value = cleanValue.replace(/\s/g, "");
43
44
  }
44
45
  if (type === "tel") {
45
- value = value.replace(/[^0-9]/g, "");
46
+ value = cleanValue.replace(/[^0-9]/g, "");
46
47
  }
47
48
  if (type === "url") {
48
- value = value.replace(/\s/g, "");
49
+ value = cleanValue.replace(/\s/g, "");
49
50
  }
50
- dipatch("input", value);
51
+ dipatch("input", cleanValue);
51
52
  };
52
53
  </script>
53
54
 
@@ -2,7 +2,7 @@ import { SvelteComponent } from "svelte";
2
2
  import type { AllowedTextInputTypes, FormFieldSizeOptions } from '../../types/form.js';
3
3
  declare const __propDef: {
4
4
  props: {
5
- value?: string | undefined;
5
+ value?: string | null | undefined;
6
6
  placeholder?: string | undefined;
7
7
  helperText?: string | undefined;
8
8
  size?: FormFieldSizeOptions | undefined;
@@ -4,7 +4,8 @@ export let value = "";
4
4
  export let size = "lg";
5
5
  export let placeholder = "example.com";
6
6
  const onInput = () => {
7
- const urlParts = value.split("://");
7
+ const cleanValue = value ?? "";
8
+ const urlParts = cleanValue.split("://");
8
9
  if (["http", "https"].includes(urlParts[0])) {
9
10
  protocol = urlParts[0];
10
11
  value = urlParts[1];
@@ -4,7 +4,7 @@ import type { HttpProtocol } from '../../types/generic.js';
4
4
  declare const __propDef: {
5
5
  props: {
6
6
  protocol?: HttpProtocol | undefined;
7
- value?: string | undefined;
7
+ value?: string | null | undefined;
8
8
  size?: FormFieldSizeOptions | undefined;
9
9
  placeholder?: string | undefined;
10
10
  };
@@ -12,3 +12,6 @@ export declare const dateTimeFromSupabase: (dateTime: string | null) => string;
12
12
  export declare const dateTimeToSupabase: (dateTime: string) => string | null;
13
13
  export declare const dateTimeToHuman: (dateTime: string) => string;
14
14
  export declare const dateTimeToInput: (dateTime?: Date) => string;
15
+ export declare const isDate: (date: string) => boolean;
16
+ export declare const isDateTime: (dateTime: string) => boolean;
17
+ export declare const isDateOrDateTime: (dateOrDateTime: string) => boolean;
@@ -66,3 +66,14 @@ export const dateTimeToInput = (dateTime) => {
66
66
  dateTime.setMinutes(dateTime.getMinutes() - offset);
67
67
  return dateTime.toISOString().split('.')[0].slice(0, -3);
68
68
  };
69
+ // Is this date formatted in YYYY-MM-DD format?
70
+ export const isDate = (date) => {
71
+ return /^\d{4}-\d{2}-\d{2}$/.test(date);
72
+ };
73
+ // Is this datetime formatted in YYYY-MM-DD HH:MM format?
74
+ export const isDateTime = (dateTime) => {
75
+ return /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}(:\d{2})?$/.test(dateTime);
76
+ };
77
+ export const isDateOrDateTime = (dateOrDateTime) => {
78
+ return isDate(dateOrDateTime) || isDateTime(dateOrDateTime);
79
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sveltacular",
3
- "version": "0.0.51",
3
+ "version": "0.0.53",
4
4
  "description": "A Svelte component library",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",