@tecsinapse/react-native-kit 1.18.6 → 1.21.0

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 (225) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/dist/components/atoms/Avatar/Avatar.js +4 -2
  3. package/dist/components/atoms/Avatar/Avatar.js.map +1 -1
  4. package/dist/components/atoms/Avatar/index.js +9 -4
  5. package/dist/components/atoms/Avatar/index.js.map +1 -1
  6. package/dist/components/atoms/Badge/Badge.js +11 -8
  7. package/dist/components/atoms/Badge/Badge.js.map +1 -1
  8. package/dist/components/atoms/Badge/index.js +15 -5
  9. package/dist/components/atoms/Badge/index.js.map +1 -1
  10. package/dist/components/atoms/BottomNavigator/BottomNavigator.js +13 -10
  11. package/dist/components/atoms/BottomNavigator/BottomNavigator.js.map +1 -1
  12. package/dist/components/atoms/BottomNavigator/Item.js +11 -8
  13. package/dist/components/atoms/BottomNavigator/Item.js.map +1 -1
  14. package/dist/components/atoms/BottomNavigator/index.js +21 -7
  15. package/dist/components/atoms/BottomNavigator/index.js.map +1 -1
  16. package/dist/components/atoms/BottomNavigator/styled.js +64 -45
  17. package/dist/components/atoms/BottomNavigator/styled.js.map +1 -1
  18. package/dist/components/atoms/Button/Button.d.ts +2 -2
  19. package/dist/components/atoms/Button/Button.js +11 -8
  20. package/dist/components/atoms/Button/Button.js.map +1 -1
  21. package/dist/components/atoms/Button/States/Error.js +4 -2
  22. package/dist/components/atoms/Button/States/Error.js.map +1 -1
  23. package/dist/components/atoms/Button/States/Loading.js +4 -2
  24. package/dist/components/atoms/Button/States/Loading.js.map +1 -1
  25. package/dist/components/atoms/Button/States/Success.js +4 -2
  26. package/dist/components/atoms/Button/States/Success.js.map +1 -1
  27. package/dist/components/atoms/Button/States/index.js +21 -8
  28. package/dist/components/atoms/Button/States/index.js.map +1 -1
  29. package/dist/components/atoms/Button/index.js +33 -9
  30. package/dist/components/atoms/Button/index.js.map +1 -1
  31. package/dist/components/atoms/GroupButton/GroupButtonOption.js +4 -2
  32. package/dist/components/atoms/GroupButton/GroupButtonOption.js.map +1 -1
  33. package/dist/components/atoms/GroupButton/index.js +9 -4
  34. package/dist/components/atoms/GroupButton/index.js.map +1 -1
  35. package/dist/components/atoms/Header/Header.js +19 -16
  36. package/dist/components/atoms/Header/Header.js.map +1 -1
  37. package/dist/components/atoms/Header/index.js +15 -5
  38. package/dist/components/atoms/Header/index.js.map +1 -1
  39. package/dist/components/atoms/Header/styled.js +17 -17
  40. package/dist/components/atoms/Header/styled.js.map +1 -1
  41. package/dist/components/atoms/Input/Input.d.ts +3 -2
  42. package/dist/components/atoms/Input/Input.js +31 -28
  43. package/dist/components/atoms/Input/Input.js.map +1 -1
  44. package/dist/components/atoms/Input/index.js +15 -5
  45. package/dist/components/atoms/Input/index.js.map +1 -1
  46. package/dist/components/atoms/Input/styled.js +13 -8
  47. package/dist/components/atoms/Input/styled.js.map +1 -1
  48. package/dist/components/atoms/InputMask/InputMask.js +32 -28
  49. package/dist/components/atoms/InputMask/InputMask.js.map +1 -1
  50. package/dist/components/atoms/InputMask/index.js +15 -5
  51. package/dist/components/atoms/InputMask/index.js.map +1 -1
  52. package/dist/components/atoms/InputMask/styled.js +14 -11
  53. package/dist/components/atoms/InputMask/styled.js.map +1 -1
  54. package/dist/components/atoms/Modal/ModalGroupManager.js +10 -7
  55. package/dist/components/atoms/Modal/ModalGroupManager.js.map +1 -1
  56. package/dist/components/atoms/Modal/ModalLifecycleHandler.d.ts +2 -2
  57. package/dist/components/atoms/Modal/ModalLifecycleHandler.js +31 -25
  58. package/dist/components/atoms/Modal/ModalLifecycleHandler.js.map +1 -1
  59. package/dist/components/atoms/Modal/index.js +45 -8
  60. package/dist/components/atoms/Modal/index.js.map +1 -1
  61. package/dist/components/atoms/Modal/ui/BaseModalView.d.ts +2 -2
  62. package/dist/components/atoms/Modal/ui/BaseModalView.js +19 -16
  63. package/dist/components/atoms/Modal/ui/BaseModalView.js.map +1 -1
  64. package/dist/components/atoms/Modal/ui/styled.js +19 -21
  65. package/dist/components/atoms/Modal/ui/styled.js.map +1 -1
  66. package/dist/components/atoms/Modal/ui/types.d.ts +1 -1
  67. package/dist/components/atoms/Modal/ui/types.js +3 -1
  68. package/dist/components/atoms/Modal/ui/types.js.map +1 -1
  69. package/dist/components/atoms/Modal/useLazyModalManager.d.ts +2 -2
  70. package/dist/components/atoms/Modal/useLazyModalManager.js +4 -2
  71. package/dist/components/atoms/Modal/useLazyModalManager.js.map +1 -1
  72. package/dist/components/atoms/Modal/useModalManager.d.ts +2 -2
  73. package/dist/components/atoms/Modal/useModalManager.js +4 -2
  74. package/dist/components/atoms/Modal/useModalManager.js.map +1 -1
  75. package/dist/components/atoms/Modal/useModalRemoteControl.js +3 -1
  76. package/dist/components/atoms/Modal/useModalRemoteControl.js.map +1 -1
  77. package/dist/components/atoms/Skeleton/Pulse.js +16 -11
  78. package/dist/components/atoms/Skeleton/Pulse.js.map +1 -1
  79. package/dist/components/atoms/Skeleton/Skeleton.js +14 -11
  80. package/dist/components/atoms/Skeleton/Skeleton.js.map +1 -1
  81. package/dist/components/atoms/Skeleton/Wave.js +17 -12
  82. package/dist/components/atoms/Skeleton/Wave.js.map +1 -1
  83. package/dist/components/atoms/Skeleton/animation.js +4 -2
  84. package/dist/components/atoms/Skeleton/animation.js.map +1 -1
  85. package/dist/components/atoms/Skeleton/index.js +15 -5
  86. package/dist/components/atoms/Skeleton/index.js.map +1 -1
  87. package/dist/components/atoms/Skeleton/styled.js +25 -15
  88. package/dist/components/atoms/Skeleton/styled.js.map +1 -1
  89. package/dist/components/atoms/Skeleton/types.js +3 -1
  90. package/dist/components/atoms/Skeleton/types.js.map +1 -1
  91. package/dist/components/atoms/SnappingSlider/SnappingSlider.js +12 -9
  92. package/dist/components/atoms/SnappingSlider/SnappingSlider.js.map +1 -1
  93. package/dist/components/atoms/SnappingSlider/index.js +15 -5
  94. package/dist/components/atoms/SnappingSlider/index.js.map +1 -1
  95. package/dist/components/atoms/Tag/Tag.js +9 -6
  96. package/dist/components/atoms/Tag/Tag.js.map +1 -1
  97. package/dist/components/atoms/Tag/index.js +15 -5
  98. package/dist/components/atoms/Tag/index.js.map +1 -1
  99. package/dist/components/atoms/Text/Text.js +8 -5
  100. package/dist/components/atoms/Text/Text.js.map +1 -1
  101. package/dist/components/atoms/Text/index.js +15 -5
  102. package/dist/components/atoms/Text/index.js.map +1 -1
  103. package/dist/components/atoms/Text/styled.js +17 -13
  104. package/dist/components/atoms/Text/styled.js.map +1 -1
  105. package/dist/components/atoms/TextArea/TextArea.js +31 -28
  106. package/dist/components/atoms/TextArea/TextArea.js.map +1 -1
  107. package/dist/components/atoms/TextArea/index.js +15 -5
  108. package/dist/components/atoms/TextArea/index.js.map +1 -1
  109. package/dist/components/atoms/TextArea/styled.js +3 -1
  110. package/dist/components/atoms/TextArea/styled.js.map +1 -1
  111. package/dist/components/molecules/Calendar/Calendar.js +10 -7
  112. package/dist/components/molecules/Calendar/Calendar.js.map +1 -1
  113. package/dist/components/molecules/Calendar/index.js +9 -4
  114. package/dist/components/molecules/Calendar/index.js.map +1 -1
  115. package/dist/components/molecules/DatePicker/DatePicker.js +17 -13
  116. package/dist/components/molecules/DatePicker/DatePicker.js.map +1 -1
  117. package/dist/components/molecules/DatePicker/index.js +15 -5
  118. package/dist/components/molecules/DatePicker/index.js.map +1 -1
  119. package/dist/components/molecules/DatePicker/styled.js +13 -6
  120. package/dist/components/molecules/DatePicker/styled.js.map +1 -1
  121. package/dist/components/molecules/DateTimePicker/DateTimePicker.js +15 -11
  122. package/dist/components/molecules/DateTimePicker/DateTimePicker.js.map +1 -1
  123. package/dist/components/molecules/DateTimePicker/index.js +15 -5
  124. package/dist/components/molecules/DateTimePicker/index.js.map +1 -1
  125. package/dist/components/molecules/DateTimeSelector/DateTimeSelector.js +10 -7
  126. package/dist/components/molecules/DateTimeSelector/DateTimeSelector.js.map +1 -1
  127. package/dist/components/molecules/DateTimeSelector/index.js +9 -4
  128. package/dist/components/molecules/DateTimeSelector/index.js.map +1 -1
  129. package/dist/components/molecules/Grid/Grid.d.ts +5 -0
  130. package/dist/components/molecules/Grid/Grid.js +63 -0
  131. package/dist/components/molecules/Grid/Grid.js.map +1 -0
  132. package/dist/components/molecules/Grid/Item/Item.d.ts +7 -0
  133. package/dist/components/molecules/Grid/Item/Item.js +81 -0
  134. package/dist/components/molecules/Grid/Item/Item.js.map +1 -0
  135. package/dist/components/molecules/Grid/Item/index.d.ts +1 -0
  136. package/dist/components/molecules/Grid/Item/index.js +24 -0
  137. package/dist/components/molecules/Grid/Item/index.js.map +1 -0
  138. package/dist/components/molecules/Grid/index.d.ts +2 -0
  139. package/dist/components/molecules/Grid/index.js +24 -0
  140. package/dist/components/molecules/Grid/index.js.map +1 -0
  141. package/dist/components/molecules/IconTextButton/IconTextButton.d.ts +6 -0
  142. package/dist/components/molecules/IconTextButton/IconTextButton.js +53 -0
  143. package/dist/components/molecules/IconTextButton/IconTextButton.js.map +1 -0
  144. package/dist/components/molecules/IconTextButton/TextComponent.d.ts +12 -0
  145. package/dist/components/molecules/IconTextButton/TextComponent.js +39 -0
  146. package/dist/components/molecules/IconTextButton/TextComponent.js.map +1 -0
  147. package/dist/components/molecules/IconTextButton/index.d.ts +1 -0
  148. package/dist/components/molecules/IconTextButton/index.js +24 -0
  149. package/dist/components/molecules/IconTextButton/index.js.map +1 -0
  150. package/dist/components/molecules/IconTextButton/styled.d.ts +2 -0
  151. package/dist/components/molecules/IconTextButton/styled.js +48 -0
  152. package/dist/components/molecules/IconTextButton/styled.js.map +1 -0
  153. package/dist/components/molecules/InputPassword/InputPassword.d.ts +3 -2
  154. package/dist/components/molecules/InputPassword/InputPassword.js +9 -6
  155. package/dist/components/molecules/InputPassword/InputPassword.js.map +1 -1
  156. package/dist/components/molecules/InputPassword/index.js +15 -5
  157. package/dist/components/molecules/InputPassword/index.js.map +1 -1
  158. package/dist/components/molecules/LabeledSwitch/LabelComponent.d.ts +13 -0
  159. package/dist/components/molecules/LabeledSwitch/LabelComponent.js +41 -0
  160. package/dist/components/molecules/LabeledSwitch/LabelComponent.js.map +1 -0
  161. package/dist/components/molecules/LabeledSwitch/LabeledSwitch.d.ts +8 -0
  162. package/dist/components/molecules/LabeledSwitch/LabeledSwitch.js +56 -0
  163. package/dist/components/molecules/LabeledSwitch/LabeledSwitch.js.map +1 -0
  164. package/dist/components/molecules/LabeledSwitch/index.d.ts +1 -0
  165. package/dist/components/molecules/LabeledSwitch/index.js +24 -0
  166. package/dist/components/molecules/LabeledSwitch/index.js.map +1 -0
  167. package/dist/components/molecules/LabeledSwitch/styled.d.ts +9 -0
  168. package/dist/components/molecules/LabeledSwitch/styled.js +32 -0
  169. package/dist/components/molecules/LabeledSwitch/styled.js.map +1 -0
  170. package/dist/components/molecules/Select/Modal.d.ts +1 -1
  171. package/dist/components/molecules/Select/Modal.js +45 -39
  172. package/dist/components/molecules/Select/Modal.js.map +1 -1
  173. package/dist/components/molecules/Select/Select.js +39 -36
  174. package/dist/components/molecules/Select/Select.js.map +1 -1
  175. package/dist/components/molecules/Select/index.js +15 -5
  176. package/dist/components/molecules/Select/index.js.map +1 -1
  177. package/dist/components/molecules/Select/styled.js +78 -85
  178. package/dist/components/molecules/Select/styled.js.map +1 -1
  179. package/dist/components/molecules/Snackbar/Snackbar.js +14 -11
  180. package/dist/components/molecules/Snackbar/Snackbar.js.map +1 -1
  181. package/dist/components/molecules/Snackbar/index.js +15 -5
  182. package/dist/components/molecules/Snackbar/index.js.map +1 -1
  183. package/dist/components/molecules/Snackbar/styled.js +18 -9
  184. package/dist/components/molecules/Snackbar/styled.js.map +1 -1
  185. package/dist/index.d.ts +17 -14
  186. package/dist/index.js +379 -116
  187. package/dist/index.js.map +1 -1
  188. package/dist/utils/date.js +3 -1
  189. package/dist/utils/date.js.map +1 -1
  190. package/package.json +5 -5
  191. package/src/components/atoms/BottomNavigator/BottomNavigator.tsx +3 -6
  192. package/src/components/atoms/Button/Button.tsx +19 -13
  193. package/src/components/atoms/Button/index.ts +1 -1
  194. package/src/components/atoms/Input/Input.tsx +8 -6
  195. package/src/components/atoms/Input/styled.ts +1 -3
  196. package/src/components/atoms/Modal/ModalGroupManager.tsx +22 -17
  197. package/src/components/atoms/Modal/ModalLifecycleHandler.ts +139 -126
  198. package/src/components/atoms/Modal/index.ts +7 -7
  199. package/src/components/atoms/Modal/ui/BaseModalView.tsx +150 -127
  200. package/src/components/atoms/Modal/ui/styled.ts +17 -17
  201. package/src/components/atoms/Modal/ui/types.ts +9 -8
  202. package/src/components/atoms/Modal/useLazyModalManager.ts +32 -31
  203. package/src/components/atoms/Modal/useModalManager.ts +28 -26
  204. package/src/components/atoms/Modal/useModalRemoteControl.ts +16 -18
  205. package/src/components/molecules/Calendar/Calendar.tsx +5 -1
  206. package/src/components/molecules/DatePicker/DatePicker.tsx +26 -17
  207. package/src/components/molecules/DatePicker/styled.ts +4 -4
  208. package/src/components/molecules/DateTimePicker/DateTimePicker.tsx +18 -16
  209. package/src/components/molecules/DateTimeSelector/DateTimeSelector.tsx +4 -1
  210. package/src/components/molecules/Grid/Grid.tsx +68 -0
  211. package/src/components/molecules/Grid/Item/Item.tsx +77 -0
  212. package/src/components/molecules/Grid/Item/index.ts +1 -0
  213. package/src/components/molecules/Grid/index.ts +2 -0
  214. package/src/components/molecules/IconTextButton/IconTextButton.tsx +55 -0
  215. package/src/components/molecules/IconTextButton/TextComponent.tsx +43 -0
  216. package/src/components/molecules/IconTextButton/index.ts +4 -0
  217. package/src/components/molecules/IconTextButton/styled.ts +35 -0
  218. package/src/components/molecules/InputPassword/InputPassword.tsx +3 -2
  219. package/src/components/molecules/LabeledSwitch/LabelComponent.tsx +46 -0
  220. package/src/components/molecules/LabeledSwitch/LabeledSwitch.tsx +59 -0
  221. package/src/components/molecules/LabeledSwitch/index.ts +4 -0
  222. package/src/components/molecules/LabeledSwitch/styled.ts +27 -0
  223. package/src/components/molecules/Select/Modal.tsx +88 -66
  224. package/src/components/molecules/Select/Select.tsx +1 -1
  225. package/src/index.ts +38 -29
@@ -6,10 +6,10 @@ import {
6
6
  InputContainerProps,
7
7
  InputElementProps,
8
8
  RFValue,
9
- useInputFocus
9
+ useInputFocus,
10
10
  } from '@tecsinapse/react-core';
11
- import React, { FC } from 'react';
12
- import { StyleProp, View, ViewStyle } from 'react-native';
11
+ import React from 'react';
12
+ import { StyleProp, TextInput, View, ViewStyle } from 'react-native';
13
13
  import { Text } from '../Text';
14
14
  import { StyledNativeInput } from './styled';
15
15
 
@@ -20,7 +20,7 @@ export interface InputNativeProps
20
20
  inputFontWeight?: FontWeightType;
21
21
  }
22
22
 
23
- const Input: FC<InputNativeProps> = React.forwardRef(
23
+ const Input = React.forwardRef<TextInput, InputNativeProps>(
24
24
  (
25
25
  {
26
26
  label,
@@ -33,7 +33,6 @@ const Input: FC<InputNativeProps> = React.forwardRef(
33
33
  leftComponent,
34
34
  rightComponent,
35
35
  disabled,
36
- style,
37
36
  borderColor,
38
37
  borderColorGradation,
39
38
  inputFontStack = 'default',
@@ -59,7 +58,10 @@ const Input: FC<InputNativeProps> = React.forwardRef(
59
58
  !disabled
60
59
  );
61
60
 
62
- const internalStyle: StyleProp<ViewStyle> = { minHeight: RFValue(50), ...{ inputContainerStyle }}
61
+ const internalStyle: StyleProp<ViewStyle> = {
62
+ minHeight: RFValue(50),
63
+ ...{ inputContainerStyle },
64
+ };
63
65
  const onlyLabel = label && !placeholder;
64
66
 
65
67
  return (
@@ -1,7 +1,5 @@
1
1
  import styled from '@emotion/native';
2
- import {
3
- InputElement, StyleProps
4
- } from '@tecsinapse/react-core';
2
+ import { InputElement, StyleProps } from '@tecsinapse/react-core';
5
3
  import { Font, fontStyles } from '../Text/styled';
6
4
  import { InputNativeProps } from './Input';
7
5
 
@@ -3,26 +3,31 @@ import { Modal as RNModal, ModalProps } from 'react-native';
3
3
  import { createModalLifecycleHandler } from './ModalLifecycleHandler';
4
4
  import { IBaseModal } from './ui/types';
5
5
 
6
- export const modalLifecycle = createModalLifecycleHandler()
6
+ export const modalLifecycle = createModalLifecycleHandler();
7
7
 
8
8
  /**
9
9
  * It's responsable for rendering all the modal components.
10
- *
11
- * @param param0
12
- * @returns
10
+ *
11
+ * @param param0
12
+ * @returns
13
13
  */
14
14
  export const ModalGroupManager: FC<ModalProps> = ({ children, ...others }) => {
15
+ modalLifecycle.attach(useState<ReactElement<IBaseModal>[]>([]));
16
+ const _render = modalLifecycle.render();
17
+ const hasModals = _render.length > 0;
15
18
 
16
- modalLifecycle.attach(useState<ReactElement<IBaseModal>[]>([]))
17
- const _render = modalLifecycle.render()
18
- const hasModals = _render.length > 0
19
-
20
- return (
21
- <>
22
- {children}
23
- <RNModal transparent statusBarTranslucent animationType='none' visible={hasModals} {...others}>
24
- {_render}
25
- </RNModal>
26
- </>
27
- )
28
- }
19
+ return (
20
+ <>
21
+ {children}
22
+ <RNModal
23
+ transparent
24
+ statusBarTranslucent
25
+ animationType="none"
26
+ visible={hasModals}
27
+ {...others}
28
+ >
29
+ {_render}
30
+ </RNModal>
31
+ </>
32
+ );
33
+ };
@@ -1,154 +1,167 @@
1
- import React, { Dispatch, ReactElement } from "react"
2
- import { IBaseModal } from "./ui/types"
1
+ import React, { Dispatch, ReactElement } from 'react';
2
+ import { IBaseModal } from './ui/types';
3
3
 
4
4
  /**
5
5
  * It Represents a node (usually a modal component) in the modal's lifecycle handler.
6
6
  */
7
7
  interface ModalNode {
8
- id: string
9
- visible?: boolean
10
- lastVisualization?: Date
11
- modal: () => ReactElement<IBaseModal>
8
+ id: string;
9
+ visible?: boolean;
10
+ lastVisualization?: Date;
11
+ modal: () => ReactElement<IBaseModal>;
12
12
  }
13
13
 
14
14
  /**
15
15
  * Manage all modal's lifecycle.
16
16
  */
17
17
  export class ModalLifecycleHandler {
18
-
19
- nodeGroup: Map<string, ModalNode>
20
- state: [ReactElement<IBaseModal>[], Dispatch<ReactElement<IBaseModal>[]>] | undefined
18
+ nodeGroup: Map<string, ModalNode>;
19
+ state:
20
+ | [ReactElement<IBaseModal>[], Dispatch<ReactElement<IBaseModal>[]>]
21
+ | undefined;
21
22
 
22
- constructor() {
23
- this.nodeGroup = new Map()
24
- this.state = undefined
25
- }
23
+ constructor() {
24
+ this.nodeGroup = new Map();
25
+ this.state = undefined;
26
+ }
26
27
 
27
- /**
28
- * Holds the ModalGroupManager state.
29
- *
30
- * @param state
31
- */
32
- public attach = (state: [ReactElement<IBaseModal>[], Dispatch<ReactElement<IBaseModal>[]>]) => {
33
- this.state = state
34
- }
28
+ /**
29
+ * Holds the ModalGroupManager state.
30
+ *
31
+ * @param state
32
+ */
33
+ public attach = (
34
+ state: [ReactElement<IBaseModal>[], Dispatch<ReactElement<IBaseModal>[]>]
35
+ ) => {
36
+ this.state = state;
37
+ };
35
38
 
36
- /**
37
- * Updates all the modal components.
38
- */
39
- public update = () => {
40
- requestAnimationFrame(() => {
41
- const nodes = Array.from(this.nodeGroup.values())
42
- .filter(node => node.visible || !!node.lastVisualization)
43
- .sort((nodeA, nodeB) => (nodeA.lastVisualization?.getTime() || 0) - (nodeB.lastVisualization?.getTime() || 0))
44
- .map((node, index, filteredNodes) => {
45
- let modalElement = node.modal()
46
- let { props } = modalElement
47
- return React.cloneElement(modalElement, {
48
- ...props,
49
- key: node.id,
50
- visible: node.visible,
51
- isLastShown: filteredNodes.length - 1 === index,
52
- close: () => this.close(node.id),
53
- onClose: () => {
54
- this.remove(node.id)
55
- props.onClose?.()
56
- }
57
- })
58
- })
59
-
60
- const [, updateState ] = this.state || []
61
- updateState?.(nodes)
62
- })
63
- }
39
+ /**
40
+ * Updates all the modal components.
41
+ */
42
+ public update = () => {
43
+ requestAnimationFrame(() => {
44
+ const nodes = Array.from(this.nodeGroup.values())
45
+ .filter(node => node.visible || !!node.lastVisualization)
46
+ .sort(
47
+ (nodeA, nodeB) =>
48
+ (nodeA.lastVisualization?.getTime() || 0) -
49
+ (nodeB.lastVisualization?.getTime() || 0)
50
+ )
51
+ .map((node, index, filteredNodes) => {
52
+ const modalElement = node.modal();
53
+ const { props } = modalElement;
54
+ return React.cloneElement(modalElement, {
55
+ ...props,
56
+ key: node.id,
57
+ visible: node.visible,
58
+ isLastShown: filteredNodes.length - 1 === index,
59
+ close: () => this.close(node.id),
60
+ onClose: () => {
61
+ this.remove(node.id);
62
+ props.onClose?.();
63
+ },
64
+ });
65
+ });
64
66
 
65
- /**
66
- * Renders all selected modals.
67
- *
68
- * @returns
69
- */
70
- public render = (): ReactElement<IBaseModal>[] => {
71
- const [ modals ] = this.state || []
72
- return modals || []
73
- }
67
+ const [, updateState] = this.state || [];
68
+ updateState?.(nodes);
69
+ });
70
+ };
74
71
 
75
- /**
76
- * Tells to the lifecycle handler that a modal component needs to be handled.
77
- *
78
- * @param id
79
- * @param modal
80
- * @returns
81
- */
82
- public sync = (id: string, modal: () => ReactElement<IBaseModal>) => {
83
- if (this.nodeGroup.has(id)) {
84
- const savedNode = this.findNode(id)
85
- savedNode && this.nodeGroup.set(id, { ...savedNode, modal })
86
- return
87
- }
88
- this.nodeGroup.set(id, { id, modal })
89
- }
72
+ /**
73
+ * Renders all selected modals.
74
+ *
75
+ * @returns
76
+ */
77
+ public render = (): ReactElement<IBaseModal>[] => {
78
+ const [modals] = this.state || [];
79
+ return modals || [];
80
+ };
90
81
 
91
- /**
92
- * Destroy a modal from the lifecycle handler.
93
- *
94
- * @param id
95
- */
96
- public destroy = (id: string) => {
97
- this.nodeGroup.delete(id)
98
- this.update()
82
+ /**
83
+ * Tells to the lifecycle handler that a modal component needs to be handled.
84
+ *
85
+ * @param id
86
+ * @param modal
87
+ * @returns
88
+ */
89
+ public sync = (id: string, modal: () => ReactElement<IBaseModal>) => {
90
+ if (this.nodeGroup.has(id)) {
91
+ const savedNode = this.findNode(id);
92
+ savedNode && this.nodeGroup.set(id, { ...savedNode, modal });
93
+ return;
99
94
  }
95
+ this.nodeGroup.set(id, { id, modal });
96
+ };
100
97
 
101
- /**
102
- * Removes a modal from the rendering stack. It tells to the lifecycle handler that a modal
103
- * component is no longer used by the application.
104
- *
105
- * @param id
106
- */
107
- private remove = (id: string) => {
108
- const savedNode = this.findNode(id)
109
- savedNode && this.nodeGroup.set(id, { ...savedNode, lastVisualization: undefined })
110
- this.update()
111
- }
98
+ /**
99
+ * Destroy a modal from the lifecycle handler.
100
+ *
101
+ * @param id
102
+ */
103
+ public destroy = (id: string) => {
104
+ this.nodeGroup.delete(id);
105
+ this.update();
106
+ };
112
107
 
113
- /**
114
- * Find a modal node by id.
115
- *
116
- * @param id
117
- */
118
- private findNode = (id: string) => {
119
- const node = this.nodeGroup.get(id)
120
- !node && console.warn(`No modal was found with the id "${id}"`)
121
- return node
122
- }
108
+ /**
109
+ * Removes a modal from the rendering stack. It tells to the lifecycle handler that a modal
110
+ * component is no longer used by the application.
111
+ *
112
+ * @param id
113
+ */
114
+ private remove = (id: string) => {
115
+ const savedNode = this.findNode(id);
116
+ savedNode &&
117
+ this.nodeGroup.set(id, { ...savedNode, lastVisualization: undefined });
118
+ this.update();
119
+ };
123
120
 
124
- /**
125
- * Makes a modal appears.
126
- *
127
- * @param id
128
- */
129
- public show = (id: string) => {
130
- const savedNode = this.findNode(id)
131
- savedNode && this.nodeGroup.set(id, { ...savedNode, visible: true, lastVisualization: new Date() })
132
- this.update()
133
- }
121
+ /**
122
+ * Find a modal node by id.
123
+ *
124
+ * @param id
125
+ */
126
+ private findNode = (id: string) => {
127
+ const node = this.nodeGroup.get(id);
128
+ !node && console.warn(`No modal was found with the id "${id}"`);
129
+ return node;
130
+ };
134
131
 
135
- /**
136
- * Makes a modal disappears.
137
- *
138
- * @param id
139
- */
140
- public close = (id: string) => {
141
- const savedNode = this.findNode(id)
142
- savedNode && this.nodeGroup.set(id, { ...savedNode, visible: false })
143
- this.update()
144
- }
132
+ /**
133
+ * Makes a modal appears.
134
+ *
135
+ * @param id
136
+ */
137
+ public show = (id: string) => {
138
+ const savedNode = this.findNode(id);
139
+ savedNode &&
140
+ this.nodeGroup.set(id, {
141
+ ...savedNode,
142
+ visible: true,
143
+ lastVisualization: new Date(),
144
+ });
145
+ this.update();
146
+ };
147
+
148
+ /**
149
+ * Makes a modal disappears.
150
+ *
151
+ * @param id
152
+ */
153
+ public close = (id: string) => {
154
+ const savedNode = this.findNode(id);
155
+ savedNode && this.nodeGroup.set(id, { ...savedNode, visible: false });
156
+ this.update();
157
+ };
145
158
  }
146
159
 
147
160
  /**
148
161
  * Creates a new ModalLifecycleHandlere instance.
149
- *
150
- * @returns
162
+ *
163
+ * @returns
151
164
  */
152
165
  export const createModalLifecycleHandler = () => {
153
- return new ModalLifecycleHandler()
154
- }
166
+ return new ModalLifecycleHandler();
167
+ };
@@ -1,7 +1,7 @@
1
- export * from './ModalGroupManager'
2
- export * from './ModalLifecycleHandler'
3
- export * from './ui/BaseModalView'
4
- export * from './ui/types'
5
- export * from './useModalManager'
6
- export * from './useLazyModalManager'
7
- export * from './useModalRemoteControl'
1
+ export * from './ModalGroupManager';
2
+ export * from './ModalLifecycleHandler';
3
+ export * from './ui/BaseModalView';
4
+ export * from './ui/types';
5
+ export * from './useModalManager';
6
+ export * from './useLazyModalManager';
7
+ export * from './useModalRemoteControl';