tp-react-elements 2.0.4 → 2.0.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 (38) hide show
  1. package/dist/_virtual/index.esm11.js +2 -2
  2. package/dist/_virtual/index.esm12.js +2 -2
  3. package/dist/_virtual/index.esm13.js +2 -2
  4. package/dist/_virtual/index.esm14.js +2 -2
  5. package/dist/_virtual/index.esm4.js +2 -2
  6. package/dist/_virtual/index.esm6.js +2 -2
  7. package/dist/_virtual/index.esm7.js +2 -2
  8. package/dist/components/DateRangePicker/DateRangePicker.esm.js +49 -72
  9. package/dist/components/FormComponents/DatePicker/DatepickerWrapperV2.esm.js +10 -15
  10. package/dist/components/FormComponents/DatePicker/DatetimepickerWrapper.esm.js +53 -61
  11. package/dist/components/FormComponents/FileUpload/FormRenderFileUpload.esm.js +54 -68
  12. package/dist/components/FormComponents/FileUpload/FormRenderMultiFileUpload.esm.js +61 -76
  13. package/dist/components/FormComponents/FileUpload/MultiFileWithPreview.esm.js +103 -132
  14. package/dist/components/FormComponents/FormNumberField/FormNumberField.d.ts +0 -38
  15. package/dist/components/FormComponents/FormNumberField/FormNumberField.esm.js +32 -97
  16. package/dist/components/FormComponents/FormNumberField/FormNumberFieldDecimal.esm.js +44 -38
  17. package/dist/components/FormComponents/FormTextField/FormTextField.esm.js +3 -3
  18. package/dist/components/FormComponents/FormTextFieldWithSelect/FormTextFieldWithSelect.esm.js +3 -2
  19. package/dist/components/FormComponents/PasswordField/PasswordField.esm.js +4 -4
  20. package/dist/components/FormComponents/RichTextEditor/RichTextEditor.esm.js +23 -22
  21. package/dist/components/FormComponents/Select/SearchableSelect.esm.js +9 -9
  22. package/dist/components/FormComponents/TimePicker/TimePicker.esm.js +19 -19
  23. package/dist/components/ModalField/ConfirmationDialog.esm.js +3 -3
  24. package/dist/components/ModalField/ModalField.esm.js +5 -12
  25. package/dist/components/PaginatedGrid/DynamicFilterBar.d.ts +1 -1
  26. package/dist/components/PaginatedGrid/DynamicFilterBar.esm.js +27 -24
  27. package/dist/components/PaginatedGrid/GenericPaginatedGrid.d.ts +36 -2
  28. package/dist/components/PaginatedGrid/GenericPaginatedGrid.esm.js +196 -105
  29. package/dist/components/SelectField/MultiSelectFieldComponent.esm.js +3 -3
  30. package/dist/components/SessionTimeOut/SessionTimeOut.esm.js +33 -34
  31. package/dist/node_modules/react-date-range/dist/components/Calendar/index.esm.js +1 -1
  32. package/dist/node_modules/react-date-range/dist/components/DateInput/index.esm.js +1 -1
  33. package/dist/node_modules/react-date-range/dist/components/DateRange/index.esm.js +1 -1
  34. package/dist/node_modules/react-date-range/dist/components/DateRangePicker/index.esm.js +1 -1
  35. package/dist/node_modules/react-date-range/dist/components/DayCell/index.esm.js +1 -1
  36. package/dist/node_modules/react-date-range/dist/components/InputRangeField/index.esm.js +1 -1
  37. package/dist/node_modules/react-date-range/dist/components/Month/index.esm.js +1 -1
  38. package/package.json +1 -1
@@ -1,62 +1,61 @@
1
- import { jsx, Fragment } from 'react/jsx-runtime';
2
- import { useState, useEffect } from 'react';
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useState, useCallback, useRef, useEffect } from 'react';
3
3
  import { useIdleTimer } from 'react-idle-timer';
4
4
  import ConfirmationDialog from '../ModalField/ConfirmationDialog.esm.js';
5
5
 
6
6
  const secondsToMMSS = (totalSeconds) => {
7
7
  const minutes = Math.floor(totalSeconds / 60);
8
8
  const seconds = Math.floor(totalSeconds % 60);
9
- const formattedMinutes = String(minutes).padStart(2, '0');
10
- const formattedSeconds = String(seconds).padStart(2, '0');
11
- return `${formattedMinutes}:${formattedSeconds}`;
9
+ return `${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`;
12
10
  };
13
11
  const promptBeforeValue = 120000;
14
12
  const SessionTimeOut = ({ sessionTime, handleSubmitSession, onSessionExpire, handleSessionCancel, SubmitButtonName = 'Submit', }) => {
15
13
  const [openConfirmModal, setOpenConfirmModal] = useState(false);
16
- const expiryDetails = sessionTime;
17
- const providedTimestamp = new Date(expiryDetails).getTime();
14
+ const providedTimestamp = new Date(sessionTime).getTime();
18
15
  const currentTimestamp = new Date().getTime();
19
- const remainingTime = providedTimestamp - currentTimestamp;
20
- const timeout = remainingTime;
16
+ const timeout = providedTimestamp - currentTimestamp;
21
17
  const promptBeforeIdle = Math.min(promptBeforeValue, timeout - 1000);
22
18
  const [, setRemainingTimeInSeconds] = useState(Math.ceil(timeout / 1000));
23
19
  const [formattedRemainingTime, setFormattedRemainingTime] = useState(secondsToMMSS(Math.ceil(timeout / 1000)));
24
- const onIdle = () => {
25
- if (sessionTime) {
20
+ const onIdle = useCallback(() => {
21
+ if (sessionTime)
26
22
  onSessionExpire();
27
- }
28
- };
29
- const handleSubmit = () => {
30
- handleSubmitSession();
31
- setOpenConfirmModal(false);
32
- };
33
- const handleCancel = () => {
34
- handleSessionCancel();
35
- setOpenConfirmModal(false);
36
- };
37
- const onPrompt = () => {
23
+ }, [sessionTime, onSessionExpire]);
24
+ const onPrompt = useCallback(() => {
38
25
  setOpenConfirmModal(true);
39
- };
26
+ }, []);
40
27
  const { getRemainingTime } = useIdleTimer({
41
28
  onIdle,
42
29
  onPrompt,
43
30
  promptBeforeIdle,
44
31
  timeout,
45
- throttle: 1000, // Adjust throttle to reduce delays
32
+ throttle: 1000,
46
33
  });
34
+ // Keep a ref to getRemainingTime so the interval effect never needs it
35
+ // as a reactive dependency — react-idle-timer guarantees it is stable,
36
+ // but ESLint cannot verify that, which previously caused a spurious
37
+ // re-subscription on every render.
38
+ const getRemainingTimeRef = useRef(getRemainingTime);
39
+ getRemainingTimeRef.current = getRemainingTime;
47
40
  useEffect(() => {
48
41
  const interval = setInterval(() => {
49
- const remainingSeconds = Math.ceil(getRemainingTime() / 1000);
50
- setRemainingTimeInSeconds(promptBeforeIdle !== promptBeforeValue ? remainingSeconds : 0);
51
- const formattedTime = secondsToMMSS(remainingSeconds);
52
- setFormattedRemainingTime(promptBeforeIdle !== promptBeforeValue ? formattedTime : '00:00');
53
- }, 1000); // Adjust interval to 1000 ms
54
- return () => {
55
- clearInterval(interval);
56
- };
57
- }, [promptBeforeIdle, getRemainingTime]);
42
+ const remainingSeconds = Math.ceil(getRemainingTimeRef.current() / 1000);
43
+ const show = promptBeforeIdle !== promptBeforeValue;
44
+ setRemainingTimeInSeconds(show ? remainingSeconds : 0);
45
+ setFormattedRemainingTime(show ? secondsToMMSS(remainingSeconds) : '00:00');
46
+ }, 1000);
47
+ return () => clearInterval(interval);
48
+ }, [promptBeforeIdle]); // getRemainingTime intentionally omitted — stable ref used instead
49
+ const handleSubmit = useCallback(() => {
50
+ handleSubmitSession();
51
+ setOpenConfirmModal(false);
52
+ }, [handleSubmitSession]);
53
+ const handleCancel = useCallback(() => {
54
+ handleSessionCancel();
55
+ setOpenConfirmModal(false);
56
+ }, [handleSessionCancel]);
58
57
  const sessionMessage = `Your session will expire in ${formattedRemainingTime} seconds. Do you want to extend the session?`;
59
- return (jsx(Fragment, { children: jsx(ConfirmationDialog, { openConfirmDialog: openConfirmModal, handleCancel: handleCancel, onClickSubmit: handleSubmit, text: sessionMessage, Submit: SubmitButtonName }) }));
58
+ return (jsx(ConfirmationDialog, { openConfirmDialog: openConfirmModal, handleCancel: handleCancel, onClickSubmit: handleSubmit, text: sessionMessage, Submit: SubmitButtonName }));
60
59
  };
61
60
 
62
61
  export { SessionTimeOut as default };
@@ -1,4 +1,4 @@
1
- import { __exports as Calendar } from '../../../../../_virtual/index.esm6.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.esm13.js';
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 DateRange } from '../../../../../_virtual/index.esm4.js';
1
+ import { __exports as DateRange } 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 requireCalendar } from '../Calendar/index.esm.js';
@@ -1,4 +1,4 @@
1
- import { __exports as DateRangePicker } from '../../../../../_virtual/index.esm7.js';
1
+ import { __exports as DateRangePicker } 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 requireDateRange } from '../DateRange/index.esm.js';
@@ -1,4 +1,4 @@
1
- import { __exports as DayCell } from '../../../../../_virtual/index.esm11.js';
1
+ import { __exports as DayCell } 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 InputRangeField } from '../../../../../_virtual/index.esm14.js';
1
+ import { __exports as InputRangeField } 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
 
@@ -1,4 +1,4 @@
1
- import { __exports as Month } from '../../../../../_virtual/index.esm12.js';
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';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tp-react-elements",
3
- "version": "2.0.4",
3
+ "version": "2.0.7",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "React form components library built with React Hook Form and Yup",