tp-react-elements 1.3.0 → 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.
@@ -1,3 +1,3 @@
1
- var InputRangeField = {};
1
+ var DateInput = {};
2
2
 
3
- export { InputRangeField as __exports };
3
+ export { DateInput as __exports };
@@ -1,3 +1,3 @@
1
- var DateInput = {};
1
+ var InputRangeField = {};
2
2
 
3
- export { DateInput as __exports };
3
+ export { InputRangeField as __exports };
@@ -1,3 +1,3 @@
1
- var DefinedRange = {};
1
+ var Calendar = {};
2
2
 
3
- export { DefinedRange as __exports };
3
+ export { Calendar as __exports };
@@ -1,3 +1,3 @@
1
- var Calendar = {};
1
+ var DefinedRange = {};
2
2
 
3
- export { Calendar as __exports };
3
+ export { DefinedRange 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
 
@@ -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: ['month', 'year'], disabled: props.item.disable, value: field.value ? dayjs(formatDateMonthAndYear(field.value || null)) : null, slotProps: {
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: handleToggle, onClose: handleToggle, defaultValue: field.value, onChange: (date) => {
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.item.sx,
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, { position: 'relative', children: jsx(FormControl, { fullWidth: true, children: jsx(Controller, { control: props.control, name: props.item.name, render: ({ field }) => (jsxs(Fragment, { 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' ? '65%' : '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));
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, MonthPicker, Monthpickerrender, YearPickerField, } from '../DatePicker';
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 { __exports as Calendar } from '../../../../../_virtual/index.esm7.js';
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.esm14.js';
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 DefinedRange } from '../../../../../_virtual/index.esm5.js';
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.esm12.js';
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
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tp-react-elements",
3
- "version": "1.3.0",
3
+ "version": "1.3.1",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "React form components library built with React Hook Form and Yup",
@@ -1,2 +0,0 @@
1
- declare const MonthPicker: ({ props }: any) => import("react/jsx-runtime").JSX.Element;
2
- export default MonthPicker;
@@ -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 };