@tecsinapse/react-native-kit 1.16.1 → 1.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/components/atoms/Avatar/Avatar.js +1 -3
  3. package/dist/components/atoms/Avatar/Avatar.js.map +1 -1
  4. package/dist/components/atoms/Avatar/index.js +4 -9
  5. package/dist/components/atoms/Avatar/index.js.map +1 -1
  6. package/dist/components/atoms/Badge/Badge.js +1 -3
  7. package/dist/components/atoms/Badge/Badge.js.map +1 -1
  8. package/dist/components/atoms/Badge/index.js +5 -15
  9. package/dist/components/atoms/Badge/index.js.map +1 -1
  10. package/dist/components/atoms/BottomNavigator/BottomNavigator.js +3 -5
  11. package/dist/components/atoms/BottomNavigator/BottomNavigator.js.map +1 -1
  12. package/dist/components/atoms/BottomNavigator/Item.js +1 -3
  13. package/dist/components/atoms/BottomNavigator/Item.js.map +1 -1
  14. package/dist/components/atoms/BottomNavigator/index.js +7 -21
  15. package/dist/components/atoms/BottomNavigator/index.js.map +1 -1
  16. package/dist/components/atoms/BottomNavigator/styled.js +1 -3
  17. package/dist/components/atoms/BottomNavigator/styled.js.map +1 -1
  18. package/dist/components/atoms/Button/Button.js +2 -4
  19. package/dist/components/atoms/Button/Button.js.map +1 -1
  20. package/dist/components/atoms/Button/States/Error.js +1 -3
  21. package/dist/components/atoms/Button/States/Error.js.map +1 -1
  22. package/dist/components/atoms/Button/States/Loading.js +1 -3
  23. package/dist/components/atoms/Button/States/Loading.js.map +1 -1
  24. package/dist/components/atoms/Button/States/Success.js +1 -3
  25. package/dist/components/atoms/Button/States/Success.js.map +1 -1
  26. package/dist/components/atoms/Button/States/index.js +8 -21
  27. package/dist/components/atoms/Button/States/index.js.map +1 -1
  28. package/dist/components/atoms/Button/index.js +9 -33
  29. package/dist/components/atoms/Button/index.js.map +1 -1
  30. package/dist/components/atoms/GroupButton/GroupButtonOption.js +1 -3
  31. package/dist/components/atoms/GroupButton/GroupButtonOption.js.map +1 -1
  32. package/dist/components/atoms/GroupButton/index.js +4 -9
  33. package/dist/components/atoms/GroupButton/index.js.map +1 -1
  34. package/dist/components/atoms/Header/Header.js +9 -11
  35. package/dist/components/atoms/Header/Header.js.map +1 -1
  36. package/dist/components/atoms/Header/index.js +5 -15
  37. package/dist/components/atoms/Header/index.js.map +1 -1
  38. package/dist/components/atoms/Header/styled.js +1 -3
  39. package/dist/components/atoms/Header/styled.js.map +1 -1
  40. package/dist/components/atoms/Input/Input.js +7 -4
  41. package/dist/components/atoms/Input/Input.js.map +1 -1
  42. package/dist/components/atoms/Input/index.js +5 -15
  43. package/dist/components/atoms/Input/index.js.map +1 -1
  44. package/dist/components/atoms/Input/styled.js +1 -3
  45. package/dist/components/atoms/Input/styled.js.map +1 -1
  46. package/dist/components/atoms/InputMask/InputMask.d.ts +8 -0
  47. package/dist/components/atoms/InputMask/InputMask.js +92 -0
  48. package/dist/components/atoms/InputMask/InputMask.js.map +1 -0
  49. package/dist/components/atoms/InputMask/index.d.ts +1 -0
  50. package/dist/components/atoms/InputMask/index.js +14 -0
  51. package/dist/components/atoms/InputMask/index.js.map +1 -0
  52. package/dist/components/atoms/InputMask/styled.d.ts +5 -0
  53. package/dist/components/atoms/InputMask/styled.js +27 -0
  54. package/dist/components/atoms/InputMask/styled.js.map +1 -0
  55. package/dist/components/atoms/Modal/ModalGroupManager.js +1 -3
  56. package/dist/components/atoms/Modal/ModalGroupManager.js.map +1 -1
  57. package/dist/components/atoms/Modal/ModalLifecycleHandler.d.ts +1 -0
  58. package/dist/components/atoms/Modal/ModalLifecycleHandler.js +30 -30
  59. package/dist/components/atoms/Modal/ModalLifecycleHandler.js.map +1 -1
  60. package/dist/components/atoms/Modal/index.d.ts +1 -0
  61. package/dist/components/atoms/Modal/index.js +15 -39
  62. package/dist/components/atoms/Modal/index.js.map +1 -1
  63. package/dist/components/atoms/Modal/ui/BaseModalView.js +1 -3
  64. package/dist/components/atoms/Modal/ui/BaseModalView.js.map +1 -1
  65. package/dist/components/atoms/Modal/ui/styled.js +1 -3
  66. package/dist/components/atoms/Modal/ui/styled.js.map +1 -1
  67. package/dist/components/atoms/Modal/ui/types.js +1 -3
  68. package/dist/components/atoms/Modal/useLazyModalManager.d.ts +1 -1
  69. package/dist/components/atoms/Modal/useLazyModalManager.js +3 -5
  70. package/dist/components/atoms/Modal/useLazyModalManager.js.map +1 -1
  71. package/dist/components/atoms/Modal/useModalManager.d.ts +1 -1
  72. package/dist/components/atoms/Modal/useModalManager.js +3 -5
  73. package/dist/components/atoms/Modal/useModalManager.js.map +1 -1
  74. package/dist/components/atoms/Modal/useModalRemoteControl.d.ts +4 -0
  75. package/dist/components/atoms/Modal/useModalRemoteControl.js +24 -0
  76. package/dist/components/atoms/Modal/useModalRemoteControl.js.map +1 -0
  77. package/dist/components/atoms/Skeleton/Pulse.js +1 -3
  78. package/dist/components/atoms/Skeleton/Pulse.js.map +1 -1
  79. package/dist/components/atoms/Skeleton/Skeleton.js +3 -5
  80. package/dist/components/atoms/Skeleton/Skeleton.js.map +1 -1
  81. package/dist/components/atoms/Skeleton/Wave.js +1 -3
  82. package/dist/components/atoms/Skeleton/Wave.js.map +1 -1
  83. package/dist/components/atoms/Skeleton/animation.js +1 -3
  84. package/dist/components/atoms/Skeleton/animation.js.map +1 -1
  85. package/dist/components/atoms/Skeleton/index.js +5 -15
  86. package/dist/components/atoms/Skeleton/index.js.map +1 -1
  87. package/dist/components/atoms/Skeleton/styled.js +1 -3
  88. package/dist/components/atoms/Skeleton/styled.js.map +1 -1
  89. package/dist/components/atoms/Skeleton/types.js +1 -3
  90. package/dist/components/atoms/SnappingSlider/SnappingSlider.js +1 -3
  91. package/dist/components/atoms/SnappingSlider/SnappingSlider.js.map +1 -1
  92. package/dist/components/atoms/SnappingSlider/index.js +5 -15
  93. package/dist/components/atoms/SnappingSlider/index.js.map +1 -1
  94. package/dist/components/atoms/Tag/Tag.js +1 -3
  95. package/dist/components/atoms/Tag/Tag.js.map +1 -1
  96. package/dist/components/atoms/Tag/index.js +5 -15
  97. package/dist/components/atoms/Tag/index.js.map +1 -1
  98. package/dist/components/atoms/Text/Text.js +1 -3
  99. package/dist/components/atoms/Text/Text.js.map +1 -1
  100. package/dist/components/atoms/Text/index.js +5 -15
  101. package/dist/components/atoms/Text/index.js.map +1 -1
  102. package/dist/components/atoms/Text/styled.js +4 -6
  103. package/dist/components/atoms/Text/styled.js.map +1 -1
  104. package/dist/components/atoms/TextArea/TextArea.js +1 -3
  105. package/dist/components/atoms/TextArea/TextArea.js.map +1 -1
  106. package/dist/components/atoms/TextArea/index.js +5 -15
  107. package/dist/components/atoms/TextArea/index.js.map +1 -1
  108. package/dist/components/atoms/TextArea/styled.js +1 -3
  109. package/dist/components/atoms/TextArea/styled.js.map +1 -1
  110. package/dist/components/molecules/Calendar/Calendar.js +1 -3
  111. package/dist/components/molecules/Calendar/Calendar.js.map +1 -1
  112. package/dist/components/molecules/Calendar/index.js +4 -9
  113. package/dist/components/molecules/Calendar/index.js.map +1 -1
  114. package/dist/components/molecules/DatePicker/DatePicker.js +2 -4
  115. package/dist/components/molecules/DatePicker/DatePicker.js.map +1 -1
  116. package/dist/components/molecules/DatePicker/index.js +5 -15
  117. package/dist/components/molecules/DatePicker/index.js.map +1 -1
  118. package/dist/components/molecules/DatePicker/styled.js +1 -3
  119. package/dist/components/molecules/DatePicker/styled.js.map +1 -1
  120. package/dist/components/molecules/DateTimePicker/DateTimePicker.js +1 -3
  121. package/dist/components/molecules/DateTimePicker/DateTimePicker.js.map +1 -1
  122. package/dist/components/molecules/DateTimePicker/index.js +5 -15
  123. package/dist/components/molecules/DateTimePicker/index.js.map +1 -1
  124. package/dist/components/molecules/DateTimeSelector/DateTimeSelector.js +1 -3
  125. package/dist/components/molecules/DateTimeSelector/DateTimeSelector.js.map +1 -1
  126. package/dist/components/molecules/DateTimeSelector/index.js +4 -9
  127. package/dist/components/molecules/DateTimeSelector/index.js.map +1 -1
  128. package/dist/components/molecules/InputPassword/InputPassword.js +1 -3
  129. package/dist/components/molecules/InputPassword/InputPassword.js.map +1 -1
  130. package/dist/components/molecules/InputPassword/index.js +5 -15
  131. package/dist/components/molecules/InputPassword/index.js.map +1 -1
  132. package/dist/components/molecules/Select/Modal.js +3 -5
  133. package/dist/components/molecules/Select/Modal.js.map +1 -1
  134. package/dist/components/molecules/Select/Select.js +3 -5
  135. package/dist/components/molecules/Select/Select.js.map +1 -1
  136. package/dist/components/molecules/Select/index.js +5 -15
  137. package/dist/components/molecules/Select/index.js.map +1 -1
  138. package/dist/components/molecules/Select/styled.js +2 -4
  139. package/dist/components/molecules/Select/styled.js.map +1 -1
  140. package/dist/components/molecules/Snackbar/Snackbar.js +1 -3
  141. package/dist/components/molecules/Snackbar/Snackbar.js.map +1 -1
  142. package/dist/components/molecules/Snackbar/index.js +5 -15
  143. package/dist/components/molecules/Snackbar/index.js.map +1 -1
  144. package/dist/components/molecules/Snackbar/styled.js +1 -3
  145. package/dist/components/molecules/Snackbar/styled.js.map +1 -1
  146. package/dist/index.d.ts +2 -1
  147. package/dist/index.js +75 -267
  148. package/dist/index.js.map +1 -1
  149. package/dist/utils/date.js +1 -3
  150. package/dist/utils/date.js.map +1 -1
  151. package/package.json +3 -3
  152. package/src/components/atoms/Input/Input.tsx +7 -1
  153. package/src/components/atoms/InputMask/InputMask.tsx +102 -0
  154. package/src/components/atoms/InputMask/index.ts +1 -0
  155. package/src/components/atoms/InputMask/styled.ts +25 -0
  156. package/src/components/atoms/Modal/ModalLifecycleHandler.ts +15 -4
  157. package/src/components/atoms/Modal/index.ts +2 -1
  158. package/src/components/atoms/Modal/useLazyModalManager.ts +2 -2
  159. package/src/components/atoms/Modal/useModalManager.ts +2 -2
  160. package/src/components/atoms/Modal/useModalRemoteControl.ts +26 -0
  161. package/src/components/atoms/Skeleton/Skeleton.tsx +6 -0
  162. package/src/index.ts +2 -0
@@ -42,6 +42,8 @@ const Input: FC<InputNativeProps> = React.forwardRef(
42
42
  hint,
43
43
  onFocus,
44
44
  onBlur,
45
+ value,
46
+ placeholder,
45
47
  ...rest
46
48
  },
47
49
  ref
@@ -55,10 +57,12 @@ const Input: FC<InputNativeProps> = React.forwardRef(
55
57
  !disabled
56
58
  );
57
59
 
60
+ const onlyLabel = label && !placeholder;
61
+
58
62
  return (
59
63
  <View style={style}>
60
64
  <StyledInputContainer
61
- label={label}
65
+ label={value && label}
62
66
  labelColor={labelColor}
63
67
  labelColorVariant={labelColorVariant}
64
68
  labelColorTone={labelColorTone}
@@ -77,6 +81,8 @@ const Input: FC<InputNativeProps> = React.forwardRef(
77
81
  >
78
82
  <StyledNativeInput
79
83
  {...rest}
84
+ placeholder={onlyLabel ? label : placeholder}
85
+ value={value}
80
86
  ref={ref}
81
87
  fontStack={inputFontStack}
82
88
  fontWeight={inputFontWeight}
@@ -0,0 +1,102 @@
1
+ import {
2
+ FontStackType,
3
+ FontWeightType,
4
+ Hint,
5
+ InputContainerProps,
6
+ InputMaskElementProps,
7
+ useInputFocus,
8
+ } from '@tecsinapse/react-core';
9
+ import React, { FC } from 'react';
10
+ import { View } from 'react-native';
11
+ import { StyledInputContainer, StyledNativeInputMask } from './styled';
12
+ import { Text } from '../Text';
13
+
14
+ export interface InputMaskNativeProps
15
+ extends Omit<InputMaskElementProps, 'style'>,
16
+ InputContainerProps {
17
+ inputFontStack?: FontStackType;
18
+ inputFontWeight?: FontWeightType;
19
+ }
20
+
21
+ const InputMask: FC<InputMaskNativeProps> = React.forwardRef(
22
+ (
23
+ {
24
+ label,
25
+ labelColor,
26
+ labelColorVariant,
27
+ labelColorTone,
28
+ labelTypography,
29
+ labelStack,
30
+ labelWeight,
31
+ leftComponent,
32
+ rightComponent,
33
+ disabled,
34
+ style,
35
+ borderColor,
36
+ borderColorGradation,
37
+ inputFontStack = 'default',
38
+ inputFontWeight = 'bold',
39
+ inputContainerStyle,
40
+ variant = 'default',
41
+ hintComponent,
42
+ hint,
43
+ onFocus,
44
+ onBlur,
45
+ value,
46
+ placeholder,
47
+ ...rest
48
+ },
49
+ ref
50
+ ) => {
51
+ const _hint = hintComponent || (
52
+ <Hint TextComponent={Text} text={hint} variant={variant} />
53
+ );
54
+ const { focused, handleBlur, handleFocus } = useInputFocus(
55
+ onFocus,
56
+ onBlur,
57
+ !disabled
58
+ );
59
+
60
+ const onlyLabel = label && !placeholder;
61
+
62
+ return (
63
+ <View style={style}>
64
+ <StyledInputContainer
65
+ label={String(value) && label}
66
+ labelColor={labelColor}
67
+ labelColorVariant={labelColorVariant}
68
+ labelColorTone={labelColorTone}
69
+ labelTypography={labelTypography}
70
+ labelStack={labelStack}
71
+ labelWeight={labelWeight}
72
+ LabelComponent={Text}
73
+ leftComponent={leftComponent}
74
+ rightComponent={rightComponent}
75
+ borderColor={borderColor}
76
+ borderColorGradation={borderColorGradation}
77
+ inputContainerStyle={inputContainerStyle}
78
+ focused={focused}
79
+ disabled={disabled}
80
+ variant={variant}
81
+ >
82
+ <StyledNativeInputMask
83
+ {...rest}
84
+ placeholder={onlyLabel ? label : placeholder}
85
+ value={value}
86
+ ref={ref}
87
+ fontStack={inputFontStack}
88
+ fontWeight={inputFontWeight}
89
+ disabled={disabled}
90
+ onFocus={handleFocus}
91
+ onBlur={handleBlur}
92
+ />
93
+ </StyledInputContainer>
94
+ {hint && _hint}
95
+ </View>
96
+ );
97
+ }
98
+ );
99
+
100
+ InputMask.displayName = 'InputMask';
101
+
102
+ export default InputMask;
@@ -0,0 +1 @@
1
+ export { default as InputMask, InputMaskNativeProps } from './InputMask';
@@ -0,0 +1,25 @@
1
+ import styled from '@emotion/native';
2
+ import {
3
+ InputContainer,
4
+ InputMaskElement,
5
+ RFValueStr,
6
+ StyleProps,
7
+ } from '@tecsinapse/react-core';
8
+ import { Font, fontStyles } from '../Text/styled';
9
+ import { InputMaskNativeProps } from './InputMask';
10
+
11
+ export const StyledInputContainer = styled(InputContainer)<Partial<StyleProps>>`
12
+ min-height: ${RFValueStr('50px')};
13
+ `;
14
+
15
+ const StyledNativeInputMaskBase = styled(InputMaskElement)<
16
+ Partial<InputMaskNativeProps> & Partial<StyleProps>
17
+ >`
18
+ height: ${({ theme }) => theme.typography.h5.lineHeight};
19
+ width: 100%;
20
+ padding: 0;
21
+ `;
22
+
23
+ export const StyledNativeInputMask = styled(StyledNativeInputMaskBase)<
24
+ Font & Partial<InputMaskNativeProps> & Partial<StyleProps>
25
+ >(fontStyles);
@@ -81,7 +81,7 @@ export class ModalLifecycleHandler {
81
81
  */
82
82
  public sync = (id: string, modal: () => ReactElement<IBaseModal>) => {
83
83
  if (this.nodeGroup.has(id)) {
84
- const savedNode = this.nodeGroup.get(id)
84
+ const savedNode = this.findNode(id)
85
85
  savedNode && this.nodeGroup.set(id, { ...savedNode, modal })
86
86
  return
87
87
  }
@@ -105,18 +105,29 @@ export class ModalLifecycleHandler {
105
105
  * @param id
106
106
  */
107
107
  private remove = (id: string) => {
108
- const savedNode = this.nodeGroup.get(id)
108
+ const savedNode = this.findNode(id)
109
109
  savedNode && this.nodeGroup.set(id, { ...savedNode, lastVisualization: undefined })
110
110
  this.update()
111
111
  }
112
112
 
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
+ }
123
+
113
124
  /**
114
125
  * Makes a modal appears.
115
126
  *
116
127
  * @param id
117
128
  */
118
129
  public show = (id: string) => {
119
- const savedNode = this.nodeGroup.get(id)
130
+ const savedNode = this.findNode(id)
120
131
  savedNode && this.nodeGroup.set(id, { ...savedNode, visible: true, lastVisualization: new Date() })
121
132
  this.update()
122
133
  }
@@ -127,7 +138,7 @@ export class ModalLifecycleHandler {
127
138
  * @param id
128
139
  */
129
140
  public close = (id: string) => {
130
- const savedNode = this.nodeGroup.get(id)
141
+ const savedNode = this.findNode(id)
131
142
  savedNode && this.nodeGroup.set(id, { ...savedNode, visible: false })
132
143
  this.update()
133
144
  }
@@ -3,4 +3,5 @@ export * from './ModalLifecycleHandler'
3
3
  export * from './ui/BaseModalView'
4
4
  export * from './ui/types'
5
5
  export * from './useModalManager'
6
- export * from './useLazyModalManager'
6
+ export * from './useLazyModalManager'
7
+ export * from './useModalRemoteControl'
@@ -11,9 +11,9 @@ import { IBaseModal } from "./ui/types"
11
11
  * @param modal
12
12
  * @returns
13
13
  */
14
- export const useLazyModalManager = () => {
14
+ export const useLazyModalManager = (modalId?: string) => {
15
15
 
16
- const [id] = useState(uuidv4())
16
+ const [id] = useState(modalId ?? uuidv4())
17
17
 
18
18
  const requestUpdate = useCallback(() => modalLifecycle.update(), [])
19
19
 
@@ -11,9 +11,9 @@ import { IBaseModal } from "./ui/types"
11
11
  * @param modal
12
12
  * @returns
13
13
  */
14
- export const useModalManager = (modal: () => ReactElement<IBaseModal>) => {
14
+ export const useModalManager = (modal: () => ReactElement<IBaseModal>, modalId?: string) => {
15
15
 
16
- const [id] = useState(uuidv4())
16
+ const [id] = useState(modalId ?? uuidv4())
17
17
  modalLifecycle.sync(id, modal)
18
18
 
19
19
  const show = useCallback(() => {
@@ -0,0 +1,26 @@
1
+ import { useCallback } from "react"
2
+ import { modalLifecycle } from "./ModalGroupManager"
3
+
4
+ /**
5
+ * Use it to control a specific modal wherever it's.
6
+ * Just provide an id of a specific instance.
7
+ *
8
+ * @param modalId
9
+ * @returns
10
+ */
11
+ export const useModalRemoteControl = (modalId: string) => {
12
+
13
+ const show = useCallback(() => {
14
+ modalLifecycle.show(modalId)
15
+ }, [modalId])
16
+
17
+ const close = useCallback(() => {
18
+ modalLifecycle.close(modalId)
19
+ }, [modalId])
20
+
21
+ return {
22
+ show,
23
+ close
24
+ }
25
+
26
+ }
@@ -50,12 +50,18 @@ const Skeleton: React.FC<SkeletonProps> = ({
50
50
  childrenLayout={childrenLayout}
51
51
  />
52
52
  ) : (
53
+ <></>
54
+ )}
55
+
56
+ {active && animation === 'pulse' ? (
53
57
  <Pulse
54
58
  active={active}
55
59
  width={width}
56
60
  height={height}
57
61
  childrenLayout={childrenLayout}
58
62
  />
63
+ ) : (
64
+ <></>
59
65
  )}
60
66
  <View
61
67
  onLayout={event => getChildrenLayout(event)}
package/src/index.ts CHANGED
@@ -2,6 +2,7 @@ export * from '@tecsinapse/react-core';
2
2
  export { Header, HeaderProps } from './components/atoms/Header';
3
3
  export { Select, SelectNativeProps } from './components/molecules/Select';
4
4
  export { Input, InputNativeProps } from './components/atoms/Input';
5
+ export { InputMask, InputMaskNativeProps } from './components/atoms/InputMask';
5
6
  export { TextArea, TextAreaProps } from './components/atoms/TextArea';
6
7
  export { Text, TextNativeProps } from './components/atoms/Text';
7
8
  export {
@@ -44,6 +45,7 @@ export {
44
45
  ModalLifecycleHandler,
45
46
  useLazyModalManager,
46
47
  useModalManager,
48
+ useModalRemoteControl,
47
49
  IBaseModal,
48
50
  } from './components/atoms/Modal';
49
51
  export { Skeleton, SkeletonProps } from './components/atoms/Skeleton';