@uxf/form 1.0.0-beta.109 → 1.0.0-beta.111

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.
@@ -29,9 +29,10 @@ function DropzoneInput(props) {
29
29
  if (props.minFilesCount && value && value.length < props.minFilesCount) {
30
30
  return `Minimální počet souborů je ${props.minFilesCount}`;
31
31
  }
32
- if (value === null || value === void 0 ? void 0 : value.some((file) => file.id < 0)) {
33
- return "Nahrávání souborů ještě nebylo dokončeno";
34
- }
32
+ // TODO validate this only on submit
33
+ // if (value?.some((file) => file.id < 0)) {
34
+ // return "Nahrávání souborů ještě nebylo dokončeno";
35
+ // }
35
36
  return true;
36
37
  },
37
38
  ...(((_b = props.rules) === null || _b === void 0 ? void 0 : _b.validate)
@@ -1,4 +1,5 @@
1
1
  /// <reference types="react" />
2
+ import { DropzoneListProps as UIDropzoneListProps } from "@uxf/ui/dropzone";
2
3
  import { FieldValues, UseControllerProps } from "react-hook-form";
3
- export declare type DropzoneListProps<FormData extends FieldValues> = UseControllerProps<FormData>;
4
+ export declare type DropzoneListProps<FormData extends FieldValues> = Pick<UseControllerProps<FormData>, "control" | "name"> & Pick<UIDropzoneListProps, "errorText" | "onAbortWarning" | "onRemoveWarning" | "renderItem">;
4
5
  export declare function DropzoneList<FormData extends FieldValues>(props: DropzoneListProps<FormData>): JSX.Element;
@@ -10,10 +10,8 @@ const react_hook_form_1 = require("react-hook-form");
10
10
  function DropzoneList(props) {
11
11
  const { field } = (0, react_hook_form_1.useController)({
12
12
  control: props.control,
13
- defaultValue: props.defaultValue,
14
13
  name: props.name,
15
- shouldUnregister: props.shouldUnregister,
16
14
  });
17
- return react_1.default.createElement(dropzone_1.Dropzone.List, { value: field.value, onChange: field.onChange });
15
+ return (react_1.default.createElement(dropzone_1.Dropzone.List, { errorText: props.errorText, onAbortWarning: props.onAbortWarning, onChange: field.onChange, onRemoveWarning: props.onRemoveWarning, renderItem: props.renderItem, value: field.value }));
18
16
  }
19
17
  exports.DropzoneList = DropzoneList;
@@ -33,7 +33,7 @@ function Default() {
33
33
  const storyFormDropzone = (control) => (react_1.default.createElement("div", { className: "space-y-8" },
34
34
  react_1.default.createElement(index_1.Dropzone, { control: control, helperText: "Allow multiple files", isRequired: true, label: "Use drag and drop or click to upload", name: "dropzone", onUploadFile: uploadFIle_mock_1.uploadFile }),
35
35
  react_1.default.createElement(button_1.Button, { type: "submit" }, "Submit"),
36
- react_1.default.createElement(index_1.Dropzone.List, { control: control, name: "dropzone" })));
36
+ react_1.default.createElement(index_1.Dropzone.List, { control: control, errorText: "Oops, n\u011Bco se pokazilo", name: "dropzone", onAbortWarning: "Opravdu chcete zru\u0161it nahr\u00E1v\u00E1n\u00ED?", onRemoveWarning: "Opravdu chcete smazat soubor?" })));
37
37
  return (react_1.default.createElement(form_1.Form, { defaultValues: { dropzone: DUMMY_FILES } }, ({ control }) => (react_1.default.createElement(react_1.default.Fragment, null,
38
38
  react_1.default.createElement("div", { className: "flex flex-col lg:flex-row" },
39
39
  react_1.default.createElement("div", { className: "light space-y-2 p-20 lg:w-1/2" }, storyFormDropzone(control)),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uxf/form",
3
- "version": "1.0.0-beta.109",
3
+ "version": "1.0.0-beta.111",
4
4
  "description": "",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -13,7 +13,7 @@
13
13
  "author": "UX Fans s.r.o",
14
14
  "license": "MIT",
15
15
  "dependencies": {
16
- "@uxf/ui": "^1.0.0-beta.109",
16
+ "@uxf/ui": "^1.0.0-beta.111",
17
17
  "react-hook-form": "latest",
18
18
  "coordinate-parser": "^1.0.7"
19
19
  }
package/storybook/form.js CHANGED
@@ -9,9 +9,7 @@ const react_1 = __importDefault(require("react"));
9
9
  const react_hook_form_1 = require("react-hook-form");
10
10
  const form_data_printer_1 = require("./form-data-printer");
11
11
  function Form(props) {
12
- const form = (0, react_hook_form_1.useForm)({
13
- defaultValues: props.defaultValues,
14
- });
12
+ const form = (0, react_hook_form_1.useForm)(props);
15
13
  return (
16
14
  // eslint-disable-next-line no-console
17
15
  react_1.default.createElement("form", { onSubmit: form.handleSubmit(console.log) },
@@ -3,5 +3,6 @@ import { TimePickerInputProps as UITimePickerInputProps } from "@uxf/ui/time-pic
3
3
  import { FieldValues, UseControllerProps } from "react-hook-form";
4
4
  export declare type TimePickerInputProps<FormData extends FieldValues> = UseControllerProps<FormData> & Omit<UITimePickerInputProps, "isInvalid" | "max" | "min" | "pattern" | "step" | "name" | "onChange" | "value"> & {
5
5
  requiredMessage?: string;
6
+ stringValue?: boolean;
6
7
  };
7
8
  export declare function TimePickerInput<FormData extends FieldValues>(props: TimePickerInputProps<FormData>): JSX.Element;
@@ -7,6 +7,7 @@ exports.TimePickerInput = void 0;
7
7
  const time_picker_input_1 = require("@uxf/ui/time-picker-input");
8
8
  const react_hook_form_1 = require("react-hook-form");
9
9
  const react_1 = __importDefault(require("react"));
10
+ const dayjs_1 = __importDefault(require("dayjs"));
10
11
  function TimePickerInput(props) {
11
12
  var _a, _b, _c;
12
13
  const { field, fieldState } = (0, react_hook_form_1.useController)({
@@ -24,6 +25,19 @@ function TimePickerInput(props) {
24
25
  field.onBlur();
25
26
  (_a = props.onBlur) === null || _a === void 0 ? void 0 : _a.call(props, event);
26
27
  };
27
- return (react_1.default.createElement(time_picker_input_1.TimePickerInput, { className: props.className, form: props.form, helperText: (_c = (_b = fieldState.error) === null || _b === void 0 ? void 0 : _b.message) !== null && _c !== void 0 ? _c : props.helperText, hiddenLabel: props.hiddenLabel, id: props.id, isDisabled: props.isDisabled, isInvalid: !!fieldState.error, isReadOnly: props.isReadOnly, isRequired: props.isRequired, label: props.label, leftAddon: props.leftAddon, leftElement: props.leftElement, name: field.name, onBlur: onBlur, onChange: field.onChange, onFocus: props.onFocus, placeholder: props.placeholder, ref: field.ref, rightAddon: props.rightAddon, rightElement: props.rightElement, size: props.size, value: field.value, variant: props.variant }));
28
+ const onChange = (val) => {
29
+ if (props.stringValue && val !== null) {
30
+ field.onChange((0, dayjs_1.default)().set("hour", val.hour).set("minute", val.minute).set("second", 0).format("HH:mm:ss"));
31
+ }
32
+ else {
33
+ field.onChange(val);
34
+ }
35
+ };
36
+ const value = props.stringValue
37
+ ? field.value
38
+ ? { hour: (0, dayjs_1.default)(field.value, "HH:mm:ss").hour(), minute: (0, dayjs_1.default)(field.value, "HH:mm:ss").minute() }
39
+ : undefined
40
+ : field.value;
41
+ return (react_1.default.createElement(time_picker_input_1.TimePickerInput, { className: props.className, form: props.form, helperText: (_c = (_b = fieldState.error) === null || _b === void 0 ? void 0 : _b.message) !== null && _c !== void 0 ? _c : props.helperText, hiddenLabel: props.hiddenLabel, id: props.id, isDisabled: props.isDisabled, isInvalid: !!fieldState.error, isReadOnly: props.isReadOnly, isRequired: props.isRequired, label: props.label, leftAddon: props.leftAddon, leftElement: props.leftElement, name: field.name, onBlur: onBlur, onChange: onChange, onFocus: props.onFocus, placeholder: props.placeholder, ref: field.ref, rightAddon: props.rightAddon, rightElement: props.rightElement, size: props.size, value: value, variant: props.variant }));
28
42
  }
29
43
  exports.TimePickerInput = TimePickerInput;
@@ -15,6 +15,7 @@ exports.default = {
15
15
  function Default() {
16
16
  const storyFormDatePickers = (control) => (react_1.default.createElement("div", { className: "space-y-4" },
17
17
  react_1.default.createElement(time_picker_input_1.TimePickerInput, { label: "Default time picker", name: "default", control: control }),
18
+ react_1.default.createElement(time_picker_input_1.TimePickerInput, { label: "String time picker", name: "string", control: control, stringValue: true }),
18
19
  react_1.default.createElement(button_1.Button, { type: "submit" }, "Submit")));
19
20
  return (react_1.default.createElement(form_1.Form, null, ({ control }) => (react_1.default.createElement("div", { className: "flex flex-col lg:flex-row" },
20
21
  react_1.default.createElement("div", { className: "light space-y-2 p-20 lg:w-1/2" }, storyFormDatePickers(control)),