soda-heroui 0.1.2 → 0.2.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.
Files changed (48) hide show
  1. package/dist/cjs/components/FormCalendar.d.ts +4 -2
  2. package/dist/cjs/components/FormCalendar.js +4 -6
  3. package/dist/cjs/components/FormCalendar.js.map +2 -2
  4. package/dist/cjs/components/FormDateInput.d.ts +4 -2
  5. package/dist/cjs/components/FormDateInput.js +4 -6
  6. package/dist/cjs/components/FormDateInput.js.map +2 -2
  7. package/dist/cjs/components/FormDatePicker.d.ts +4 -2
  8. package/dist/cjs/components/FormDatePicker.js +4 -6
  9. package/dist/cjs/components/FormDatePicker.js.map +2 -2
  10. package/dist/cjs/components/FormDateRangePicker.d.ts +4 -2
  11. package/dist/cjs/components/FormDateRangePicker.js +4 -12
  12. package/dist/cjs/components/FormDateRangePicker.js.map +2 -2
  13. package/dist/cjs/components/FormRangeCalendar.d.ts +11 -5
  14. package/dist/cjs/components/FormRangeCalendar.js +37 -11
  15. package/dist/cjs/components/FormRangeCalendar.js.map +2 -2
  16. package/dist/cjs/components/FormTimeInput.d.ts +13 -4
  17. package/dist/cjs/components/FormTimeInput.js +32 -5
  18. package/dist/cjs/components/FormTimeInput.js.map +2 -2
  19. package/dist/cjs/utils/getTimeValue.d.ts +1 -1
  20. package/dist/cjs/utils/getTimeValue.js.map +2 -2
  21. package/dist/esm/components/FormCalendar.d.ts +4 -2
  22. package/dist/esm/components/FormCalendar.js +4 -5
  23. package/dist/esm/components/FormCalendar.js.map +1 -1
  24. package/dist/esm/components/FormDateInput.d.ts +4 -2
  25. package/dist/esm/components/FormDateInput.js +4 -5
  26. package/dist/esm/components/FormDateInput.js.map +1 -1
  27. package/dist/esm/components/FormDatePicker.d.ts +4 -2
  28. package/dist/esm/components/FormDatePicker.js +4 -5
  29. package/dist/esm/components/FormDatePicker.js.map +1 -1
  30. package/dist/esm/components/FormDateRangePicker.d.ts +4 -2
  31. package/dist/esm/components/FormDateRangePicker.js +4 -8
  32. package/dist/esm/components/FormDateRangePicker.js.map +1 -1
  33. package/dist/esm/components/FormRangeCalendar.d.ts +11 -5
  34. package/dist/esm/components/FormRangeCalendar.js +25 -5
  35. package/dist/esm/components/FormRangeCalendar.js.map +1 -1
  36. package/dist/esm/components/FormTimeInput.d.ts +13 -4
  37. package/dist/esm/components/FormTimeInput.js +20 -2
  38. package/dist/esm/components/FormTimeInput.js.map +1 -1
  39. package/dist/esm/utils/getTimeValue.d.ts +1 -1
  40. package/dist/esm/utils/getTimeValue.js.map +1 -1
  41. package/package.json +1 -1
  42. package/src/components/FormCalendar.tsx +13 -9
  43. package/src/components/FormDateInput.tsx +13 -9
  44. package/src/components/FormDatePicker.tsx +13 -9
  45. package/src/components/FormDateRangePicker.tsx +21 -18
  46. package/src/components/FormRangeCalendar.tsx +53 -18
  47. package/src/components/FormTimeInput.tsx +45 -7
  48. package/src/utils/getTimeValue.ts +4 -2
@@ -2,6 +2,8 @@ import { ReactNode } from "react";
2
2
  import { Calendar } from "@heroui/react";
3
3
  import { FieldComponentProps } from "soda-tanstack-form";
4
4
  import { StrictOmit } from "soda-type";
5
- export interface FormCalendarProps<FieldValue extends number | undefined = number | undefined> extends StrictOmit<FieldComponentProps<typeof Calendar, FieldValue>, "children"> {
5
+ import { TimeValueMode, TimeValueModeMap } from "./FormTimeInput";
6
+ export interface FormCalendarProps<ValueMode extends TimeValueMode = "date", FieldValue extends TimeValueModeMap<ValueMode> | undefined = TimeValueModeMap<ValueMode> | undefined> extends StrictOmit<FieldComponentProps<typeof Calendar, FieldValue>, "children"> {
7
+ valueMode?: ValueMode;
6
8
  }
7
- export declare function FormCalendar<FieldValue extends number | undefined = number | undefined>({ field, ...rest }: FormCalendarProps<FieldValue>): ReactNode;
9
+ export declare function FormCalendar<ValueMode extends TimeValueMode = "date", FieldValue extends TimeValueModeMap<ValueMode> | undefined = TimeValueModeMap<ValueMode> | undefined>({ field, valueMode, ...rest }: FormCalendarProps<ValueMode, FieldValue>): ReactNode;
@@ -24,16 +24,14 @@ __export(FormCalendar_exports, {
24
24
  });
25
25
  module.exports = __toCommonJS(FormCalendar_exports);
26
26
  var import_react = require("@heroui/react");
27
- var import_deepsea_tools = require("deepsea-tools");
28
- var import_getTimeValue = require("../utils/getTimeValue");
29
- var import_parseTime = require("../utils/parseTime");
30
27
  var import_ErrorMessage = require("./ErrorMessage");
31
- function FormCalendar({ field, ...rest }) {
28
+ var import_FormTimeInput = require("./FormTimeInput");
29
+ function FormCalendar({ field, valueMode, ...rest }) {
32
30
  return /* @__PURE__ */ React.createElement(
33
31
  import_react.Calendar,
34
32
  {
35
- value: (0, import_deepsea_tools.isNonNullable)(field.state.value) ? (0, import_parseTime.parseTime)(field.state.value) : null,
36
- onChange: (value) => field.handleChange((0, import_getTimeValue.getTimeValue)(value)),
33
+ value: (0, import_FormTimeInput.getFieldValue)(field),
34
+ onChange: (0, import_FormTimeInput.getOnChange)(field, valueMode),
37
35
  onBlur: field.handleBlur,
38
36
  errorMessage: /* @__PURE__ */ React.createElement(import_ErrorMessage.ErrorMessage, { data: field.state.meta.errors }),
39
37
  isInvalid: field.state.meta.errors.some(Boolean),
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/FormCalendar.tsx"],
4
- "sourcesContent": ["\"use client\"\n\nimport { ReactNode } from \"react\"\nimport { Calendar } from \"@heroui/react\"\nimport { isNonNullable } from \"deepsea-tools\"\nimport { FieldComponentProps } from \"soda-tanstack-form\"\nimport { StrictOmit } from \"soda-type\"\n\nimport { getTimeValue } from \"@/utils/getTimeValue\"\n\nimport { parseTime } from \"../utils/parseTime\"\nimport { ErrorMessage } from \"./ErrorMessage\"\n\nexport interface FormCalendarProps<FieldValue extends number | undefined = number | undefined>\n extends StrictOmit<FieldComponentProps<typeof Calendar, FieldValue>, \"children\"> {}\n\nexport function FormCalendar<FieldValue extends number | undefined = number | undefined>({ field, ...rest }: FormCalendarProps<FieldValue>): ReactNode {\n return (\n <Calendar\n value={isNonNullable(field.state.value) ? parseTime(field.state.value) : null}\n onChange={value => field.handleChange(getTimeValue(value) as FieldValue)}\n onBlur={field.handleBlur}\n errorMessage={<ErrorMessage data={field.state.meta.errors} />}\n isInvalid={field.state.meta.errors.some(Boolean)}\n {...rest}\n />\n )\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,mBAAyB;AACzB,2BAA8B;AAI9B,0BAA6B;AAE7B,uBAA0B;AAC1B,0BAA6B;AAKtB,SAAS,aAAyE,EAAE,OAAO,GAAG,KAAK,GAA6C;AACnJ,SACI;AAAA,IAAC;AAAA;AAAA,MACG,WAAO,oCAAc,MAAM,MAAM,KAAK,QAAI,4BAAU,MAAM,MAAM,KAAK,IAAI;AAAA,MACzE,UAAU,WAAS,MAAM,iBAAa,kCAAa,KAAK,CAAe;AAAA,MACvE,QAAQ,MAAM;AAAA,MACd,cAAc,oCAAC,oCAAa,MAAM,MAAM,MAAM,KAAK,QAAQ;AAAA,MAC3D,WAAW,MAAM,MAAM,KAAK,OAAO,KAAK,OAAO;AAAA,MAC9C,GAAG;AAAA;AAAA,EACR;AAER;",
4
+ "sourcesContent": ["\"use client\"\n\nimport { ReactNode } from \"react\"\nimport { Calendar } from \"@heroui/react\"\nimport { FieldComponentProps } from \"soda-tanstack-form\"\nimport { StrictOmit } from \"soda-type\"\n\nimport { ErrorMessage } from \"./ErrorMessage\"\nimport { TimeValueMode, TimeValueModeMap, getFieldValue, getOnChange } from \"./FormTimeInput\"\n\nexport interface FormCalendarProps<\n ValueMode extends TimeValueMode = \"date\",\n FieldValue extends TimeValueModeMap<ValueMode> | undefined = TimeValueModeMap<ValueMode> | undefined,\n> extends StrictOmit<FieldComponentProps<typeof Calendar, FieldValue>, \"children\"> {\n valueMode?: ValueMode\n}\n\nexport function FormCalendar<\n ValueMode extends TimeValueMode = \"date\",\n FieldValue extends TimeValueModeMap<ValueMode> | undefined = TimeValueModeMap<ValueMode> | undefined,\n>({ field, valueMode, ...rest }: FormCalendarProps<ValueMode, FieldValue>): ReactNode {\n return (\n <Calendar\n value={getFieldValue(field)}\n onChange={getOnChange(field, valueMode)}\n onBlur={field.handleBlur}\n errorMessage={<ErrorMessage data={field.state.meta.errors} />}\n isInvalid={field.state.meta.errors.some(Boolean)}\n {...rest}\n />\n )\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,mBAAyB;AAIzB,0BAA6B;AAC7B,2BAA4E;AASrE,SAAS,aAGd,EAAE,OAAO,WAAW,GAAG,KAAK,GAAwD;AAClF,SACI;AAAA,IAAC;AAAA;AAAA,MACG,WAAO,oCAAc,KAAK;AAAA,MAC1B,cAAU,kCAAY,OAAO,SAAS;AAAA,MACtC,QAAQ,MAAM;AAAA,MACd,cAAc,oCAAC,oCAAa,MAAM,MAAM,MAAM,KAAK,QAAQ;AAAA,MAC3D,WAAW,MAAM,MAAM,KAAK,OAAO,KAAK,OAAO;AAAA,MAC9C,GAAG;AAAA;AAAA,EACR;AAER;",
6
6
  "names": []
7
7
  }
@@ -2,6 +2,8 @@ import { ReactNode } from "react";
2
2
  import { DateInput } from "@heroui/react";
3
3
  import { FieldComponentProps } from "soda-tanstack-form";
4
4
  import { StrictOmit } from "soda-type";
5
- export interface FormDateInputProps<FieldValue extends number | undefined = number | undefined> extends StrictOmit<FieldComponentProps<typeof DateInput, FieldValue>, "children"> {
5
+ import { TimeValueMode, TimeValueModeMap } from "./FormTimeInput";
6
+ export interface FormDateInputProps<ValueMode extends TimeValueMode = "date", FieldValue extends TimeValueModeMap<ValueMode> | undefined = TimeValueModeMap<ValueMode> | undefined> extends StrictOmit<FieldComponentProps<typeof DateInput, FieldValue>, "children"> {
7
+ valueMode?: ValueMode;
6
8
  }
7
- export declare function FormDateInput<FieldValue extends number | undefined = number | undefined>({ field, ...rest }: FormDateInputProps<FieldValue>): ReactNode;
9
+ export declare function FormDateInput<ValueMode extends TimeValueMode = "date", FieldValue extends TimeValueModeMap<ValueMode> | undefined = TimeValueModeMap<ValueMode> | undefined>({ field, valueMode, ...rest }: FormDateInputProps<ValueMode, FieldValue>): ReactNode;
@@ -24,16 +24,14 @@ __export(FormDateInput_exports, {
24
24
  });
25
25
  module.exports = __toCommonJS(FormDateInput_exports);
26
26
  var import_react = require("@heroui/react");
27
- var import_deepsea_tools = require("deepsea-tools");
28
- var import_getTimeValue = require("../utils/getTimeValue");
29
- var import_parseTime = require("../utils/parseTime");
30
27
  var import_ErrorMessage = require("./ErrorMessage");
31
- function FormDateInput({ field, ...rest }) {
28
+ var import_FormTimeInput = require("./FormTimeInput");
29
+ function FormDateInput({ field, valueMode, ...rest }) {
32
30
  return /* @__PURE__ */ React.createElement(
33
31
  import_react.DateInput,
34
32
  {
35
- value: (0, import_deepsea_tools.isNonNullable)(field.state.value) ? (0, import_parseTime.parseTime)(field.state.value) : null,
36
- onChange: (value) => field.handleChange((0, import_getTimeValue.getTimeValue)(value)),
33
+ value: (0, import_FormTimeInput.getFieldValue)(field),
34
+ onChange: (0, import_FormTimeInput.getOnChange)(field, valueMode),
37
35
  onBlur: field.handleBlur,
38
36
  errorMessage: /* @__PURE__ */ React.createElement(import_ErrorMessage.ErrorMessage, { data: field.state.meta.errors }),
39
37
  isInvalid: field.state.meta.errors.some(Boolean),
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/FormDateInput.tsx"],
4
- "sourcesContent": ["\"use client\"\n\nimport { ReactNode } from \"react\"\nimport { DateInput } from \"@heroui/react\"\nimport { isNonNullable } from \"deepsea-tools\"\nimport { FieldComponentProps } from \"soda-tanstack-form\"\nimport { StrictOmit } from \"soda-type\"\n\nimport { getTimeValue } from \"@/utils/getTimeValue\"\n\nimport { parseTime } from \"../utils/parseTime\"\nimport { ErrorMessage } from \"./ErrorMessage\"\n\nexport interface FormDateInputProps<FieldValue extends number | undefined = number | undefined>\n extends StrictOmit<FieldComponentProps<typeof DateInput, FieldValue>, \"children\"> {}\n\nexport function FormDateInput<FieldValue extends number | undefined = number | undefined>({ field, ...rest }: FormDateInputProps<FieldValue>): ReactNode {\n return (\n <DateInput\n value={isNonNullable(field.state.value) ? parseTime(field.state.value) : null}\n onChange={value => field.handleChange(getTimeValue(value) as FieldValue)}\n onBlur={field.handleBlur}\n errorMessage={<ErrorMessage data={field.state.meta.errors} />}\n isInvalid={field.state.meta.errors.some(Boolean)}\n {...rest}\n />\n )\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,mBAA0B;AAC1B,2BAA8B;AAI9B,0BAA6B;AAE7B,uBAA0B;AAC1B,0BAA6B;AAKtB,SAAS,cAA0E,EAAE,OAAO,GAAG,KAAK,GAA8C;AACrJ,SACI;AAAA,IAAC;AAAA;AAAA,MACG,WAAO,oCAAc,MAAM,MAAM,KAAK,QAAI,4BAAU,MAAM,MAAM,KAAK,IAAI;AAAA,MACzE,UAAU,WAAS,MAAM,iBAAa,kCAAa,KAAK,CAAe;AAAA,MACvE,QAAQ,MAAM;AAAA,MACd,cAAc,oCAAC,oCAAa,MAAM,MAAM,MAAM,KAAK,QAAQ;AAAA,MAC3D,WAAW,MAAM,MAAM,KAAK,OAAO,KAAK,OAAO;AAAA,MAC9C,GAAG;AAAA;AAAA,EACR;AAER;",
4
+ "sourcesContent": ["\"use client\"\n\nimport { ReactNode } from \"react\"\nimport { DateInput } from \"@heroui/react\"\nimport { FieldComponentProps } from \"soda-tanstack-form\"\nimport { StrictOmit } from \"soda-type\"\n\nimport { ErrorMessage } from \"./ErrorMessage\"\nimport { TimeValueMode, TimeValueModeMap, getFieldValue, getOnChange } from \"./FormTimeInput\"\n\nexport interface FormDateInputProps<\n ValueMode extends TimeValueMode = \"date\",\n FieldValue extends TimeValueModeMap<ValueMode> | undefined = TimeValueModeMap<ValueMode> | undefined,\n> extends StrictOmit<FieldComponentProps<typeof DateInput, FieldValue>, \"children\"> {\n valueMode?: ValueMode\n}\n\nexport function FormDateInput<\n ValueMode extends TimeValueMode = \"date\",\n FieldValue extends TimeValueModeMap<ValueMode> | undefined = TimeValueModeMap<ValueMode> | undefined,\n>({ field, valueMode, ...rest }: FormDateInputProps<ValueMode, FieldValue>): ReactNode {\n return (\n <DateInput\n value={getFieldValue(field)}\n onChange={getOnChange(field, valueMode)}\n onBlur={field.handleBlur}\n errorMessage={<ErrorMessage data={field.state.meta.errors} />}\n isInvalid={field.state.meta.errors.some(Boolean)}\n {...rest}\n />\n )\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,mBAA0B;AAI1B,0BAA6B;AAC7B,2BAA4E;AASrE,SAAS,cAGd,EAAE,OAAO,WAAW,GAAG,KAAK,GAAyD;AACnF,SACI;AAAA,IAAC;AAAA;AAAA,MACG,WAAO,oCAAc,KAAK;AAAA,MAC1B,cAAU,kCAAY,OAAO,SAAS;AAAA,MACtC,QAAQ,MAAM;AAAA,MACd,cAAc,oCAAC,oCAAa,MAAM,MAAM,MAAM,KAAK,QAAQ;AAAA,MAC3D,WAAW,MAAM,MAAM,KAAK,OAAO,KAAK,OAAO;AAAA,MAC9C,GAAG;AAAA;AAAA,EACR;AAER;",
6
6
  "names": []
7
7
  }
@@ -2,6 +2,8 @@ import { ReactNode } from "react";
2
2
  import { DatePicker } from "@heroui/react";
3
3
  import { FieldComponentProps } from "soda-tanstack-form";
4
4
  import { StrictOmit } from "soda-type";
5
- export interface FormDatePickerProps<FieldValue extends number | undefined = number | undefined> extends StrictOmit<FieldComponentProps<typeof DatePicker, FieldValue>, "children"> {
5
+ import { TimeValueMode, TimeValueModeMap } from "./FormTimeInput";
6
+ export interface FormDatePickerProps<ValueMode extends TimeValueMode = "date", FieldValue extends TimeValueModeMap<ValueMode> | undefined = TimeValueModeMap<ValueMode> | undefined> extends StrictOmit<FieldComponentProps<typeof DatePicker, FieldValue>, "children"> {
7
+ valueMode?: ValueMode;
6
8
  }
7
- export declare function FormDatePicker<FieldValue extends number | undefined = number | undefined>({ field, ...rest }: FormDatePickerProps<FieldValue>): ReactNode;
9
+ export declare function FormDatePicker<ValueMode extends TimeValueMode = "date", FieldValue extends TimeValueModeMap<ValueMode> | undefined = TimeValueModeMap<ValueMode> | undefined>({ field, valueMode, ...rest }: FormDatePickerProps<ValueMode, FieldValue>): ReactNode;
@@ -24,16 +24,14 @@ __export(FormDatePicker_exports, {
24
24
  });
25
25
  module.exports = __toCommonJS(FormDatePicker_exports);
26
26
  var import_react = require("@heroui/react");
27
- var import_deepsea_tools = require("deepsea-tools");
28
- var import_getTimeValue = require("../utils/getTimeValue");
29
- var import_parseTime = require("../utils/parseTime");
30
27
  var import_ErrorMessage = require("./ErrorMessage");
31
- function FormDatePicker({ field, ...rest }) {
28
+ var import_FormTimeInput = require("./FormTimeInput");
29
+ function FormDatePicker({ field, valueMode, ...rest }) {
32
30
  return /* @__PURE__ */ React.createElement(
33
31
  import_react.DatePicker,
34
32
  {
35
- value: (0, import_deepsea_tools.isNonNullable)(field.state.value) ? (0, import_parseTime.parseTime)(field.state.value) : null,
36
- onChange: (value) => field.handleChange((0, import_getTimeValue.getTimeValue)(value)),
33
+ value: (0, import_FormTimeInput.getFieldValue)(field),
34
+ onChange: (0, import_FormTimeInput.getOnChange)(field, valueMode),
37
35
  onBlur: field.handleBlur,
38
36
  errorMessage: /* @__PURE__ */ React.createElement(import_ErrorMessage.ErrorMessage, { data: field.state.meta.errors }),
39
37
  isInvalid: field.state.meta.errors.some(Boolean),
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/FormDatePicker.tsx"],
4
- "sourcesContent": ["\"use client\"\n\nimport { ReactNode } from \"react\"\nimport { DatePicker } from \"@heroui/react\"\nimport { isNonNullable } from \"deepsea-tools\"\nimport { FieldComponentProps } from \"soda-tanstack-form\"\nimport { StrictOmit } from \"soda-type\"\n\nimport { getTimeValue } from \"@/utils/getTimeValue\"\n\nimport { parseTime } from \"../utils/parseTime\"\nimport { ErrorMessage } from \"./ErrorMessage\"\n\nexport interface FormDatePickerProps<FieldValue extends number | undefined = number | undefined>\n extends StrictOmit<FieldComponentProps<typeof DatePicker, FieldValue>, \"children\"> {}\n\nexport function FormDatePicker<FieldValue extends number | undefined = number | undefined>({ field, ...rest }: FormDatePickerProps<FieldValue>): ReactNode {\n return (\n <DatePicker\n value={isNonNullable(field.state.value) ? parseTime(field.state.value) : null}\n onChange={value => field.handleChange(getTimeValue(value) as FieldValue)}\n onBlur={field.handleBlur}\n errorMessage={<ErrorMessage data={field.state.meta.errors} />}\n isInvalid={field.state.meta.errors.some(Boolean)}\n {...rest}\n />\n )\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,mBAA2B;AAC3B,2BAA8B;AAI9B,0BAA6B;AAE7B,uBAA0B;AAC1B,0BAA6B;AAKtB,SAAS,eAA2E,EAAE,OAAO,GAAG,KAAK,GAA+C;AACvJ,SACI;AAAA,IAAC;AAAA;AAAA,MACG,WAAO,oCAAc,MAAM,MAAM,KAAK,QAAI,4BAAU,MAAM,MAAM,KAAK,IAAI;AAAA,MACzE,UAAU,WAAS,MAAM,iBAAa,kCAAa,KAAK,CAAe;AAAA,MACvE,QAAQ,MAAM;AAAA,MACd,cAAc,oCAAC,oCAAa,MAAM,MAAM,MAAM,KAAK,QAAQ;AAAA,MAC3D,WAAW,MAAM,MAAM,KAAK,OAAO,KAAK,OAAO;AAAA,MAC9C,GAAG;AAAA;AAAA,EACR;AAER;",
4
+ "sourcesContent": ["\"use client\"\n\nimport { ReactNode } from \"react\"\nimport { DatePicker } from \"@heroui/react\"\nimport { FieldComponentProps } from \"soda-tanstack-form\"\nimport { StrictOmit } from \"soda-type\"\n\nimport { ErrorMessage } from \"./ErrorMessage\"\nimport { TimeValueMode, TimeValueModeMap, getFieldValue, getOnChange } from \"./FormTimeInput\"\n\nexport interface FormDatePickerProps<\n ValueMode extends TimeValueMode = \"date\",\n FieldValue extends TimeValueModeMap<ValueMode> | undefined = TimeValueModeMap<ValueMode> | undefined,\n> extends StrictOmit<FieldComponentProps<typeof DatePicker, FieldValue>, \"children\"> {\n valueMode?: ValueMode\n}\n\nexport function FormDatePicker<\n ValueMode extends TimeValueMode = \"date\",\n FieldValue extends TimeValueModeMap<ValueMode> | undefined = TimeValueModeMap<ValueMode> | undefined,\n>({ field, valueMode, ...rest }: FormDatePickerProps<ValueMode, FieldValue>): ReactNode {\n return (\n <DatePicker\n value={getFieldValue(field)}\n onChange={getOnChange(field, valueMode)}\n onBlur={field.handleBlur}\n errorMessage={<ErrorMessage data={field.state.meta.errors} />}\n isInvalid={field.state.meta.errors.some(Boolean)}\n {...rest}\n />\n )\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,mBAA2B;AAI3B,0BAA6B;AAC7B,2BAA4E;AASrE,SAAS,eAGd,EAAE,OAAO,WAAW,GAAG,KAAK,GAA0D;AACpF,SACI;AAAA,IAAC;AAAA;AAAA,MACG,WAAO,oCAAc,KAAK;AAAA,MAC1B,cAAU,kCAAY,OAAO,SAAS;AAAA,MACtC,QAAQ,MAAM;AAAA,MACd,cAAc,oCAAC,oCAAa,MAAM,MAAM,MAAM,KAAK,QAAQ;AAAA,MAC3D,WAAW,MAAM,MAAM,KAAK,OAAO,KAAK,OAAO;AAAA,MAC9C,GAAG;AAAA;AAAA,EACR;AAER;",
6
6
  "names": []
7
7
  }
@@ -2,6 +2,8 @@ import { ReactNode } from "react";
2
2
  import { DateRangePicker } from "@heroui/react";
3
3
  import { FieldComponentProps } from "soda-tanstack-form";
4
4
  import { StrictOmit } from "soda-type";
5
- export interface FormDateRangePickerProps<FieldValue extends [number, number] | undefined = [number, number] | undefined> extends StrictOmit<FieldComponentProps<typeof DateRangePicker, FieldValue>, "children"> {
5
+ import { TimeValueMode, TimeValueModeMap } from "./FormTimeInput";
6
+ export interface FormDateRangePickerProps<ValueMode extends TimeValueMode = "date", FieldValue extends [TimeValueModeMap<ValueMode>, TimeValueModeMap<ValueMode>] | undefined = [TimeValueModeMap<ValueMode>, TimeValueModeMap<ValueMode>] | undefined> extends StrictOmit<FieldComponentProps<typeof DateRangePicker, FieldValue>, "children"> {
7
+ valueMode?: ValueMode;
6
8
  }
7
- export declare function FormDateRangePicker<FieldValue extends [number, number] | undefined = [number, number] | undefined>({ field, ...rest }: FormDateRangePickerProps<FieldValue>): ReactNode;
9
+ export declare function FormDateRangePicker<ValueMode extends TimeValueMode = "date", FieldValue extends [TimeValueModeMap<ValueMode>, TimeValueModeMap<ValueMode>] | undefined = [TimeValueModeMap<ValueMode>, TimeValueModeMap<ValueMode>] | undefined>({ field, valueMode, ...rest }: FormDateRangePickerProps<ValueMode, FieldValue>): ReactNode;
@@ -24,22 +24,14 @@ __export(FormDateRangePicker_exports, {
24
24
  });
25
25
  module.exports = __toCommonJS(FormDateRangePicker_exports);
26
26
  var import_react = require("@heroui/react");
27
- var import_deepsea_tools = require("deepsea-tools");
28
- var import_getTimeValue = require("../utils/getTimeValue");
29
- var import_parseTime = require("../utils/parseTime");
30
27
  var import_ErrorMessage = require("./ErrorMessage");
31
- function FormDateRangePicker({
32
- field,
33
- ...rest
34
- }) {
28
+ var import_FormRangeCalendar = require("./FormRangeCalendar");
29
+ function FormDateRangePicker({ field, valueMode, ...rest }) {
35
30
  return /* @__PURE__ */ React.createElement(
36
31
  import_react.DateRangePicker,
37
32
  {
38
- value: (0, import_deepsea_tools.isNonNullable)(field.state.value) ? {
39
- start: (0, import_parseTime.parseTime)(field.state.value[0]),
40
- end: (0, import_parseTime.parseTime)(field.state.value[1])
41
- } : null,
42
- onChange: (value) => field.handleChange((0, import_deepsea_tools.isNonNullable)(value) ? [(0, import_getTimeValue.getTimeValue)(value.start), (0, import_getTimeValue.getTimeValue)(value.end)] : void 0),
33
+ value: (0, import_FormRangeCalendar.getFieldRangeValue)(field),
34
+ onChange: (0, import_FormRangeCalendar.getOnRangeChange)(field, valueMode),
43
35
  onBlur: field.handleBlur,
44
36
  errorMessage: /* @__PURE__ */ React.createElement(import_ErrorMessage.ErrorMessage, { data: field.state.meta.errors }),
45
37
  isInvalid: field.state.meta.errors.some(Boolean),
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/FormDateRangePicker.tsx"],
4
- "sourcesContent": ["\"use client\"\n\nimport { ReactNode } from \"react\"\nimport { DateRangePicker } from \"@heroui/react\"\nimport { isNonNullable } from \"deepsea-tools\"\nimport { FieldComponentProps } from \"soda-tanstack-form\"\nimport { StrictOmit } from \"soda-type\"\n\nimport { getTimeValue } from \"@/utils/getTimeValue\"\n\nimport { parseTime } from \"../utils/parseTime\"\nimport { ErrorMessage } from \"./ErrorMessage\"\n\nexport interface FormDateRangePickerProps<FieldValue extends [number, number] | undefined = [number, number] | undefined>\n extends StrictOmit<FieldComponentProps<typeof DateRangePicker, FieldValue>, \"children\"> {}\n\nexport function FormDateRangePicker<FieldValue extends [number, number] | undefined = [number, number] | undefined>({\n field,\n ...rest\n}: FormDateRangePickerProps<FieldValue>): ReactNode {\n return (\n <DateRangePicker\n value={\n isNonNullable(field.state.value)\n ? {\n start: parseTime(field.state.value[0]),\n end: parseTime(field.state.value[1]),\n }\n : null\n }\n onChange={value => field.handleChange((isNonNullable(value) ? [getTimeValue(value.start), getTimeValue(value.end)] : undefined) as FieldValue)}\n onBlur={field.handleBlur}\n errorMessage={<ErrorMessage data={field.state.meta.errors} />}\n isInvalid={field.state.meta.errors.some(Boolean)}\n {...rest}\n />\n )\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,mBAAgC;AAChC,2BAA8B;AAI9B,0BAA6B;AAE7B,uBAA0B;AAC1B,0BAA6B;AAKtB,SAAS,oBAAoG;AAAA,EAChH;AAAA,EACA,GAAG;AACP,GAAoD;AAChD,SACI;AAAA,IAAC;AAAA;AAAA,MACG,WACI,oCAAc,MAAM,MAAM,KAAK,IACzB;AAAA,QACI,WAAO,4BAAU,MAAM,MAAM,MAAM,CAAC,CAAC;AAAA,QACrC,SAAK,4BAAU,MAAM,MAAM,MAAM,CAAC,CAAC;AAAA,MACvC,IACA;AAAA,MAEV,UAAU,WAAS,MAAM,iBAAc,oCAAc,KAAK,IAAI,KAAC,kCAAa,MAAM,KAAK,OAAG,kCAAa,MAAM,GAAG,CAAC,IAAI,MAAwB;AAAA,MAC7I,QAAQ,MAAM;AAAA,MACd,cAAc,oCAAC,oCAAa,MAAM,MAAM,MAAM,KAAK,QAAQ;AAAA,MAC3D,WAAW,MAAM,MAAM,KAAK,OAAO,KAAK,OAAO;AAAA,MAC9C,GAAG;AAAA;AAAA,EACR;AAER;",
4
+ "sourcesContent": ["\"use client\"\n\nimport { ReactNode, SetStateAction } from \"react\"\nimport { DateRangePicker, DateValue, RangeValue } from \"@heroui/react\"\nimport { isNonNullable } from \"deepsea-tools\"\nimport { Field, FieldComponentProps } from \"soda-tanstack-form\"\nimport { StrictOmit } from \"soda-type\"\n\nimport { getTimeValue } from \"@/utils/getTimeValue\"\n\nimport { parseTime } from \"../utils/parseTime\"\nimport { ErrorMessage } from \"./ErrorMessage\"\nimport { TimeValueMode, TimeValueModeMap } from \"./FormTimeInput\"\nimport { getFieldRangeValue, getOnRangeChange } from \"./FormRangeCalendar\"\n\nexport interface FormDateRangePickerProps<\n ValueMode extends TimeValueMode = \"date\",\n FieldValue extends [TimeValueModeMap<ValueMode>, TimeValueModeMap<ValueMode>] | undefined =\n | [TimeValueModeMap<ValueMode>, TimeValueModeMap<ValueMode>]\n | undefined,\n> extends StrictOmit<FieldComponentProps<typeof DateRangePicker, FieldValue>, \"children\"> {\n valueMode?: ValueMode\n}\n\nexport function FormDateRangePicker<\n ValueMode extends TimeValueMode = \"date\",\n FieldValue extends [TimeValueModeMap<ValueMode>, TimeValueModeMap<ValueMode>] | undefined =\n | [TimeValueModeMap<ValueMode>, TimeValueModeMap<ValueMode>]\n | undefined,\n>({ field, valueMode, ...rest }: FormDateRangePickerProps<ValueMode, FieldValue>): ReactNode {\n return (\n <DateRangePicker\n value={getFieldRangeValue(field as unknown as Field<[Date, Date] | [number, number] | undefined>)}\n onChange={getOnRangeChange(field as unknown as Field<[Date, Date] | [number, number] | undefined>, valueMode)}\n onBlur={field.handleBlur}\n errorMessage={<ErrorMessage data={field.state.meta.errors} />}\n isInvalid={field.state.meta.errors.some(Boolean)}\n {...rest}\n />\n )\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,mBAAuD;AAQvD,0BAA6B;AAE7B,+BAAqD;AAW9C,SAAS,oBAKd,EAAE,OAAO,WAAW,GAAG,KAAK,GAA+D;AACzF,SACI;AAAA,IAAC;AAAA;AAAA,MACG,WAAO,6CAAmB,KAAsE;AAAA,MAChG,cAAU,2CAAiB,OAAwE,SAAS;AAAA,MAC5G,QAAQ,MAAM;AAAA,MACd,cAAc,oCAAC,oCAAa,MAAM,MAAM,MAAM,KAAK,QAAQ;AAAA,MAC3D,WAAW,MAAM,MAAM,KAAK,OAAO,KAAK,OAAO;AAAA,MAC9C,GAAG;AAAA;AAAA,EACR;AAER;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,13 @@
1
- import { ReactNode } from "react";
2
- import { RangeCalendar } from "@heroui/react";
3
- import { FieldComponentProps } from "soda-tanstack-form";
1
+ import { ReactNode, SetStateAction } from "react";
2
+ import { DateValue, RangeCalendar, RangeValue } from "@heroui/react";
3
+ import { Field, FieldComponentProps } from "soda-tanstack-form";
4
4
  import { StrictOmit } from "soda-type";
5
- export interface FormRangeCalendarProps<FieldValue extends [number, number] | undefined = [number, number] | undefined> extends StrictOmit<FieldComponentProps<typeof RangeCalendar, FieldValue>, "children"> {
5
+ import { TimeValueMode, TimeValueModeMap } from "./FormTimeInput";
6
+ export interface FormRangeCalendarProps<ValueMode extends TimeValueMode = "date", FieldValue extends [TimeValueModeMap<ValueMode>, TimeValueModeMap<ValueMode>] | undefined = [TimeValueModeMap<ValueMode>, TimeValueModeMap<ValueMode>] | undefined> extends StrictOmit<FieldComponentProps<typeof RangeCalendar, FieldValue>, "children"> {
7
+ valueMode?: ValueMode;
6
8
  }
7
- export declare function FormRangeCalendar<FieldValue extends [number, number] | undefined = [number, number] | undefined>({ field, ...rest }: FormRangeCalendarProps<FieldValue>): ReactNode;
9
+ export declare function getRangeValue(value: [Date, Date] | [number, number] | undefined): RangeValue<DateValue> | null;
10
+ export declare function getFieldRangeValue<T extends [Date, Date] | [number, number] | undefined>(field: Field<T>): RangeValue<DateValue> | null;
11
+ export declare function getRangeUpdater(value: RangeValue<DateValue> | null, valueMode?: TimeValueMode): SetStateAction<[Date, Date] | [number, number] | undefined>;
12
+ export declare function getOnRangeChange<T extends [Date, Date] | [number, number] | undefined>(field: Field<T>, valueMode?: TimeValueMode): (value: RangeValue<DateValue> | null) => void;
13
+ export declare function FormRangeCalendar<ValueMode extends TimeValueMode = "date", FieldValue extends [TimeValueModeMap<ValueMode>, TimeValueModeMap<ValueMode>] | undefined = [TimeValueModeMap<ValueMode>, TimeValueModeMap<ValueMode>] | undefined>({ field, valueMode, ...rest }: FormRangeCalendarProps<ValueMode, FieldValue>): ReactNode;
@@ -20,7 +20,11 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/components/FormRangeCalendar.tsx
21
21
  var FormRangeCalendar_exports = {};
22
22
  __export(FormRangeCalendar_exports, {
23
- FormRangeCalendar: () => FormRangeCalendar
23
+ FormRangeCalendar: () => FormRangeCalendar,
24
+ getFieldRangeValue: () => getFieldRangeValue,
25
+ getOnRangeChange: () => getOnRangeChange,
26
+ getRangeUpdater: () => getRangeUpdater,
27
+ getRangeValue: () => getRangeValue
24
28
  });
25
29
  module.exports = __toCommonJS(FormRangeCalendar_exports);
26
30
  var import_react = require("@heroui/react");
@@ -28,18 +32,36 @@ var import_deepsea_tools = require("deepsea-tools");
28
32
  var import_getTimeValue = require("../utils/getTimeValue");
29
33
  var import_parseTime = require("../utils/parseTime");
30
34
  var import_ErrorMessage = require("./ErrorMessage");
31
- function FormRangeCalendar({
32
- field,
33
- ...rest
34
- }) {
35
+ function getRangeValue(value) {
36
+ return (0, import_deepsea_tools.isNonNullable)(value) ? {
37
+ start: (0, import_parseTime.parseTime)(value[0].valueOf()),
38
+ end: (0, import_parseTime.parseTime)(value[1].valueOf())
39
+ } : null;
40
+ }
41
+ function getFieldRangeValue(field) {
42
+ return getRangeValue(field.state.value);
43
+ }
44
+ function getRangeUpdater(value, valueMode) {
45
+ if (!(0, import_deepsea_tools.isNonNullable)(value))
46
+ return void 0;
47
+ if (valueMode === "timestamp")
48
+ return [(0, import_getTimeValue.getTimeValue)(value.start), (0, import_getTimeValue.getTimeValue)(value.end)];
49
+ function updater(prev) {
50
+ return prev?.[0] instanceof Date && prev?.[1] instanceof Date && prev[0].valueOf() === value.start.valueOf() && prev[1].valueOf() === value.end.valueOf() ? prev : [new Date((0, import_getTimeValue.getTimeValue)(value.start)), new Date((0, import_getTimeValue.getTimeValue)(value.end))];
51
+ }
52
+ return updater;
53
+ }
54
+ function getOnRangeChange(field, valueMode) {
55
+ return function onChange(value) {
56
+ field.handleChange(getRangeUpdater(value, valueMode));
57
+ };
58
+ }
59
+ function FormRangeCalendar({ field, valueMode, ...rest }) {
35
60
  return /* @__PURE__ */ React.createElement(
36
61
  import_react.RangeCalendar,
37
62
  {
38
- value: (0, import_deepsea_tools.isNonNullable)(field.state.value) ? {
39
- start: (0, import_parseTime.parseTime)(field.state.value[0]),
40
- end: (0, import_parseTime.parseTime)(field.state.value[1])
41
- } : null,
42
- onChange: (value) => field.handleChange((0, import_deepsea_tools.isNonNullable)(value) ? [(0, import_getTimeValue.getTimeValue)(value.start), (0, import_getTimeValue.getTimeValue)(value.end)] : void 0),
63
+ value: getFieldRangeValue(field),
64
+ onChange: getOnRangeChange(field, valueMode),
43
65
  onBlur: field.handleBlur,
44
66
  errorMessage: /* @__PURE__ */ React.createElement(import_ErrorMessage.ErrorMessage, { data: field.state.meta.errors }),
45
67
  isInvalid: field.state.meta.errors.some(Boolean),
@@ -49,6 +71,10 @@ function FormRangeCalendar({
49
71
  }
50
72
  // Annotate the CommonJS export names for ESM import in node:
51
73
  0 && (module.exports = {
52
- FormRangeCalendar
74
+ FormRangeCalendar,
75
+ getFieldRangeValue,
76
+ getOnRangeChange,
77
+ getRangeUpdater,
78
+ getRangeValue
53
79
  });
54
80
  //# sourceMappingURL=FormRangeCalendar.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/FormRangeCalendar.tsx"],
4
- "sourcesContent": ["\"use client\"\n\nimport { ReactNode } from \"react\"\nimport { RangeCalendar } from \"@heroui/react\"\nimport { isNonNullable } from \"deepsea-tools\"\nimport { FieldComponentProps } from \"soda-tanstack-form\"\nimport { StrictOmit } from \"soda-type\"\n\nimport { getTimeValue } from \"@/utils/getTimeValue\"\n\nimport { parseTime } from \"../utils/parseTime\"\nimport { ErrorMessage } from \"./ErrorMessage\"\n\nexport interface FormRangeCalendarProps<FieldValue extends [number, number] | undefined = [number, number] | undefined>\n extends StrictOmit<FieldComponentProps<typeof RangeCalendar, FieldValue>, \"children\"> {}\n\nexport function FormRangeCalendar<FieldValue extends [number, number] | undefined = [number, number] | undefined>({\n field,\n ...rest\n}: FormRangeCalendarProps<FieldValue>): ReactNode {\n return (\n <RangeCalendar\n value={\n isNonNullable(field.state.value)\n ? {\n start: parseTime(field.state.value[0]),\n end: parseTime(field.state.value[1]),\n }\n : null\n }\n onChange={value => field.handleChange((isNonNullable(value) ? [getTimeValue(value.start), getTimeValue(value.end)] : undefined) as FieldValue)}\n onBlur={field.handleBlur}\n errorMessage={<ErrorMessage data={field.state.meta.errors} />}\n isInvalid={field.state.meta.errors.some(Boolean)}\n {...rest}\n />\n )\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,mBAA8B;AAC9B,2BAA8B;AAI9B,0BAA6B;AAE7B,uBAA0B;AAC1B,0BAA6B;AAKtB,SAAS,kBAAkG;AAAA,EAC9G;AAAA,EACA,GAAG;AACP,GAAkD;AAC9C,SACI;AAAA,IAAC;AAAA;AAAA,MACG,WACI,oCAAc,MAAM,MAAM,KAAK,IACzB;AAAA,QACI,WAAO,4BAAU,MAAM,MAAM,MAAM,CAAC,CAAC;AAAA,QACrC,SAAK,4BAAU,MAAM,MAAM,MAAM,CAAC,CAAC;AAAA,MACvC,IACA;AAAA,MAEV,UAAU,WAAS,MAAM,iBAAc,oCAAc,KAAK,IAAI,KAAC,kCAAa,MAAM,KAAK,OAAG,kCAAa,MAAM,GAAG,CAAC,IAAI,MAAwB;AAAA,MAC7I,QAAQ,MAAM;AAAA,MACd,cAAc,oCAAC,oCAAa,MAAM,MAAM,MAAM,KAAK,QAAQ;AAAA,MAC3D,WAAW,MAAM,MAAM,KAAK,OAAO,KAAK,OAAO;AAAA,MAC9C,GAAG;AAAA;AAAA,EACR;AAER;",
4
+ "sourcesContent": ["\"use client\"\n\nimport { ReactNode, SetStateAction } from \"react\"\nimport { DateValue, RangeCalendar, RangeValue } from \"@heroui/react\"\nimport { isNonNullable } from \"deepsea-tools\"\nimport { Field, FieldComponentProps } from \"soda-tanstack-form\"\nimport { StrictOmit } from \"soda-type\"\n\nimport { getTimeValue } from \"@/utils/getTimeValue\"\n\nimport { parseTime } from \"../utils/parseTime\"\nimport { ErrorMessage } from \"./ErrorMessage\"\nimport { TimeValueMode, TimeValueModeMap } from \"./FormTimeInput\"\n\nexport interface FormRangeCalendarProps<\n ValueMode extends TimeValueMode = \"date\",\n FieldValue extends [TimeValueModeMap<ValueMode>, TimeValueModeMap<ValueMode>] | undefined =\n | [TimeValueModeMap<ValueMode>, TimeValueModeMap<ValueMode>]\n | undefined,\n> extends StrictOmit<FieldComponentProps<typeof RangeCalendar, FieldValue>, \"children\"> {\n valueMode?: ValueMode\n}\n\nexport function getRangeValue(value: [Date, Date] | [number, number] | undefined): RangeValue<DateValue> | null {\n return isNonNullable(value)\n ? {\n start: parseTime(value[0].valueOf()),\n end: parseTime(value[1].valueOf()),\n }\n : null\n}\n\nexport function getFieldRangeValue<T extends [Date, Date] | [number, number] | undefined>(field: Field<T>) {\n return getRangeValue(field.state.value)\n}\n\nexport function getRangeUpdater(value: RangeValue<DateValue> | null, valueMode?: TimeValueMode): SetStateAction<[Date, Date] | [number, number] | undefined> {\n if (!isNonNullable(value)) return undefined\n if (valueMode === \"timestamp\") return [getTimeValue(value.start), getTimeValue(value.end)]\n function updater(prev: [Date, Date] | [number, number] | undefined): [Date, Date] | [number, number] | undefined {\n return prev?.[0] instanceof Date &&\n prev?.[1] instanceof Date &&\n prev[0].valueOf() === value!.start.valueOf() &&\n prev[1].valueOf() === value!.end.valueOf()\n ? prev\n : [new Date(getTimeValue(value!.start)!), new Date(getTimeValue(value!.end)!)]\n }\n return updater\n}\n\nexport function getOnRangeChange<T extends [Date, Date] | [number, number] | undefined>(field: Field<T>, valueMode?: TimeValueMode) {\n return function onChange(value: RangeValue<DateValue> | null) {\n field.handleChange(getRangeUpdater(value, valueMode) as SetStateAction<T>)\n }\n}\n\nexport function FormRangeCalendar<\n ValueMode extends TimeValueMode = \"date\",\n FieldValue extends [TimeValueModeMap<ValueMode>, TimeValueModeMap<ValueMode>] | undefined =\n | [TimeValueModeMap<ValueMode>, TimeValueModeMap<ValueMode>]\n | undefined,\n>({ field, valueMode, ...rest }: FormRangeCalendarProps<ValueMode, FieldValue>): ReactNode {\n return (\n <RangeCalendar\n value={getFieldRangeValue(field as unknown as Field<[Date, Date] | [number, number] | undefined>)}\n onChange={getOnRangeChange(field as unknown as Field<[Date, Date] | [number, number] | undefined>, valueMode)}\n onBlur={field.handleBlur}\n errorMessage={<ErrorMessage data={field.state.meta.errors} />}\n isInvalid={field.state.meta.errors.some(Boolean)}\n {...rest}\n />\n )\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,mBAAqD;AACrD,2BAA8B;AAI9B,0BAA6B;AAE7B,uBAA0B;AAC1B,0BAA6B;AAYtB,SAAS,cAAc,OAAkF;AAC5G,aAAO,oCAAc,KAAK,IACpB;AAAA,IACI,WAAO,4BAAU,MAAM,CAAC,EAAE,QAAQ,CAAC;AAAA,IACnC,SAAK,4BAAU,MAAM,CAAC,EAAE,QAAQ,CAAC;AAAA,EACrC,IACA;AACV;AAEO,SAAS,mBAA0E,OAAiB;AACvG,SAAO,cAAc,MAAM,MAAM,KAAK;AAC1C;AAEO,SAAS,gBAAgB,OAAqC,WAAwF;AACzJ,MAAI,KAAC,oCAAc,KAAK;AAAG,WAAO;AAClC,MAAI,cAAc;AAAa,WAAO,KAAC,kCAAa,MAAM,KAAK,OAAG,kCAAa,MAAM,GAAG,CAAC;AACzF,WAAS,QAAQ,MAAgG;AAC7G,WAAO,OAAO,CAAC,aAAa,QACxB,OAAO,CAAC,aAAa,QACrB,KAAK,CAAC,EAAE,QAAQ,MAAM,MAAO,MAAM,QAAQ,KAC3C,KAAK,CAAC,EAAE,QAAQ,MAAM,MAAO,IAAI,QAAQ,IACvC,OACA,CAAC,IAAI,SAAK,kCAAa,MAAO,KAAK,CAAE,GAAG,IAAI,SAAK,kCAAa,MAAO,GAAG,CAAE,CAAC;AAAA,EACrF;AACA,SAAO;AACX;AAEO,SAAS,iBAAwE,OAAiB,WAA2B;AAChI,SAAO,SAAS,SAAS,OAAqC;AAC1D,UAAM,aAAa,gBAAgB,OAAO,SAAS,CAAsB;AAAA,EAC7E;AACJ;AAEO,SAAS,kBAKd,EAAE,OAAO,WAAW,GAAG,KAAK,GAA6D;AACvF,SACI;AAAA,IAAC;AAAA;AAAA,MACG,OAAO,mBAAmB,KAAsE;AAAA,MAChG,UAAU,iBAAiB,OAAwE,SAAS;AAAA,MAC5G,QAAQ,MAAM;AAAA,MACd,cAAc,oCAAC,oCAAa,MAAM,MAAM,MAAM,KAAK,QAAQ;AAAA,MAC3D,WAAW,MAAM,MAAM,KAAK,OAAO,KAAK,OAAO;AAAA,MAC9C,GAAG;AAAA;AAAA,EACR;AAER;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,16 @@
1
- import { ReactNode } from "react";
1
+ import { ReactNode, SetStateAction } from "react";
2
2
  import { TimeInput } from "@heroui/react";
3
- import { FieldComponentProps } from "soda-tanstack-form";
3
+ import { CalendarDate, CalendarDateTime, Time, ZonedDateTime } from "@internationalized/date";
4
+ import { Field, FieldComponentProps } from "soda-tanstack-form";
4
5
  import { StrictOmit } from "soda-type";
5
- export interface FormTimeInputProps<FieldValue extends number | undefined = number | undefined> extends StrictOmit<FieldComponentProps<typeof TimeInput, FieldValue>, "children"> {
6
+ export type TimeValue = Date | number;
7
+ export type TimeValueMode = "date" | "timestamp";
8
+ export type TimeValueModeMap<ValueMode extends TimeValueMode> = ValueMode extends "date" ? Date : ValueMode extends "timestamp" ? number : never;
9
+ export interface FormTimeInputProps<ValueMode extends TimeValueMode = "date", FieldValue extends TimeValueModeMap<ValueMode> | undefined = TimeValueModeMap<ValueMode> | undefined> extends StrictOmit<FieldComponentProps<typeof TimeInput, FieldValue>, "children"> {
10
+ valueMode?: ValueMode;
6
11
  }
7
- export declare function FormTimeInput<FieldValue extends number | undefined = number | undefined>({ field, ...rest }: FormTimeInputProps<FieldValue>): ReactNode;
12
+ export declare function getValue(value: Date | number | undefined): ZonedDateTime | null;
13
+ export declare function getFieldValue<T extends Date | number | undefined>(field: Field<T>): ZonedDateTime | null;
14
+ export declare function getUpdater(value: CalendarDateTime | ZonedDateTime | Time | CalendarDate | CalendarDateTime | ZonedDateTime | null, valueMode?: TimeValueMode): SetStateAction<Date | number | undefined>;
15
+ export declare function getOnChange<T extends Date | number | undefined>(field: Field<T>, valueMode?: TimeValueMode): (value: CalendarDateTime | ZonedDateTime | Time | CalendarDate | CalendarDateTime | ZonedDateTime | null) => void;
16
+ export declare function FormTimeInput<ValueMode extends TimeValueMode = "date", FieldValue extends TimeValueModeMap<ValueMode> | undefined = TimeValueModeMap<ValueMode> | undefined>({ field, valueMode, ...rest }: FormTimeInputProps<ValueMode, FieldValue>): ReactNode;
@@ -20,7 +20,11 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/components/FormTimeInput.tsx
21
21
  var FormTimeInput_exports = {};
22
22
  __export(FormTimeInput_exports, {
23
- FormTimeInput: () => FormTimeInput
23
+ FormTimeInput: () => FormTimeInput,
24
+ getFieldValue: () => getFieldValue,
25
+ getOnChange: () => getOnChange,
26
+ getUpdater: () => getUpdater,
27
+ getValue: () => getValue
24
28
  });
25
29
  module.exports = __toCommonJS(FormTimeInput_exports);
26
30
  var import_react = require("@heroui/react");
@@ -28,12 +32,31 @@ var import_deepsea_tools = require("deepsea-tools");
28
32
  var import_getTimeValue = require("../utils/getTimeValue");
29
33
  var import_parseTime = require("../utils/parseTime");
30
34
  var import_ErrorMessage = require("./ErrorMessage");
31
- function FormTimeInput({ field, ...rest }) {
35
+ function getValue(value) {
36
+ return (0, import_deepsea_tools.isNonNullable)(value) ? (0, import_parseTime.parseTime)(value.valueOf()) : null;
37
+ }
38
+ function getFieldValue(field) {
39
+ return getValue(field.state.value);
40
+ }
41
+ function getUpdater(value, valueMode) {
42
+ const timestamp = (0, import_getTimeValue.getTimeValue)(value);
43
+ if (!(0, import_deepsea_tools.isNonNullable)(timestamp))
44
+ return void 0;
45
+ if (valueMode === "timestamp")
46
+ return timestamp;
47
+ return (prev) => prev instanceof Date && prev.valueOf() === timestamp ? prev : new Date(timestamp);
48
+ }
49
+ function getOnChange(field, valueMode) {
50
+ return function onChange(value) {
51
+ field.handleChange(getUpdater(value, valueMode));
52
+ };
53
+ }
54
+ function FormTimeInput({ field, valueMode, ...rest }) {
32
55
  return /* @__PURE__ */ React.createElement(
33
56
  import_react.TimeInput,
34
57
  {
35
- value: (0, import_deepsea_tools.isNonNullable)(field.state.value) ? (0, import_parseTime.parseTime)(field.state.value) : null,
36
- onChange: (value) => field.handleChange((0, import_getTimeValue.getTimeValue)(value)),
58
+ value: getFieldValue(field),
59
+ onChange: getOnChange(field, valueMode),
37
60
  onBlur: field.handleBlur,
38
61
  errorMessage: /* @__PURE__ */ React.createElement(import_ErrorMessage.ErrorMessage, { data: field.state.meta.errors }),
39
62
  isInvalid: field.state.meta.errors.some(Boolean),
@@ -43,6 +66,10 @@ function FormTimeInput({ field, ...rest }) {
43
66
  }
44
67
  // Annotate the CommonJS export names for ESM import in node:
45
68
  0 && (module.exports = {
46
- FormTimeInput
69
+ FormTimeInput,
70
+ getFieldValue,
71
+ getOnChange,
72
+ getUpdater,
73
+ getValue
47
74
  });
48
75
  //# sourceMappingURL=FormTimeInput.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/FormTimeInput.tsx"],
4
- "sourcesContent": ["\"use client\"\n\nimport { ReactNode } from \"react\"\nimport { TimeInput } from \"@heroui/react\"\nimport { isNonNullable } from \"deepsea-tools\"\nimport { FieldComponentProps } from \"soda-tanstack-form\"\nimport { StrictOmit } from \"soda-type\"\n\nimport { getTimeValue } from \"@/utils/getTimeValue\"\n\nimport { parseTime } from \"../utils/parseTime\"\nimport { ErrorMessage } from \"./ErrorMessage\"\n\nexport interface FormTimeInputProps<FieldValue extends number | undefined = number | undefined>\n extends StrictOmit<FieldComponentProps<typeof TimeInput, FieldValue>, \"children\"> {}\n\nexport function FormTimeInput<FieldValue extends number | undefined = number | undefined>({ field, ...rest }: FormTimeInputProps<FieldValue>): ReactNode {\n return (\n <TimeInput\n value={isNonNullable(field.state.value) ? parseTime(field.state.value) : null}\n onChange={value => field.handleChange(getTimeValue(value) as FieldValue)}\n onBlur={field.handleBlur}\n errorMessage={<ErrorMessage data={field.state.meta.errors} />}\n isInvalid={field.state.meta.errors.some(Boolean)}\n {...rest}\n />\n )\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,mBAA0B;AAC1B,2BAA8B;AAI9B,0BAA6B;AAE7B,uBAA0B;AAC1B,0BAA6B;AAKtB,SAAS,cAA0E,EAAE,OAAO,GAAG,KAAK,GAA8C;AACrJ,SACI;AAAA,IAAC;AAAA;AAAA,MACG,WAAO,oCAAc,MAAM,MAAM,KAAK,QAAI,4BAAU,MAAM,MAAM,KAAK,IAAI;AAAA,MACzE,UAAU,WAAS,MAAM,iBAAa,kCAAa,KAAK,CAAe;AAAA,MACvE,QAAQ,MAAM;AAAA,MACd,cAAc,oCAAC,oCAAa,MAAM,MAAM,MAAM,KAAK,QAAQ;AAAA,MAC3D,WAAW,MAAM,MAAM,KAAK,OAAO,KAAK,OAAO;AAAA,MAC9C,GAAG;AAAA;AAAA,EACR;AAER;",
4
+ "sourcesContent": ["\"use client\"\n\nimport { ReactNode, SetStateAction } from \"react\"\nimport { TimeInput } from \"@heroui/react\"\nimport { CalendarDate, CalendarDateTime, Time, ZonedDateTime } from \"@internationalized/date\"\nimport { isNonNullable } from \"deepsea-tools\"\nimport { Field, FieldComponentProps } from \"soda-tanstack-form\"\nimport { StrictOmit } from \"soda-type\"\n\nimport { getTimeValue } from \"@/utils/getTimeValue\"\n\nimport { parseTime } from \"../utils/parseTime\"\nimport { ErrorMessage } from \"./ErrorMessage\"\n\nexport type TimeValue = Date | number\n\nexport type TimeValueMode = \"date\" | \"timestamp\"\n\nexport type TimeValueModeMap<ValueMode extends TimeValueMode> = ValueMode extends \"date\" ? Date : ValueMode extends \"timestamp\" ? number : never\n\nexport interface FormTimeInputProps<\n ValueMode extends TimeValueMode = \"date\",\n FieldValue extends TimeValueModeMap<ValueMode> | undefined = TimeValueModeMap<ValueMode> | undefined,\n> extends StrictOmit<FieldComponentProps<typeof TimeInput, FieldValue>, \"children\"> {\n valueMode?: ValueMode\n}\n\nexport function getValue(value: Date | number | undefined) {\n return isNonNullable(value) ? parseTime(value.valueOf()) : null\n}\n\nexport function getFieldValue<T extends Date | number | undefined>(field: Field<T>) {\n return getValue(field.state.value)\n}\n\nexport function getUpdater(\n value: CalendarDateTime | ZonedDateTime | Time | CalendarDate | CalendarDateTime | ZonedDateTime | null,\n valueMode?: TimeValueMode,\n): SetStateAction<Date | number | undefined> {\n const timestamp = getTimeValue(value)\n if (!isNonNullable(timestamp)) return undefined\n if (valueMode === \"timestamp\") return timestamp\n return (prev: Date | number | undefined) => (prev instanceof Date && prev.valueOf() === timestamp ? prev : new Date(timestamp))\n}\n\nexport function getOnChange<T extends Date | number | undefined>(field: Field<T>, valueMode?: TimeValueMode) {\n return function onChange(value: CalendarDateTime | ZonedDateTime | Time | CalendarDate | CalendarDateTime | ZonedDateTime | null) {\n field.handleChange(getUpdater(value, valueMode) as SetStateAction<T>)\n }\n}\n\nexport function FormTimeInput<\n ValueMode extends TimeValueMode = \"date\",\n FieldValue extends TimeValueModeMap<ValueMode> | undefined = TimeValueModeMap<ValueMode> | undefined,\n>({ field, valueMode, ...rest }: FormTimeInputProps<ValueMode, FieldValue>): ReactNode {\n return (\n <TimeInput\n value={getFieldValue(field)}\n onChange={getOnChange(field, valueMode)}\n onBlur={field.handleBlur}\n errorMessage={<ErrorMessage data={field.state.meta.errors} />}\n isInvalid={field.state.meta.errors.some(Boolean)}\n {...rest}\n />\n )\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,mBAA0B;AAE1B,2BAA8B;AAI9B,0BAA6B;AAE7B,uBAA0B;AAC1B,0BAA6B;AAetB,SAAS,SAAS,OAAkC;AACvD,aAAO,oCAAc,KAAK,QAAI,4BAAU,MAAM,QAAQ,CAAC,IAAI;AAC/D;AAEO,SAAS,cAAmD,OAAiB;AAChF,SAAO,SAAS,MAAM,MAAM,KAAK;AACrC;AAEO,SAAS,WACZ,OACA,WACyC;AACzC,QAAM,gBAAY,kCAAa,KAAK;AACpC,MAAI,KAAC,oCAAc,SAAS;AAAG,WAAO;AACtC,MAAI,cAAc;AAAa,WAAO;AACtC,SAAO,CAAC,SAAqC,gBAAgB,QAAQ,KAAK,QAAQ,MAAM,YAAY,OAAO,IAAI,KAAK,SAAS;AACjI;AAEO,SAAS,YAAiD,OAAiB,WAA2B;AACzG,SAAO,SAAS,SAAS,OAAyG;AAC9H,UAAM,aAAa,WAAW,OAAO,SAAS,CAAsB;AAAA,EACxE;AACJ;AAEO,SAAS,cAGd,EAAE,OAAO,WAAW,GAAG,KAAK,GAAyD;AACnF,SACI;AAAA,IAAC;AAAA;AAAA,MACG,OAAO,cAAc,KAAK;AAAA,MAC1B,UAAU,YAAY,OAAO,SAAS;AAAA,MACtC,QAAQ,MAAM;AAAA,MACd,cAAc,oCAAC,oCAAa,MAAM,MAAM,MAAM,KAAK,QAAQ;AAAA,MAC3D,WAAW,MAAM,MAAM,KAAK,OAAO,KAAK,OAAO;AAAA,MAC9C,GAAG;AAAA;AAAA,EACR;AAER;",
6
6
  "names": []
7
7
  }
@@ -1,2 +1,2 @@
1
1
  import { CalendarDate, CalendarDateTime, Time, ZonedDateTime } from "@internationalized/date";
2
- export declare function getTimeValue(time: CalendarDateTime | ZonedDateTime | Time | null | CalendarDate | CalendarDateTime | ZonedDateTime | null): number | undefined;
2
+ export declare function getTimeValue<T extends CalendarDateTime | ZonedDateTime | Time | CalendarDate | CalendarDateTime | ZonedDateTime | null | undefined = undefined>(time?: T): T extends null | undefined ? undefined : number;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/utils/getTimeValue.ts"],
4
- "sourcesContent": ["import { CalendarDate, CalendarDateTime, Time, ZonedDateTime } from \"@internationalized/date\"\nimport { isNonNullable } from \"deepsea-tools\"\n\nexport function getTimeValue(time: CalendarDateTime | ZonedDateTime | Time | null | CalendarDate | CalendarDateTime | ZonedDateTime | null) {\n return isNonNullable(time) ? new Date(time.toString()).valueOf() : undefined\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,2BAA8B;AAEvB,SAAS,aAAa,MAA+G;AACxI,aAAO,oCAAc,IAAI,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,EAAE,QAAQ,IAAI;AACvE;",
4
+ "sourcesContent": ["import { CalendarDate, CalendarDateTime, Time, ZonedDateTime } from \"@internationalized/date\"\nimport { isNonNullable } from \"deepsea-tools\"\n\nexport function getTimeValue<\n T extends CalendarDateTime | ZonedDateTime | Time | CalendarDate | CalendarDateTime | ZonedDateTime | null | undefined = undefined,\n>(time?: T): T extends null | undefined ? undefined : number {\n return (isNonNullable(time) ? new Date(time.toString()).valueOf() : undefined) as T extends null | undefined ? undefined : number\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,2BAA8B;AAEvB,SAAS,aAEd,MAA2D;AACzD,aAAQ,oCAAc,IAAI,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,EAAE,QAAQ,IAAI;AACxE;",
6
6
  "names": []
7
7
  }
@@ -2,6 +2,8 @@ import { ReactNode } from "react";
2
2
  import { Calendar } from "@heroui/react";
3
3
  import { FieldComponentProps } from "soda-tanstack-form";
4
4
  import { StrictOmit } from "soda-type";
5
- export interface FormCalendarProps<FieldValue extends number | undefined = number | undefined> extends StrictOmit<FieldComponentProps<typeof Calendar, FieldValue>, "children"> {
5
+ import { TimeValueMode, TimeValueModeMap } from "./FormTimeInput";
6
+ export interface FormCalendarProps<ValueMode extends TimeValueMode = "date", FieldValue extends TimeValueModeMap<ValueMode> | undefined = TimeValueModeMap<ValueMode> | undefined> extends StrictOmit<FieldComponentProps<typeof Calendar, FieldValue>, "children"> {
7
+ valueMode?: ValueMode;
6
8
  }
7
- export declare function FormCalendar<FieldValue extends number | undefined = number | undefined>({ field, ...rest }: FormCalendarProps<FieldValue>): ReactNode;
9
+ export declare function FormCalendar<ValueMode extends TimeValueMode = "date", FieldValue extends TimeValueModeMap<ValueMode> | undefined = TimeValueModeMap<ValueMode> | undefined>({ field, valueMode, ...rest }: FormCalendarProps<ValueMode, FieldValue>): ReactNode;
@@ -1,18 +1,17 @@
1
1
  "use client";
2
2
 
3
3
  import { Calendar } from "@heroui/react";
4
- import { isNonNullable } from "deepsea-tools";
5
- import { getTimeValue } from "../utils/getTimeValue";
6
- import { parseTime } from "../utils/parseTime";
7
4
  import { ErrorMessage } from "./ErrorMessage";
5
+ import { getFieldValue, getOnChange } from "./FormTimeInput";
8
6
  import { jsx as _jsx } from "react/jsx-runtime";
9
7
  export function FormCalendar({
10
8
  field,
9
+ valueMode,
11
10
  ...rest
12
11
  }) {
13
12
  return /*#__PURE__*/_jsx(Calendar, {
14
- value: isNonNullable(field.state.value) ? parseTime(field.state.value) : null,
15
- onChange: value => field.handleChange(getTimeValue(value)),
13
+ value: getFieldValue(field),
14
+ onChange: getOnChange(field, valueMode),
16
15
  onBlur: field.handleBlur,
17
16
  errorMessage: /*#__PURE__*/_jsx(ErrorMessage, {
18
17
  data: field.state.meta.errors
@@ -1 +1 @@
1
- {"version":3,"names":["Calendar","isNonNullable","getTimeValue","parseTime","ErrorMessage","jsx","_jsx","FormCalendar","field","rest","value","state","onChange","handleChange","onBlur","handleBlur","errorMessage","data","meta","errors","isInvalid","some","Boolean"],"sources":["../../../src/components/FormCalendar.tsx"],"sourcesContent":["\"use client\"\n\nimport { ReactNode } from \"react\"\nimport { Calendar } from \"@heroui/react\"\nimport { isNonNullable } from \"deepsea-tools\"\nimport { FieldComponentProps } from \"soda-tanstack-form\"\nimport { StrictOmit } from \"soda-type\"\n\nimport { getTimeValue } from \"@/utils/getTimeValue\"\n\nimport { parseTime } from \"../utils/parseTime\"\nimport { ErrorMessage } from \"./ErrorMessage\"\n\nexport interface FormCalendarProps<FieldValue extends number | undefined = number | undefined>\n extends StrictOmit<FieldComponentProps<typeof Calendar, FieldValue>, \"children\"> {}\n\nexport function FormCalendar<FieldValue extends number | undefined = number | undefined>({ field, ...rest }: FormCalendarProps<FieldValue>): ReactNode {\n return (\n <Calendar\n value={isNonNullable(field.state.value) ? parseTime(field.state.value) : null}\n onChange={value => field.handleChange(getTimeValue(value) as FieldValue)}\n onBlur={field.handleBlur}\n errorMessage={<ErrorMessage data={field.state.meta.errors} />}\n isInvalid={field.state.meta.errors.some(Boolean)}\n {...rest}\n />\n )\n}\n"],"mappings":"AAAA,YAAY;;AAGZ,SAASA,QAAQ,QAAQ,eAAe;AACxC,SAASC,aAAa,QAAQ,eAAe;AAI7C,SAASC,YAAY;AAErB,SAASC,SAAS;AAClB,SAASC,YAAY;AAAwB,SAAAC,GAAA,IAAAC,IAAA;AAK7C,OAAO,SAASC,YAAYA,CAA6D;EAAEC,KAAK;EAAE,GAAGC;AAAoC,CAAC,EAAa;EACnJ,oBACIH,IAAA,CAACN,QAAQ;IACLU,KAAK,EAAET,aAAa,CAACO,KAAK,CAACG,KAAK,CAACD,KAAK,CAAC,GAAGP,SAAS,CAACK,KAAK,CAACG,KAAK,CAACD,KAAK,CAAC,GAAG,IAAK;IAC9EE,QAAQ,EAAEF,KAAK,IAAIF,KAAK,CAACK,YAAY,CAACX,YAAY,CAACQ,KAAK,CAAe,CAAE;IACzEI,MAAM,EAAEN,KAAK,CAACO,UAAW;IACzBC,YAAY,eAAEV,IAAA,CAACF,YAAY;MAACa,IAAI,EAAET,KAAK,CAACG,KAAK,CAACO,IAAI,CAACC;IAAO,CAAE,CAAE;IAC9DC,SAAS,EAAEZ,KAAK,CAACG,KAAK,CAACO,IAAI,CAACC,MAAM,CAACE,IAAI,CAACC,OAAO,CAAE;IAAA,GAC7Cb;EAAI,CACX,CAAC;AAEV"}
1
+ {"version":3,"names":["Calendar","ErrorMessage","getFieldValue","getOnChange","jsx","_jsx","FormCalendar","field","valueMode","rest","value","onChange","onBlur","handleBlur","errorMessage","data","state","meta","errors","isInvalid","some","Boolean"],"sources":["../../../src/components/FormCalendar.tsx"],"sourcesContent":["\"use client\"\n\nimport { ReactNode } from \"react\"\nimport { Calendar } from \"@heroui/react\"\nimport { FieldComponentProps } from \"soda-tanstack-form\"\nimport { StrictOmit } from \"soda-type\"\n\nimport { ErrorMessage } from \"./ErrorMessage\"\nimport { TimeValueMode, TimeValueModeMap, getFieldValue, getOnChange } from \"./FormTimeInput\"\n\nexport interface FormCalendarProps<\n ValueMode extends TimeValueMode = \"date\",\n FieldValue extends TimeValueModeMap<ValueMode> | undefined = TimeValueModeMap<ValueMode> | undefined,\n> extends StrictOmit<FieldComponentProps<typeof Calendar, FieldValue>, \"children\"> {\n valueMode?: ValueMode\n}\n\nexport function FormCalendar<\n ValueMode extends TimeValueMode = \"date\",\n FieldValue extends TimeValueModeMap<ValueMode> | undefined = TimeValueModeMap<ValueMode> | undefined,\n>({ field, valueMode, ...rest }: FormCalendarProps<ValueMode, FieldValue>): ReactNode {\n return (\n <Calendar\n value={getFieldValue(field)}\n onChange={getOnChange(field, valueMode)}\n onBlur={field.handleBlur}\n errorMessage={<ErrorMessage data={field.state.meta.errors} />}\n isInvalid={field.state.meta.errors.some(Boolean)}\n {...rest}\n />\n )\n}\n"],"mappings":"AAAA,YAAY;;AAGZ,SAASA,QAAQ,QAAQ,eAAe;AAIxC,SAASC,YAAY;AACrB,SAA0CC,aAAa,EAAEC,WAAW;AAAyB,SAAAC,GAAA,IAAAC,IAAA;AAS7F,OAAO,SAASC,YAAYA,CAG1B;EAAEC,KAAK;EAAEC,SAAS;EAAE,GAAGC;AAA+C,CAAC,EAAa;EAClF,oBACIJ,IAAA,CAACL,QAAQ;IACLU,KAAK,EAAER,aAAa,CAACK,KAAK,CAAE;IAC5BI,QAAQ,EAAER,WAAW,CAACI,KAAK,EAAEC,SAAS,CAAE;IACxCI,MAAM,EAAEL,KAAK,CAACM,UAAW;IACzBC,YAAY,eAAET,IAAA,CAACJ,YAAY;MAACc,IAAI,EAAER,KAAK,CAACS,KAAK,CAACC,IAAI,CAACC;IAAO,CAAE,CAAE;IAC9DC,SAAS,EAAEZ,KAAK,CAACS,KAAK,CAACC,IAAI,CAACC,MAAM,CAACE,IAAI,CAACC,OAAO,CAAE;IAAA,GAC7CZ;EAAI,CACX,CAAC;AAEV"}
@@ -2,6 +2,8 @@ import { ReactNode } from "react";
2
2
  import { DateInput } from "@heroui/react";
3
3
  import { FieldComponentProps } from "soda-tanstack-form";
4
4
  import { StrictOmit } from "soda-type";
5
- export interface FormDateInputProps<FieldValue extends number | undefined = number | undefined> extends StrictOmit<FieldComponentProps<typeof DateInput, FieldValue>, "children"> {
5
+ import { TimeValueMode, TimeValueModeMap } from "./FormTimeInput";
6
+ export interface FormDateInputProps<ValueMode extends TimeValueMode = "date", FieldValue extends TimeValueModeMap<ValueMode> | undefined = TimeValueModeMap<ValueMode> | undefined> extends StrictOmit<FieldComponentProps<typeof DateInput, FieldValue>, "children"> {
7
+ valueMode?: ValueMode;
6
8
  }
7
- export declare function FormDateInput<FieldValue extends number | undefined = number | undefined>({ field, ...rest }: FormDateInputProps<FieldValue>): ReactNode;
9
+ export declare function FormDateInput<ValueMode extends TimeValueMode = "date", FieldValue extends TimeValueModeMap<ValueMode> | undefined = TimeValueModeMap<ValueMode> | undefined>({ field, valueMode, ...rest }: FormDateInputProps<ValueMode, FieldValue>): ReactNode;
@@ -1,18 +1,17 @@
1
1
  "use client";
2
2
 
3
3
  import { DateInput } from "@heroui/react";
4
- import { isNonNullable } from "deepsea-tools";
5
- import { getTimeValue } from "../utils/getTimeValue";
6
- import { parseTime } from "../utils/parseTime";
7
4
  import { ErrorMessage } from "./ErrorMessage";
5
+ import { getFieldValue, getOnChange } from "./FormTimeInput";
8
6
  import { jsx as _jsx } from "react/jsx-runtime";
9
7
  export function FormDateInput({
10
8
  field,
9
+ valueMode,
11
10
  ...rest
12
11
  }) {
13
12
  return /*#__PURE__*/_jsx(DateInput, {
14
- value: isNonNullable(field.state.value) ? parseTime(field.state.value) : null,
15
- onChange: value => field.handleChange(getTimeValue(value)),
13
+ value: getFieldValue(field),
14
+ onChange: getOnChange(field, valueMode),
16
15
  onBlur: field.handleBlur,
17
16
  errorMessage: /*#__PURE__*/_jsx(ErrorMessage, {
18
17
  data: field.state.meta.errors
@@ -1 +1 @@
1
- {"version":3,"names":["DateInput","isNonNullable","getTimeValue","parseTime","ErrorMessage","jsx","_jsx","FormDateInput","field","rest","value","state","onChange","handleChange","onBlur","handleBlur","errorMessage","data","meta","errors","isInvalid","some","Boolean"],"sources":["../../../src/components/FormDateInput.tsx"],"sourcesContent":["\"use client\"\n\nimport { ReactNode } from \"react\"\nimport { DateInput } from \"@heroui/react\"\nimport { isNonNullable } from \"deepsea-tools\"\nimport { FieldComponentProps } from \"soda-tanstack-form\"\nimport { StrictOmit } from \"soda-type\"\n\nimport { getTimeValue } from \"@/utils/getTimeValue\"\n\nimport { parseTime } from \"../utils/parseTime\"\nimport { ErrorMessage } from \"./ErrorMessage\"\n\nexport interface FormDateInputProps<FieldValue extends number | undefined = number | undefined>\n extends StrictOmit<FieldComponentProps<typeof DateInput, FieldValue>, \"children\"> {}\n\nexport function FormDateInput<FieldValue extends number | undefined = number | undefined>({ field, ...rest }: FormDateInputProps<FieldValue>): ReactNode {\n return (\n <DateInput\n value={isNonNullable(field.state.value) ? parseTime(field.state.value) : null}\n onChange={value => field.handleChange(getTimeValue(value) as FieldValue)}\n onBlur={field.handleBlur}\n errorMessage={<ErrorMessage data={field.state.meta.errors} />}\n isInvalid={field.state.meta.errors.some(Boolean)}\n {...rest}\n />\n )\n}\n"],"mappings":"AAAA,YAAY;;AAGZ,SAASA,SAAS,QAAQ,eAAe;AACzC,SAASC,aAAa,QAAQ,eAAe;AAI7C,SAASC,YAAY;AAErB,SAASC,SAAS;AAClB,SAASC,YAAY;AAAwB,SAAAC,GAAA,IAAAC,IAAA;AAK7C,OAAO,SAASC,aAAaA,CAA6D;EAAEC,KAAK;EAAE,GAAGC;AAAqC,CAAC,EAAa;EACrJ,oBACIH,IAAA,CAACN,SAAS;IACNU,KAAK,EAAET,aAAa,CAACO,KAAK,CAACG,KAAK,CAACD,KAAK,CAAC,GAAGP,SAAS,CAACK,KAAK,CAACG,KAAK,CAACD,KAAK,CAAC,GAAG,IAAK;IAC9EE,QAAQ,EAAEF,KAAK,IAAIF,KAAK,CAACK,YAAY,CAACX,YAAY,CAACQ,KAAK,CAAe,CAAE;IACzEI,MAAM,EAAEN,KAAK,CAACO,UAAW;IACzBC,YAAY,eAAEV,IAAA,CAACF,YAAY;MAACa,IAAI,EAAET,KAAK,CAACG,KAAK,CAACO,IAAI,CAACC;IAAO,CAAE,CAAE;IAC9DC,SAAS,EAAEZ,KAAK,CAACG,KAAK,CAACO,IAAI,CAACC,MAAM,CAACE,IAAI,CAACC,OAAO,CAAE;IAAA,GAC7Cb;EAAI,CACX,CAAC;AAEV"}
1
+ {"version":3,"names":["DateInput","ErrorMessage","getFieldValue","getOnChange","jsx","_jsx","FormDateInput","field","valueMode","rest","value","onChange","onBlur","handleBlur","errorMessage","data","state","meta","errors","isInvalid","some","Boolean"],"sources":["../../../src/components/FormDateInput.tsx"],"sourcesContent":["\"use client\"\n\nimport { ReactNode } from \"react\"\nimport { DateInput } from \"@heroui/react\"\nimport { FieldComponentProps } from \"soda-tanstack-form\"\nimport { StrictOmit } from \"soda-type\"\n\nimport { ErrorMessage } from \"./ErrorMessage\"\nimport { TimeValueMode, TimeValueModeMap, getFieldValue, getOnChange } from \"./FormTimeInput\"\n\nexport interface FormDateInputProps<\n ValueMode extends TimeValueMode = \"date\",\n FieldValue extends TimeValueModeMap<ValueMode> | undefined = TimeValueModeMap<ValueMode> | undefined,\n> extends StrictOmit<FieldComponentProps<typeof DateInput, FieldValue>, \"children\"> {\n valueMode?: ValueMode\n}\n\nexport function FormDateInput<\n ValueMode extends TimeValueMode = \"date\",\n FieldValue extends TimeValueModeMap<ValueMode> | undefined = TimeValueModeMap<ValueMode> | undefined,\n>({ field, valueMode, ...rest }: FormDateInputProps<ValueMode, FieldValue>): ReactNode {\n return (\n <DateInput\n value={getFieldValue(field)}\n onChange={getOnChange(field, valueMode)}\n onBlur={field.handleBlur}\n errorMessage={<ErrorMessage data={field.state.meta.errors} />}\n isInvalid={field.state.meta.errors.some(Boolean)}\n {...rest}\n />\n )\n}\n"],"mappings":"AAAA,YAAY;;AAGZ,SAASA,SAAS,QAAQ,eAAe;AAIzC,SAASC,YAAY;AACrB,SAA0CC,aAAa,EAAEC,WAAW;AAAyB,SAAAC,GAAA,IAAAC,IAAA;AAS7F,OAAO,SAASC,aAAaA,CAG3B;EAAEC,KAAK;EAAEC,SAAS;EAAE,GAAGC;AAAgD,CAAC,EAAa;EACnF,oBACIJ,IAAA,CAACL,SAAS;IACNU,KAAK,EAAER,aAAa,CAACK,KAAK,CAAE;IAC5BI,QAAQ,EAAER,WAAW,CAACI,KAAK,EAAEC,SAAS,CAAE;IACxCI,MAAM,EAAEL,KAAK,CAACM,UAAW;IACzBC,YAAY,eAAET,IAAA,CAACJ,YAAY;MAACc,IAAI,EAAER,KAAK,CAACS,KAAK,CAACC,IAAI,CAACC;IAAO,CAAE,CAAE;IAC9DC,SAAS,EAAEZ,KAAK,CAACS,KAAK,CAACC,IAAI,CAACC,MAAM,CAACE,IAAI,CAACC,OAAO,CAAE;IAAA,GAC7CZ;EAAI,CACX,CAAC;AAEV"}