tp-react-elements 1.2.15 → 1.3.1
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/dist/_virtual/index.esm10.js +2 -2
- package/dist/_virtual/index.esm11.js +2 -2
- package/dist/_virtual/index.esm12.js +2 -2
- package/dist/_virtual/index.esm14.js +2 -2
- package/dist/_virtual/index.esm5.js +2 -2
- package/dist/_virtual/index.esm7.js +2 -2
- package/dist/_virtual/index.esm9.js +2 -2
- package/dist/components/DatePicker/index.d.ts +0 -1
- package/dist/components/DatePicker/index.esm.js +0 -1
- package/dist/components/Form/FormRender.esm.js +3 -1
- package/dist/components/FormComponents/DatePicker/DatetimepickerWrapper.d.ts +6 -0
- package/dist/components/FormComponents/DatePicker/DatetimepickerWrapper.esm.js +107 -0
- package/dist/components/FormComponents/DatePicker/Monthpickerrender.esm.js +12 -2
- package/dist/components/FormComponents/FormTextAreaField/FormTextAreaField.esm.js +2 -2
- package/dist/components/FormComponents/PasswordField/PasswordField.esm.js +40 -40
- package/dist/components/FormComponents/index.d.ts +1 -1
- package/dist/components/FormComponents/index.esm.js +0 -1
- package/dist/node_modules/prop-types/index.esm.js +1 -1
- package/dist/node_modules/react-date-range/dist/accessibility/index.esm.js +1 -1
- package/dist/node_modules/react-date-range/dist/components/Calendar/index.esm.js +1 -1
- package/dist/node_modules/react-date-range/dist/components/DateInput/index.esm.js +1 -1
- package/dist/node_modules/react-date-range/dist/components/DayCell/index.esm.js +1 -1
- package/dist/node_modules/react-date-range/dist/components/DefinedRange/index.esm.js +1 -1
- package/dist/node_modules/react-date-range/dist/components/InputRangeField/index.esm.js +1 -1
- package/dist/utils/Constants/date-pickers.d.ts +2 -0
- package/dist/utils/Constants/date-pickers.esm.js +9 -1
- package/dist/utils/Interface/FormInterface.d.ts +1 -1
- package/package.json +1 -1
- package/dist/components/FormComponents/DatePicker/MonthPicker.d.ts +0 -2
- package/dist/components/FormComponents/DatePicker/MonthPicker.esm.js +0 -59
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var
|
|
1
|
+
var propTypes = {exports: {}};
|
|
2
2
|
|
|
3
|
-
export {
|
|
3
|
+
export { propTypes as __module };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var
|
|
1
|
+
var DayCell = {};
|
|
2
2
|
|
|
3
|
-
export {
|
|
3
|
+
export { DayCell as __exports };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var
|
|
1
|
+
var DateInput = {};
|
|
2
2
|
|
|
3
|
-
export {
|
|
3
|
+
export { DateInput as __exports };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var
|
|
1
|
+
var InputRangeField = {};
|
|
2
2
|
|
|
3
|
-
export {
|
|
3
|
+
export { InputRangeField as __exports };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var
|
|
1
|
+
var Calendar = {};
|
|
2
2
|
|
|
3
|
-
export {
|
|
3
|
+
export { Calendar as __exports };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var
|
|
1
|
+
var DefinedRange = {};
|
|
2
2
|
|
|
3
|
-
export {
|
|
3
|
+
export { DefinedRange as __exports };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var
|
|
1
|
+
var accessibility = {};
|
|
2
2
|
|
|
3
|
-
export {
|
|
3
|
+
export { accessibility as __exports };
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
export { default as DatepickerWrapperV2 } from '../FormComponents/DatePicker/DatepickerWrapperV2';
|
|
2
|
-
export { default as MonthPicker } from '../FormComponents/DatePicker/MonthPicker';
|
|
3
2
|
export { default as Monthpickerrender } from '../FormComponents/DatePicker/Monthpickerrender';
|
|
4
3
|
export { default as YearPickerField } from '../FormComponents/YearPickerField/YearPickerField';
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import DatepickerWrapperV2 from '../FormComponents/DatePicker/DatepickerWrapperV2.esm.js';
|
|
2
|
-
export { default as MonthPicker } from '../FormComponents/DatePicker/MonthPicker.esm.js';
|
|
3
2
|
import Monthpickerrender from '../FormComponents/DatePicker/Monthpickerrender.esm.js';
|
|
4
3
|
export { default as YearPickerField } from '../FormComponents/YearPickerField/YearPickerField.esm.js';
|
|
5
4
|
|
|
@@ -16,6 +16,7 @@ import FormTextFieldWithSelect from '../FormComponents/FormTextFieldWithSelect/F
|
|
|
16
16
|
import DateRangePickerComponent from '../DateRangePicker/DateRangePicker.esm.js';
|
|
17
17
|
import RichTextEditorWrapper from '../FormComponents/RichTextEditor/RichTextEditorWrapper.esm.js';
|
|
18
18
|
import SingleSelectSearchApi from '../FormComponents/Select/SingleSelectSearchApi.esm.js';
|
|
19
|
+
import DatetimepickerWrapper from '../FormComponents/DatePicker/DatetimepickerWrapper.esm.js';
|
|
19
20
|
|
|
20
21
|
// Lazy-loaded heavy components
|
|
21
22
|
// const RichTextEditorWrapper = lazy(() =>
|
|
@@ -107,9 +108,10 @@ const RenderForm = (props) => {
|
|
|
107
108
|
// Radio group (single option)
|
|
108
109
|
case 'radio-group':
|
|
109
110
|
return jsx(FormRadioGroup, { props: props, variant: variant });
|
|
110
|
-
// Date picker
|
|
111
111
|
case 'datepicker':
|
|
112
112
|
return (jsx(Suspense, { fallback: jsx(LoadingFallback, {}), children: jsx(DatepickerWrapperV2, { props: props, variant: variant }) }));
|
|
113
|
+
case 'datetimepicker':
|
|
114
|
+
return (jsx(Suspense, { fallback: jsx(LoadingFallback, {}), children: jsx(DatetimepickerWrapper, { props: props, variant: variant }) }));
|
|
113
115
|
// Time picker
|
|
114
116
|
case 'timepicker':
|
|
115
117
|
return (jsx(Suspense, { fallback: jsx(LoadingFallback, {}), children: jsx(TimePickerFieldWrapper, { props: props, variant: variant }) }));
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import { useRef, useState, useEffect } from 'react';
|
|
3
|
+
import { getDateTimePicker } from '../../../utils/Constants/date-pickers.esm.js';
|
|
4
|
+
import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
|
|
5
|
+
import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
|
|
6
|
+
import dayjs from 'dayjs';
|
|
7
|
+
import { Controller } from 'react-hook-form';
|
|
8
|
+
import FormBottomField from '../FormBottomField/FormBottomField.esm.js';
|
|
9
|
+
import { renderLabel } from '../../../utils/Constants/FormConstants.esm.js';
|
|
10
|
+
|
|
11
|
+
const DatetimepickerWrapper = ({ props, variant, }) => {
|
|
12
|
+
const inputTextRef = useRef(null);
|
|
13
|
+
const [open, setOpen] = useState(false);
|
|
14
|
+
const [DateTimePicker, setDateTimePicker] = useState(null);
|
|
15
|
+
const [isLoading, setIsLoading] = useState(true);
|
|
16
|
+
const isAmpm = props.item.ampm !== false;
|
|
17
|
+
const timeFormat = isAmpm ? 'hh:mm A' : 'HH:mm';
|
|
18
|
+
const defaultDateFormat = `DD/MM/YYYY ${timeFormat}`;
|
|
19
|
+
const displayFormat = props.item.DateFormat || defaultDateFormat;
|
|
20
|
+
// useEffect(() => {
|
|
21
|
+
// const loadComponents = async () => {
|
|
22
|
+
// setIsLoading(true);
|
|
23
|
+
// const [dateTimePicker] = await Promise.all([getDateTimePicker()]);
|
|
24
|
+
// setDateTimePicker(() => dateTimePicker);
|
|
25
|
+
// setIsLoading(false);
|
|
26
|
+
// };
|
|
27
|
+
// loadComponents();
|
|
28
|
+
// }, []);
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
const loadComponents = async () => {
|
|
31
|
+
try {
|
|
32
|
+
setIsLoading(true);
|
|
33
|
+
const component = await getDateTimePicker();
|
|
34
|
+
if (!component) {
|
|
35
|
+
console.error("DateTimePicker component resolved to undefined. Check your utility export.");
|
|
36
|
+
}
|
|
37
|
+
setDateTimePicker(() => component);
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
console.error("Failed to load component:", err);
|
|
41
|
+
}
|
|
42
|
+
finally {
|
|
43
|
+
setIsLoading(false);
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
loadComponents();
|
|
47
|
+
}, []);
|
|
48
|
+
const handleToggle = () => {
|
|
49
|
+
if (!open)
|
|
50
|
+
inputTextRef.current?.blur();
|
|
51
|
+
document.activeElement?.blur();
|
|
52
|
+
setOpen(!open);
|
|
53
|
+
};
|
|
54
|
+
const isError = !!props.errors?.[props.item.name];
|
|
55
|
+
if (isLoading) {
|
|
56
|
+
return jsx("div", { style: { minHeight: '36px' }, children: "Loading..." });
|
|
57
|
+
}
|
|
58
|
+
return (jsx(Controller, { control: props.control, name: props.item.name, render: ({ field }) => {
|
|
59
|
+
// --- SYNC LOGIC FOR RESET / INITIAL VALUES ---
|
|
60
|
+
// This effect runs whenever the value in the form state changes
|
|
61
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
62
|
+
useEffect(() => {
|
|
63
|
+
if (field.value && props.setValue) {
|
|
64
|
+
const dateObj = dayjs(field.value, displayFormat);
|
|
65
|
+
if (dateObj.isValid()) {
|
|
66
|
+
props.setValue(`${props.item.name}Date`, dateObj.format('DD/MM/YYYY'));
|
|
67
|
+
props.setValue(`${props.item.name}Time`, dateObj.format(timeFormat));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}, [field.value, props.item.name, props.setValue, displayFormat, timeFormat]);
|
|
71
|
+
return (jsxs(Fragment, { children: [DateTimePicker && (jsxs(LocalizationProvider, { dateAdapter: AdapterDayjs, children: [renderLabel(variant, props), jsx(DateTimePicker, { views: ['year', 'month', 'day', 'hours', 'minutes'], ampm: isAmpm, format: displayFormat, label: variant !== 'standard' ? `${props.item.label}${props.item.required ? ' *' : ''}` : '', value: field.value
|
|
72
|
+
? dayjs(field.value, displayFormat).isValid()
|
|
73
|
+
? dayjs(field.value, displayFormat)
|
|
74
|
+
: dayjs(field.value)
|
|
75
|
+
: null, className: 'read-only', open: open, onOpen: handleToggle, onClose: handleToggle, minDateTime: props?.item?.minDate ? dayjs(props?.item?.minDate, displayFormat) : undefined, maxDateTime: props?.item?.maxDate ? dayjs(props?.item?.maxDate, displayFormat) : undefined, disabled: props.item.disable || false, onChange: (date) => {
|
|
76
|
+
const formattedDateTime = dayjs(date).format(displayFormat);
|
|
77
|
+
field.onChange(formattedDateTime);
|
|
78
|
+
props?.item?.onChangeFn && props?.item?.onChangeFn(formattedDateTime);
|
|
79
|
+
props?.clearErrors && props?.clearErrors(props.item.name);
|
|
80
|
+
}, slotProps: {
|
|
81
|
+
textField: {
|
|
82
|
+
onClick: () => handleToggle(),
|
|
83
|
+
inputRef: inputTextRef,
|
|
84
|
+
onBlur: (e) => props?.item?.onBlurFn && props?.item?.onBlurFn(e),
|
|
85
|
+
inputProps: {
|
|
86
|
+
style: { cursor: 'pointer' },
|
|
87
|
+
'aria-labelledby': `${props.item.name}-label`,
|
|
88
|
+
},
|
|
89
|
+
readOnly: true,
|
|
90
|
+
error: isError,
|
|
91
|
+
sx: {
|
|
92
|
+
'& .MuiFormLabel-root': { top: -10 },
|
|
93
|
+
'& .MuiInputLabel-shrink': { top: 0 },
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
desktopPaper: {
|
|
97
|
+
sx: {
|
|
98
|
+
'& .MuiPickersLayout-root': {
|
|
99
|
+
flexDirection: 'column',
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
} })] })), jsx(FormBottomField, { ...props })] }));
|
|
104
|
+
} }, props.item.name));
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
export { DatetimepickerWrapper as default };
|
|
@@ -13,6 +13,7 @@ const Monthpickerrender = ({ props, variant, }) => {
|
|
|
13
13
|
const [open, setOpen] = useState(false);
|
|
14
14
|
const [DatePicker, setDatePicker] = useState(null);
|
|
15
15
|
const [isLoading, setIsLoading] = useState(true);
|
|
16
|
+
const [view, setView] = useState('month');
|
|
16
17
|
useEffect(() => {
|
|
17
18
|
const loadComponents = async () => {
|
|
18
19
|
setIsLoading(true);
|
|
@@ -35,7 +36,7 @@ const Monthpickerrender = ({ props, variant, }) => {
|
|
|
35
36
|
return jsx("div", { style: { minHeight: '36px' }, children: "Loading..." });
|
|
36
37
|
}
|
|
37
38
|
return (jsx(Fragment, { children: DatePicker && (jsx(Controller, { control: props.control, name: props.item.name, render: ({ field }) => (jsxs(Fragment, { children: [jsxs(LocalizationProvider, { dateAdapter: AdapterDayjs, children: [renderLabel(variant, props), jsx(DatePicker, { ref: ref, label: variant !== 'standard' &&
|
|
38
|
-
`${props.item.label}${props.item.required ? ' *' : ''}`, views: ['
|
|
39
|
+
`${props.item.label}${props.item.required ? ' *' : ''}`, views: ['year', 'month'], openTo: "month", view: view, onViewChange: (newView) => setView(newView), disabled: props.item.disable, value: field.value ? dayjs(formatDateMonthAndYear(field.value || null)) : null, slotProps: {
|
|
39
40
|
textField: {
|
|
40
41
|
onClick: () => handleToggle(),
|
|
41
42
|
inputRef: ref,
|
|
@@ -45,10 +46,19 @@ const Monthpickerrender = ({ props, variant, }) => {
|
|
|
45
46
|
style: { cursor: 'pointer' },
|
|
46
47
|
},
|
|
47
48
|
},
|
|
48
|
-
}, disableOpenPicker: props.item.disable, open: open, onOpen:
|
|
49
|
+
}, disableOpenPicker: props.item.disable, open: open, onOpen: () => {
|
|
50
|
+
setOpen(true);
|
|
51
|
+
setView('month');
|
|
52
|
+
}, onClose: () => setOpen(false), defaultValue: field.value, onChange: (date) => {
|
|
49
53
|
const formatted = dayjs(date).format('MM/YYYY');
|
|
50
54
|
field.onChange(formatted);
|
|
51
55
|
props.setValue(props.item.name, formatted);
|
|
56
|
+
if (view === 'month') {
|
|
57
|
+
setOpen(false);
|
|
58
|
+
}
|
|
59
|
+
else if (view === 'year') {
|
|
60
|
+
setView('month');
|
|
61
|
+
}
|
|
52
62
|
}, sx: {
|
|
53
63
|
'& .css-1holvmy,.css-kichxs-MuiFormLabel-root-MuiInputLabel-root': {
|
|
54
64
|
top: '-10px',
|
|
@@ -25,12 +25,12 @@ const FormTextAreaField = ({ props, variant, }) => {
|
|
|
25
25
|
/**
|
|
26
26
|
* Renders the textarea component with validation support
|
|
27
27
|
*/
|
|
28
|
-
return (jsx(Fragment, { children: jsx(Controller, { control: props.control, name: props.item.name, render: ({ field, fieldState }) => (jsxs(Fragment, { children: [renderLabel(variant, props), jsx(Tooltip, { title: props.item.isTooltipEnable ? field.value || '' : '', placement: "bottom-start", children: jsxs(Box, { sx: { width: '100%', position: 'relative' }, children: [jsx(TextAreaField, { multiline: true, size: "small", InputProps: {
|
|
28
|
+
return (jsx(Fragment, { children: jsx(Controller, { control: props.control, name: props.item.name, render: ({ field, fieldState }) => (jsxs(Fragment, { children: [renderLabel(variant, props), jsx(Tooltip, { title: props.item.isTooltipEnable ? field.value || '' : '', placement: "bottom-start", children: jsxs(Box, { sx: { width: '100%', position: 'relative' }, children: [jsx(TextAreaField, { multiline: true, fullWidth: true, size: "small", InputProps: {
|
|
29
29
|
style: {
|
|
30
30
|
border: 'none',
|
|
31
31
|
},
|
|
32
32
|
}, sx: {
|
|
33
|
-
...props
|
|
33
|
+
...props?.item?.sx,
|
|
34
34
|
}, minRows: props.item.minRows || 1, maxRows: props.item.maxRows || 100, placeholder: props.item.placeholder || 'Type Something...', ...field, onChange: (e) => {
|
|
35
35
|
field.onChange(e);
|
|
36
36
|
props?.clearErrors && props?.clearErrors(props.item.name);
|
|
@@ -46,46 +46,46 @@ const PasswordField = ({ props, variant }) => {
|
|
|
46
46
|
/**
|
|
47
47
|
* Renders the password field component with visibility toggle
|
|
48
48
|
*/
|
|
49
|
-
return (jsx(Box, {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
49
|
+
return (jsx(Box, { children: jsx(FormControl, { fullWidth: true, children: jsx(Controller, { control: props.control, name: props.item.name, render: ({ field }) => (jsxs(Fragment, { children: [jsxs(Box, { sx: { position: 'relative' }, children: [renderLabel(variant, props), jsx(TextField, { size: "small", error: isShowBorderError, type: showPassword ? 'text' : 'password', autoComplete: props.item?.InputProps?.autoComplete || 'off', placeholder: props.item.placeholder || '', ...field, label: label, sx: {
|
|
50
|
+
width: '100%',
|
|
51
|
+
'& .css-kichxs-MuiFormLabel-root-MuiInputLabel-root,.css-1holvmy': {
|
|
52
|
+
top: '-8px',
|
|
53
|
+
},
|
|
54
|
+
}, inputProps: {
|
|
55
|
+
maxLength: props.item.maxLength || 100,
|
|
56
|
+
/**
|
|
57
|
+
* Handles input events
|
|
58
|
+
* Calls custom onInputProps handler if provided
|
|
59
|
+
*
|
|
60
|
+
* @param {any} e - The input event object
|
|
61
|
+
*/
|
|
62
|
+
onInput: (e) => {
|
|
63
|
+
props.item.onInputProps && props.item.onInputProps(e);
|
|
64
|
+
},
|
|
65
|
+
/**
|
|
66
|
+
* Handles paste events
|
|
67
|
+
* Prevents paste action if configured
|
|
68
|
+
*
|
|
69
|
+
* @param {React.ClipboardEvent} e - The paste event object
|
|
70
|
+
*/
|
|
71
|
+
onPaste: (e) => {
|
|
72
|
+
if (props.item?.doNotAllowPaste) {
|
|
73
|
+
e.preventDefault();
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
}, value: field.value || null, disabled: props.item.disable }), jsx(IconButton, { sx: {
|
|
77
|
+
position: 'absolute',
|
|
78
|
+
right: '14px',
|
|
79
|
+
top: variant === 'standard' ? '70%' : '45%',
|
|
80
|
+
transform: 'translateY(-50%)',
|
|
81
|
+
width: '25px',
|
|
82
|
+
}, "aria-label": showPassword ? 'Hide password' : 'Show password', "aria-pressed": showPassword, onClick: handleTogglePasswordVisibility, edge: "end", children: showPassword ? (jsx(Visibility, { sx: {
|
|
83
|
+
fontSize: '12px',
|
|
84
|
+
position: 'absolute',
|
|
85
|
+
} })) : (jsx(VisibilityOff, { sx: {
|
|
86
|
+
fontSize: '12px',
|
|
87
|
+
position: 'absolute',
|
|
88
|
+
} })) })] }), jsx(FormBottomField, { ...props })] })) }) }) }, props.item.name));
|
|
89
89
|
};
|
|
90
90
|
|
|
91
91
|
export { PasswordField as default };
|
|
@@ -10,7 +10,7 @@ export { default as MultiSelectV1 } from './Select/MultiSelectv1';
|
|
|
10
10
|
export { default as MultiSelectTable } from './Select/MultiSelectTable';
|
|
11
11
|
export { FormCheckBoxGroup } from '../CheckBoxGroup';
|
|
12
12
|
export { FormRadioGroup } from '../RadioGroup';
|
|
13
|
-
export { DatepickerWrapperV2,
|
|
13
|
+
export { DatepickerWrapperV2, Monthpickerrender, YearPickerField, } from '../DatePicker';
|
|
14
14
|
export { TimePicker } from '../TimePicker';
|
|
15
15
|
export { FormRenderFileUpload, FormRenderMultiFileUpload } from '../FileUpload';
|
|
16
16
|
export { RichTextEditor, RichTextEditorWrapper } from '../RichTextEditor';
|
|
@@ -12,7 +12,6 @@ export { default as MultiSelectTable } from './Select/MultiSelectTable.esm.js';
|
|
|
12
12
|
export { default as FormCheckBoxGroup } from './FormCheckBoxGroup/FormCheckBoxGroup.esm.js';
|
|
13
13
|
export { default as FormRadioGroup } from './FormRadioGroup/FormRadioGroup.esm.js';
|
|
14
14
|
export { default as DatepickerWrapperV2 } from './DatePicker/DatepickerWrapperV2.esm.js';
|
|
15
|
-
export { default as MonthPicker } from './DatePicker/MonthPicker.esm.js';
|
|
16
15
|
export { default as Monthpickerrender } from './DatePicker/Monthpickerrender.esm.js';
|
|
17
16
|
export { default as YearPickerField } from './YearPickerField/YearPickerField.esm.js';
|
|
18
17
|
export { default as TimePicker } from './TimePicker/TimePicker.esm.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __module as propTypes } from '../../_virtual/index.
|
|
1
|
+
import { __module as propTypes } from '../../_virtual/index.esm10.js';
|
|
2
2
|
import { __require as requireReactIs } from './node_modules/react-is/index.esm.js';
|
|
3
3
|
import { __require as requireFactoryWithTypeCheckers } from './factoryWithTypeCheckers.esm.js';
|
|
4
4
|
import { __require as requireFactoryWithThrowingShims } from './factoryWithThrowingShims.esm.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __exports as accessibility } from '../../../../_virtual/index.
|
|
1
|
+
import { __exports as accessibility } from '../../../../_virtual/index.esm9.js';
|
|
2
2
|
import { __require as requirePropTypes } from '../../../prop-types/index.esm.js';
|
|
3
3
|
|
|
4
4
|
var hasRequiredAccessibility;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __exports as Calendar } from '../../../../../_virtual/index.
|
|
1
|
+
import { __exports as Calendar } from '../../../../../_virtual/index.esm5.js';
|
|
2
2
|
import React__default from 'react';
|
|
3
3
|
import { __require as requirePropTypes } from '../../../../prop-types/index.esm.js';
|
|
4
4
|
import { __require as requireDayCell } from '../DayCell/index.esm.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __exports as DateInput } from '../../../../../_virtual/index.
|
|
1
|
+
import { __exports as DateInput } from '../../../../../_virtual/index.esm12.js';
|
|
2
2
|
import React__default from 'react';
|
|
3
3
|
import { __require as requirePropTypes } from '../../../../prop-types/index.esm.js';
|
|
4
4
|
import { __require as requireClassnames } from '../../../../classnames/index.esm.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __exports as DayCell } from '../../../../../_virtual/index.
|
|
1
|
+
import { __exports as DayCell } from '../../../../../_virtual/index.esm11.js';
|
|
2
2
|
import React__default from 'react';
|
|
3
3
|
import { __require as requirePropTypes } from '../../../../prop-types/index.esm.js';
|
|
4
4
|
import { __require as requireClassnames } from '../../../../classnames/index.esm.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __exports as DefinedRange } from '../../../../../_virtual/index.
|
|
1
|
+
import { __exports as DefinedRange } from '../../../../../_virtual/index.esm7.js';
|
|
2
2
|
import React__default from 'react';
|
|
3
3
|
import { __require as requirePropTypes } from '../../../../prop-types/index.esm.js';
|
|
4
4
|
import { __require as requireStyles } from '../../styles.esm.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __exports as InputRangeField } from '../../../../../_virtual/index.
|
|
1
|
+
import { __exports as InputRangeField } from '../../../../../_virtual/index.esm14.js';
|
|
2
2
|
import React__default from 'react';
|
|
3
3
|
import { __require as requirePropTypes } from '../../../../prop-types/index.esm.js';
|
|
4
4
|
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* @returns DatePicker component
|
|
9
9
|
*/
|
|
10
10
|
export declare const getDatePicker: () => Promise<any>;
|
|
11
|
+
export declare const getDateTimePicker: () => Promise<any>;
|
|
11
12
|
/**
|
|
12
13
|
* Get LocalizationProvider component
|
|
13
14
|
* @returns LocalizationProvider component
|
|
@@ -24,6 +25,7 @@ export declare const getAdapterDayjs: () => Promise<any>;
|
|
|
24
25
|
*/
|
|
25
26
|
export declare const getTimePicker: () => Promise<any>;
|
|
26
27
|
export declare const DatePicker: () => null;
|
|
28
|
+
export declare const DateTimePicker: () => null;
|
|
27
29
|
export declare const LocalizationProvider: () => null;
|
|
28
30
|
export declare const AdapterDayjs: () => any;
|
|
29
31
|
export declare const TimePicker: () => null;
|
|
@@ -16,6 +16,14 @@ const getDatePicker = async () => {
|
|
|
16
16
|
}
|
|
17
17
|
return DatePickerCache;
|
|
18
18
|
};
|
|
19
|
+
let DateTimePickerCache = null;
|
|
20
|
+
const getDateTimePicker = async () => {
|
|
21
|
+
if (!DateTimePickerCache) {
|
|
22
|
+
const module = await import('@mui/x-date-pickers/DateTimePicker');
|
|
23
|
+
DateTimePickerCache = module.DateTimePicker || module.default;
|
|
24
|
+
}
|
|
25
|
+
return DateTimePickerCache;
|
|
26
|
+
};
|
|
19
27
|
// Dynamic import for TimePicker component
|
|
20
28
|
let TimePickerCache = null;
|
|
21
29
|
/**
|
|
@@ -30,4 +38,4 @@ const getTimePicker = async () => {
|
|
|
30
38
|
return TimePickerCache;
|
|
31
39
|
};
|
|
32
40
|
|
|
33
|
-
export { getDatePicker, getTimePicker };
|
|
41
|
+
export { getDatePicker, getDateTimePicker, getTimePicker };
|
|
@@ -11,7 +11,7 @@ export interface TextFieldInputProps {
|
|
|
11
11
|
export interface FormSectionPropsItem {
|
|
12
12
|
name: string;
|
|
13
13
|
label: string;
|
|
14
|
-
inputType: 'text' | 'password' | 'number' | 'select' | 'autocomplete-select' | 'autocomplete-multi-select' | 'single-select-search' | 'datepicker' | 'multiselect' | 'select-v2' | 'basic-select' | 'decimal' | 'alpha-numerical' | 'yearpicker' | 'dateRangePicker' | 'monthpicker' | 'multiselect' | 'file' | 'multifile' | 'multifile-with-preview' | 'textarea' | 'phoneNumber' | 'pincode' | 'email' | 'toggleSwitch' | 'rich-text-editor' | 'multiEmail' | 'timepicker' | 'checkbox-group' | 'radio-group' | 'checkbox' | 'custom' | 'input-select' | 'date-range-picker' | 'multiselect-table' | '';
|
|
14
|
+
inputType: 'text' | 'password' | 'number' | 'select' | 'autocomplete-select' | 'autocomplete-multi-select' | 'single-select-search' | 'datepicker' | 'datetimepicker' | 'multiselect' | 'select-v2' | 'basic-select' | 'decimal' | 'alpha-numerical' | 'yearpicker' | 'dateRangePicker' | 'monthpicker' | 'multiselect' | 'file' | 'multifile' | 'multifile-with-preview' | 'textarea' | 'phoneNumber' | 'pincode' | 'email' | 'toggleSwitch' | 'rich-text-editor' | 'multiEmail' | 'timepicker' | 'checkbox-group' | 'radio-group' | 'checkbox' | 'custom' | 'input-select' | 'date-range-picker' | 'multiselect-table' | '';
|
|
15
15
|
options?: OptionsProps[];
|
|
16
16
|
required?: boolean;
|
|
17
17
|
errorMessage?: string;
|
package/package.json
CHANGED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import { useRef, useState } from 'react';
|
|
3
|
-
import { Controller } from 'react-hook-form';
|
|
4
|
-
import { TextField, FormGroup, FormControlLabel, Checkbox } from '@mui/material';
|
|
5
|
-
import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
|
|
6
|
-
import { LocalizationProvider } from '@mui/x-date-pickers';
|
|
7
|
-
import { DatePicker } from '@mui/x-date-pickers/DatePicker';
|
|
8
|
-
|
|
9
|
-
const MonthPicker = ({ props }) => {
|
|
10
|
-
const inputTextRef = useRef(null);
|
|
11
|
-
const [open, setOpen] = useState(false);
|
|
12
|
-
const [selectedMonths, setSelectedMonths] = useState([]);
|
|
13
|
-
const handleToggle = () => {
|
|
14
|
-
if (!open) {
|
|
15
|
-
inputTextRef.current?.blur();
|
|
16
|
-
}
|
|
17
|
-
document.activeElement?.blur();
|
|
18
|
-
setOpen(!open);
|
|
19
|
-
};
|
|
20
|
-
const handleMonthChange = (date) => {
|
|
21
|
-
// Handle the selected months
|
|
22
|
-
setSelectedMonths((prevSelectedMonths) => {
|
|
23
|
-
const monthIndex = date.getMonth();
|
|
24
|
-
if (prevSelectedMonths.includes(monthIndex)) {
|
|
25
|
-
// If month is already selected, remove it
|
|
26
|
-
return prevSelectedMonths?.filter((month) => month !== monthIndex);
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
// If month is not selected, add it
|
|
30
|
-
return [...prevSelectedMonths, monthIndex];
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
|
-
return (jsx(Controller, { control: props.control, name: props.item.name, render: ({ field }) => (jsxs(Fragment, { children: [jsx(LocalizationProvider, { dateAdapter: AdapterDayjs, children: jsx(DatePicker, { value: field.value, onChange: handleMonthChange, open: open, onOpen: handleToggle, onClose: handleToggle, slots: {
|
|
35
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
36
|
-
textField: (textFieldProps) => (jsx(TextField, { ...textFieldProps, fullWidth: true, onClick: () => handleToggle(), inputRef: inputTextRef, disabled: props.item.disable || false, InputLabelProps: {
|
|
37
|
-
shrink: true,
|
|
38
|
-
}, error: props.errors, inputProps: {
|
|
39
|
-
min: props.item.minDate,
|
|
40
|
-
readOnly: true,
|
|
41
|
-
style: { cursor: 'pointer' },
|
|
42
|
-
} })),
|
|
43
|
-
}, slotProps: {
|
|
44
|
-
textField: {
|
|
45
|
-
sx: {
|
|
46
|
-
'& .MuiFormLabel-root': {
|
|
47
|
-
top: -10,
|
|
48
|
-
},
|
|
49
|
-
'& .MuiInputLabel-shrink': {
|
|
50
|
-
top: 0,
|
|
51
|
-
},
|
|
52
|
-
},
|
|
53
|
-
},
|
|
54
|
-
} }) }), jsx(FormGroup, { children: Array.from({ length: 12 }).map((_, index) => (jsx(FormControlLabel, { control: jsx(Checkbox, { checked: selectedMonths.includes(index), onChange: () => handleMonthChange(new Date(2000, index, 1)), color: "primary" }), label: new Date(2000, index, 1).toLocaleDateString(undefined, {
|
|
55
|
-
month: 'short',
|
|
56
|
-
}) }, index))) })] })) }));
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
export { MonthPicker as default };
|