@uxf/form 1.0.0-beta.28 → 1.0.0-beta.31
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uxf/form",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.31",
|
|
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.
|
|
16
|
+
"@uxf/ui": "^1.0.0-beta.31",
|
|
17
17
|
"react-hook-form": "latest"
|
|
18
18
|
}
|
|
19
19
|
}
|
package/storybook/form.js
CHANGED
|
@@ -13,7 +13,8 @@ function Form(props) {
|
|
|
13
13
|
// eslint-disable-next-line no-console
|
|
14
14
|
react_1.default.createElement("form", { onSubmit: form.handleSubmit(console.log) },
|
|
15
15
|
props.children(form),
|
|
16
|
-
react_1.default.createElement("div", { className: "
|
|
17
|
-
react_1.default.createElement(form_data_printer_1.FormDataPrinter, { control: form.control }))
|
|
16
|
+
react_1.default.createElement("div", { className: "my-4" },
|
|
17
|
+
react_1.default.createElement(form_data_printer_1.FormDataPrinter, { control: form.control })),
|
|
18
|
+
react_1.default.createElement("button", { type: "submit" }, "Submit form")));
|
|
18
19
|
}
|
|
19
20
|
exports.Form = Form;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { TextInputProps as UITextInputProps } from "@uxf/ui/text-input";
|
|
3
3
|
import { FieldValues, UseControllerProps } from "react-hook-form";
|
|
4
|
-
export declare type TextInputProps<FormData extends FieldValues> = UseControllerProps<FormData> & Omit<UITextInputProps, "value" | "onChange"
|
|
4
|
+
export declare type TextInputProps<FormData extends FieldValues> = UseControllerProps<FormData> & Omit<UITextInputProps, "value" | "onChange"> & {
|
|
5
|
+
requiredMessage?: string;
|
|
6
|
+
};
|
|
5
7
|
export declare function TextInput<FormData extends Record<string, any>>(props: TextInputProps<FormData>): JSX.Element;
|
package/text-input/text-input.js
CHANGED
|
@@ -7,17 +7,33 @@ exports.TextInput = void 0;
|
|
|
7
7
|
const text_input_1 = require("@uxf/ui/text-input");
|
|
8
8
|
const react_hook_form_1 = require("react-hook-form");
|
|
9
9
|
const react_1 = __importDefault(require("react"));
|
|
10
|
+
const EMAIL_REGEXP = /^(([^<>()[\]\\.,;:\s@À-ÖÙ-öù-ÿĀ-žḀ-ỿ"]+(\.[^<>()[\]\\.,;:\s@À-ÖÙ-öù-ÿĀ-žḀ-ỿ"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
|
|
11
|
+
const PHONE_REGEXP = /^(\+)?[\d\s]*$/;
|
|
10
12
|
function TextInput(props) {
|
|
11
13
|
var _a, _b;
|
|
12
14
|
const { field, fieldState } = (0, react_hook_form_1.useController)({
|
|
13
15
|
control: props.control,
|
|
14
16
|
name: props.name,
|
|
17
|
+
rules: {
|
|
18
|
+
required: props.isRequired ? props.requiredMessage || "Toto pole je povinné" : undefined,
|
|
19
|
+
pattern: props.type === "email"
|
|
20
|
+
? {
|
|
21
|
+
value: EMAIL_REGEXP,
|
|
22
|
+
message: "E-mail by měl být ve\xa0formátu: info@email.cz",
|
|
23
|
+
}
|
|
24
|
+
: props.type === "tel"
|
|
25
|
+
? {
|
|
26
|
+
value: PHONE_REGEXP,
|
|
27
|
+
message: "Zadaný telefon není ve správném formátu",
|
|
28
|
+
}
|
|
29
|
+
: undefined,
|
|
30
|
+
},
|
|
15
31
|
});
|
|
16
32
|
const onBlur = (event) => {
|
|
17
33
|
var _a;
|
|
18
34
|
field.onBlur();
|
|
19
35
|
(_a = props.onBlur) === null || _a === void 0 ? void 0 : _a.call(props, event);
|
|
20
36
|
};
|
|
21
|
-
return (react_1.default.createElement(text_input_1.TextInput, { id: props.id, name: props.name, value: field.value, onChange: field.onChange, onFocus: props.onFocus, onBlur: onBlur, isRequired: props.isRequired, isReadOnly: props.isReadOnly, isDisabled: props.isDisabled, isInvalid: !!fieldState.error, helperText: (_b = (_a = fieldState.error) === null || _a === void 0 ? void 0 : _a.message) !== null && _b !== void 0 ? _b : props.helperText, placeholder: props.placeholder, leftElement: props.leftElement, rightElement: props.rightElement, variant: props.variant, size: props.size, className: props.className, label: props.label, form: props.form, inputMode: props.inputMode, leftAddon: props.leftAddon, rightAddon: props.rightAddon, autoComplete: props.autoComplete, enterKeyHint: props.enterKeyHint }));
|
|
37
|
+
return (react_1.default.createElement(text_input_1.TextInput, { id: props.id, name: props.name, value: field.value, onChange: field.onChange, onFocus: props.onFocus, onBlur: onBlur, isRequired: props.isRequired, isReadOnly: props.isReadOnly, isDisabled: props.isDisabled, isInvalid: !!fieldState.error, helperText: (_b = (_a = fieldState.error) === null || _a === void 0 ? void 0 : _a.message) !== null && _b !== void 0 ? _b : props.helperText, placeholder: props.placeholder, leftElement: props.leftElement, rightElement: props.rightElement, variant: props.variant, size: props.size, className: props.className, label: props.label, form: props.form, inputMode: props.inputMode, leftAddon: props.leftAddon, rightAddon: props.rightAddon, autoComplete: props.autoComplete, enterKeyHint: props.enterKeyHint, type: props.type }));
|
|
22
38
|
}
|
|
23
39
|
exports.TextInput = TextInput;
|
|
@@ -13,7 +13,10 @@ exports.default = {
|
|
|
13
13
|
};
|
|
14
14
|
function Default() {
|
|
15
15
|
return (react_1.default.createElement(form_1.Form, null, ({ control }) => (react_1.default.createElement("div", { className: "space-y-4" },
|
|
16
|
-
react_1.default.createElement(text_input_1.TextInput, { label: "
|
|
17
|
-
react_1.default.createElement(text_input_1.TextInput, { label: "
|
|
16
|
+
react_1.default.createElement(text_input_1.TextInput, { label: "Default input", name: "default", control: control }),
|
|
17
|
+
react_1.default.createElement(text_input_1.TextInput, { label: "Required input", name: "required", control: control, isRequired: true }),
|
|
18
|
+
react_1.default.createElement(text_input_1.TextInput, { label: "E-mail required input", name: "email", type: "email", control: control, isRequired: true }),
|
|
19
|
+
react_1.default.createElement(text_input_1.TextInput, { label: "Phone required input", name: "phone", type: "tel", control: control, isRequired: true }),
|
|
20
|
+
react_1.default.createElement(text_input_1.TextInput, { label: "Password input", name: "password", type: "password", control: control })))));
|
|
18
21
|
}
|
|
19
22
|
exports.Default = Default;
|