@uxf/form 1.0.0-beta.156 → 1.0.0-beta.158
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/date-picker-input/date-picker-input.d.ts +1 -4
- package/date-picker-input/date-picker-input.js +51 -4
- package/date-picker-input/date-picker-input.stories.js +1 -1
- package/package.json +2 -2
- package/time-picker-input/time-picker-input.d.ts +2 -6
- package/time-picker-input/time-picker-input.js +47 -10
- package/time-picker-input/time-picker-input.stories.js +0 -1
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { DatePickerInputProps as UIDatePickerInputProps } from "@uxf/ui/date-picker-input";
|
|
3
3
|
import { FieldValues, UseControllerProps } from "react-hook-form";
|
|
4
|
-
import { FormControlProps } from "@uxf/ui/types";
|
|
5
|
-
type OnChangeHandler = FormControlProps<Date | null>["onChange"];
|
|
6
4
|
export type DatePickerInputProps<FormData extends FieldValues> = UseControllerProps<FormData> & Omit<UIDatePickerInputProps, "isInvalid" | "max" | "min" | "pattern" | "step" | "name" | "onChange" | "value"> & {
|
|
7
|
-
onChange?:
|
|
5
|
+
onChange?: UIDatePickerInputProps["onChange"];
|
|
8
6
|
requiredMessage?: string;
|
|
9
7
|
};
|
|
10
8
|
export declare function DatePickerInput<FormData extends FieldValues>(props: DatePickerInputProps<FormData>): JSX.Element;
|
|
11
9
|
export declare namespace DatePickerInput {
|
|
12
10
|
var displayName: string;
|
|
13
11
|
}
|
|
14
|
-
export {};
|
|
@@ -1,15 +1,42 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
27
|
};
|
|
5
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
29
|
exports.DatePickerInput = void 0;
|
|
7
30
|
const date_picker_input_1 = require("@uxf/ui/date-picker-input");
|
|
8
|
-
const dayjs_1 =
|
|
31
|
+
const dayjs_1 = __importStar(require("dayjs"));
|
|
9
32
|
const react_1 = __importDefault(require("react"));
|
|
10
33
|
const react_hook_form_1 = require("react-hook-form");
|
|
34
|
+
const date_picker_input_2 = require("@uxf/ui/date-picker-input/date-picker-input");
|
|
35
|
+
const customParseFormat_1 = __importDefault(require("dayjs/plugin/customParseFormat"));
|
|
36
|
+
(0, dayjs_1.extend)(customParseFormat_1.default);
|
|
37
|
+
const OUTPUT_DATE_FORMAT = "YYYY-MM-DD";
|
|
11
38
|
function DatePickerInput(props) {
|
|
12
|
-
var _a, _b, _c;
|
|
39
|
+
var _a, _b, _c, _d, _e, _f;
|
|
13
40
|
const { field, fieldState } = (0, react_hook_form_1.useController)({
|
|
14
41
|
control: props.control,
|
|
15
42
|
defaultValue: props.defaultValue,
|
|
@@ -17,6 +44,19 @@ function DatePickerInput(props) {
|
|
|
17
44
|
rules: {
|
|
18
45
|
required: props.isRequired ? props.requiredMessage || "Toto pole je povinné" : undefined,
|
|
19
46
|
...((_a = props.rules) !== null && _a !== void 0 ? _a : {}),
|
|
47
|
+
validate: {
|
|
48
|
+
validDate: (value) => {
|
|
49
|
+
if (!value) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
if (!(0, dayjs_1.default)(value, OUTPUT_DATE_FORMAT, true).isValid()) {
|
|
53
|
+
return "Datum musí být ve formátu D. M. YYYY.";
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
...(typeof ((_b = props.rules) === null || _b === void 0 ? void 0 : _b.validate) === "function"
|
|
57
|
+
? { custom: props.rules.validate }
|
|
58
|
+
: (_d = (_c = props.rules) === null || _c === void 0 ? void 0 : _c.validate) !== null && _d !== void 0 ? _d : {}),
|
|
59
|
+
},
|
|
20
60
|
},
|
|
21
61
|
shouldUnregister: props.shouldUnregister,
|
|
22
62
|
});
|
|
@@ -27,10 +67,17 @@ function DatePickerInput(props) {
|
|
|
27
67
|
};
|
|
28
68
|
const onChange = (value, event) => {
|
|
29
69
|
var _a;
|
|
30
|
-
|
|
70
|
+
if (value && (0, dayjs_1.default)(value, date_picker_input_2.ALLOWED_DATE_FORMAT, true).isValid()) {
|
|
71
|
+
field.onChange((0, dayjs_1.default)(value, date_picker_input_2.ALLOWED_DATE_FORMAT, true).format(OUTPUT_DATE_FORMAT));
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
field.onChange(value);
|
|
75
|
+
}
|
|
31
76
|
(_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, value, event);
|
|
32
77
|
};
|
|
33
|
-
|
|
78
|
+
const parsedDate = (0, dayjs_1.default)(field.value, OUTPUT_DATE_FORMAT, true);
|
|
79
|
+
const value = field.value ? (parsedDate.isValid() ? parsedDate.format(date_picker_input_2.DISPLAY_DATE_FORMAT) : field.value) : null;
|
|
80
|
+
return (react_1.default.createElement(date_picker_input_1.DatePickerInput, { className: props.className, form: props.form, helperText: (_f = (_e = fieldState.error) === null || _e === void 0 ? void 0 : _e.message) !== null && _f !== void 0 ? _f : props.helperText, hiddenLabel: props.hiddenLabel, id: props.id, isClearable: props.isClearable, 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, popoverPlacement: props.popoverPlacement, popoverStrategy: props.popoverStrategy, ref: field.ref, rightAddon: props.rightAddon, rightElement: props.rightElement, size: props.size, triggerElement: props.triggerElement, value: value, variant: props.variant }));
|
|
34
81
|
}
|
|
35
82
|
exports.DatePickerInput = DatePickerInput;
|
|
36
83
|
DatePickerInput.displayName = "UxfFormDatePickerInput";
|
|
@@ -14,7 +14,7 @@ exports.default = {
|
|
|
14
14
|
};
|
|
15
15
|
function Default() {
|
|
16
16
|
const storyFormDatePickers = (control) => (react_1.default.createElement("div", { className: "space-y-4" },
|
|
17
|
-
react_1.default.createElement(date_picker_input_1.DatePickerInput, { label: "Default date picker", name: "default", control: control, isClearable: true }),
|
|
17
|
+
react_1.default.createElement(date_picker_input_1.DatePickerInput, { label: "Default date picker", name: "default", control: control, isClearable: true, isRequired: true }),
|
|
18
18
|
react_1.default.createElement(button_1.Button, { type: "submit" }, "Submit")));
|
|
19
19
|
return (react_1.default.createElement(form_1.Form, null, ({ control }) => (react_1.default.createElement("div", { className: "flex flex-col lg:flex-row" },
|
|
20
20
|
react_1.default.createElement("div", { className: "light space-y-2 p-20 lg:w-1/2" }, storyFormDatePickers(control)),
|
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.158",
|
|
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.158",
|
|
17
17
|
"react-hook-form": "^7.43.9",
|
|
18
18
|
"coordinate-parser": "^1.0.7"
|
|
19
19
|
}
|
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { TimePickerInputProps as UITimePickerInputProps } from "@uxf/ui/time-picker-input";
|
|
3
3
|
import { FieldValues, UseControllerProps } from "react-hook-form";
|
|
4
|
-
import {
|
|
5
|
-
import { FormControlProps } from "@uxf/ui/types";
|
|
6
|
-
type OnChangeHandler = FormControlProps<TimeType | null>["onChange"];
|
|
4
|
+
import { DatePickerInputProps as UIDatePickerInputProps } from "@uxf/ui/date-picker-input";
|
|
7
5
|
export type TimePickerInputProps<FormData extends FieldValues> = UseControllerProps<FormData> & Omit<UITimePickerInputProps, "isInvalid" | "max" | "min" | "pattern" | "step" | "name" | "onChange" | "value"> & {
|
|
8
|
-
onChange?:
|
|
6
|
+
onChange?: UIDatePickerInputProps["onChange"];
|
|
9
7
|
requiredMessage?: string;
|
|
10
|
-
stringValue?: boolean;
|
|
11
8
|
};
|
|
12
9
|
export declare function TimePickerInput<FormData extends FieldValues>(props: TimePickerInputProps<FormData>): JSX.Element;
|
|
13
10
|
export declare namespace TimePickerInput {
|
|
14
11
|
var displayName: string;
|
|
15
12
|
}
|
|
16
|
-
export {};
|
|
@@ -1,4 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
27
|
};
|
|
@@ -7,9 +30,13 @@ exports.TimePickerInput = void 0;
|
|
|
7
30
|
const time_picker_input_1 = require("@uxf/ui/time-picker-input");
|
|
8
31
|
const react_hook_form_1 = require("react-hook-form");
|
|
9
32
|
const react_1 = __importDefault(require("react"));
|
|
10
|
-
const dayjs_1 =
|
|
33
|
+
const dayjs_1 = __importStar(require("dayjs"));
|
|
34
|
+
const time_picker_input_2 = require("@uxf/ui/time-picker-input/time-picker-input");
|
|
35
|
+
const customParseFormat_1 = __importDefault(require("dayjs/plugin/customParseFormat"));
|
|
36
|
+
(0, dayjs_1.extend)(customParseFormat_1.default);
|
|
37
|
+
const OUTPUT_TIME_FORMAT = "HH:mm:ss";
|
|
11
38
|
function TimePickerInput(props) {
|
|
12
|
-
var _a, _b, _c;
|
|
39
|
+
var _a, _b, _c, _d, _e, _f;
|
|
13
40
|
const { field, fieldState } = (0, react_hook_form_1.useController)({
|
|
14
41
|
control: props.control,
|
|
15
42
|
defaultValue: props.defaultValue,
|
|
@@ -17,6 +44,19 @@ function TimePickerInput(props) {
|
|
|
17
44
|
rules: {
|
|
18
45
|
required: props.isRequired ? props.requiredMessage || "Toto pole je povinné" : undefined,
|
|
19
46
|
...((_a = props.rules) !== null && _a !== void 0 ? _a : {}),
|
|
47
|
+
validate: {
|
|
48
|
+
validTime: (value) => {
|
|
49
|
+
if (!value) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
if (!(0, dayjs_1.default)(value, OUTPUT_TIME_FORMAT, true).isValid()) {
|
|
53
|
+
return "Čas musí být ve formátu H:mm.";
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
...(typeof ((_b = props.rules) === null || _b === void 0 ? void 0 : _b.validate) === "function"
|
|
57
|
+
? { custom: props.rules.validate }
|
|
58
|
+
: (_d = (_c = props.rules) === null || _c === void 0 ? void 0 : _c.validate) !== null && _d !== void 0 ? _d : {}),
|
|
59
|
+
},
|
|
20
60
|
},
|
|
21
61
|
shouldUnregister: props.shouldUnregister,
|
|
22
62
|
});
|
|
@@ -27,20 +67,17 @@ function TimePickerInput(props) {
|
|
|
27
67
|
};
|
|
28
68
|
const onChange = (value, event) => {
|
|
29
69
|
var _a;
|
|
30
|
-
if (
|
|
31
|
-
field.onChange((0, dayjs_1.default)(
|
|
70
|
+
if (value && (0, dayjs_1.default)(value, time_picker_input_2.ALLOWED_TIME_FORMAT, true).isValid()) {
|
|
71
|
+
field.onChange((0, dayjs_1.default)(value, time_picker_input_2.ALLOWED_TIME_FORMAT, true).format(OUTPUT_TIME_FORMAT));
|
|
32
72
|
}
|
|
33
73
|
else {
|
|
34
74
|
field.onChange(value);
|
|
35
75
|
}
|
|
36
76
|
(_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, value, event);
|
|
37
77
|
};
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
: undefined
|
|
42
|
-
: field.value;
|
|
43
|
-
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, isClearable: props.isClearable, 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 !== null && value !== void 0 ? value : null, variant: props.variant }));
|
|
78
|
+
const parsedTime = (0, dayjs_1.default)(field.value, OUTPUT_TIME_FORMAT, true);
|
|
79
|
+
const value = field.value ? (parsedTime.isValid() ? parsedTime.format(time_picker_input_2.DISPLAY_TIME_FORMAT) : field.value) : null;
|
|
80
|
+
return (react_1.default.createElement(time_picker_input_1.TimePickerInput, { className: props.className, form: props.form, helperText: (_f = (_e = fieldState.error) === null || _e === void 0 ? void 0 : _e.message) !== null && _f !== void 0 ? _f : props.helperText, hiddenLabel: props.hiddenLabel, id: props.id, isClearable: props.isClearable, 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, popoverPlacement: props.popoverPlacement, popoverStrategy: props.popoverStrategy, ref: field.ref, rightAddon: props.rightAddon, rightElement: props.rightElement, size: props.size, triggerElement: props.triggerElement, value: value !== null && value !== void 0 ? value : null, variant: props.variant }));
|
|
44
81
|
}
|
|
45
82
|
exports.TimePickerInput = TimePickerInput;
|
|
46
83
|
TimePickerInput.displayName = "UxfFormTimePickerInput";
|
|
@@ -15,7 +15,6 @@ 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, isClearable: true }),
|
|
18
|
-
react_1.default.createElement(time_picker_input_1.TimePickerInput, { label: "String time picker", name: "string", control: control, stringValue: true }),
|
|
19
18
|
react_1.default.createElement(button_1.Button, { type: "submit" }, "Submit")));
|
|
20
19
|
return (react_1.default.createElement(form_1.Form, null, ({ control }) => (react_1.default.createElement("div", { className: "flex flex-col lg:flex-row" },
|
|
21
20
|
react_1.default.createElement("div", { className: "light space-y-2 p-20 lg:w-1/2" }, storyFormDatePickers(control)),
|