tp-react-elements 1.2.3 → 1.2.7

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.
Files changed (30) hide show
  1. package/dist/_virtual/index.esm10.js +2 -2
  2. package/dist/_virtual/index.esm11.js +2 -2
  3. package/dist/_virtual/index.esm12.js +2 -2
  4. package/dist/_virtual/index.esm13.js +2 -2
  5. package/dist/_virtual/index.esm14.js +2 -2
  6. package/dist/_virtual/index.esm4.js +2 -2
  7. package/dist/_virtual/index.esm5.js +2 -2
  8. package/dist/_virtual/index.esm6.js +2 -2
  9. package/dist/_virtual/index.esm7.js +2 -2
  10. package/dist/_virtual/index.esm9.js +2 -2
  11. package/dist/components/FormComponents/FormNumberField/FormNumberFieldDecimal.esm.js +3 -0
  12. package/dist/components/FormComponents/Select/MultiSelectAutocomplete.esm.js +1 -1
  13. package/dist/components/FormComponents/Select/MultiSelectTable.esm.js +30 -13
  14. package/dist/components/FormComponents/Select/MultiSelectv1.esm.js +7 -3
  15. package/dist/components/FormComponents/Select/SingleSelect.esm.js +4 -1
  16. package/dist/components/FormComponents/Select/SingleSelectNonAutoComplete.esm.js +1 -1
  17. package/dist/components/SelectField/MultiSelectFieldComponent.d.ts +2 -1
  18. package/dist/components/SelectField/MultiSelectFieldComponent.esm.js +7 -3
  19. package/dist/node_modules/prop-types/index.esm.js +1 -1
  20. package/dist/node_modules/react-date-range/dist/accessibility/index.esm.js +1 -1
  21. package/dist/node_modules/react-date-range/dist/components/Calendar/index.esm.js +1 -1
  22. package/dist/node_modules/react-date-range/dist/components/DateInput/index.esm.js +1 -1
  23. package/dist/node_modules/react-date-range/dist/components/DateRange/index.esm.js +1 -1
  24. package/dist/node_modules/react-date-range/dist/components/DateRangePicker/index.esm.js +1 -1
  25. package/dist/node_modules/react-date-range/dist/components/DayCell/index.esm.js +1 -1
  26. package/dist/node_modules/react-date-range/dist/components/DefinedRange/index.esm.js +1 -1
  27. package/dist/node_modules/react-date-range/dist/components/InputRangeField/index.esm.js +1 -1
  28. package/dist/node_modules/react-date-range/dist/components/Month/index.esm.js +1 -1
  29. package/dist/utils/Interface/FormInterface.d.ts +3 -1
  30. package/package.json +1 -1
@@ -1,3 +1,3 @@
1
- var propTypes = {exports: {}};
1
+ var accessibility = {};
2
2
 
3
- export { propTypes as __module };
3
+ export { accessibility as __exports };
@@ -1,3 +1,3 @@
1
- var DateInput = {};
1
+ var DayCell = {};
2
2
 
3
- export { DateInput as __exports };
3
+ export { DayCell as __exports };
@@ -1,3 +1,3 @@
1
- var Month = {};
1
+ var InputRangeField = {};
2
2
 
3
- export { Month as __exports };
3
+ export { InputRangeField as __exports };
@@ -1,3 +1,3 @@
1
- var DayCell = {};
1
+ var DateInput = {};
2
2
 
3
- export { DayCell as __exports };
3
+ export { DateInput as __exports };
@@ -1,3 +1,3 @@
1
- var InputRangeField = {};
1
+ var Month = {};
2
2
 
3
- export { InputRangeField as __exports };
3
+ export { Month as __exports };
@@ -1,3 +1,3 @@
1
- var Calendar = {};
1
+ var DateRange = {};
2
2
 
3
- export { Calendar as __exports };
3
+ export { DateRange as __exports };
@@ -1,3 +1,3 @@
1
- var DateRangePicker = {};
1
+ var DefinedRange = {};
2
2
 
3
- export { DateRangePicker as __exports };
3
+ export { DefinedRange as __exports };
@@ -1,3 +1,3 @@
1
- var DefinedRange = {};
1
+ var DateRangePicker = {};
2
2
 
3
- export { DefinedRange as __exports };
3
+ export { DateRangePicker as __exports };
@@ -1,3 +1,3 @@
1
- var DateRange = {};
1
+ var Calendar = {};
2
2
 
3
- export { DateRange as __exports };
3
+ export { Calendar as __exports };
@@ -1,3 +1,3 @@
1
- var accessibility = {};
1
+ var propTypes = {exports: {}};
2
2
 
3
- export { accessibility as __exports };
3
+ export { propTypes as __module };
@@ -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,
@@ -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), 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, onChange: handleChange, onBlur: (e) => {
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: {
@@ -1,11 +1,12 @@
1
- import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { Box, FormControl, InputLabel, Select, Tooltip, OutlinedInput, Checkbox } from '@mui/material';
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { Box, IconButton, FormControl, InputLabel, Select, Tooltip, OutlinedInput, Checkbox } from '@mui/material';
3
3
  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
7
  import { renderLabel } from '../../../utils/Constants/FormConstants.esm.js';
8
8
  import { useMaterialReactTable, MaterialReactTable } from 'material-react-table';
9
+ import { ChevronLeft, ChevronRight } from '@mui/icons-material';
9
10
 
10
11
  const ITEM_HEIGHT = 50;
11
12
  const ITEM_PADDING_TOP = 3;
@@ -304,15 +305,22 @@ const MultiSelectTable = ({ props, variant, }) => {
304
305
  overflow: 'visible',
305
306
  },
306
307
  },
307
- muiTableBodyRowProps: {
308
- sx: {
309
- borderBottom: '1px solid #e0e0e0',
310
- height: 'auto',
311
- minHeight: '32px',
312
- '&:hover': {
313
- backgroundColor: '#e0f2f1',
308
+ muiTableBodyRowProps: ({ row }) => {
309
+ const rowId = String(row.original[valueField]);
310
+ const isSelected = selectedValues.includes(rowId);
311
+ return {
312
+ onClick: () => handleRowSelect(rowId), // 👈 row click selection
313
+ sx: {
314
+ borderBottom: '1px solid #e0e0e0',
315
+ height: 'auto',
316
+ minHeight: '32px',
317
+ cursor: 'pointer',
318
+ backgroundColor: isSelected ? '#b2dfdb' : 'inherit', // optional highlight
319
+ '&:hover': {
320
+ backgroundColor: '#e0f2f1',
321
+ },
314
322
  },
315
- },
323
+ };
316
324
  },
317
325
  initialState: {
318
326
  density: 'compact',
@@ -326,6 +334,18 @@ const MultiSelectTable = ({ props, variant, }) => {
326
334
  globalFilter,
327
335
  },
328
336
  onGlobalFilterChange: setGlobalFilter,
337
+ renderBottomToolbar: ({ table }) => {
338
+ const totalRows = table.getFilteredRowModel().rows.length;
339
+ const selectedCount = selectedValues.length;
340
+ return (jsxs(Box, { sx: {
341
+ display: 'flex',
342
+ justifyContent: 'space-between',
343
+ alignItems: 'center',
344
+ padding: '6px 10px',
345
+ borderTop: '1px solid #e0e0e0',
346
+ fontSize: '11px',
347
+ }, children: [jsxs(Box, { children: ["Total: ", totalRows] }), jsxs(Box, { children: ["Selected: ", selectedCount] }), jsxs(Box, { sx: { display: 'flex', alignItems: 'center', gap: 1 }, children: [jsx(IconButton, { size: "small", onClick: () => table.previousPage(), disabled: !table.getCanPreviousPage(), children: jsx(ChevronLeft, { fontSize: "small" }) }), jsxs("span", { children: ["Page ", table.getState().pagination.pageIndex + 1] }), jsx(IconButton, { size: "small", onClick: () => table.nextPage(), disabled: !table.getCanNextPage(), children: jsx(ChevronRight, { fontSize: "small" }) })] })] }));
348
+ },
329
349
  });
330
350
  return (jsx(Box, { children: jsxs(FormControl, { fullWidth: true, sx: {
331
351
  '& .MuiFormLabel-root': {
@@ -334,9 +354,6 @@ const MultiSelectTable = ({ props, variant, }) => {
334
354
  '& .MuiInputLabel-shrink': {
335
355
  top: 0,
336
356
  },
337
- '& .MuiTablePagination-root': {
338
- padding: '0px !important'
339
- }
340
357
  }, 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
358
  '& .MuiTypography-root': {
342
359
  fontSize: '5px !important',
@@ -57,11 +57,15 @@ function MultiSelectV1({ props, variant, }) {
57
57
  const selectedValuesString = selectedOptions.map((item) => item.label).join(' , ');
58
58
  const isShowBorderError = !!props.errors?.[props.item.name];
59
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
- setSavedSortValue(fieldValue);
60
+ if (!props.item.doNotEnableMultiselectOrder) {
61
+ setSavedSortValue(fieldValue);
62
+ }
61
63
  setTimeout(() => textfieldRef.current?.focus(), 0);
62
64
  }, onClose: () => {
63
65
  setSearchText('');
64
- setSavedSortValue(fieldValue);
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',
@@ -49,7 +49,10 @@ const SingleSelect = ({ props, variant }) => {
49
49
  fontSize: '11px',
50
50
  },
51
51
  },
52
- }, renderOption: (props, option) => (createElement("li", { ...props, value: option.value, key: option.value }, option.label)), renderInput: (params) => (jsx(TextField, { ...params, placeholder: props.item.placeholder, error: isShowBorderError, label: variant !== 'standard'
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'
53
56
  ? `${props.item.label}${props.item.required ? ' *' : ''}`
54
57
  : '', inputProps: {
55
58
  ...params.inputProps,
@@ -23,7 +23,7 @@ const SingleSelectNonAutoComplete = ({ props, variant, }) => {
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
29
  }, value: item.value, children: item.label }, item.value))) }), jsx(FormBottomField, { ...props })] }, props.item.name));
@@ -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
- setSavedSortValue(fieldValue);
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
- setSavedSortValue(fieldValue);
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 { __module as propTypes } from '../../_virtual/index.esm10.js';
1
+ import { __module as propTypes } from '../../_virtual/index.esm9.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.esm9.js';
1
+ import { __exports as accessibility } from '../../../../_virtual/index.esm10.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.esm4.js';
1
+ import { __exports as Calendar } 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 requireDayCell } from '../DayCell/index.esm.js';
@@ -1,4 +1,4 @@
1
- import { __exports as DateInput } from '../../../../../_virtual/index.esm11.js';
1
+ import { __exports as DateInput } 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 requireClassnames } from '../../../../classnames/index.esm.js';
@@ -1,4 +1,4 @@
1
- import { __exports as DateRange } from '../../../../../_virtual/index.esm7.js';
1
+ import { __exports as DateRange } from '../../../../../_virtual/index.esm4.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 requireCalendar } from '../Calendar/index.esm.js';
@@ -1,4 +1,4 @@
1
- import { __exports as DateRangePicker } from '../../../../../_virtual/index.esm5.js';
1
+ import { __exports as DateRangePicker } from '../../../../../_virtual/index.esm6.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 requireDateRange } from '../DateRange/index.esm.js';
@@ -1,4 +1,4 @@
1
- import { __exports as DayCell } from '../../../../../_virtual/index.esm13.js';
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.esm6.js';
1
+ import { __exports as DefinedRange } 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 requireStyles } from '../../styles.esm.js';
@@ -1,4 +1,4 @@
1
- import { __exports as InputRangeField } from '../../../../../_virtual/index.esm14.js';
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.esm12.js';
1
+ import { __exports as Month } 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 requireDayCell } from '../DayCell/index.esm.js';
@@ -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;
@@ -82,6 +83,7 @@ export interface FormSectionPropsItem {
82
83
  headerColor?: string;
83
84
  optionFontSize?: string;
84
85
  isTooltipEnable?: boolean;
86
+ doNotEnableMultiselectOrder?: boolean;
85
87
  }
86
88
  export type VariantProps = 'standard' | 'outlined' | '';
87
89
  export interface FormRenderProps {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tp-react-elements",
3
- "version": "1.2.3",
3
+ "version": "1.2.7",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "React form components library built with React Hook Form and Yup",