@lets-events/react 12.7.3 → 12.8.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.
- package/.turbo/turbo-build.log +8 -8
- package/CHANGELOG.md +6 -0
- package/dist/index.d.mts +13 -1
- package/dist/index.d.ts +13 -1
- package/dist/index.js +132 -8
- package/dist/index.mjs +128 -5
- package/package.json +1 -1
- package/src/components/Calendar/styledComponents.ts +2 -1
- package/src/components/FormFields/DateAndTimeFormField.tsx +154 -0
- package/src/index.tsx +1 -0
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
-
> @lets-events/react@12.
|
|
3
|
+
> @lets-events/react@12.8.0 build
|
|
4
4
|
> tsup src/index.tsx --format esm,cjs --dts --external react
|
|
5
5
|
|
|
6
6
|
[1G[0K[34mCLI[39m Building entry: src/index.tsx
|
|
@@ -10,12 +10,12 @@
|
|
|
10
10
|
[34mCLI[39m Target: es6
|
|
11
11
|
[34mESM[39m Build start
|
|
12
12
|
[34mCJS[39m Build start
|
|
13
|
-
[32mCJS[39m [1mdist/index.js [22m[
|
|
14
|
-
[32mCJS[39m ⚡️ Build success in
|
|
15
|
-
[32mESM[39m [1mdist/index.mjs [22m[
|
|
16
|
-
[32mESM[39m ⚡️ Build success in
|
|
13
|
+
[32mCJS[39m [1mdist/index.js [22m[32m409.09 KB[39m
|
|
14
|
+
[32mCJS[39m ⚡️ Build success in 613ms
|
|
15
|
+
[32mESM[39m [1mdist/index.mjs [22m[32m393.73 KB[39m
|
|
16
|
+
[32mESM[39m ⚡️ Build success in 616ms
|
|
17
17
|
DTS Build start
|
|
18
|
-
DTS ⚡️ Build success in
|
|
19
|
-
DTS dist/index.d.mts 403.
|
|
20
|
-
DTS dist/index.d.ts 403.
|
|
18
|
+
DTS ⚡️ Build success in 11472ms
|
|
19
|
+
DTS dist/index.d.mts 403.74 KB
|
|
20
|
+
DTS dist/index.d.ts 403.74 KB
|
|
21
21
|
[1G[0K⠙[1G[0K
|
package/CHANGELOG.md
CHANGED
package/dist/index.d.mts
CHANGED
|
@@ -15351,6 +15351,18 @@ type TimePickerFormFieldProps = Omit<TimePickerProps, "selected" | "setSelected"
|
|
|
15351
15351
|
};
|
|
15352
15352
|
declare const TimePickerFormField: ({ name, label, required, validate, validationErrorMessage, rules, ...timePickerProps }: TimePickerFormFieldProps) => react_jsx_runtime.JSX.Element;
|
|
15353
15353
|
|
|
15354
|
+
type DateAndTimeFormFieldProps = Omit<CalendarProps, "selected" | "setSelected"> & Omit<TimePickerProps, "selected" | "setSelected"> & {
|
|
15355
|
+
name: string;
|
|
15356
|
+
label?: string;
|
|
15357
|
+
required?: boolean;
|
|
15358
|
+
validate?: (value: string | undefined) => boolean | string;
|
|
15359
|
+
validationErrorMessage?: string;
|
|
15360
|
+
rules?: Omit<RegisterOptions<FieldValues, string>, "valueAsNumber" | "valueAsDate" | "setValueAs" | "disabled">;
|
|
15361
|
+
allowPastDates?: boolean;
|
|
15362
|
+
maxYearsFromNow?: number;
|
|
15363
|
+
};
|
|
15364
|
+
declare const DateAndTimeFormField: ({ name, label, required, validate, validationErrorMessage, rules, allowPastDates, maxYearsFromNow, ...props }: DateAndTimeFormFieldProps) => react_jsx_runtime.JSX.Element;
|
|
15365
|
+
|
|
15354
15366
|
interface UploadConfig {
|
|
15355
15367
|
apiUrl: string;
|
|
15356
15368
|
s3Bucket: string;
|
|
@@ -15405,4 +15417,4 @@ declare const useImageUpload: (options: UseImageUploadOptions) => {
|
|
|
15405
15417
|
reset: () => void;
|
|
15406
15418
|
};
|
|
15407
15419
|
|
|
15408
|
-
export { AddressFormFields, Alert, AlertDialogCompleteStyled, AlertDialogDescriptionStyled, AlertDialogRowStyled, AlertDialogSimpleStyled, AlertDialogSubtitleStyled, AlertDialogTitleStyled, AlertDialoghrStyled, type AlertProps, Avatar, type AvatarProps, AvatarStyled, Badge, type BadgeProps, BadgeStyled, BirthDateFormField, Box, Button, ButtonGroup, type ButtonGroupProps, ButtonGroupStyled, ButtonItem, type ButtonItemProps, ButtonItemStyled, type ButtonProps, CNPJFormField, CPFFormField, Calendar, CalendarFormField, type CalendarFormFieldProps, type CalendarProps, Card, type CardProps, CardStyled, CheckboxGroup, CheckboxGroupFormField, type CheckboxGroupFormFieldProps, type CheckboxGroupProps, CheckboxGroupStyled, CheckboxItem, type CheckboxItemProps, Container, type ContainerProps, ContainerStyled, CountryFormField, type DateRange, Divider, DoubleCalendar, DoubleCalendarFormField, type DoubleCalendarFormFieldProps, type DoubleCalendarProps, Drawer, type DrawerProps, DropdownMenu, DropdownMenuItem, type DropdownMenuItemProps, type DropdownMenuProps, EmailFormField, type EmailFormFieldProps, ErrorFormMessage, type ErrorFormMessageProps, Filter, FilterItem, type FilterItemProps, type FilterProps, Flex, type FlexProps, FlexStyled, Form, FormLabel, type FormLabelProps, type FormProps, Grid, type GridProps, GridStyled, Icon, type IconProps, IdentityDocumentNumberFormField, InputStyled, MenuDropdown, type MenuDropdownProps, Modal, type ModalProps, MultiSelect, MultiSelectFormField, type MultiSelectFormFieldProps, type MultiSelectProps, PhoneFormField, type PhoneFormFieldProps, RadioGroup, RadioGroupFormField, type RadioGroupFormFieldProps, type RadioGroupProps, RadioGroupStyled, RadioItem, type RadioItemProps, RichEditor, RichEditorFormField, type RichEditorFormFieldProps, type RichEditorProps, RichTextPresenter, Section, type SectionProps, SectionStyled, SelectFormField, type SelectFormFieldProps, Step, StepContent, StepList, type StepProps, StepStyled, StepTrigger, StepWrapper, Switch, SwitchFormField, type SwitchFormFieldProps, type SwitchProps, SwitchStyled, Text, TextAreaFormField, type TextAreaFormFieldProps, TextField, type TextFieldProps, TextFieldSlot, type TextFieldSlotProps, TextFieldSlotStyled, TextFieldStyled, TextFormField, type TextFormFieldProps, type TextProps, TextStyle, TextareaField, type TextareaFieldProps, TextareaFieldStyle, TimePicker, TimePickerButtonStyled, TimePickerDropdownStyled, TimePickerFooterStyled, TimePickerFormField, type TimePickerFormFieldProps, TimePickerIconButton, type TimePickerProps, TimePickerStyled, TimerPickerContentStyled, type Toast, type ToastComponentProps, type ToastConfig, type ToastContextType, ToastItem, type ToastOptions, ToastProvider, type ToastProviderProps, type ToastType, type ToasterShowOptions, Tooltip, TooltipContent, type TooltipProps, TooltipProvider, TooltipRoot, TooltipTrigger, type UploadConfig, UploadService, isValidCNPJ, maskFormat, maskUnformat, useImageUpload, useToast };
|
|
15420
|
+
export { AddressFormFields, Alert, AlertDialogCompleteStyled, AlertDialogDescriptionStyled, AlertDialogRowStyled, AlertDialogSimpleStyled, AlertDialogSubtitleStyled, AlertDialogTitleStyled, AlertDialoghrStyled, type AlertProps, Avatar, type AvatarProps, AvatarStyled, Badge, type BadgeProps, BadgeStyled, BirthDateFormField, Box, Button, ButtonGroup, type ButtonGroupProps, ButtonGroupStyled, ButtonItem, type ButtonItemProps, ButtonItemStyled, type ButtonProps, CNPJFormField, CPFFormField, Calendar, CalendarFormField, type CalendarFormFieldProps, type CalendarProps, Card, type CardProps, CardStyled, CheckboxGroup, CheckboxGroupFormField, type CheckboxGroupFormFieldProps, type CheckboxGroupProps, CheckboxGroupStyled, CheckboxItem, type CheckboxItemProps, Container, type ContainerProps, ContainerStyled, CountryFormField, DateAndTimeFormField, type DateAndTimeFormFieldProps, type DateRange, Divider, DoubleCalendar, DoubleCalendarFormField, type DoubleCalendarFormFieldProps, type DoubleCalendarProps, Drawer, type DrawerProps, DropdownMenu, DropdownMenuItem, type DropdownMenuItemProps, type DropdownMenuProps, EmailFormField, type EmailFormFieldProps, ErrorFormMessage, type ErrorFormMessageProps, Filter, FilterItem, type FilterItemProps, type FilterProps, Flex, type FlexProps, FlexStyled, Form, FormLabel, type FormLabelProps, type FormProps, Grid, type GridProps, GridStyled, Icon, type IconProps, IdentityDocumentNumberFormField, InputStyled, MenuDropdown, type MenuDropdownProps, Modal, type ModalProps, MultiSelect, MultiSelectFormField, type MultiSelectFormFieldProps, type MultiSelectProps, PhoneFormField, type PhoneFormFieldProps, RadioGroup, RadioGroupFormField, type RadioGroupFormFieldProps, type RadioGroupProps, RadioGroupStyled, RadioItem, type RadioItemProps, RichEditor, RichEditorFormField, type RichEditorFormFieldProps, type RichEditorProps, RichTextPresenter, Section, type SectionProps, SectionStyled, SelectFormField, type SelectFormFieldProps, Step, StepContent, StepList, type StepProps, StepStyled, StepTrigger, StepWrapper, Switch, SwitchFormField, type SwitchFormFieldProps, type SwitchProps, SwitchStyled, Text, TextAreaFormField, type TextAreaFormFieldProps, TextField, type TextFieldProps, TextFieldSlot, type TextFieldSlotProps, TextFieldSlotStyled, TextFieldStyled, TextFormField, type TextFormFieldProps, type TextProps, TextStyle, TextareaField, type TextareaFieldProps, TextareaFieldStyle, TimePicker, TimePickerButtonStyled, TimePickerDropdownStyled, TimePickerFooterStyled, TimePickerFormField, type TimePickerFormFieldProps, TimePickerIconButton, type TimePickerProps, TimePickerStyled, TimerPickerContentStyled, type Toast, type ToastComponentProps, type ToastConfig, type ToastContextType, ToastItem, type ToastOptions, ToastProvider, type ToastProviderProps, type ToastType, type ToasterShowOptions, Tooltip, TooltipContent, type TooltipProps, TooltipProvider, TooltipRoot, TooltipTrigger, type UploadConfig, UploadService, isValidCNPJ, maskFormat, maskUnformat, useImageUpload, useToast };
|
package/dist/index.d.ts
CHANGED
|
@@ -15351,6 +15351,18 @@ type TimePickerFormFieldProps = Omit<TimePickerProps, "selected" | "setSelected"
|
|
|
15351
15351
|
};
|
|
15352
15352
|
declare const TimePickerFormField: ({ name, label, required, validate, validationErrorMessage, rules, ...timePickerProps }: TimePickerFormFieldProps) => react_jsx_runtime.JSX.Element;
|
|
15353
15353
|
|
|
15354
|
+
type DateAndTimeFormFieldProps = Omit<CalendarProps, "selected" | "setSelected"> & Omit<TimePickerProps, "selected" | "setSelected"> & {
|
|
15355
|
+
name: string;
|
|
15356
|
+
label?: string;
|
|
15357
|
+
required?: boolean;
|
|
15358
|
+
validate?: (value: string | undefined) => boolean | string;
|
|
15359
|
+
validationErrorMessage?: string;
|
|
15360
|
+
rules?: Omit<RegisterOptions<FieldValues, string>, "valueAsNumber" | "valueAsDate" | "setValueAs" | "disabled">;
|
|
15361
|
+
allowPastDates?: boolean;
|
|
15362
|
+
maxYearsFromNow?: number;
|
|
15363
|
+
};
|
|
15364
|
+
declare const DateAndTimeFormField: ({ name, label, required, validate, validationErrorMessage, rules, allowPastDates, maxYearsFromNow, ...props }: DateAndTimeFormFieldProps) => react_jsx_runtime.JSX.Element;
|
|
15365
|
+
|
|
15354
15366
|
interface UploadConfig {
|
|
15355
15367
|
apiUrl: string;
|
|
15356
15368
|
s3Bucket: string;
|
|
@@ -15405,4 +15417,4 @@ declare const useImageUpload: (options: UseImageUploadOptions) => {
|
|
|
15405
15417
|
reset: () => void;
|
|
15406
15418
|
};
|
|
15407
15419
|
|
|
15408
|
-
export { AddressFormFields, Alert, AlertDialogCompleteStyled, AlertDialogDescriptionStyled, AlertDialogRowStyled, AlertDialogSimpleStyled, AlertDialogSubtitleStyled, AlertDialogTitleStyled, AlertDialoghrStyled, type AlertProps, Avatar, type AvatarProps, AvatarStyled, Badge, type BadgeProps, BadgeStyled, BirthDateFormField, Box, Button, ButtonGroup, type ButtonGroupProps, ButtonGroupStyled, ButtonItem, type ButtonItemProps, ButtonItemStyled, type ButtonProps, CNPJFormField, CPFFormField, Calendar, CalendarFormField, type CalendarFormFieldProps, type CalendarProps, Card, type CardProps, CardStyled, CheckboxGroup, CheckboxGroupFormField, type CheckboxGroupFormFieldProps, type CheckboxGroupProps, CheckboxGroupStyled, CheckboxItem, type CheckboxItemProps, Container, type ContainerProps, ContainerStyled, CountryFormField, type DateRange, Divider, DoubleCalendar, DoubleCalendarFormField, type DoubleCalendarFormFieldProps, type DoubleCalendarProps, Drawer, type DrawerProps, DropdownMenu, DropdownMenuItem, type DropdownMenuItemProps, type DropdownMenuProps, EmailFormField, type EmailFormFieldProps, ErrorFormMessage, type ErrorFormMessageProps, Filter, FilterItem, type FilterItemProps, type FilterProps, Flex, type FlexProps, FlexStyled, Form, FormLabel, type FormLabelProps, type FormProps, Grid, type GridProps, GridStyled, Icon, type IconProps, IdentityDocumentNumberFormField, InputStyled, MenuDropdown, type MenuDropdownProps, Modal, type ModalProps, MultiSelect, MultiSelectFormField, type MultiSelectFormFieldProps, type MultiSelectProps, PhoneFormField, type PhoneFormFieldProps, RadioGroup, RadioGroupFormField, type RadioGroupFormFieldProps, type RadioGroupProps, RadioGroupStyled, RadioItem, type RadioItemProps, RichEditor, RichEditorFormField, type RichEditorFormFieldProps, type RichEditorProps, RichTextPresenter, Section, type SectionProps, SectionStyled, SelectFormField, type SelectFormFieldProps, Step, StepContent, StepList, type StepProps, StepStyled, StepTrigger, StepWrapper, Switch, SwitchFormField, type SwitchFormFieldProps, type SwitchProps, SwitchStyled, Text, TextAreaFormField, type TextAreaFormFieldProps, TextField, type TextFieldProps, TextFieldSlot, type TextFieldSlotProps, TextFieldSlotStyled, TextFieldStyled, TextFormField, type TextFormFieldProps, type TextProps, TextStyle, TextareaField, type TextareaFieldProps, TextareaFieldStyle, TimePicker, TimePickerButtonStyled, TimePickerDropdownStyled, TimePickerFooterStyled, TimePickerFormField, type TimePickerFormFieldProps, TimePickerIconButton, type TimePickerProps, TimePickerStyled, TimerPickerContentStyled, type Toast, type ToastComponentProps, type ToastConfig, type ToastContextType, ToastItem, type ToastOptions, ToastProvider, type ToastProviderProps, type ToastType, type ToasterShowOptions, Tooltip, TooltipContent, type TooltipProps, TooltipProvider, TooltipRoot, TooltipTrigger, type UploadConfig, UploadService, isValidCNPJ, maskFormat, maskUnformat, useImageUpload, useToast };
|
|
15420
|
+
export { AddressFormFields, Alert, AlertDialogCompleteStyled, AlertDialogDescriptionStyled, AlertDialogRowStyled, AlertDialogSimpleStyled, AlertDialogSubtitleStyled, AlertDialogTitleStyled, AlertDialoghrStyled, type AlertProps, Avatar, type AvatarProps, AvatarStyled, Badge, type BadgeProps, BadgeStyled, BirthDateFormField, Box, Button, ButtonGroup, type ButtonGroupProps, ButtonGroupStyled, ButtonItem, type ButtonItemProps, ButtonItemStyled, type ButtonProps, CNPJFormField, CPFFormField, Calendar, CalendarFormField, type CalendarFormFieldProps, type CalendarProps, Card, type CardProps, CardStyled, CheckboxGroup, CheckboxGroupFormField, type CheckboxGroupFormFieldProps, type CheckboxGroupProps, CheckboxGroupStyled, CheckboxItem, type CheckboxItemProps, Container, type ContainerProps, ContainerStyled, CountryFormField, DateAndTimeFormField, type DateAndTimeFormFieldProps, type DateRange, Divider, DoubleCalendar, DoubleCalendarFormField, type DoubleCalendarFormFieldProps, type DoubleCalendarProps, Drawer, type DrawerProps, DropdownMenu, DropdownMenuItem, type DropdownMenuItemProps, type DropdownMenuProps, EmailFormField, type EmailFormFieldProps, ErrorFormMessage, type ErrorFormMessageProps, Filter, FilterItem, type FilterItemProps, type FilterProps, Flex, type FlexProps, FlexStyled, Form, FormLabel, type FormLabelProps, type FormProps, Grid, type GridProps, GridStyled, Icon, type IconProps, IdentityDocumentNumberFormField, InputStyled, MenuDropdown, type MenuDropdownProps, Modal, type ModalProps, MultiSelect, MultiSelectFormField, type MultiSelectFormFieldProps, type MultiSelectProps, PhoneFormField, type PhoneFormFieldProps, RadioGroup, RadioGroupFormField, type RadioGroupFormFieldProps, type RadioGroupProps, RadioGroupStyled, RadioItem, type RadioItemProps, RichEditor, RichEditorFormField, type RichEditorFormFieldProps, type RichEditorProps, RichTextPresenter, Section, type SectionProps, SectionStyled, SelectFormField, type SelectFormFieldProps, Step, StepContent, StepList, type StepProps, StepStyled, StepTrigger, StepWrapper, Switch, SwitchFormField, type SwitchFormFieldProps, type SwitchProps, SwitchStyled, Text, TextAreaFormField, type TextAreaFormFieldProps, TextField, type TextFieldProps, TextFieldSlot, type TextFieldSlotProps, TextFieldSlotStyled, TextFieldStyled, TextFormField, type TextFormFieldProps, type TextProps, TextStyle, TextareaField, type TextareaFieldProps, TextareaFieldStyle, TimePicker, TimePickerButtonStyled, TimePickerDropdownStyled, TimePickerFooterStyled, TimePickerFormField, type TimePickerFormFieldProps, TimePickerIconButton, type TimePickerProps, TimePickerStyled, TimerPickerContentStyled, type Toast, type ToastComponentProps, type ToastConfig, type ToastContextType, ToastItem, type ToastOptions, ToastProvider, type ToastProviderProps, type ToastType, type ToasterShowOptions, Tooltip, TooltipContent, type TooltipProps, TooltipProvider, TooltipRoot, TooltipTrigger, type UploadConfig, UploadService, isValidCNPJ, maskFormat, maskUnformat, useImageUpload, useToast };
|
package/dist/index.js
CHANGED
|
@@ -895,6 +895,7 @@ __export(index_exports, {
|
|
|
895
895
|
Container: () => Container,
|
|
896
896
|
ContainerStyled: () => ContainerStyled,
|
|
897
897
|
CountryFormField: () => CountryFormField,
|
|
898
|
+
DateAndTimeFormField: () => DateAndTimeFormField,
|
|
898
899
|
Divider: () => Divider,
|
|
899
900
|
DoubleCalendar: () => DoubleCalendar,
|
|
900
901
|
DoubleCalendarFormField: () => DoubleCalendarFormField,
|
|
@@ -7939,7 +7940,8 @@ var DayPickerWrapperStyled = styled("div", {
|
|
|
7939
7940
|
},
|
|
7940
7941
|
".rdp-nav": {
|
|
7941
7942
|
position: "absolute",
|
|
7942
|
-
width: "
|
|
7943
|
+
width: "100%",
|
|
7944
|
+
left: "0",
|
|
7943
7945
|
display: "flex",
|
|
7944
7946
|
justifyContent: "space-between"
|
|
7945
7947
|
},
|
|
@@ -13250,12 +13252,133 @@ var TimePickerFormField = (_a) => {
|
|
|
13250
13252
|
] });
|
|
13251
13253
|
};
|
|
13252
13254
|
|
|
13253
|
-
// src/
|
|
13255
|
+
// src/components/FormFields/DateAndTimeFormField.tsx
|
|
13256
|
+
var import_react_hook_form16 = require("react-hook-form");
|
|
13254
13257
|
var import_react28 = require("react");
|
|
13258
|
+
var import_jsx_runtime59 = require("react/jsx-runtime");
|
|
13259
|
+
var DateAndTimeFormField = (_a) => {
|
|
13260
|
+
var _b = _a, {
|
|
13261
|
+
name,
|
|
13262
|
+
label,
|
|
13263
|
+
required,
|
|
13264
|
+
validate,
|
|
13265
|
+
validationErrorMessage = "Este campo \xE9 obrigat\xF3rio.",
|
|
13266
|
+
rules,
|
|
13267
|
+
allowPastDates,
|
|
13268
|
+
maxYearsFromNow = 20
|
|
13269
|
+
} = _b, props = __objRest(_b, [
|
|
13270
|
+
"name",
|
|
13271
|
+
"label",
|
|
13272
|
+
"required",
|
|
13273
|
+
"validate",
|
|
13274
|
+
"validationErrorMessage",
|
|
13275
|
+
"rules",
|
|
13276
|
+
"allowPastDates",
|
|
13277
|
+
"maxYearsFromNow"
|
|
13278
|
+
]);
|
|
13279
|
+
const handleValidate = (0, import_react28.useCallback)(
|
|
13280
|
+
(value) => {
|
|
13281
|
+
var _a2;
|
|
13282
|
+
if (value === void 0 || value === null || value === "") {
|
|
13283
|
+
if (required) return validationErrorMessage;
|
|
13284
|
+
return true;
|
|
13285
|
+
}
|
|
13286
|
+
return (_a2 = validate == null ? void 0 : validate(value)) != null ? _a2 : true;
|
|
13287
|
+
},
|
|
13288
|
+
[validate, required, validationErrorMessage]
|
|
13289
|
+
);
|
|
13290
|
+
const { field, fieldState } = (0, import_react_hook_form16.useController)({
|
|
13291
|
+
name,
|
|
13292
|
+
rules: __spreadValues({
|
|
13293
|
+
required: required ? validationErrorMessage : false,
|
|
13294
|
+
validate: handleValidate
|
|
13295
|
+
}, rules),
|
|
13296
|
+
defaultValue: ""
|
|
13297
|
+
});
|
|
13298
|
+
const fieldError = fieldState.error;
|
|
13299
|
+
const haveError = !!fieldError;
|
|
13300
|
+
const errorMsg = fieldError == null ? void 0 : fieldError.message;
|
|
13301
|
+
const { value: isoValue, onChange: setIsoValue } = field;
|
|
13302
|
+
const { selectedDate, selectedTime } = (0, import_react28.useMemo)(() => {
|
|
13303
|
+
if (!isoValue) return { selectedDate: void 0, selectedTime: void 0 };
|
|
13304
|
+
try {
|
|
13305
|
+
const date = new Date(isoValue);
|
|
13306
|
+
if (isNaN(date.getTime())) {
|
|
13307
|
+
return { selectedDate: void 0, selectedTime: void 0 };
|
|
13308
|
+
}
|
|
13309
|
+
const hours = String(date.getHours()).padStart(2, "0");
|
|
13310
|
+
const minutes = String(date.getMinutes()).padStart(2, "0");
|
|
13311
|
+
const time = `${hours}:${minutes}`;
|
|
13312
|
+
return { selectedDate: date, selectedTime: time };
|
|
13313
|
+
} catch (e) {
|
|
13314
|
+
return { selectedDate: void 0, selectedTime: void 0 };
|
|
13315
|
+
}
|
|
13316
|
+
}, [isoValue]);
|
|
13317
|
+
const combineDateTime = (0, import_react28.useCallback)(
|
|
13318
|
+
(date, time) => {
|
|
13319
|
+
if (!date || !time) {
|
|
13320
|
+
setIsoValue("");
|
|
13321
|
+
return;
|
|
13322
|
+
}
|
|
13323
|
+
const [hours, minutes] = time.split(":").map(Number);
|
|
13324
|
+
const combined = new Date(date);
|
|
13325
|
+
combined.setHours(hours || 0, minutes || 0, 0, 0);
|
|
13326
|
+
setIsoValue(combined.toISOString());
|
|
13327
|
+
},
|
|
13328
|
+
[setIsoValue]
|
|
13329
|
+
);
|
|
13330
|
+
const handleDateChange = (date) => {
|
|
13331
|
+
combineDateTime(date, selectedTime);
|
|
13332
|
+
};
|
|
13333
|
+
const handleTimeChange = (time) => {
|
|
13334
|
+
combineDateTime(selectedDate, time);
|
|
13335
|
+
};
|
|
13336
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(Flex, { direction: "column", children: [
|
|
13337
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
13338
|
+
FormLabel,
|
|
13339
|
+
{
|
|
13340
|
+
name,
|
|
13341
|
+
label,
|
|
13342
|
+
required,
|
|
13343
|
+
haveError
|
|
13344
|
+
}
|
|
13345
|
+
),
|
|
13346
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(Flex, { gap: 12, align: "start", children: [
|
|
13347
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Flex, { direction: "column", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
13348
|
+
Calendar,
|
|
13349
|
+
__spreadValues({
|
|
13350
|
+
selected: selectedDate,
|
|
13351
|
+
setSelected: (date) => {
|
|
13352
|
+
const d = typeof date === "function" ? date(selectedDate) : date;
|
|
13353
|
+
handleDateChange(d);
|
|
13354
|
+
},
|
|
13355
|
+
hasError: haveError,
|
|
13356
|
+
allowPastDates,
|
|
13357
|
+
maxYearsFromNow
|
|
13358
|
+
}, props)
|
|
13359
|
+
) }),
|
|
13360
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Flex, { direction: "column", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
13361
|
+
TimePicker,
|
|
13362
|
+
__spreadValues({
|
|
13363
|
+
selected: selectedTime,
|
|
13364
|
+
setSelected: (value) => {
|
|
13365
|
+
const time = typeof value === "function" ? value(selectedTime) : value;
|
|
13366
|
+
handleTimeChange(time);
|
|
13367
|
+
},
|
|
13368
|
+
hasError: haveError
|
|
13369
|
+
}, props)
|
|
13370
|
+
) })
|
|
13371
|
+
] }),
|
|
13372
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(ErrorFormMessage, { message: errorMsg })
|
|
13373
|
+
] });
|
|
13374
|
+
};
|
|
13375
|
+
|
|
13376
|
+
// src/hooks/useImageUpload.ts
|
|
13377
|
+
var import_react29 = require("react");
|
|
13255
13378
|
var useImageUpload = (options) => {
|
|
13256
|
-
const [isUploading, setIsUploading] = (0,
|
|
13257
|
-
const [progress, setProgress] = (0,
|
|
13258
|
-
const [error, setError] = (0,
|
|
13379
|
+
const [isUploading, setIsUploading] = (0, import_react29.useState)(false);
|
|
13380
|
+
const [progress, setProgress] = (0, import_react29.useState)(null);
|
|
13381
|
+
const [error, setError] = (0, import_react29.useState)(null);
|
|
13259
13382
|
const {
|
|
13260
13383
|
onSuccess,
|
|
13261
13384
|
onError,
|
|
@@ -13265,7 +13388,7 @@ var useImageUpload = (options) => {
|
|
|
13265
13388
|
allowedTypes = ["image/jpeg", "image/png", "image/gif", "image/webp"],
|
|
13266
13389
|
uploadConfig
|
|
13267
13390
|
} = options;
|
|
13268
|
-
const validateFile = (0,
|
|
13391
|
+
const validateFile = (0, import_react29.useCallback)(
|
|
13269
13392
|
(file) => {
|
|
13270
13393
|
if (!allowedTypes.includes(file.type)) {
|
|
13271
13394
|
const errorMsg = "Tipo de arquivo n\xE3o suportado";
|
|
@@ -13283,7 +13406,7 @@ var useImageUpload = (options) => {
|
|
|
13283
13406
|
},
|
|
13284
13407
|
[allowedTypes, maxFileSize, onError]
|
|
13285
13408
|
);
|
|
13286
|
-
const uploadFile = (0,
|
|
13409
|
+
const uploadFile = (0, import_react29.useCallback)(
|
|
13287
13410
|
(file) => __async(null, null, function* () {
|
|
13288
13411
|
if (!validateFile(file)) {
|
|
13289
13412
|
return null;
|
|
@@ -13336,7 +13459,7 @@ var useImageUpload = (options) => {
|
|
|
13336
13459
|
}),
|
|
13337
13460
|
[validateFile, onSuccess, onError, onProgress]
|
|
13338
13461
|
);
|
|
13339
|
-
const reset = (0,
|
|
13462
|
+
const reset = (0, import_react29.useCallback)(() => {
|
|
13340
13463
|
setIsUploading(false);
|
|
13341
13464
|
setProgress(null);
|
|
13342
13465
|
setError(null);
|
|
@@ -13384,6 +13507,7 @@ var useImageUpload = (options) => {
|
|
|
13384
13507
|
Container,
|
|
13385
13508
|
ContainerStyled,
|
|
13386
13509
|
CountryFormField,
|
|
13510
|
+
DateAndTimeFormField,
|
|
13387
13511
|
Divider,
|
|
13388
13512
|
DoubleCalendar,
|
|
13389
13513
|
DoubleCalendarFormField,
|
package/dist/index.mjs
CHANGED
|
@@ -7824,7 +7824,8 @@ var DayPickerWrapperStyled = styled("div", {
|
|
|
7824
7824
|
},
|
|
7825
7825
|
".rdp-nav": {
|
|
7826
7826
|
position: "absolute",
|
|
7827
|
-
width: "
|
|
7827
|
+
width: "100%",
|
|
7828
|
+
left: "0",
|
|
7828
7829
|
display: "flex",
|
|
7829
7830
|
justifyContent: "space-between"
|
|
7830
7831
|
},
|
|
@@ -13144,8 +13145,129 @@ var TimePickerFormField = (_a) => {
|
|
|
13144
13145
|
] });
|
|
13145
13146
|
};
|
|
13146
13147
|
|
|
13148
|
+
// src/components/FormFields/DateAndTimeFormField.tsx
|
|
13149
|
+
import { useController as useController7 } from "react-hook-form";
|
|
13150
|
+
import { useCallback as useCallback8, useMemo as useMemo4 } from "react";
|
|
13151
|
+
import { jsx as jsx59, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
13152
|
+
var DateAndTimeFormField = (_a) => {
|
|
13153
|
+
var _b = _a, {
|
|
13154
|
+
name,
|
|
13155
|
+
label,
|
|
13156
|
+
required,
|
|
13157
|
+
validate,
|
|
13158
|
+
validationErrorMessage = "Este campo \xE9 obrigat\xF3rio.",
|
|
13159
|
+
rules,
|
|
13160
|
+
allowPastDates,
|
|
13161
|
+
maxYearsFromNow = 20
|
|
13162
|
+
} = _b, props = __objRest(_b, [
|
|
13163
|
+
"name",
|
|
13164
|
+
"label",
|
|
13165
|
+
"required",
|
|
13166
|
+
"validate",
|
|
13167
|
+
"validationErrorMessage",
|
|
13168
|
+
"rules",
|
|
13169
|
+
"allowPastDates",
|
|
13170
|
+
"maxYearsFromNow"
|
|
13171
|
+
]);
|
|
13172
|
+
const handleValidate = useCallback8(
|
|
13173
|
+
(value) => {
|
|
13174
|
+
var _a2;
|
|
13175
|
+
if (value === void 0 || value === null || value === "") {
|
|
13176
|
+
if (required) return validationErrorMessage;
|
|
13177
|
+
return true;
|
|
13178
|
+
}
|
|
13179
|
+
return (_a2 = validate == null ? void 0 : validate(value)) != null ? _a2 : true;
|
|
13180
|
+
},
|
|
13181
|
+
[validate, required, validationErrorMessage]
|
|
13182
|
+
);
|
|
13183
|
+
const { field, fieldState } = useController7({
|
|
13184
|
+
name,
|
|
13185
|
+
rules: __spreadValues({
|
|
13186
|
+
required: required ? validationErrorMessage : false,
|
|
13187
|
+
validate: handleValidate
|
|
13188
|
+
}, rules),
|
|
13189
|
+
defaultValue: ""
|
|
13190
|
+
});
|
|
13191
|
+
const fieldError = fieldState.error;
|
|
13192
|
+
const haveError = !!fieldError;
|
|
13193
|
+
const errorMsg = fieldError == null ? void 0 : fieldError.message;
|
|
13194
|
+
const { value: isoValue, onChange: setIsoValue } = field;
|
|
13195
|
+
const { selectedDate, selectedTime } = useMemo4(() => {
|
|
13196
|
+
if (!isoValue) return { selectedDate: void 0, selectedTime: void 0 };
|
|
13197
|
+
try {
|
|
13198
|
+
const date = new Date(isoValue);
|
|
13199
|
+
if (isNaN(date.getTime())) {
|
|
13200
|
+
return { selectedDate: void 0, selectedTime: void 0 };
|
|
13201
|
+
}
|
|
13202
|
+
const hours = String(date.getHours()).padStart(2, "0");
|
|
13203
|
+
const minutes = String(date.getMinutes()).padStart(2, "0");
|
|
13204
|
+
const time = `${hours}:${minutes}`;
|
|
13205
|
+
return { selectedDate: date, selectedTime: time };
|
|
13206
|
+
} catch (e) {
|
|
13207
|
+
return { selectedDate: void 0, selectedTime: void 0 };
|
|
13208
|
+
}
|
|
13209
|
+
}, [isoValue]);
|
|
13210
|
+
const combineDateTime = useCallback8(
|
|
13211
|
+
(date, time) => {
|
|
13212
|
+
if (!date || !time) {
|
|
13213
|
+
setIsoValue("");
|
|
13214
|
+
return;
|
|
13215
|
+
}
|
|
13216
|
+
const [hours, minutes] = time.split(":").map(Number);
|
|
13217
|
+
const combined = new Date(date);
|
|
13218
|
+
combined.setHours(hours || 0, minutes || 0, 0, 0);
|
|
13219
|
+
setIsoValue(combined.toISOString());
|
|
13220
|
+
},
|
|
13221
|
+
[setIsoValue]
|
|
13222
|
+
);
|
|
13223
|
+
const handleDateChange = (date) => {
|
|
13224
|
+
combineDateTime(date, selectedTime);
|
|
13225
|
+
};
|
|
13226
|
+
const handleTimeChange = (time) => {
|
|
13227
|
+
combineDateTime(selectedDate, time);
|
|
13228
|
+
};
|
|
13229
|
+
return /* @__PURE__ */ jsxs33(Flex, { direction: "column", children: [
|
|
13230
|
+
label && /* @__PURE__ */ jsx59(
|
|
13231
|
+
FormLabel,
|
|
13232
|
+
{
|
|
13233
|
+
name,
|
|
13234
|
+
label,
|
|
13235
|
+
required,
|
|
13236
|
+
haveError
|
|
13237
|
+
}
|
|
13238
|
+
),
|
|
13239
|
+
/* @__PURE__ */ jsxs33(Flex, { gap: 12, align: "start", children: [
|
|
13240
|
+
/* @__PURE__ */ jsx59(Flex, { direction: "column", children: /* @__PURE__ */ jsx59(
|
|
13241
|
+
Calendar,
|
|
13242
|
+
__spreadValues({
|
|
13243
|
+
selected: selectedDate,
|
|
13244
|
+
setSelected: (date) => {
|
|
13245
|
+
const d = typeof date === "function" ? date(selectedDate) : date;
|
|
13246
|
+
handleDateChange(d);
|
|
13247
|
+
},
|
|
13248
|
+
hasError: haveError,
|
|
13249
|
+
allowPastDates,
|
|
13250
|
+
maxYearsFromNow
|
|
13251
|
+
}, props)
|
|
13252
|
+
) }),
|
|
13253
|
+
/* @__PURE__ */ jsx59(Flex, { direction: "column", children: /* @__PURE__ */ jsx59(
|
|
13254
|
+
TimePicker,
|
|
13255
|
+
__spreadValues({
|
|
13256
|
+
selected: selectedTime,
|
|
13257
|
+
setSelected: (value) => {
|
|
13258
|
+
const time = typeof value === "function" ? value(selectedTime) : value;
|
|
13259
|
+
handleTimeChange(time);
|
|
13260
|
+
},
|
|
13261
|
+
hasError: haveError
|
|
13262
|
+
}, props)
|
|
13263
|
+
) })
|
|
13264
|
+
] }),
|
|
13265
|
+
/* @__PURE__ */ jsx59(ErrorFormMessage, { message: errorMsg })
|
|
13266
|
+
] });
|
|
13267
|
+
};
|
|
13268
|
+
|
|
13147
13269
|
// src/hooks/useImageUpload.ts
|
|
13148
|
-
import { useState as useState13, useCallback as
|
|
13270
|
+
import { useState as useState13, useCallback as useCallback9 } from "react";
|
|
13149
13271
|
var useImageUpload = (options) => {
|
|
13150
13272
|
const [isUploading, setIsUploading] = useState13(false);
|
|
13151
13273
|
const [progress, setProgress] = useState13(null);
|
|
@@ -13159,7 +13281,7 @@ var useImageUpload = (options) => {
|
|
|
13159
13281
|
allowedTypes = ["image/jpeg", "image/png", "image/gif", "image/webp"],
|
|
13160
13282
|
uploadConfig
|
|
13161
13283
|
} = options;
|
|
13162
|
-
const validateFile =
|
|
13284
|
+
const validateFile = useCallback9(
|
|
13163
13285
|
(file) => {
|
|
13164
13286
|
if (!allowedTypes.includes(file.type)) {
|
|
13165
13287
|
const errorMsg = "Tipo de arquivo n\xE3o suportado";
|
|
@@ -13177,7 +13299,7 @@ var useImageUpload = (options) => {
|
|
|
13177
13299
|
},
|
|
13178
13300
|
[allowedTypes, maxFileSize, onError]
|
|
13179
13301
|
);
|
|
13180
|
-
const uploadFile =
|
|
13302
|
+
const uploadFile = useCallback9(
|
|
13181
13303
|
(file) => __async(null, null, function* () {
|
|
13182
13304
|
if (!validateFile(file)) {
|
|
13183
13305
|
return null;
|
|
@@ -13230,7 +13352,7 @@ var useImageUpload = (options) => {
|
|
|
13230
13352
|
}),
|
|
13231
13353
|
[validateFile, onSuccess, onError, onProgress]
|
|
13232
13354
|
);
|
|
13233
|
-
const reset =
|
|
13355
|
+
const reset = useCallback9(() => {
|
|
13234
13356
|
setIsUploading(false);
|
|
13235
13357
|
setProgress(null);
|
|
13236
13358
|
setError(null);
|
|
@@ -13277,6 +13399,7 @@ export {
|
|
|
13277
13399
|
Container,
|
|
13278
13400
|
ContainerStyled,
|
|
13279
13401
|
CountryFormField,
|
|
13402
|
+
DateAndTimeFormField,
|
|
13280
13403
|
Divider,
|
|
13281
13404
|
DoubleCalendar,
|
|
13282
13405
|
DoubleCalendarFormField,
|
package/package.json
CHANGED
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { FieldValues, useController, RegisterOptions } from "react-hook-form";
|
|
2
|
+
import { Flex } from "../Flex";
|
|
3
|
+
import { FormLabel } from "./subComponents/FormLabel";
|
|
4
|
+
import { ErrorFormMessage } from "./subComponents/ErrorFormMessage";
|
|
5
|
+
import { Calendar, CalendarProps } from "../Calendar";
|
|
6
|
+
import { TimePicker, TimePickerProps } from "../TimePicker";
|
|
7
|
+
import { useCallback, useMemo } from "react";
|
|
8
|
+
|
|
9
|
+
export type DateAndTimeFormFieldProps = Omit<
|
|
10
|
+
CalendarProps,
|
|
11
|
+
"selected" | "setSelected"
|
|
12
|
+
> & Omit<
|
|
13
|
+
TimePickerProps,
|
|
14
|
+
"selected" | "setSelected"
|
|
15
|
+
> & {
|
|
16
|
+
name: string;
|
|
17
|
+
label?: string;
|
|
18
|
+
required?: boolean;
|
|
19
|
+
validate?: (value: string | undefined) => boolean | string;
|
|
20
|
+
validationErrorMessage?: string;
|
|
21
|
+
rules?: Omit<
|
|
22
|
+
RegisterOptions<FieldValues, string>,
|
|
23
|
+
"valueAsNumber" | "valueAsDate" | "setValueAs" | "disabled"
|
|
24
|
+
>;
|
|
25
|
+
allowPastDates?: boolean;
|
|
26
|
+
maxYearsFromNow?: number;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export const DateAndTimeFormField = ({
|
|
30
|
+
name,
|
|
31
|
+
label,
|
|
32
|
+
required,
|
|
33
|
+
validate,
|
|
34
|
+
validationErrorMessage = "Este campo é obrigatório.",
|
|
35
|
+
rules,
|
|
36
|
+
allowPastDates,
|
|
37
|
+
maxYearsFromNow = 20,
|
|
38
|
+
...props
|
|
39
|
+
}: DateAndTimeFormFieldProps) => {
|
|
40
|
+
const handleValidate = useCallback(
|
|
41
|
+
(value?: string) => {
|
|
42
|
+
if (value === undefined || value === null || value === "") {
|
|
43
|
+
if (required) return validationErrorMessage;
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
return validate?.(value) ?? true;
|
|
47
|
+
},
|
|
48
|
+
[validate, required, validationErrorMessage]
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
const { field, fieldState } = useController({
|
|
52
|
+
name,
|
|
53
|
+
rules: {
|
|
54
|
+
required: required ? validationErrorMessage : false,
|
|
55
|
+
validate: handleValidate,
|
|
56
|
+
...rules,
|
|
57
|
+
},
|
|
58
|
+
defaultValue: "",
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
const fieldError = fieldState.error;
|
|
62
|
+
const haveError = !!fieldError;
|
|
63
|
+
const errorMsg = fieldError?.message;
|
|
64
|
+
|
|
65
|
+
const { value: isoValue, onChange: setIsoValue } = field;
|
|
66
|
+
|
|
67
|
+
const { selectedDate, selectedTime } = useMemo(() => {
|
|
68
|
+
if (!isoValue) return { selectedDate: undefined, selectedTime: undefined };
|
|
69
|
+
|
|
70
|
+
try {
|
|
71
|
+
const date = new Date(isoValue);
|
|
72
|
+
if (isNaN(date.getTime())) {
|
|
73
|
+
return { selectedDate: undefined, selectedTime: undefined };
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const hours = String(date.getHours()).padStart(2, "0");
|
|
77
|
+
const minutes = String(date.getMinutes()).padStart(2, "0");
|
|
78
|
+
const time = `${hours}:${minutes}`;
|
|
79
|
+
|
|
80
|
+
return { selectedDate: date, selectedTime: time };
|
|
81
|
+
} catch {
|
|
82
|
+
return { selectedDate: undefined, selectedTime: undefined };
|
|
83
|
+
}
|
|
84
|
+
}, [isoValue]);
|
|
85
|
+
|
|
86
|
+
const combineDateTime = useCallback(
|
|
87
|
+
(date?: Date, time?: string) => {
|
|
88
|
+
if (!date || !time) {
|
|
89
|
+
setIsoValue("");
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const [hours, minutes] = time.split(":").map(Number);
|
|
94
|
+
const combined = new Date(date);
|
|
95
|
+
combined.setHours(hours || 0, minutes || 0, 0, 0);
|
|
96
|
+
|
|
97
|
+
setIsoValue(combined.toISOString());
|
|
98
|
+
},
|
|
99
|
+
[setIsoValue]
|
|
100
|
+
);
|
|
101
|
+
|
|
102
|
+
const handleDateChange = (date: Date | undefined) => {
|
|
103
|
+
combineDateTime(date, selectedTime);
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
const handleTimeChange = (time: string | undefined) => {
|
|
107
|
+
combineDateTime(selectedDate, time);
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
return (
|
|
111
|
+
<Flex direction="column">
|
|
112
|
+
{label && (
|
|
113
|
+
<FormLabel
|
|
114
|
+
name={name}
|
|
115
|
+
label={label}
|
|
116
|
+
required={required}
|
|
117
|
+
haveError={haveError}
|
|
118
|
+
/>
|
|
119
|
+
)}
|
|
120
|
+
|
|
121
|
+
<Flex gap={12} align="start">
|
|
122
|
+
<Flex direction="column">
|
|
123
|
+
<Calendar
|
|
124
|
+
selected={selectedDate}
|
|
125
|
+
setSelected={(date) => {
|
|
126
|
+
const d = typeof date === "function" ? date(selectedDate) : date;
|
|
127
|
+
handleDateChange(d);
|
|
128
|
+
}}
|
|
129
|
+
hasError={haveError}
|
|
130
|
+
allowPastDates={allowPastDates}
|
|
131
|
+
maxYearsFromNow={maxYearsFromNow}
|
|
132
|
+
{...(props as Omit<CalendarProps, "selected" | "setSelected">)}
|
|
133
|
+
/>
|
|
134
|
+
</Flex>
|
|
135
|
+
|
|
136
|
+
<Flex direction="column">
|
|
137
|
+
<TimePicker
|
|
138
|
+
selected={selectedTime}
|
|
139
|
+
setSelected={(value) => {
|
|
140
|
+
const time = typeof value === "function" ? value(selectedTime) : value;
|
|
141
|
+
handleTimeChange(time);
|
|
142
|
+
}}
|
|
143
|
+
hasError={haveError}
|
|
144
|
+
{...(props as Omit<TimePickerProps, "selected" | "setSelected">)}
|
|
145
|
+
/>
|
|
146
|
+
</Flex>
|
|
147
|
+
</Flex>
|
|
148
|
+
|
|
149
|
+
<ErrorFormMessage message={errorMsg} />
|
|
150
|
+
</Flex>
|
|
151
|
+
);
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
export default DateAndTimeFormField
|
package/src/index.tsx
CHANGED
|
@@ -60,6 +60,7 @@ export * from "./components/FormFields/RichEditorFormField";
|
|
|
60
60
|
export * from "./components/FormFields/CalendarFormField";
|
|
61
61
|
export * from "./components/FormFields/DoubleCalendarFormField";
|
|
62
62
|
export * from "./components/FormFields/TimePickerFormField";
|
|
63
|
+
export * from "./components/FormFields/DateAndTimeFormField";
|
|
63
64
|
|
|
64
65
|
// Rich Editor
|
|
65
66
|
export * from "./components/RichEditor";
|