tp-react-elements 1.2.0 → 1.2.5
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.esm12.js +2 -2
- package/dist/_virtual/index.esm13.js +2 -2
- package/dist/_virtual/index.esm14.js +2 -2
- package/dist/components/DateRangePicker/DateRangePicker.esm.js +7 -8
- package/dist/components/FormComponents/DatePicker/DatepickerWrapperV2.esm.js +3 -3
- package/dist/components/FormComponents/DatePicker/Monthpickerrender.esm.js +3 -3
- package/dist/components/FormComponents/FileUpload/FormRenderFileUpload.esm.js +3 -3
- package/dist/components/FormComponents/FileUpload/FormRenderMultiFileUpload.esm.js +3 -3
- package/dist/components/FormComponents/FormCheckBoxGroup/FormCheckBoxGroup.esm.js +3 -3
- package/dist/components/FormComponents/FormNumberField/FormNumberField.esm.js +3 -3
- package/dist/components/FormComponents/FormNumberField/FormNumberFieldDecimal.esm.js +6 -3
- package/dist/components/FormComponents/FormRadioGroup/FormRadioGroup.esm.js +3 -3
- package/dist/components/FormComponents/FormTextAreaField/FormTextAreaField.esm.js +33 -32
- package/dist/components/FormComponents/FormTextField/FormTextField.esm.js +20 -19
- package/dist/components/FormComponents/FormTextFieldWithSelect/FormTextFieldWithSelect.esm.js +3 -3
- package/dist/components/FormComponents/PasswordField/PasswordField.esm.js +3 -3
- package/dist/components/FormComponents/RichTextEditor/RichTextEditorWrapper.esm.js +2 -2
- package/dist/components/FormComponents/Select/MultiSelectAutocomplete.esm.js +3 -3
- package/dist/components/FormComponents/Select/MultiSelectTable.esm.js +18 -11
- package/dist/components/FormComponents/Select/MultiSelectv1.esm.js +10 -6
- package/dist/components/FormComponents/Select/SingleSelect.esm.js +48 -57
- package/dist/components/FormComponents/Select/SingleSelectNonAutoComplete.esm.js +4 -4
- package/dist/components/FormComponents/Select/SingleSelectSearchApi.esm.js +9 -13
- package/dist/components/FormComponents/TimePicker/TimePicker.esm.js +3 -3
- package/dist/components/SelectField/MultiSelectFieldComponent.d.ts +2 -1
- package/dist/components/SelectField/MultiSelectFieldComponent.esm.js +7 -3
- package/dist/node_modules/react-date-range/dist/components/DateInput/index.esm.js +1 -1
- package/dist/node_modules/react-date-range/dist/components/InputRangeField/index.esm.js +1 -1
- package/dist/node_modules/react-date-range/dist/components/Month/index.esm.js +1 -1
- package/dist/utils/Constants/FormConstants.d.ts +0 -7
- package/dist/utils/Constants/FormConstants.esm.js +2 -22
- package/dist/utils/Interface/FormInterface.d.ts +4 -3
- package/dist/utils/index.esm.js +1 -1
- package/package.json +1 -1
|
@@ -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 Month = {};
|
|
2
2
|
|
|
3
|
-
export {
|
|
3
|
+
export { Month as __exports };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var
|
|
1
|
+
var DateInput = {};
|
|
2
2
|
|
|
3
|
-
export {
|
|
3
|
+
export { DateInput as __exports };
|
|
@@ -3,7 +3,7 @@ import { useState, useEffect } from 'react';
|
|
|
3
3
|
import { Controller } from 'react-hook-form';
|
|
4
4
|
import { d as distExports } from '../../_virtual/index.esm.js';
|
|
5
5
|
import 'dayjs';
|
|
6
|
-
import { renderLabel
|
|
6
|
+
import { renderLabel } from '../../utils/Constants/FormConstants.esm.js';
|
|
7
7
|
import FormBottomField from '../FormComponents/FormBottomField/FormBottomField.esm.js';
|
|
8
8
|
import { Box, TextField, Popover } from '@mui/material';
|
|
9
9
|
import { format } from '../../node_modules/date-fns/format.esm.js';
|
|
@@ -54,13 +54,12 @@ const DateRangePickerComponent = ({ item, control, watch, setValue, getValues, c
|
|
|
54
54
|
? `${format(state[0].startDate, 'dd/MM/yyyy')} - ${format(state[0].endDate, 'dd/MM/yyyy')}`
|
|
55
55
|
: '';
|
|
56
56
|
const label = variant !== 'standard' ? `${item.label}${item.required ? ' *' : ''}` : '';
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
return (jsxs(Fragment, { children: [jsx(Box, { onClick: handleClick, sx: { width: '100%' }, children: jsx(Controller, { name: fromDateName, control: control, render: ({ fieldState }) => (jsxs(Fragment, { children: [renderLabel(variant, formProps), ' ', wrapFieldWithLabelTooltipIfEnabled(variant, formProps, (jsx(TextField, { fullWidth: true, value: displayValue, placeholder: item.placeholder || 'DD/MM/YYYY - DD/MM/YYYY', error: !!fieldState.error, InputProps: {
|
|
57
|
+
return (jsxs(Fragment, { children: [jsx(Box, { onClick: handleClick, sx: { width: '100%' }, children: jsx(Controller, { name: fromDateName, control: control, render: ({ fieldState }) => (jsxs(Fragment, { children: [renderLabel(variant, {
|
|
58
|
+
item,
|
|
59
|
+
...rest,
|
|
60
|
+
}), ' ', jsx(TextField, { fullWidth: true, value: displayValue, placeholder: item.placeholder || 'DD/MM/YYYY - DD/MM/YYYY', error: !!fieldState.error, InputProps: {
|
|
62
61
|
readOnly: true,
|
|
63
|
-
}, label: label, size: "small" })
|
|
62
|
+
}, label: label, size: "small" })] })) }) }), jsx(Popover, { id: id, open: open, anchorEl: anchorEl, onClose: handleClose, anchorOrigin: {
|
|
64
63
|
vertical: 'bottom',
|
|
65
64
|
horizontal: 'left',
|
|
66
65
|
}, PaperProps: {
|
|
@@ -95,7 +94,7 @@ const DateRangePickerComponent = ({ item, control, watch, setValue, getValues, c
|
|
|
95
94
|
item.onChangeFn && item.onChangeFn(dateObject || null);
|
|
96
95
|
handleClose();
|
|
97
96
|
}
|
|
98
|
-
}, moveRangeOnFirstSelection: false, ranges: state, months: 2, direction: "horizontal", showDateDisplay: false, dateDisplayFormat: "dd/MM/yyyy", rangeColors: ['#4d73b1ff']
|
|
97
|
+
}, moveRangeOnFirstSelection: false, ranges: state, months: 2, direction: "horizontal", showDateDisplay: false, dateDisplayFormat: "dd/MM/yyyy", rangeColors: ['#4d73b1ff'] }) }), jsx(FormBottomField, { item,
|
|
99
98
|
control,
|
|
100
99
|
errors,
|
|
101
100
|
getValues,
|
|
@@ -6,7 +6,7 @@ import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
|
|
|
6
6
|
import dayjs from 'dayjs';
|
|
7
7
|
import { Controller } from 'react-hook-form';
|
|
8
8
|
import FormBottomField from '../FormBottomField/FormBottomField.esm.js';
|
|
9
|
-
import { renderLabel
|
|
9
|
+
import { renderLabel } from '../../../utils/Constants/FormConstants.esm.js';
|
|
10
10
|
|
|
11
11
|
const DatepickerWrapperV2 = ({ props, variant, }) => {
|
|
12
12
|
const inputTextRef = useRef(null);
|
|
@@ -35,7 +35,7 @@ const DatepickerWrapperV2 = ({ props, variant, }) => {
|
|
|
35
35
|
return jsx("div", { style: { minHeight: '36px' }, children: "Loading..." });
|
|
36
36
|
}
|
|
37
37
|
return (jsx(Controller, { control: props.control, name: props.item.name, render: ({ field }) => {
|
|
38
|
-
return (jsxs(Fragment, { children: [DatePicker && (jsxs(LocalizationProvider, { dateAdapter: AdapterDayjs, children: [renderLabel(variant, props),
|
|
38
|
+
return (jsxs(Fragment, { children: [DatePicker && (jsxs(LocalizationProvider, { dateAdapter: AdapterDayjs, children: [renderLabel(variant, props), jsx(DatePicker, { views: ['month', 'year', 'day'], label: variant !== 'standard'
|
|
39
39
|
? `${props.item.label}${props.item.required ? ' *' : ''}`
|
|
40
40
|
: '', value: field.value
|
|
41
41
|
? typeof field.value === 'string'
|
|
@@ -69,7 +69,7 @@ const DatepickerWrapperV2 = ({ props, variant, }) => {
|
|
|
69
69
|
},
|
|
70
70
|
},
|
|
71
71
|
},
|
|
72
|
-
} })
|
|
72
|
+
} })] })), jsx(FormBottomField, { ...props })] }));
|
|
73
73
|
} }, props.item.name));
|
|
74
74
|
};
|
|
75
75
|
|
|
@@ -6,7 +6,7 @@ import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
|
|
|
6
6
|
import dayjs from 'dayjs';
|
|
7
7
|
import { Controller } from 'react-hook-form';
|
|
8
8
|
import FormBottomField from '../FormBottomField/FormBottomField.esm.js';
|
|
9
|
-
import { renderLabel,
|
|
9
|
+
import { renderLabel, formatDateMonthAndYear } from '../../../utils/Constants/FormConstants.esm.js';
|
|
10
10
|
|
|
11
11
|
const Monthpickerrender = ({ props, variant, }) => {
|
|
12
12
|
const ref = useRef(null);
|
|
@@ -34,7 +34,7 @@ const Monthpickerrender = ({ props, variant, }) => {
|
|
|
34
34
|
if (isLoading) {
|
|
35
35
|
return jsx("div", { style: { minHeight: '36px' }, children: "Loading..." });
|
|
36
36
|
}
|
|
37
|
-
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),
|
|
37
|
+
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
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
39
|
textField: {
|
|
40
40
|
onClick: () => handleToggle(),
|
|
@@ -66,7 +66,7 @@ const Monthpickerrender = ({ props, variant, }) => {
|
|
|
66
66
|
'& .MuiInputLabel-shrink': {
|
|
67
67
|
top: 0,
|
|
68
68
|
},
|
|
69
|
-
}, minDate: props.item.minDate ? dayjs(props.item.minDate, 'MM/YYYY') : undefined, maxDate: props.item.maxDate ? dayjs(props.item.maxDate, 'MM/YYYY') : undefined })
|
|
69
|
+
}, minDate: props.item.minDate ? dayjs(props.item.minDate, 'MM/YYYY') : undefined, maxDate: props.item.maxDate ? dayjs(props.item.maxDate, 'MM/YYYY') : undefined })] }), props?.item?.helperText && (jsxs("span", { style: {
|
|
70
70
|
fontSize: '11px',
|
|
71
71
|
color: '#3651d3',
|
|
72
72
|
}, children: ["(", props?.item?.helperText, ")"] })), jsx(FormBottomField, { ...props })] })) })) }));
|
|
@@ -4,7 +4,7 @@ import { useRef, useEffect } from 'react';
|
|
|
4
4
|
import { useWatch } from 'react-hook-form';
|
|
5
5
|
import FormBottomField from '../FormBottomField/FormBottomField.esm.js';
|
|
6
6
|
import 'dayjs';
|
|
7
|
-
import { renderLabel
|
|
7
|
+
import { renderLabel } from '../../../utils/Constants/FormConstants.esm.js';
|
|
8
8
|
|
|
9
9
|
const FormRenderFileUpload = ({ props, variant, }) => {
|
|
10
10
|
const isError = !!props.errors?.[props.item.name];
|
|
@@ -57,7 +57,7 @@ const FormRenderFileUpload = ({ props, variant, }) => {
|
|
|
57
57
|
return extensions.map((ext) => `.${ext}`).join(',');
|
|
58
58
|
};
|
|
59
59
|
const accept = getAcceptString();
|
|
60
|
-
return (jsxs(Fragment, { children: [jsxs(Box, { paddingLeft: '4px', sx: { ...props.item.sx }, children: [props.item?.label && (jsx(Box, { sx: { fontSize: '10px;' }, children: renderLabel(variant, props, true) })),
|
|
60
|
+
return (jsxs(Fragment, { children: [jsxs(Box, { paddingLeft: '4px', sx: { ...props.item.sx }, children: [props.item?.label && (jsx(Box, { sx: { fontSize: '10px;' }, children: renderLabel(variant, props, true) })), jsx(TextField, { type: "file", id: props.item.name, error: isShowBorderError, inputRef: inputRef, inputProps: {
|
|
61
61
|
accept,
|
|
62
62
|
'aria-labelledby': `${props.item.name}-label`,
|
|
63
63
|
'aria-describedby': `${props.item.name}-helper ${props.item.name}-error`,
|
|
@@ -90,7 +90,7 @@ const FormRenderFileUpload = ({ props, variant, }) => {
|
|
|
90
90
|
props.clearErrors(props.item?.name);
|
|
91
91
|
props.item.onChangeSetFileFn &&
|
|
92
92
|
props.item.onChangeSetFileFn(file);
|
|
93
|
-
}, sx: { width: '100%' } })
|
|
93
|
+
}, sx: { width: '100%' } })] }), jsx(FormBottomField, { ...props })] }));
|
|
94
94
|
};
|
|
95
95
|
|
|
96
96
|
export { FormRenderFileUpload as default };
|
|
@@ -3,7 +3,7 @@ import { Box, TextField } from '@mui/material';
|
|
|
3
3
|
import { useRef, useEffect } from 'react';
|
|
4
4
|
import { useWatch } from 'react-hook-form';
|
|
5
5
|
import 'dayjs';
|
|
6
|
-
import { renderLabel
|
|
6
|
+
import { renderLabel } from '../../../utils/Constants/FormConstants.esm.js';
|
|
7
7
|
import FormBottomField from '../FormBottomField/FormBottomField.esm.js';
|
|
8
8
|
|
|
9
9
|
const FormRenderMultiFileUpload = ({ props, variant, }) => {
|
|
@@ -57,7 +57,7 @@ const FormRenderMultiFileUpload = ({ props, variant, }) => {
|
|
|
57
57
|
const extensions = getValidExtensions();
|
|
58
58
|
return extensions.map((ext) => `.${ext}`).join(',');
|
|
59
59
|
};
|
|
60
|
-
return (jsxs(Fragment, { children: [jsxs(Box, { paddingLeft: '4px', sx: { ...props.item.sx }, children: [props.item?.label && (jsx(Box, { sx: { fontSize: '10px;' }, children: renderLabel(variant, props, true) })),
|
|
60
|
+
return (jsxs(Fragment, { children: [jsxs(Box, { paddingLeft: '4px', sx: { ...props.item.sx }, children: [props.item?.label && (jsx(Box, { sx: { fontSize: '10px;' }, children: renderLabel(variant, props, true) })), jsx(TextField, { type: "file", id: props.item.name, error: isShowBorderError, inputRef: inputRef, inputProps: {
|
|
61
61
|
multiple: true,
|
|
62
62
|
accept: getAcceptString(),
|
|
63
63
|
'aria-labelledby': `${props.item.name}-label`,
|
|
@@ -98,7 +98,7 @@ const FormRenderMultiFileUpload = ({ props, variant, }) => {
|
|
|
98
98
|
props.setValue(props.item?.name, fileName);
|
|
99
99
|
props.setValue(props.item?.name + 'File', fileArray);
|
|
100
100
|
props.clearErrors(props.item?.name);
|
|
101
|
-
}, sx: { width: '100%' } })
|
|
101
|
+
}, sx: { width: '100%' } })] }), jsx(FormBottomField, { ...props })] }));
|
|
102
102
|
};
|
|
103
103
|
|
|
104
104
|
export { FormRenderMultiFileUpload as default };
|
|
@@ -3,7 +3,7 @@ import { FormControl, FormGroup, FormControlLabel, Typography, Checkbox } from '
|
|
|
3
3
|
import { Controller } from 'react-hook-form';
|
|
4
4
|
import FormBottomField from '../FormBottomField/FormBottomField.esm.js';
|
|
5
5
|
import 'dayjs';
|
|
6
|
-
import { renderLabel
|
|
6
|
+
import { renderLabel } from '../../../utils/Constants/FormConstants.esm.js';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* FormCheckBoxGroup Component
|
|
@@ -24,7 +24,7 @@ const FormCheckBoxGroup = ({ props, variant, }) => {
|
|
|
24
24
|
/**
|
|
25
25
|
* Renders a group of checkboxes with labels and validation support
|
|
26
26
|
*/
|
|
27
|
-
return (jsxs(Fragment, { children: [renderLabel(variant, props),
|
|
27
|
+
return (jsxs(Fragment, { children: [renderLabel(variant, props), jsx(FormControl, { component: "fieldset", children: jsx(FormGroup, { row: true, children: props.item?.settings &&
|
|
28
28
|
props.item.settings.map((settings, i) => {
|
|
29
29
|
return (jsx(Controller, { name: settings.name, control: props.control, render: ({ field }) => {
|
|
30
30
|
return (jsx(FormControlLabel, { control: jsx(Checkbox, { ...field, checked: field.value }), sx: {
|
|
@@ -36,7 +36,7 @@ const FormCheckBoxGroup = ({ props, variant, }) => {
|
|
|
36
36
|
},
|
|
37
37
|
}, label: jsx(Typography, { variant: "subtitle2", fontSize: '11px', fontWeight: 'normal !important', children: settings.label }), labelPlacement: "end" }));
|
|
38
38
|
} }, i));
|
|
39
|
-
}) }) })
|
|
39
|
+
}) }) }), jsx(FormBottomField, { ...props })] }));
|
|
40
40
|
};
|
|
41
41
|
|
|
42
42
|
export { FormCheckBoxGroup as default };
|
|
@@ -3,7 +3,7 @@ import { TextField } from '@mui/material';
|
|
|
3
3
|
import { Controller } from 'react-hook-form';
|
|
4
4
|
import FormBottomField from '../FormBottomField/FormBottomField.esm.js';
|
|
5
5
|
import 'dayjs';
|
|
6
|
-
import { renderLabel
|
|
6
|
+
import { renderLabel } from '../../../utils/Constants/FormConstants.esm.js';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* FormNumberField Component
|
|
@@ -55,7 +55,7 @@ const FormNumberField = ({ props, variant }) => {
|
|
|
55
55
|
* for controlled form state management
|
|
56
56
|
*/
|
|
57
57
|
return (jsx(Fragment, { children: jsx(Controller, { control: props.control, name: props.item.name, render: ({ field }) => {
|
|
58
|
-
return (jsxs(Fragment, { children: [renderLabel(variant, props),
|
|
58
|
+
return (jsxs(Fragment, { children: [renderLabel(variant, props), jsx(TextField, { ...field, size: "small", label: label, error: isShowBorderError, value: field.value ?? '',
|
|
59
59
|
/**
|
|
60
60
|
* Handles input events with numeric restrictions
|
|
61
61
|
* - Removes non-numeric characters
|
|
@@ -99,7 +99,7 @@ const FormNumberField = ({ props, variant }) => {
|
|
|
99
99
|
'aria-labelledby': `${props.item.name}-label`,
|
|
100
100
|
'aria-describedby': `${props.item.name}-helper ${props.item.name}-error`,
|
|
101
101
|
'aria-required': props.item.required ? true : undefined,
|
|
102
|
-
}, disabled: props.item.disable })
|
|
102
|
+
}, disabled: props.item.disable }), jsx(FormBottomField, { ...props })] }));
|
|
103
103
|
} }, props.item.name) }));
|
|
104
104
|
};
|
|
105
105
|
|
|
@@ -3,7 +3,7 @@ import { TextField } from '@mui/material';
|
|
|
3
3
|
import { Controller } from 'react-hook-form';
|
|
4
4
|
import FormBottomField from '../FormBottomField/FormBottomField.esm.js';
|
|
5
5
|
import 'dayjs';
|
|
6
|
-
import { renderLabel
|
|
6
|
+
import { renderLabel } from '../../../utils/Constants/FormConstants.esm.js';
|
|
7
7
|
|
|
8
8
|
const FormNumberFieldDecimal = ({ props, variant, }) => {
|
|
9
9
|
const fixedLength = props.item.decimalFixedTo || 2;
|
|
@@ -21,7 +21,7 @@ const FormNumberFieldDecimal = ({ props, variant, }) => {
|
|
|
21
21
|
const label = variant !== 'standard' ? `${props.item.label}${props.item.required ? ' *' : ''}` : '';
|
|
22
22
|
const isError = !!props.errors?.[props.item.name];
|
|
23
23
|
const isShowBorderError = isError;
|
|
24
|
-
return (jsx(Controller, { name: props.item.name, control: props.control, disabled: props.item?.disable, render: ({ field }) => (jsxs(Fragment, { children: [renderLabel(variant, props),
|
|
24
|
+
return (jsx(Controller, { name: props.item.name, control: props.control, disabled: props.item?.disable, render: ({ field }) => (jsxs(Fragment, { children: [renderLabel(variant, props), jsx(TextField, { type: "text", size: "small", label: label, error: isShowBorderError, ...field, onChange: (e) => {
|
|
25
25
|
const sanitized = sanitizeDecimal(e.target.value ?? '');
|
|
26
26
|
const value = sanitized === '' ? '' : sanitized;
|
|
27
27
|
field.onChange(value);
|
|
@@ -37,6 +37,9 @@ const FormNumberFieldDecimal = ({ props, variant, }) => {
|
|
|
37
37
|
props?.item?.onBlurFn && props?.item?.onBlurFn(e);
|
|
38
38
|
}, InputProps: {
|
|
39
39
|
inputProps: {
|
|
40
|
+
onInput: (e) => {
|
|
41
|
+
props.item.onInputProps && props.item.onInputProps(e);
|
|
42
|
+
},
|
|
40
43
|
// allow digits, one dot and optional leading minus
|
|
41
44
|
inputMode: 'decimal',
|
|
42
45
|
maxLength: 20,
|
|
@@ -44,7 +47,7 @@ const FormNumberFieldDecimal = ({ props, variant, }) => {
|
|
|
44
47
|
'aria-describedby': `${props.item.name}-helper ${props.item.name}-error`,
|
|
45
48
|
'aria-required': props.item.required ? true : undefined,
|
|
46
49
|
},
|
|
47
|
-
} })
|
|
50
|
+
} }), jsx(FormBottomField, { ...props })] })) }, props.item.name));
|
|
48
51
|
};
|
|
49
52
|
|
|
50
53
|
export { FormNumberFieldDecimal as default };
|
|
@@ -3,7 +3,7 @@ import { FormControl, RadioGroup, FormControlLabel, Typography, Radio } from '@m
|
|
|
3
3
|
import { Controller } from 'react-hook-form';
|
|
4
4
|
import FormBottomField from '../FormBottomField/FormBottomField.esm.js';
|
|
5
5
|
import 'dayjs';
|
|
6
|
-
import { renderLabel
|
|
6
|
+
import { renderLabel } from '../../../utils/Constants/FormConstants.esm.js';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* FormRadioGroup Component
|
|
@@ -24,7 +24,7 @@ const FormRadioGroup = ({ props, variant }) => {
|
|
|
24
24
|
/**
|
|
25
25
|
* Renders a group of radio buttons with labels and validation support
|
|
26
26
|
*/
|
|
27
|
-
return (jsxs(Fragment, { children: [renderLabel(variant, props),
|
|
27
|
+
return (jsxs(Fragment, { children: [renderLabel(variant, props), jsx(FormControl, { component: "fieldset", children: jsx(Controller, { name: props.item.name, control: props.control, render: ({ field }) => (jsx(RadioGroup, { value: field.value || '', onChange: (e) => {
|
|
28
28
|
field.onChange(e.target.value); // update form state
|
|
29
29
|
props.item.onChangeFn && props.item.onChangeFn(e.target.value); // optional handler
|
|
30
30
|
}, row: true, sx: {
|
|
@@ -38,7 +38,7 @@ const FormRadioGroup = ({ props, variant }) => {
|
|
|
38
38
|
'& .MuiSvgIcon-root': {
|
|
39
39
|
fontSize: 16, // controls the radio icon size
|
|
40
40
|
},
|
|
41
|
-
} }), label: jsx(Typography, { fontSize: '11px', fontWeight: 'normal !important', children: option.label }) }, i))) })) }) })
|
|
41
|
+
} }), label: jsx(Typography, { fontSize: '11px', fontWeight: 'normal !important', children: option.label }) }, i))) })) }) }), jsx(FormBottomField, { ...props })] }));
|
|
42
42
|
};
|
|
43
43
|
|
|
44
44
|
export { FormRadioGroup as default };
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import { Controller } from 'react-hook-form';
|
|
3
|
+
import { Tooltip, Box } from '@mui/material';
|
|
3
4
|
import FormBottomField from '../FormBottomField/FormBottomField.esm.js';
|
|
4
5
|
import { TextAreaField } from './FormTextAreaField.styles.esm.js';
|
|
5
6
|
import 'dayjs';
|
|
6
|
-
import { renderLabel
|
|
7
|
+
import { renderLabel } from '../../../utils/Constants/FormConstants.esm.js';
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* FormTextAreaField Component
|
|
@@ -29,37 +30,37 @@ const FormTextAreaField = ({ props, variant, }) => {
|
|
|
29
30
|
/**
|
|
30
31
|
* Renders the textarea component with validation support
|
|
31
32
|
*/
|
|
32
|
-
return (jsx(Fragment, { children: jsx(Controller, { control: props.control, name: props.item.name, render: ({ field }) => (jsxs(Fragment, { children: [renderLabel(variant, props),
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
33
|
+
return (jsx(Fragment, { children: jsx(Controller, { control: props.control, name: props.item.name, render: ({ field }) => (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: {
|
|
34
|
+
style: {
|
|
35
|
+
border: 'none',
|
|
36
|
+
},
|
|
37
|
+
}, sx: {
|
|
38
|
+
...props.item.sx,
|
|
39
|
+
}, minRows: props.item.minRows || 1, maxRows: props.item.maxRows || 100, placeholder: props.item.placeholder || 'Type Something...', ...field, label: variant !== 'standard'
|
|
40
|
+
? `${props.item.label}${props.item.required ? ' *' : ''}`
|
|
41
|
+
: '', error: isShowBorderError, value: field.value || '', disabled: props.item.disable, inputProps: {
|
|
42
|
+
/**
|
|
43
|
+
* Handles input events with text restrictions
|
|
44
|
+
*
|
|
45
|
+
* @param {any} e - The input event object
|
|
46
|
+
*
|
|
47
|
+
* @remarks
|
|
48
|
+
* - Removes special characters if allowSpecialChars is false
|
|
49
|
+
* - Prevents input that starts with a space
|
|
50
|
+
*/
|
|
51
|
+
onInput: (e) => {
|
|
52
|
+
if (!props?.item?.allowSpecialChars) {
|
|
53
|
+
const value = e.target.value;
|
|
54
|
+
e.target.value = value.replace(/[^a-zA-Z0-9 ]/g, '');
|
|
55
|
+
} // Allow only alphanumeric and space
|
|
56
|
+
if (e.target.value.length === 1 && e.target.value === ' ') {
|
|
57
|
+
e.target.value = '';
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
'aria-labelledby': `${props.item.name}-label`,
|
|
61
|
+
'aria-describedby': `${props.item.name}-helper ${props.item.name}-error`,
|
|
62
|
+
'aria-required': props.item.required ? true : undefined,
|
|
63
|
+
} }), props.item.disable && props.item.isTooltipEnable && (jsx(Box, { sx: { position: 'absolute', top: 0, left: 0, width: '100%', height: '100%', zIndex: 1 } }))] }) }), jsx(FormBottomField, { ...props })] })) }, props.item.name) }));
|
|
63
64
|
};
|
|
64
65
|
|
|
65
66
|
export { FormTextAreaField as default };
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import { Controller } from 'react-hook-form';
|
|
3
|
+
import { Tooltip, Box } from '@mui/material';
|
|
3
4
|
import { FormTextFieldComponent } from './FormTextField.styles.esm.js';
|
|
4
5
|
import FormBottomField from '../FormBottomField/FormBottomField.esm.js';
|
|
5
6
|
import 'dayjs';
|
|
6
|
-
import { renderLabel
|
|
7
|
+
import { renderLabel } from '../../../utils/Constants/FormConstants.esm.js';
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* FormTextField Component
|
|
@@ -88,24 +89,24 @@ const FormTextField = ({ props, variant }) => {
|
|
|
88
89
|
* Renders the text field component using react-hook-form's Controller
|
|
89
90
|
* for controlled form state management
|
|
90
91
|
*/
|
|
91
|
-
return (jsx(Controller, { control: props.control, name: props.item.name, render: ({ field, fieldState }) => (jsxs(Fragment, { children: [renderLabel(variant, props),
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
92
|
+
return (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(FormTextFieldComponent, { ...field, fullWidth: true, autoFocus: props.item.autoFocus, error: !!fieldState.error, label: label, placeholder: props.item.placeholder || '', autoComplete: "off", sx: {
|
|
93
|
+
...props.item.sx,
|
|
94
|
+
}, value: field.value || '', size: "small", disabled: props.item.disable, onBlur: (e) => {
|
|
95
|
+
// Call custom onBlur handler if provided
|
|
96
|
+
props?.item?.onBlurFn && props?.item?.onBlurFn(e);
|
|
97
|
+
}, inputProps: {
|
|
98
|
+
...{
|
|
99
|
+
maxLength: props.item.maxLength || 100,
|
|
100
|
+
onInput: onInput,
|
|
101
|
+
onPaste: (e) => {
|
|
102
|
+
if (props.item.doNotAllowPaste)
|
|
103
|
+
e.preventDefault();
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
'aria-labelledby': `${props.item.name}-label`,
|
|
107
|
+
'aria-describedby': `${props.item.name}-helper ${props.item.name}-error`,
|
|
108
|
+
'aria-required': props.item.required ? true : undefined,
|
|
109
|
+
} }), props.item.disable && props.item.isTooltipEnable && (jsx(Box, { sx: { position: 'absolute', top: 0, left: 0, width: '100%', height: '100%', zIndex: 1 } }))] }) }), jsx(FormBottomField, { ...props })] })) }, props.item.name));
|
|
109
110
|
};
|
|
110
111
|
|
|
111
112
|
export { FormTextField as default };
|
package/dist/components/FormComponents/FormTextFieldWithSelect/FormTextFieldWithSelect.esm.js
CHANGED
|
@@ -2,7 +2,7 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
|
2
2
|
import { Controller } from 'react-hook-form';
|
|
3
3
|
import FormBottomField from '../FormBottomField/FormBottomField.esm.js';
|
|
4
4
|
import 'dayjs';
|
|
5
|
-
import { renderLabel
|
|
5
|
+
import { renderLabel } from '../../../utils/Constants/FormConstants.esm.js';
|
|
6
6
|
import { Box, TextField, Select, MenuItem } from '@mui/material';
|
|
7
7
|
|
|
8
8
|
/**
|
|
@@ -66,7 +66,7 @@ const FormTextFieldWithSelect = ({ props, variant, }) => {
|
|
|
66
66
|
* Renders the text field component using react-hook-form's Controller
|
|
67
67
|
* for controlled form state management
|
|
68
68
|
*/
|
|
69
|
-
return (jsx(Controller, { control: props.control, name: props.item.name, render: ({ field, fieldState }) => (jsxs(Fragment, { children: [renderLabel(variant, props),
|
|
69
|
+
return (jsx(Controller, { control: props.control, name: props.item.name, render: ({ field, fieldState }) => (jsxs(Fragment, { children: [renderLabel(variant, props), jsxs(Box, { sx: { display: 'flex', width: '100%' }, children: [jsx(TextField, { ...field, fullWidth: true, autoFocus: props.item.autoFocus, error: !!fieldState.error, label: label, placeholder: props.item.placeholder || '', autoComplete: "off", sx: {
|
|
70
70
|
...props.item.sx,
|
|
71
71
|
'& .MuiOutlinedInput-root': {
|
|
72
72
|
borderTopRightRadius: 0,
|
|
@@ -96,7 +96,7 @@ const FormTextFieldWithSelect = ({ props, variant, }) => {
|
|
|
96
96
|
// },
|
|
97
97
|
}, disabled: props.item.disable, error: !!fieldState.error, children: props?.item?.options?.map((item) => {
|
|
98
98
|
return (jsx(MenuItem, { value: item.value, children: item.label }, item.value));
|
|
99
|
-
}) })) })] })
|
|
99
|
+
}) })) })] }), jsx(FormBottomField, { ...props })] })) }, props.item.name));
|
|
100
100
|
};
|
|
101
101
|
|
|
102
102
|
export { FormTextFieldWithSelect as default };
|
|
@@ -5,7 +5,7 @@ import { useState } from 'react';
|
|
|
5
5
|
import { Controller } from 'react-hook-form';
|
|
6
6
|
import FormBottomField from '../FormBottomField/FormBottomField.esm.js';
|
|
7
7
|
import 'dayjs';
|
|
8
|
-
import { renderLabel
|
|
8
|
+
import { renderLabel } from '../../../utils/Constants/FormConstants.esm.js';
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* PasswordField Component
|
|
@@ -46,7 +46,7 @@ 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: [jsxs(Box, { sx: { position: 'relative' }, children: [renderLabel(variant, props),
|
|
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: [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
50
|
width: '100%',
|
|
51
51
|
'& .css-kichxs-MuiFormLabel-root-MuiInputLabel-root,.css-1holvmy': {
|
|
52
52
|
top: '-8px',
|
|
@@ -73,7 +73,7 @@ const PasswordField = ({ props, variant }) => {
|
|
|
73
73
|
e.preventDefault();
|
|
74
74
|
}
|
|
75
75
|
},
|
|
76
|
-
}, value: field.value || null, disabled: props.item.disable })
|
|
76
|
+
}, value: field.value || null, disabled: props.item.disable }), jsx(IconButton, { sx: {
|
|
77
77
|
position: 'absolute',
|
|
78
78
|
right: '14px',
|
|
79
79
|
top: variant === 'standard' ? '70%' : '50%',
|
|
@@ -3,10 +3,10 @@ import { Controller } from 'react-hook-form';
|
|
|
3
3
|
import FormBottomField from '../FormBottomField/FormBottomField.esm.js';
|
|
4
4
|
import RichTextEditor from './RichTextEditor.esm.js';
|
|
5
5
|
import 'dayjs';
|
|
6
|
-
import { renderLabel
|
|
6
|
+
import { renderLabel } from '../../../utils/Constants/FormConstants.esm.js';
|
|
7
7
|
|
|
8
8
|
const RichTextEditorWrapper = ({ props, variant, }) => {
|
|
9
|
-
return (jsx(Controller, { control: props.control, name: props.item.name, render: () => (jsxs(Fragment, { children: [renderLabel(variant, props),
|
|
9
|
+
return (jsx(Controller, { control: props.control, name: props.item.name, render: () => (jsxs(Fragment, { children: [renderLabel(variant, props), jsx(RichTextEditor, { props: props }), jsx(FormBottomField, { ...props })] })) }, props.item.name));
|
|
10
10
|
};
|
|
11
11
|
|
|
12
12
|
export { RichTextEditorWrapper as default };
|
|
@@ -4,7 +4,7 @@ import { useState, useRef, useMemo, useCallback } from 'react';
|
|
|
4
4
|
import { useWatch, Controller } from 'react-hook-form';
|
|
5
5
|
import FormBottomField from '../FormBottomField/FormBottomField.esm.js';
|
|
6
6
|
import 'dayjs';
|
|
7
|
-
import { renderLabel
|
|
7
|
+
import { renderLabel } from '../../../utils/Constants/FormConstants.esm.js';
|
|
8
8
|
|
|
9
9
|
//region old code
|
|
10
10
|
// const MultiSelectAutocomplete = ({
|
|
@@ -185,7 +185,7 @@ const MultiSelectAutocomplete = ({ props, variant, }) => {
|
|
|
185
185
|
const handleBlur = useCallback((e) => {
|
|
186
186
|
props?.item?.onBlurFn && props?.item?.onBlurFn(e);
|
|
187
187
|
}, [props]);
|
|
188
|
-
return (jsx(Controller, { control: props.control, name: props.item.name, render: ({ field: { ref, onBlur: fieldOnBlur } }) => (jsxs(Fragment, { children: [renderLabel(variant, props),
|
|
188
|
+
return (jsx(Controller, { control: props.control, name: props.item.name, render: ({ field: { ref, onBlur: fieldOnBlur } }) => (jsxs(Fragment, { children: [renderLabel(variant, props), jsx(Autocomplete, { ref: ref, open: open, onOpen: () => setOpen(true), onClose: () => setOpen(false), multiple: true, disableCloseOnSelect: true, id: `${props.item.name}-autocomplete-multi`, options: options, value: selectedOptions, getOptionLabel: getOptionLabelCb, isOptionEqualToValue: isOptionEqualCb, getOptionDisabled: (option) => option.disable, onChange: handleChange, onBlur: (e) => {
|
|
189
189
|
fieldOnBlur();
|
|
190
190
|
handleBlur(e);
|
|
191
191
|
}, size: "small", disablePortal: false, autoHighlight: true, selectOnFocus: true, clearOnBlur: false, renderTags: (tagValue, getTagProps) => (jsx(Box, { ref: tagsContainerRef, sx: {
|
|
@@ -232,7 +232,7 @@ const MultiSelectAutocomplete = ({ props, variant, }) => {
|
|
|
232
232
|
'aria-labelledby': `${props.item.name}-label`,
|
|
233
233
|
'aria-describedby': `${props.item.name}-helper ${props.item.name}-error`,
|
|
234
234
|
'aria-required': props.item.required ? true : undefined,
|
|
235
|
-
} })) })
|
|
235
|
+
} })) }), jsx(FormBottomField, { ...props })] })) }, props.item.name));
|
|
236
236
|
};
|
|
237
237
|
|
|
238
238
|
export { MultiSelectAutocomplete as default };
|
|
@@ -4,7 +4,7 @@ import { useState, useRef, useMemo, useCallback } from 'react';
|
|
|
4
4
|
import { useWatch } from 'react-hook-form';
|
|
5
5
|
import FormBottomField from '../FormBottomField/FormBottomField.esm.js';
|
|
6
6
|
import 'dayjs';
|
|
7
|
-
import { renderLabel
|
|
7
|
+
import { renderLabel } from '../../../utils/Constants/FormConstants.esm.js';
|
|
8
8
|
import { useMaterialReactTable, MaterialReactTable } from 'material-react-table';
|
|
9
9
|
|
|
10
10
|
const ITEM_HEIGHT = 50;
|
|
@@ -304,15 +304,22 @@ const MultiSelectTable = ({ props, variant, }) => {
|
|
|
304
304
|
overflow: 'visible',
|
|
305
305
|
},
|
|
306
306
|
},
|
|
307
|
-
muiTableBodyRowProps: {
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
307
|
+
muiTableBodyRowProps: ({ row }) => {
|
|
308
|
+
const rowId = String(row.original[valueField]);
|
|
309
|
+
const isSelected = selectedValues.includes(rowId);
|
|
310
|
+
return {
|
|
311
|
+
onClick: () => handleRowSelect(rowId), // 👈 row click selection
|
|
312
|
+
sx: {
|
|
313
|
+
borderBottom: '1px solid #e0e0e0',
|
|
314
|
+
height: 'auto',
|
|
315
|
+
minHeight: '32px',
|
|
316
|
+
cursor: 'pointer',
|
|
317
|
+
backgroundColor: isSelected ? '#b2dfdb' : 'inherit', // optional highlight
|
|
318
|
+
'&:hover': {
|
|
319
|
+
backgroundColor: '#e0f2f1',
|
|
320
|
+
},
|
|
314
321
|
},
|
|
315
|
-
}
|
|
322
|
+
};
|
|
316
323
|
},
|
|
317
324
|
initialState: {
|
|
318
325
|
density: 'compact',
|
|
@@ -337,7 +344,7 @@ const MultiSelectTable = ({ props, variant, }) => {
|
|
|
337
344
|
'& .MuiTablePagination-root': {
|
|
338
345
|
padding: '0px !important'
|
|
339
346
|
}
|
|
340
|
-
}, children: [renderLabel(variant, props), variant !== 'standard' ? (jsxs(InputLabel, { error: isShowBorderError, id: `${props.item.name}-mst-labelId`, children: [props.item.label, props.item.required ? ' *' : ''] })) : null,
|
|
347
|
+
}, children: [renderLabel(variant, props), variant !== 'standard' ? (jsxs(InputLabel, { error: isShowBorderError, id: `${props.item.name}-mst-labelId`, children: [props.item.label, props.item.required ? ' *' : ''] })) : null, jsx(Select, { labelId: `${props.item.name}-mst-labelId`, id: `${props.item.name}-mst-select`, multiple: true, sx: {
|
|
341
348
|
'& .MuiTypography-root': {
|
|
342
349
|
fontSize: '5px !important',
|
|
343
350
|
},
|
|
@@ -356,7 +363,7 @@ const MultiSelectTable = ({ props, variant, }) => {
|
|
|
356
363
|
maxHeight: 450, width: '100%', overflow: 'hidden', overflowY: 'auto', '.MuiTextField-root': {
|
|
357
364
|
width: '280% !important'
|
|
358
365
|
}
|
|
359
|
-
}, children: rows.length > 0 ? (jsx(MaterialReactTable, { table: table })) : (jsx(Box, { sx: { padding: '16px', textAlign: 'center', color: '#999', fontSize: '11px' }, children: "No Options found" })) }) })
|
|
366
|
+
}, children: rows.length > 0 ? (jsx(MaterialReactTable, { table: table })) : (jsx(Box, { sx: { padding: '16px', textAlign: 'center', color: '#999', fontSize: '11px' }, children: "No Options found" })) }) }), jsx(FormBottomField, { ...props })] }) }, props.item.name));
|
|
360
367
|
};
|
|
361
368
|
|
|
362
369
|
export { MultiSelectTable as default };
|
|
@@ -10,7 +10,7 @@ import React__default, { useState, useRef, useMemo } from 'react';
|
|
|
10
10
|
import { useWatch } from 'react-hook-form';
|
|
11
11
|
import FormBottomField from '../FormBottomField/FormBottomField.esm.js';
|
|
12
12
|
import 'dayjs';
|
|
13
|
-
import { renderLabel
|
|
13
|
+
import { renderLabel } from '../../../utils/Constants/FormConstants.esm.js';
|
|
14
14
|
|
|
15
15
|
const ITEM_HEIGHT = 36;
|
|
16
16
|
const ITEM_PADDING_TOP = 2;
|
|
@@ -56,12 +56,16 @@ function MultiSelectV1({ props, variant, }) {
|
|
|
56
56
|
const selectedOptions = useMemo(() => options.filter((item) => fieldValue?.split(',').some((value) => value === item.value)), [options, fieldValue]);
|
|
57
57
|
const selectedValuesString = selectedOptions.map((item) => item.label).join(' , ');
|
|
58
58
|
const isShowBorderError = !!props.errors?.[props.item.name];
|
|
59
|
-
return (jsx(Box, { children: jsxs(FormControl, { fullWidth: true, ref: containerRef, sx: { '& .MuiFormLabel-root': { top: -10 }, '& .MuiInputLabel-shrink': { top: 0 } }, children: [renderLabel(variant, props), variant !== 'standard' && (jsxs(InputLabel, { error: isShowBorderError, id: `${props.item.name}-ms-labelId`, children: [props.item.label, props.item.required ? ' *' : ''] })),
|
|
60
|
-
|
|
59
|
+
return (jsx(Box, { children: jsxs(FormControl, { fullWidth: true, ref: containerRef, sx: { '& .MuiFormLabel-root': { top: -10 }, '& .MuiInputLabel-shrink': { top: 0 } }, children: [renderLabel(variant, props), variant !== 'standard' && (jsxs(InputLabel, { error: isShowBorderError, id: `${props.item.name}-ms-labelId`, children: [props.item.label, props.item.required ? ' *' : ''] })), jsxs(Select, { labelId: `${props.item.name}-ms-labelId`, id: `${props.item.name}-ms-select`, multiple: true, displayEmpty: true, error: isShowBorderError, disabled: props.item.disable, value: fieldValue ? extractValuesToArray(fieldValue) : [], onChange: handleChange, onOpen: () => {
|
|
60
|
+
if (!props.item.doNotEnableMultiselectOrder) {
|
|
61
|
+
setSavedSortValue(fieldValue);
|
|
62
|
+
}
|
|
61
63
|
setTimeout(() => textfieldRef.current?.focus(), 0);
|
|
62
64
|
}, onClose: () => {
|
|
63
65
|
setSearchText('');
|
|
64
|
-
|
|
66
|
+
if (!props.item.doNotEnableMultiselectOrder) {
|
|
67
|
+
setSavedSortValue(fieldValue);
|
|
68
|
+
}
|
|
65
69
|
props?.item?.onCloseMenu && props?.item?.onCloseMenu();
|
|
66
70
|
}, input: jsx(OutlinedInput, { label: variant !== 'standard' ? props.item.label : '' }), renderValue: () => (jsx(Tooltip, { title: selectedValuesString, children: jsx("span", { style: { display: 'block', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }, children: props.item.placeholder && selectedOptions.length === 0 ? (jsx("span", { style: { color: '#0009' }, children: props.item.placeholder })) : (selectedOptions.length > (props.item.multiSelectLabelLength || 3)
|
|
67
71
|
? `${selectedOptions.length} Selected`
|
|
@@ -103,7 +107,7 @@ function MultiSelectV1({ props, variant, }) {
|
|
|
103
107
|
} }) }), filterOptions.length !== 0 ? (filterOptions.map((option) => {
|
|
104
108
|
const selectedArray = fieldValue ? extractValuesToArray(fieldValue) : [];
|
|
105
109
|
const isChecked = selectedArray.includes(String(option.value));
|
|
106
|
-
return (jsxs(MenuItem, { value: `${option.value}`, sx: {
|
|
110
|
+
return (jsxs(MenuItem, { value: `${option.value}`, disabled: option.disable, sx: {
|
|
107
111
|
whiteSpace: 'normal',
|
|
108
112
|
wordBreak: 'break-all',
|
|
109
113
|
alignItems: 'center',
|
|
@@ -118,7 +122,7 @@ function MultiSelectV1({ props, variant, }) {
|
|
|
118
122
|
lineHeight: '1.2'
|
|
119
123
|
}
|
|
120
124
|
} })] }, option.value));
|
|
121
|
-
})) : (jsx(MenuItem, {
|
|
125
|
+
})) : (jsx(MenuItem, { disabled: true, children: "No data Found" }))] }), jsx(FormBottomField, { ...props })] }) }, props.item.name));
|
|
122
126
|
}
|
|
123
127
|
|
|
124
128
|
export { MultiSelectV1 as default };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import { createElement } from 'react';
|
|
3
|
-
import { Autocomplete, TextField
|
|
3
|
+
import { Tooltip, Box, Autocomplete, TextField } from '@mui/material';
|
|
4
4
|
import { useWatch, Controller } from 'react-hook-form';
|
|
5
5
|
import FormBottomField from '../FormBottomField/FormBottomField.esm.js';
|
|
6
6
|
import 'dayjs';
|
|
7
|
-
import { renderLabel
|
|
7
|
+
import { renderLabel } from '../../../utils/Constants/FormConstants.esm.js';
|
|
8
8
|
|
|
9
9
|
const SingleSelect = ({ props, variant }) => {
|
|
10
10
|
const isError = !!props.errors?.[props.item.name];
|
|
@@ -14,61 +14,52 @@ const SingleSelect = ({ props, variant }) => {
|
|
|
14
14
|
const value = currentValue
|
|
15
15
|
? props.item.options?.find((item) => item.value === currentValue)
|
|
16
16
|
: null;
|
|
17
|
-
return (jsx(Controller, { control: props.control, name: props.item.name, render: ({ field }) => (jsxs(Fragment, { children: [renderLabel(variant, props),
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
}
|
|
64
|
-
return (jsx(Tooltip, { title: value?.label ?? '', disableHoverListener: !value, children: jsx("span", { style: {
|
|
65
|
-
display: 'block',
|
|
66
|
-
overflow: 'hidden',
|
|
67
|
-
textOverflow: 'ellipsis',
|
|
68
|
-
whiteSpace: 'nowrap',
|
|
69
|
-
width: '100%',
|
|
70
|
-
}, children: inputField }) }));
|
|
71
|
-
} }))), jsx(FormBottomField, { ...props })] })) }, props.item.name));
|
|
17
|
+
return (jsx(Controller, { control: props.control, name: props.item.name, render: ({ field }) => (jsxs(Fragment, { children: [renderLabel(variant, props), jsx(Tooltip, { title: props.item.isTooltipEnable ? (value?.label || '') : '', placement: "bottom-start", children: jsxs(Box, { sx: { width: '100%', position: 'relative' }, children: [jsx(Autocomplete, { ...field, id: `${props.item.name}-autocomplete`, value: value, onChange: (_, newValue) => {
|
|
18
|
+
props.setValue(props?.item?.name, newValue?.value);
|
|
19
|
+
props?.item?.onChangeFn && props?.item?.onChangeFn(newValue?.value, newValue);
|
|
20
|
+
props?.clearErrors && props?.clearErrors(props?.item?.name);
|
|
21
|
+
}, onBlur: (e) => {
|
|
22
|
+
props?.item?.onBlurFn && props?.item?.onBlurFn(e);
|
|
23
|
+
}, size: "small", sx: {
|
|
24
|
+
'& .MuiAutocomplete-input': {
|
|
25
|
+
padding: '0px 0px 0px 5px !important',
|
|
26
|
+
},
|
|
27
|
+
'& .css-erkti9-MuiFormLabel-root-MuiInputLabel-root,.css-8edmr2-MuiFormLabel-root-MuiInputLabel-root': {
|
|
28
|
+
top: '-3px',
|
|
29
|
+
},
|
|
30
|
+
// Note: Options are rendered in a portal; keep this as a fallback only
|
|
31
|
+
'& .MuiAutocomplete-option': {
|
|
32
|
+
fontSize: '11px',
|
|
33
|
+
zIndex: 2000,
|
|
34
|
+
},
|
|
35
|
+
...props.item.sx,
|
|
36
|
+
}, ListboxProps: {
|
|
37
|
+
onScroll: (event) => {
|
|
38
|
+
const listboxNode = event.currentTarget;
|
|
39
|
+
if (listboxNode.scrollTop + listboxNode.clientHeight === listboxNode.scrollHeight) ;
|
|
40
|
+
},
|
|
41
|
+
}, disabled: props.item.disable, options: props.item.options || [], slotProps: {
|
|
42
|
+
popper: {
|
|
43
|
+
sx: {
|
|
44
|
+
zIndex: 1401,
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
listbox: {
|
|
48
|
+
sx: {
|
|
49
|
+
fontSize: '11px',
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
}, renderOption: (props, option) => (createElement("li", { ...props, value: option.value, style: {
|
|
53
|
+
opacity: option.disable ? 0.5 : 1,
|
|
54
|
+
pointerEvents: option.disable ? 'none' : 'auto',
|
|
55
|
+
}, key: option.value }, option.label)), renderInput: (params) => (jsx(TextField, { ...params, placeholder: props.item.placeholder, error: isShowBorderError, label: variant !== 'standard'
|
|
56
|
+
? `${props.item.label}${props.item.required ? ' *' : ''}`
|
|
57
|
+
: '', inputProps: {
|
|
58
|
+
...params.inputProps,
|
|
59
|
+
'aria-labelledby': `${props.item.name}-label`,
|
|
60
|
+
'aria-describedby': `${props.item.name}-helper ${props.item.name}-error`,
|
|
61
|
+
'aria-required': props.item.required ? true : undefined,
|
|
62
|
+
} })) }), props.item.disable && props.item.isTooltipEnable && (jsx(Box, { sx: { position: 'absolute', top: 0, left: 0, width: '100%', height: '100%', zIndex: 1 } }))] }) }), jsx(FormBottomField, { ...props })] })) }, props.item.name));
|
|
72
63
|
};
|
|
73
64
|
|
|
74
65
|
export { SingleSelect as default };
|
|
@@ -3,7 +3,7 @@ import { FormControl, InputLabel, Select, MenuItem } from '@mui/material';
|
|
|
3
3
|
import { useWatch } from 'react-hook-form';
|
|
4
4
|
import FormBottomField from '../FormBottomField/FormBottomField.esm.js';
|
|
5
5
|
import 'dayjs';
|
|
6
|
-
import { renderLabel
|
|
6
|
+
import { renderLabel } from '../../../utils/Constants/FormConstants.esm.js';
|
|
7
7
|
|
|
8
8
|
const SingleSelectNonAutoComplete = ({ props, variant, }) => {
|
|
9
9
|
const isError = !!props.errors?.[props.item.name];
|
|
@@ -17,16 +17,16 @@ const SingleSelectNonAutoComplete = ({ props, variant, }) => {
|
|
|
17
17
|
'& .MuiInputLabel-shrink': {
|
|
18
18
|
top: 0,
|
|
19
19
|
},
|
|
20
|
-
}, disabled: props.item.disable, children: [renderLabel(variant, props), variant !== 'standard' && (jsx(InputLabel, { error: isShowBorderError, id: `${props.item.name}-labelId`, children: props.item.label })),
|
|
20
|
+
}, disabled: props.item.disable, children: [renderLabel(variant, props), variant !== 'standard' && (jsx(InputLabel, { error: isShowBorderError, id: `${props.item.name}-labelId`, children: props.item.label })), jsx(Select, { labelId: `${props.item.name}-labelId`, id: `${props.item.name}-select`, value: value, label: variant !== 'standard' ? `${props.item.label}${props.item.required ? ' *' : ''}` : '', disabled: props.item.disable, onChange: (e) => props.setValue(props.item.name, e.target.value), onBlur: (e) => {
|
|
21
21
|
props?.item?.onBlurFn && props?.item?.onBlurFn(e);
|
|
22
22
|
}, error: isShowBorderError, inputProps: {
|
|
23
23
|
'aria-labelledby': `${props.item.name}-label`,
|
|
24
24
|
'aria-describedby': `${props.item.name}-helper ${props.item.name}-error`,
|
|
25
25
|
'aria-required': props.item.required ? true : undefined,
|
|
26
|
-
}, children: (props.item.options || []).map((item) => (jsx(MenuItem, { sx: {
|
|
26
|
+
}, children: (props.item.options || []).map((item) => (jsx(MenuItem, { disabled: item.disable, sx: {
|
|
27
27
|
fontSize: '11px', // Adjust the font size as needed
|
|
28
28
|
zIndex: 2000,
|
|
29
|
-
}, value: item.value, children: item.label }, item.value))) })
|
|
29
|
+
}, value: item.value, children: item.label }, item.value))) }), jsx(FormBottomField, { ...props })] }, props.item.name));
|
|
30
30
|
};
|
|
31
31
|
|
|
32
32
|
export { SingleSelectNonAutoComplete as default };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import { Autocomplete, Stack, Skeleton,
|
|
2
|
+
import { Autocomplete, Stack, Skeleton, Tooltip, TextField } from '@mui/material';
|
|
3
3
|
import { useState, useEffect } from 'react';
|
|
4
4
|
import { Controller } from 'react-hook-form';
|
|
5
5
|
import '../../../node_modules/axios/index.esm.js';
|
|
6
6
|
import 'dayjs';
|
|
7
|
-
import { renderLabel
|
|
7
|
+
import { renderLabel } from '../../../utils/Constants/FormConstants.esm.js';
|
|
8
8
|
import FormBottomField from '../FormBottomField/FormBottomField.esm.js';
|
|
9
9
|
import axios from '../../../node_modules/axios/lib/axios.esm.js';
|
|
10
10
|
|
|
@@ -48,7 +48,7 @@ const SingleSelectSearchApi = ({ props, variant, }) => {
|
|
|
48
48
|
// setSearchValue('');
|
|
49
49
|
// }, [props.item?.changeValue]);
|
|
50
50
|
const isOptionEqualToValue = (option, value) => option?.value === value?.value; // Assuming there's a 'value' property in your options
|
|
51
|
-
return (jsx(Controller, { control: props.control, name: props.item.name, render: ({ field }) => (jsxs(Fragment, { children: [renderLabel(variant, props),
|
|
51
|
+
return (jsx(Controller, { control: props.control, name: props.item.name, render: ({ field }) => (jsxs(Fragment, { children: [renderLabel(variant, props), jsx(Autocomplete, { ...field, value: props.getValues(props.item.name)
|
|
52
52
|
? optionsFetched?.find((item) => item.value === props.getValues(props.item.name))
|
|
53
53
|
: null, onChange: (_, newValue) => {
|
|
54
54
|
// field.onChange(newValue);
|
|
@@ -68,18 +68,14 @@ const SingleSelectSearchApi = ({ props, variant, }) => {
|
|
|
68
68
|
fontSize: '16px',
|
|
69
69
|
},
|
|
70
70
|
}, disabled: props.item.disable, options: optionsFetched, getOptionLabel: (option) => option.label, renderInput: (params) => {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
if (!props.item.isLabelToolTipEnable) {
|
|
77
|
-
return inputField;
|
|
78
|
-
}
|
|
79
|
-
return (jsx(Tooltip, { title: params.inputProps.value && params.inputProps.value, children: jsx("span", { style: { display: 'block', width: '100%' }, children: inputField }) }));
|
|
71
|
+
return (jsx(Tooltip, { title: params.inputProps.value && params.inputProps.value, children: jsx(TextField, { ...params, onChange: (e) => {
|
|
72
|
+
setSearchValue(e.target.value);
|
|
73
|
+
}, label: variant !== 'standard'
|
|
74
|
+
? `${props.item.label}${props.item.required ? ' *' : ''}`
|
|
75
|
+
: '', placeholder: props.item.placeholder }) }));
|
|
80
76
|
}, PaperComponent: ({ children }) => (jsx("div", { style: {
|
|
81
77
|
background: '#fff',
|
|
82
|
-
}, children: isLoading ? (jsxs(Stack, { padding: 2, spacing: 1, children: [jsx(Skeleton, { variant: "rectangular", width: '100%', height: 20 }), jsx(Skeleton, { variant: "rectangular", width: '100%', height: 20 }), jsx(Skeleton, { variant: "rectangular", width: '100%', height: 20 }), jsx(Skeleton, { variant: "rectangular", width: '100%', height: 20 }), jsx(Skeleton, { variant: "rectangular", width: '100%', height: 20 }), jsx(Skeleton, { variant: "rectangular", width: '100%', height: 20 })] })) : (children) })), isOptionEqualToValue: isOptionEqualToValue })
|
|
78
|
+
}, children: isLoading ? (jsxs(Stack, { padding: 2, spacing: 1, children: [jsx(Skeleton, { variant: "rectangular", width: '100%', height: 20 }), jsx(Skeleton, { variant: "rectangular", width: '100%', height: 20 }), jsx(Skeleton, { variant: "rectangular", width: '100%', height: 20 }), jsx(Skeleton, { variant: "rectangular", width: '100%', height: 20 }), jsx(Skeleton, { variant: "rectangular", width: '100%', height: 20 }), jsx(Skeleton, { variant: "rectangular", width: '100%', height: 20 })] })) : (children) })), isOptionEqualToValue: isOptionEqualToValue }), props?.item?.helperText && (jsxs("span", { style: {
|
|
83
79
|
fontFamily: 'Roboto-Reg',
|
|
84
80
|
fontSize: '11px',
|
|
85
81
|
color: '#3651d3',
|
|
@@ -7,7 +7,7 @@ import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
|
|
|
7
7
|
import { useWatch, Controller } from 'react-hook-form';
|
|
8
8
|
import { ErrorMessageComponent } from '../../Form/Form.styles.esm.js';
|
|
9
9
|
import 'dayjs';
|
|
10
|
-
import { renderLabel,
|
|
10
|
+
import { renderLabel, parseCustomTime, formatDayjsToCustomTime } from '../../../utils/Constants/FormConstants.esm.js';
|
|
11
11
|
|
|
12
12
|
function TimePickerFieldWrapper({ props, variant, }) {
|
|
13
13
|
const [TimePicker, setTimePicker] = useState(null);
|
|
@@ -27,7 +27,7 @@ function TimePickerFieldWrapper({ props, variant, }) {
|
|
|
27
27
|
if (isLoading) {
|
|
28
28
|
return jsx("div", { style: { minHeight: '36px' }, children: "Loading..." });
|
|
29
29
|
}
|
|
30
|
-
return (jsx(Fragment, { children: TimePicker && (jsxs(LocalizationProvider, { dateAdapter: AdapterDayjs, children: [jsx(Controller, { name: props.item.name, control: props.control, render: ({ field }) => (jsxs(Fragment, { children: [renderLabel(variant, props),
|
|
30
|
+
return (jsx(Fragment, { children: TimePicker && (jsxs(LocalizationProvider, { dateAdapter: AdapterDayjs, children: [jsx(Controller, { name: props.item.name, control: props.control, render: ({ field }) => (jsxs(Fragment, { children: [renderLabel(variant, props), jsx(TimePicker, { ...field, value: value ? parseCustomTime(value) : null, onChange: (newTime) => {
|
|
31
31
|
const parsedTime = parseCustomTime(formatDayjsToCustomTime(newTime));
|
|
32
32
|
const min = props.item.minTime ? parseCustomTime(props.item.minTime) : null;
|
|
33
33
|
const max = props.item.maxTime ? parseCustomTime(props.item.maxTime) : null;
|
|
@@ -64,7 +64,7 @@ function TimePickerFieldWrapper({ props, variant, }) {
|
|
|
64
64
|
},
|
|
65
65
|
},
|
|
66
66
|
},
|
|
67
|
-
} })
|
|
67
|
+
} })] })) }), jsx(ErrorMessageComponent, { children: jsx(ErrorMessage, { errors: props.errors, name: props.item.name }) })] })) }));
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
export { TimePickerFieldWrapper as default };
|
|
@@ -7,6 +7,7 @@ interface MultiSelectProps {
|
|
|
7
7
|
onChangeFn: (e: any) => void;
|
|
8
8
|
disable?: boolean;
|
|
9
9
|
optionFontSize?: string;
|
|
10
|
+
donotEnableMultiselectOrder?: boolean;
|
|
10
11
|
}
|
|
11
|
-
export default function MultiSelectFieldComponent({ value, options, onChangeFn, disable, optionFontSize, }: MultiSelectProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export default function MultiSelectFieldComponent({ value, options, onChangeFn, disable, optionFontSize, donotEnableMultiselectOrder }: MultiSelectProps): import("react/jsx-runtime").JSX.Element;
|
|
12
13
|
export {};
|
|
@@ -15,7 +15,7 @@ const extractValuesToArray = (inputString) => {
|
|
|
15
15
|
const trimmedArray = valuesArray?.map((value) => value.trim());
|
|
16
16
|
return trimmedArray;
|
|
17
17
|
};
|
|
18
|
-
function MultiSelectFieldComponent({ value, options, onChangeFn, disable = false, optionFontSize = '13px', }) {
|
|
18
|
+
function MultiSelectFieldComponent({ value, options, onChangeFn, disable = false, optionFontSize = '13px', donotEnableMultiselectOrder = false }) {
|
|
19
19
|
const [personName, setPersonName] = React.useState(value ? extractValuesToArray(value) : []);
|
|
20
20
|
const [searchText, setSearchText] = useState('');
|
|
21
21
|
const [selectAll, setSelectAll] = useState(false);
|
|
@@ -68,7 +68,9 @@ function MultiSelectFieldComponent({ value, options, onChangeFn, disable = false
|
|
|
68
68
|
fontSize: '5px !important',
|
|
69
69
|
},
|
|
70
70
|
}, disabled: disable, value: value ? extractValuesToArray(value) : [], onChange: handleChange, onOpen: () => {
|
|
71
|
-
|
|
71
|
+
if (!donotEnableMultiselectOrder) {
|
|
72
|
+
setSavedSortValue(fieldValue);
|
|
73
|
+
}
|
|
72
74
|
setTimeout(() => {
|
|
73
75
|
if (textfieldRef.current) {
|
|
74
76
|
textfieldRef.current?.focus();
|
|
@@ -76,7 +78,9 @@ function MultiSelectFieldComponent({ value, options, onChangeFn, disable = false
|
|
|
76
78
|
}, 0);
|
|
77
79
|
}, onClose: () => {
|
|
78
80
|
setSearchText('');
|
|
79
|
-
|
|
81
|
+
if (!donotEnableMultiselectOrder) {
|
|
82
|
+
setSavedSortValue(fieldValue);
|
|
83
|
+
}
|
|
80
84
|
}, renderValue: () => (jsx(Tooltip, { title: selectedValues, children: jsx("span", { children: selectedOptions.length > 3 ? `${selectedOptions.length} Selected` : selectedValues }) })), MenuProps: {
|
|
81
85
|
PaperProps: {
|
|
82
86
|
style: {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __exports as DateInput } from '../../../../../_virtual/index.
|
|
1
|
+
import { __exports as DateInput } 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
|
import { __require as requireClassnames } from '../../../../classnames/index.esm.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __exports as InputRangeField } from '../../../../../_virtual/index.
|
|
1
|
+
import { __exports as InputRangeField } 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
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __exports as Month } from '../../../../../_virtual/index.
|
|
1
|
+
import { __exports as Month } from '../../../../../_virtual/index.esm13.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,12 +1,5 @@
|
|
|
1
|
-
import type { ReactElement } from 'react';
|
|
2
1
|
import dayjs, { Dayjs } from 'dayjs';
|
|
3
2
|
import { VariantProps, FormRenderProps } from '../Interface/FormInterface';
|
|
4
|
-
/** Full label text used for tooltips (label + required asterisk when applicable). */
|
|
5
|
-
export declare const getLabelTooltipTitle: (props: FormRenderProps) => string;
|
|
6
|
-
/**
|
|
7
|
-
* For non-`standard` variants the visible label sits on the input; wrap the control so the full label shows on hover.
|
|
8
|
-
*/
|
|
9
|
-
export declare const wrapFieldWithLabelTooltipIfEnabled: (variant: VariantProps, props: FormRenderProps, children: ReactElement) => ReactElement;
|
|
10
3
|
/**
|
|
11
4
|
* Renders a form input label with an optional required asterisk.
|
|
12
5
|
*
|
|
@@ -1,18 +1,6 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { Tooltip } from '@mui/material';
|
|
3
2
|
import dayjs from 'dayjs';
|
|
4
3
|
|
|
5
|
-
/** Full label text used for tooltips (label + required asterisk when applicable). */
|
|
6
|
-
const getLabelTooltipTitle = (props) => `${props.item.label}${props.item.required ? ' *' : ''}`;
|
|
7
|
-
/**
|
|
8
|
-
* For non-`standard` variants the visible label sits on the input; wrap the control so the full label shows on hover.
|
|
9
|
-
*/
|
|
10
|
-
const wrapFieldWithLabelTooltipIfEnabled = (variant, props, children) => {
|
|
11
|
-
if (!props.item.isLabelToolTipEnable || variant === 'standard') {
|
|
12
|
-
return children;
|
|
13
|
-
}
|
|
14
|
-
return (jsx(Tooltip, { title: getLabelTooltipTitle(props), placement: "top", children: jsx("span", { style: { display: 'block', width: '100%' }, children: children }) }));
|
|
15
|
-
};
|
|
16
4
|
/**
|
|
17
5
|
* Renders a form input label with an optional required asterisk.
|
|
18
6
|
*
|
|
@@ -21,15 +9,7 @@ const wrapFieldWithLabelTooltipIfEnabled = (variant, props, children) => {
|
|
|
21
9
|
* @param {boolean} [showLabel=false] - Whether to always show the label.
|
|
22
10
|
* @returns {JSX.Element | false} The rendered label element or false if not shown.
|
|
23
11
|
*/
|
|
24
|
-
const renderLabel = (variant, props, showLabel = false) => {
|
|
25
|
-
if (!(variant === 'standard' || showLabel))
|
|
26
|
-
return false;
|
|
27
|
-
const labelInner = (jsxs("span", { id: `${props.item.name}-label`, className: "formInputlabel", style: { fontSize: '12px' }, children: [props.item.label, ' ', props.item.required && (jsx("span", { "aria-hidden": "true", style: { color: 'var(--mui-palette-error-main, #B3261E)' }, children: "*" }))] }));
|
|
28
|
-
if (props.item.isLabelToolTipEnable) {
|
|
29
|
-
return (jsx(Tooltip, { title: getLabelTooltipTitle(props), placement: "top", children: jsx("span", { style: { display: 'inline-block', maxWidth: '100%' }, children: labelInner }) }));
|
|
30
|
-
}
|
|
31
|
-
return labelInner;
|
|
32
|
-
};
|
|
12
|
+
const renderLabel = (variant, props, showLabel = false) => (variant === 'standard' || showLabel) && (jsxs("span", { id: `${props.item.name}-label`, className: "formInputlabel", style: { fontSize: '12px' }, children: [props.item.label, ' ', props.item.required && (jsx("span", { "aria-hidden": "true", style: { color: 'var(--mui-palette-error-main, #B3261E)' }, children: "*" }))] }));
|
|
33
13
|
/**
|
|
34
14
|
* Formats a date string in "M/YYYY" or "MM/YYYY" format to "MM/01/YYYY".
|
|
35
15
|
*
|
|
@@ -95,4 +75,4 @@ const extractDate = (inputDateString) => {
|
|
|
95
75
|
return formattedDate;
|
|
96
76
|
};
|
|
97
77
|
|
|
98
|
-
export { extractDate, formatDateMonthAndYear, formatDayjsToCustomTime,
|
|
78
|
+
export { extractDate, formatDateMonthAndYear, formatDayjsToCustomTime, parseCustomTime, renderLabel };
|
|
@@ -3,6 +3,7 @@ import { SxProps } from '@mui/material';
|
|
|
3
3
|
export interface OptionsProps {
|
|
4
4
|
label: string | boolean | number;
|
|
5
5
|
value: string | number;
|
|
6
|
+
disable?: boolean;
|
|
6
7
|
}
|
|
7
8
|
export interface TextFieldInputProps {
|
|
8
9
|
autoComplete: 'new-password' | 'off';
|
|
@@ -40,7 +41,7 @@ export interface FormSectionPropsItem {
|
|
|
40
41
|
customErrorMessage?: string | null;
|
|
41
42
|
sx?: SxProps<Theme>;
|
|
42
43
|
donotAllowSpace?: boolean;
|
|
43
|
-
onInputProps?: (e: React.FocusEvent<HTMLInputElement>) => void;
|
|
44
|
+
onInputProps?: (e: React.FocusEvent<HTMLInputElement> | any) => void;
|
|
44
45
|
fileType?: 'excel' | 'pdf' | 'all' | 'zip' | 'image' | 'document' | '' | string[];
|
|
45
46
|
handleFileError?: (message: string) => void;
|
|
46
47
|
onCloseMenu?: () => void;
|
|
@@ -81,8 +82,8 @@ export interface FormSectionPropsItem {
|
|
|
81
82
|
labelField?: string;
|
|
82
83
|
headerColor?: string;
|
|
83
84
|
optionFontSize?: string;
|
|
84
|
-
|
|
85
|
-
|
|
85
|
+
isTooltipEnable?: boolean;
|
|
86
|
+
doNotEnableMultiselectOrder?: boolean;
|
|
86
87
|
}
|
|
87
88
|
export type VariantProps = 'standard' | 'outlined' | '';
|
|
88
89
|
export interface FormRenderProps {
|
package/dist/utils/index.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { calculateTotalArrayValueTotal, checkIsDateIsBefore, findMenuHierarchy, getDesiredDate, getFormattedDate, getInitials, getUsernameFromEmail, handleDownloadReactTableDataExcel, lightenColor } from './Constants/FunctionConstants.esm.js';
|
|
2
|
-
export { extractDate, formatDateMonthAndYear, formatDayjsToCustomTime,
|
|
2
|
+
export { extractDate, formatDateMonthAndYear, formatDayjsToCustomTime, parseCustomTime, renderLabel } from './Constants/FormConstants.esm.js';
|
|
3
3
|
|
|
4
4
|
// Utility Functions - Helper functions for form operations and data manipulation
|