@tecsinapse/react-web-kit 1.18.6 → 1.20.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 (288) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/dist/components/atoms/Accordion/Accordion.js.map +1 -1
  3. package/dist/components/atoms/Accordion/animations.js.map +1 -1
  4. package/dist/components/atoms/Accordion/index.js.map +1 -1
  5. package/dist/components/atoms/Accordion/styled.js +1 -1
  6. package/dist/components/atoms/Accordion/styled.js.map +1 -1
  7. package/dist/components/atoms/Badge/Badge.js +1 -1
  8. package/dist/components/atoms/Badge/Badge.js.map +1 -1
  9. package/dist/components/atoms/Badge/index.js.map +1 -1
  10. package/dist/components/atoms/Button/Button.d.ts +2 -0
  11. package/dist/components/atoms/Button/Button.js +19 -3
  12. package/dist/components/atoms/Button/Button.js.map +1 -1
  13. package/dist/components/atoms/Button/hooks/useMouseHover.d.ts +3 -3
  14. package/dist/components/atoms/Button/hooks/useMouseHover.js +13 -3
  15. package/dist/components/atoms/Button/hooks/useMouseHover.js.map +1 -1
  16. package/dist/components/atoms/Button/hooks/useMousePressed.d.ts +5 -0
  17. package/dist/components/atoms/Button/hooks/useMousePressed.js +32 -0
  18. package/dist/components/atoms/Button/hooks/useMousePressed.js.map +1 -0
  19. package/dist/components/atoms/Button/index.js.map +1 -1
  20. package/dist/components/atoms/Button/styled.js +9 -4
  21. package/dist/components/atoms/Button/styled.js.map +1 -1
  22. package/dist/components/atoms/Dropdown/index.js.map +1 -1
  23. package/dist/components/atoms/Dropdown/styled.js.map +1 -1
  24. package/dist/components/atoms/Input/Input.d.ts +4 -3
  25. package/dist/components/atoms/Input/Input.js +1 -1
  26. package/dist/components/atoms/Input/Input.js.map +1 -1
  27. package/dist/components/atoms/Input/index.js.map +1 -1
  28. package/dist/components/atoms/Input/styled.js.map +1 -1
  29. package/dist/components/atoms/InputMask/InputMask.d.ts +4 -3
  30. package/dist/components/atoms/InputMask/InputMask.js +1 -1
  31. package/dist/components/atoms/InputMask/InputMask.js.map +1 -1
  32. package/dist/components/atoms/InputMask/index.js.map +1 -1
  33. package/dist/components/atoms/InputMask/styled.js.map +1 -1
  34. package/dist/components/atoms/Modal/Modal.js +1 -1
  35. package/dist/components/atoms/Modal/Modal.js.map +1 -1
  36. package/dist/components/atoms/Modal/animations.js.map +1 -1
  37. package/dist/components/atoms/Modal/index.js.map +1 -1
  38. package/dist/components/atoms/Modal/styled.js.map +1 -1
  39. package/dist/components/atoms/Overlay/Overlay.js.map +1 -1
  40. package/dist/components/atoms/Overlay/animations.js.map +1 -1
  41. package/dist/components/atoms/Overlay/index.js.map +1 -1
  42. package/dist/components/atoms/Overlay/styled.js.map +1 -1
  43. package/dist/components/atoms/Skeleton/Skeleton.js +1 -1
  44. package/dist/components/atoms/Skeleton/Skeleton.js.map +1 -1
  45. package/dist/components/atoms/Skeleton/index.js.map +1 -1
  46. package/dist/components/atoms/Skeleton/styled.js.map +1 -1
  47. package/dist/components/atoms/Table/Body/TBody.js.map +1 -1
  48. package/dist/components/atoms/Table/Body/index.js.map +1 -1
  49. package/dist/components/atoms/Table/Cell/Td.js.map +1 -1
  50. package/dist/components/atoms/Table/Cell/index.js.map +1 -1
  51. package/dist/components/atoms/Table/Cell/styled.js.map +1 -1
  52. package/dist/components/atoms/Table/Container/TableContainer.js.map +1 -1
  53. package/dist/components/atoms/Table/Container/index.js.map +1 -1
  54. package/dist/components/atoms/Table/Container/styled.js.map +1 -1
  55. package/dist/components/atoms/Table/Footer/TFoot.js.map +1 -1
  56. package/dist/components/atoms/Table/Footer/index.js.map +1 -1
  57. package/dist/components/atoms/Table/Footer/styled.js.map +1 -1
  58. package/dist/components/atoms/Table/Header/THead.js.map +1 -1
  59. package/dist/components/atoms/Table/Header/Th.js.map +1 -1
  60. package/dist/components/atoms/Table/Header/index.js +4 -4
  61. package/dist/components/atoms/Table/Header/index.js.map +1 -1
  62. package/dist/components/atoms/Table/Header/styled.js +1 -1
  63. package/dist/components/atoms/Table/Header/styled.js.map +1 -1
  64. package/dist/components/atoms/Table/Row/Tr.js.map +1 -1
  65. package/dist/components/atoms/Table/Row/index.js.map +1 -1
  66. package/dist/components/atoms/Table/Row/styled.js.map +1 -1
  67. package/dist/components/atoms/Table/Table.js.map +1 -1
  68. package/dist/components/atoms/Table/Toolbar/TableToolbar.js.map +1 -1
  69. package/dist/components/atoms/Table/Toolbar/index.js.map +1 -1
  70. package/dist/components/atoms/Table/Toolbar/styled.js.map +1 -1
  71. package/dist/components/atoms/Table/index.js +18 -18
  72. package/dist/components/atoms/Table/index.js.map +1 -1
  73. package/dist/components/atoms/Table/styled.js.map +1 -1
  74. package/dist/components/atoms/Tag/Tag.js +1 -1
  75. package/dist/components/atoms/Tag/Tag.js.map +1 -1
  76. package/dist/components/atoms/Tag/index.js.map +1 -1
  77. package/dist/components/atoms/Tooltip/Tooltip.js.map +1 -1
  78. package/dist/components/atoms/Tooltip/index.js +4 -4
  79. package/dist/components/atoms/Tooltip/index.js.map +1 -1
  80. package/dist/components/atoms/Tooltip/styled.js +3 -1
  81. package/dist/components/atoms/Tooltip/styled.js.map +1 -1
  82. package/dist/components/molecules/Breadcrumbs/BreadcrumbItem/BreadcrumbItem.js +1 -1
  83. package/dist/components/molecules/Breadcrumbs/BreadcrumbItem/BreadcrumbItem.js.map +1 -1
  84. package/dist/components/molecules/Breadcrumbs/BreadcrumbItem/index.js.map +1 -1
  85. package/dist/components/molecules/Breadcrumbs/BreadcrumbItem/styled.js +1 -1
  86. package/dist/components/molecules/Breadcrumbs/BreadcrumbItem/styled.js.map +1 -1
  87. package/dist/components/molecules/Breadcrumbs/Breadcrumbs.js.map +1 -1
  88. package/dist/components/molecules/Breadcrumbs/index.js +6 -6
  89. package/dist/components/molecules/Breadcrumbs/index.js.map +1 -1
  90. package/dist/components/molecules/Breadcrumbs/styled.js.map +1 -1
  91. package/dist/components/molecules/DatePicker/DatePicker.js +1 -1
  92. package/dist/components/molecules/DatePicker/DatePicker.js.map +1 -1
  93. package/dist/components/molecules/DatePicker/Modal.js +1 -1
  94. package/dist/components/molecules/DatePicker/Modal.js.map +1 -1
  95. package/dist/components/molecules/DatePicker/index.js.map +1 -1
  96. package/dist/components/molecules/DatePicker/styled.js.map +1 -1
  97. package/dist/components/molecules/DateTimePicker/DateTimePicker.js +1 -1
  98. package/dist/components/molecules/DateTimePicker/DateTimePicker.js.map +1 -1
  99. package/dist/components/molecules/DateTimePicker/Modal.js +1 -2
  100. package/dist/components/molecules/DateTimePicker/Modal.js.map +1 -1
  101. package/dist/components/molecules/DateTimePicker/index.js.map +1 -1
  102. package/dist/components/molecules/DateTimePicker/styled.js.map +1 -1
  103. package/dist/components/molecules/Drawer/Drawer.js +3 -1
  104. package/dist/components/molecules/Drawer/Drawer.js.map +1 -1
  105. package/dist/components/molecules/Drawer/animations.js +1 -1
  106. package/dist/components/molecules/Drawer/animations.js.map +1 -1
  107. package/dist/components/molecules/Drawer/index.js.map +1 -1
  108. package/dist/components/molecules/Drawer/styled.js +2 -0
  109. package/dist/components/molecules/Drawer/styled.js.map +1 -1
  110. package/dist/components/molecules/Grid/Grid.d.ts +3 -13
  111. package/dist/components/molecules/Grid/Grid.js +5 -3
  112. package/dist/components/molecules/Grid/Grid.js.map +1 -1
  113. package/dist/components/molecules/Grid/Item/Item.d.ts +6 -27
  114. package/dist/components/molecules/Grid/Item/Item.js +41 -19
  115. package/dist/components/molecules/Grid/Item/Item.js.map +1 -1
  116. package/dist/components/molecules/Grid/Item/functions.d.ts +2 -0
  117. package/dist/components/molecules/Grid/Item/functions.js +16 -0
  118. package/dist/components/molecules/Grid/Item/functions.js.map +1 -0
  119. package/dist/components/molecules/Grid/Item/index.d.ts +1 -1
  120. package/dist/components/molecules/Grid/Item/index.js.map +1 -1
  121. package/dist/components/molecules/Grid/index.d.ts +2 -2
  122. package/dist/components/molecules/Grid/index.js +4 -4
  123. package/dist/components/molecules/Grid/index.js.map +1 -1
  124. package/dist/components/molecules/IconTextButton/IconTextButton.d.ts +6 -0
  125. package/dist/components/molecules/IconTextButton/IconTextButton.js +64 -0
  126. package/dist/components/molecules/IconTextButton/IconTextButton.js.map +1 -0
  127. package/dist/components/molecules/IconTextButton/TextComponent.d.ts +12 -0
  128. package/dist/components/molecules/IconTextButton/TextComponent.js +32 -0
  129. package/dist/components/molecules/IconTextButton/TextComponent.js.map +1 -0
  130. package/dist/components/molecules/IconTextButton/hooks/useIconTextButton.d.ts +6 -0
  131. package/dist/components/molecules/IconTextButton/hooks/useIconTextButton.js +31 -0
  132. package/dist/components/molecules/IconTextButton/hooks/useIconTextButton.js.map +1 -0
  133. package/dist/components/molecules/IconTextButton/index.d.ts +1 -0
  134. package/dist/components/molecules/IconTextButton/index.js +24 -0
  135. package/dist/components/molecules/IconTextButton/index.js.map +1 -0
  136. package/dist/components/molecules/IconTextButton/styled.d.ts +1 -0
  137. package/dist/components/molecules/IconTextButton/styled.js +33 -0
  138. package/dist/components/molecules/IconTextButton/styled.js.map +1 -0
  139. package/dist/components/molecules/InputPassword/InputPassword.js +1 -1
  140. package/dist/components/molecules/InputPassword/InputPassword.js.map +1 -1
  141. package/dist/components/molecules/InputPassword/index.js.map +1 -1
  142. package/dist/components/molecules/LabeledSwitch/LabelComponent.d.ts +12 -0
  143. package/dist/components/molecules/LabeledSwitch/LabelComponent.js +38 -0
  144. package/dist/components/molecules/LabeledSwitch/LabelComponent.js.map +1 -0
  145. package/dist/components/molecules/LabeledSwitch/LabeledSwitch.d.ts +7 -0
  146. package/dist/components/molecules/LabeledSwitch/LabeledSwitch.js +55 -0
  147. package/dist/components/molecules/LabeledSwitch/LabeledSwitch.js.map +1 -0
  148. package/dist/components/molecules/LabeledSwitch/index.d.ts +1 -0
  149. package/dist/components/molecules/LabeledSwitch/index.js +24 -0
  150. package/dist/components/molecules/LabeledSwitch/index.js.map +1 -0
  151. package/dist/components/molecules/LabeledSwitch/styled.d.ts +8 -0
  152. package/dist/components/molecules/LabeledSwitch/styled.js +39 -0
  153. package/dist/components/molecules/LabeledSwitch/styled.js.map +1 -0
  154. package/dist/components/molecules/Masonry/Masonry.js.map +1 -1
  155. package/dist/components/molecules/Masonry/index.js.map +1 -1
  156. package/dist/components/molecules/Masonry/styled.js.map +1 -1
  157. package/dist/components/molecules/Menubar/MenuBlock/MenuBlock.js.map +1 -1
  158. package/dist/components/molecules/Menubar/MenuBlock/MenuItem/MenuItem.js +1 -1
  159. package/dist/components/molecules/Menubar/MenuBlock/MenuItem/MenuItem.js.map +1 -1
  160. package/dist/components/molecules/Menubar/MenuBlock/MenuItem/SubMenuBlock/SubMenuBlock.js +1 -1
  161. package/dist/components/molecules/Menubar/MenuBlock/MenuItem/SubMenuBlock/SubMenuBlock.js.map +1 -1
  162. package/dist/components/molecules/Menubar/MenuBlock/MenuItem/SubMenuBlock/index.js.map +1 -1
  163. package/dist/components/molecules/Menubar/MenuBlock/MenuItem/SubMenuBlock/styled.js +1 -1
  164. package/dist/components/molecules/Menubar/MenuBlock/MenuItem/SubMenuBlock/styled.js.map +1 -1
  165. package/dist/components/molecules/Menubar/MenuBlock/MenuItem/index.js.map +1 -1
  166. package/dist/components/molecules/Menubar/MenuBlock/MenuItem/styled.js.map +1 -1
  167. package/dist/components/molecules/Menubar/MenuBlock/index.js.map +1 -1
  168. package/dist/components/molecules/Menubar/MenuBlock/styled.js +1 -1
  169. package/dist/components/molecules/Menubar/MenuBlock/styled.js.map +1 -1
  170. package/dist/components/molecules/Menubar/Menubar.js +1 -1
  171. package/dist/components/molecules/Menubar/Menubar.js.map +1 -1
  172. package/dist/components/molecules/Menubar/MostUsed/MostUsed.js +1 -1
  173. package/dist/components/molecules/Menubar/MostUsed/MostUsed.js.map +1 -1
  174. package/dist/components/molecules/Menubar/MostUsed/index.js.map +1 -1
  175. package/dist/components/molecules/Menubar/MostUsed/styled.js +1 -1
  176. package/dist/components/molecules/Menubar/MostUsed/styled.js.map +1 -1
  177. package/dist/components/molecules/Menubar/SearchResultItem/SearchResultItem.js +1 -1
  178. package/dist/components/molecules/Menubar/SearchResultItem/SearchResultItem.js.map +1 -1
  179. package/dist/components/molecules/Menubar/SearchResultItem/index.js.map +1 -1
  180. package/dist/components/molecules/Menubar/SearchResultItem/styled.js +1 -1
  181. package/dist/components/molecules/Menubar/SearchResultItem/styled.js.map +1 -1
  182. package/dist/components/molecules/Menubar/SearchResultItem/utils.d.ts +1 -1
  183. package/dist/components/molecules/Menubar/SearchResultItem/utils.js +2 -2
  184. package/dist/components/molecules/Menubar/SearchResultItem/utils.js.map +1 -1
  185. package/dist/components/molecules/Menubar/animations.js +1 -1
  186. package/dist/components/molecules/Menubar/animations.js.map +1 -1
  187. package/dist/components/molecules/Menubar/index.js +4 -4
  188. package/dist/components/molecules/Menubar/index.js.map +1 -1
  189. package/dist/components/molecules/Menubar/styled.js +1 -1
  190. package/dist/components/molecules/Menubar/styled.js.map +1 -1
  191. package/dist/components/molecules/Menubar/types.js.map +1 -1
  192. package/dist/components/molecules/Menubar/utils.js.map +1 -1
  193. package/dist/components/molecules/Select/Dropdown/Dropdown.js.map +1 -1
  194. package/dist/components/molecules/Select/Dropdown/components/SearchInput.js.map +1 -1
  195. package/dist/components/molecules/Select/Dropdown/components/index.js.map +1 -1
  196. package/dist/components/molecules/Select/Dropdown/index.js.map +1 -1
  197. package/dist/components/molecules/Select/Dropdown/styled.js +1 -1
  198. package/dist/components/molecules/Select/Dropdown/styled.js.map +1 -1
  199. package/dist/components/molecules/Select/Select.js +1 -1
  200. package/dist/components/molecules/Select/Select.js.map +1 -1
  201. package/dist/components/molecules/Select/SelectItem/SelectItem.js.map +1 -1
  202. package/dist/components/molecules/Select/SelectItem/index.js.map +1 -1
  203. package/dist/components/molecules/Select/SelectItem/styled.js +1 -1
  204. package/dist/components/molecules/Select/SelectItem/styled.js.map +1 -1
  205. package/dist/components/molecules/Select/animations.js.map +1 -1
  206. package/dist/components/molecules/Select/functions.js.map +1 -1
  207. package/dist/components/molecules/Select/index.js.map +1 -1
  208. package/dist/components/molecules/Select/styled.js +1 -1
  209. package/dist/components/molecules/Select/styled.js.map +1 -1
  210. package/dist/components/molecules/Snackbar/Snackbar.js +1 -1
  211. package/dist/components/molecules/Snackbar/Snackbar.js.map +1 -1
  212. package/dist/components/molecules/Snackbar/index.js.map +1 -1
  213. package/dist/components/molecules/Snackbar/styled.js.map +1 -1
  214. package/dist/components/molecules/TextArea/TextArea.js +1 -1
  215. package/dist/components/molecules/TextArea/TextArea.js.map +1 -1
  216. package/dist/components/molecules/TextArea/index.js.map +1 -1
  217. package/dist/components/molecules/TextArea/styled.js.map +1 -1
  218. package/dist/components/organisms/DataGrid/DataGrid.d.ts +1 -1
  219. package/dist/components/organisms/DataGrid/DataGrid.js.map +1 -1
  220. package/dist/components/organisms/DataGrid/Footer/Footer.js.map +1 -1
  221. package/dist/components/organisms/DataGrid/Footer/index.js.map +1 -1
  222. package/dist/components/organisms/DataGrid/Footer/styled.js +1 -1
  223. package/dist/components/organisms/DataGrid/Footer/styled.js.map +1 -1
  224. package/dist/components/organisms/DataGrid/Header/Header.d.ts +1 -1
  225. package/dist/components/organisms/DataGrid/Header/Header.js.map +1 -1
  226. package/dist/components/organisms/DataGrid/Header/index.js.map +1 -1
  227. package/dist/components/organisms/DataGrid/Header/styled.js.map +1 -1
  228. package/dist/components/organisms/DataGrid/Header/utils.js +1 -1
  229. package/dist/components/organisms/DataGrid/Header/utils.js.map +1 -1
  230. package/dist/components/organisms/DataGrid/Row/Row.js.map +1 -1
  231. package/dist/components/organisms/DataGrid/Row/index.js.map +1 -1
  232. package/dist/components/organisms/DataGrid/index.js.map +1 -1
  233. package/dist/components/organisms/DataGrid/styled.js.map +1 -1
  234. package/dist/components/organisms/DataGrid/types.js.map +1 -1
  235. package/dist/components/organisms/DataGrid/utils.js +1 -1
  236. package/dist/components/organisms/DataGrid/utils.js.map +1 -1
  237. package/dist/hooks/index.d.ts +2 -0
  238. package/dist/hooks/index.js +16 -0
  239. package/dist/hooks/index.js.map +1 -1
  240. package/dist/hooks/useBreakpoints.d.ts +6 -0
  241. package/dist/hooks/useBreakpoints.js +27 -0
  242. package/dist/hooks/useBreakpoints.js.map +1 -0
  243. package/dist/hooks/useClickAwayListener.js.map +1 -1
  244. package/dist/hooks/useWindowSize.d.ts +6 -0
  245. package/dist/hooks/useWindowSize.js +35 -0
  246. package/dist/hooks/useWindowSize.js.map +1 -0
  247. package/dist/index.d.ts +14 -13
  248. package/dist/index.js +155 -139
  249. package/dist/index.js.map +1 -1
  250. package/package.json +6 -6
  251. package/src/components/atoms/Button/Button.tsx +20 -1
  252. package/src/components/atoms/Button/hooks/useMouseHover.ts +17 -9
  253. package/src/components/atoms/Button/hooks/useMousePressed.ts +29 -0
  254. package/src/components/atoms/Button/styled.ts +23 -6
  255. package/src/components/atoms/Input/Input.tsx +4 -5
  256. package/src/components/atoms/InputMask/InputMask.tsx +4 -5
  257. package/src/components/molecules/DatePicker/Modal.tsx +11 -5
  258. package/src/components/molecules/DatePicker/index.ts +1 -1
  259. package/src/components/molecules/DatePicker/styled.ts +3 -3
  260. package/src/components/molecules/DateTimePicker/Modal.tsx +1 -5
  261. package/src/components/molecules/DateTimePicker/styled.ts +8 -5
  262. package/src/components/molecules/Grid/Grid.stories.tsx +198 -0
  263. package/src/components/molecules/Grid/Grid.tsx +7 -25
  264. package/src/components/molecules/Grid/Item/Item.tsx +57 -57
  265. package/src/components/molecules/Grid/Item/functions.ts +13 -0
  266. package/src/components/molecules/Grid/Item/index.ts +1 -1
  267. package/src/components/molecules/Grid/index.ts +2 -2
  268. package/src/components/molecules/IconTextButton/IconTextButton.stories.tsx +51 -0
  269. package/src/components/molecules/IconTextButton/IconTextButton.tsx +64 -0
  270. package/src/components/molecules/IconTextButton/TextComponent.tsx +39 -0
  271. package/src/components/molecules/IconTextButton/hooks/useIconTextButton.ts +31 -0
  272. package/src/components/molecules/IconTextButton/index.ts +4 -0
  273. package/src/components/molecules/IconTextButton/styled.ts +18 -0
  274. package/src/components/molecules/LabeledSwitch/LabelComponent.tsx +46 -0
  275. package/src/components/molecules/LabeledSwitch/LabeledSwitch.stories.tsx +41 -0
  276. package/src/components/molecules/LabeledSwitch/LabeledSwitch.tsx +58 -0
  277. package/src/components/molecules/LabeledSwitch/index.ts +4 -0
  278. package/src/components/molecules/LabeledSwitch/styled.ts +26 -0
  279. package/src/components/molecules/Menubar/Menubar.tsx +4 -3
  280. package/src/components/molecules/Menubar/SearchResultItem/utils.tsx +2 -2
  281. package/src/components/molecules/Select/Dropdown/Dropdown.tsx +4 -3
  282. package/src/components/molecules/Select/Select.tsx +10 -8
  283. package/src/components/organisms/DataGrid/DataGrid.tsx +16 -20
  284. package/src/components/organisms/DataGrid/Header/Header.tsx +1 -1
  285. package/src/hooks/index.ts +2 -0
  286. package/src/hooks/useBreakpoints.ts +18 -0
  287. package/src/hooks/useWindowSize.ts +25 -0
  288. package/src/index.ts +33 -24
@@ -1,17 +1,25 @@
1
1
  import { useCallback, useState } from 'react';
2
2
 
3
- export const useMouseHover = (active: boolean) => {
3
+ export const useMouseHover = (
4
+ active: boolean,
5
+ onMouseOver?: () => void,
6
+ onMouseOut?: () => void
7
+ ) => {
4
8
  const [mouseOver, setMouseOver] = useState<boolean>(false);
5
9
 
6
- const handleMouseOver = useCallback(() => active && setMouseOver(true), [
7
- active,
8
- setMouseOver,
9
- ]);
10
+ const handleMouseOver = useCallback(() => {
11
+ if (active) {
12
+ setMouseOver(true);
13
+ onMouseOver?.();
14
+ }
15
+ }, [active, setMouseOver]);
10
16
 
11
- const handleMouseOut = useCallback(() => active && setMouseOver(false), [
12
- active,
13
- setMouseOver,
14
- ]);
17
+ const handleMouseOut = useCallback(() => {
18
+ if (active) {
19
+ setMouseOver(false);
20
+ onMouseOut?.();
21
+ }
22
+ }, [active, setMouseOver]);
15
23
 
16
24
  return {
17
25
  mouseOver,
@@ -0,0 +1,29 @@
1
+ import { useCallback, useState } from 'react';
2
+
3
+ export const useMousePressed = (
4
+ active: boolean,
5
+ onPressIn?: () => void,
6
+ onPressOut?: () => void
7
+ ) => {
8
+ const [pressed, setPressed] = useState<boolean>(false);
9
+
10
+ const handlePressIn = useCallback(() => {
11
+ if (active) {
12
+ setPressed(true);
13
+ onPressIn?.();
14
+ }
15
+ }, [active, setPressed]);
16
+
17
+ const handlePressOut = useCallback(() => {
18
+ if (active) {
19
+ setPressed(false);
20
+ onPressOut?.();
21
+ }
22
+ }, [active, setPressed]);
23
+
24
+ return {
25
+ pressed,
26
+ handlePressIn,
27
+ handlePressOut,
28
+ };
29
+ };
@@ -1,5 +1,12 @@
1
1
  import styled, { css } from '@emotion/native';
2
- import { Button, StyleProps } from '@tecsinapse/react-core';
2
+ import {
3
+ borderColorGradationVC,
4
+ borderColorVC,
5
+ Button,
6
+ colorGradationVC,
7
+ colorVC,
8
+ StyleProps,
9
+ } from '@tecsinapse/react-core';
3
10
  import { WebButtonProps } from './Button';
4
11
 
5
12
  const webStyles = () => {
@@ -12,20 +19,30 @@ const webStyles = () => {
12
19
 
13
20
  const hoverStyles = ({
14
21
  mouseOver,
22
+ pressed,
15
23
  theme,
16
- color = 'primary',
24
+ variant = 'filled',
17
25
  disabled,
18
- }: { mouseOver: boolean } & WebButtonProps & Partial<StyleProps>) => {
26
+ }: { mouseOver: boolean; pressed: boolean } & WebButtonProps &
27
+ Partial<StyleProps>) => {
28
+ const variantColor = colorVC[variant];
29
+ const variantColorGradation = colorGradationVC[variant];
30
+ const variantBorderColor = borderColorVC[variant];
31
+ const variantBorderColorGradation = borderColorGradationVC[variant];
19
32
  return (
20
33
  mouseOver &&
21
34
  !disabled &&
35
+ !pressed &&
22
36
  css`
23
- background-color: ${theme?.color[color].dark};
24
- border-color: ${theme?.color[color].dark};
37
+ background-color: ${theme?.color[variantColor][variantColorGradation]};
38
+ border-color: ${theme?.color[variantBorderColor][
39
+ variantBorderColorGradation
40
+ ]};
25
41
  `
26
42
  );
27
43
  };
28
44
 
29
45
  export const StyledWebButton = styled(Button)<
30
- { mouseOver: boolean } & WebButtonProps & Partial<StyleProps>
46
+ { mouseOver: boolean; pressed: boolean } & WebButtonProps &
47
+ Partial<StyleProps>
31
48
  >(webStyles, hoverStyles);
@@ -6,12 +6,11 @@ import {
6
6
  useInputFocus,
7
7
  } from '@tecsinapse/react-core';
8
8
  import React, { FC } from 'react';
9
- import { View } from 'react-native';
9
+ import { TextInput, View } from 'react-native';
10
10
  import { StyledWebTextInput } from './styled';
11
11
 
12
- export interface InputWebProps
13
- extends Omit<InputElementProps, 'style'>,
14
- InputContainerProps {}
12
+ export type InputWebProps = Omit<InputElementProps, 'style'> &
13
+ InputContainerProps & { ref?: React.Ref<HTMLInputElement | undefined> };
15
14
 
16
15
  const Input: FC<InputWebProps> = React.forwardRef(
17
16
  (
@@ -73,7 +72,7 @@ const Input: FC<InputWebProps> = React.forwardRef(
73
72
  {...rest}
74
73
  placeholder={onlyLabel ? label : placeholder}
75
74
  value={value}
76
- ref={ref}
75
+ ref={ref as React.Ref<TextInput>}
77
76
  disabled={disabled}
78
77
  onFocus={handleFocus}
79
78
  onBlur={handleBlur}
@@ -6,12 +6,11 @@ import {
6
6
  useInputFocus,
7
7
  } from '@tecsinapse/react-core';
8
8
  import React, { FC } from 'react';
9
- import { View } from 'react-native';
9
+ import { TextInput, View } from 'react-native';
10
10
  import { StyledWebTextInputMask } from './styled';
11
11
 
12
- export interface InputMaskWebProps
13
- extends Omit<InputMaskElementProps, 'style'>,
14
- InputContainerProps {}
12
+ export type InputMaskWebProps = Omit<InputMaskElementProps, 'style'> &
13
+ InputContainerProps & { ref?: React.Ref<HTMLInputElement | undefined> };
15
14
 
16
15
  const InputMask: FC<InputMaskWebProps> = React.forwardRef(
17
16
  (
@@ -73,7 +72,7 @@ const InputMask: FC<InputMaskWebProps> = React.forwardRef(
73
72
  {...rest}
74
73
  placeholder={onlyLabel ? label : placeholder}
75
74
  value={value}
76
- ref={ref}
75
+ ref={ref as React.Ref<TextInput>}
77
76
  disabled={disabled}
78
77
  onFocus={handleFocus}
79
78
  onBlur={handleBlur}
@@ -1,9 +1,17 @@
1
- import { CalendarProps, PressableSurface, SelectionType } from '@tecsinapse/react-core';
1
+ import {
2
+ CalendarProps,
3
+ PressableSurface,
4
+ SelectionType,
5
+ } from '@tecsinapse/react-core';
2
6
  import * as React from 'react';
3
7
  import { Modal as RNModal, ModalProps } from 'react-native';
4
8
  import { Backdrop, ModalContent } from './styled';
5
9
 
6
- const Component = <T extends SelectionType>({ onRequestClose, children, ...modalProps }: CalendarProps<T> & ModalProps & { children: JSX.Element }): JSX.Element => {
10
+ const Component = <T extends SelectionType>({
11
+ onRequestClose,
12
+ children,
13
+ ...modalProps
14
+ }: CalendarProps<T> & ModalProps & { children: JSX.Element }): JSX.Element => {
7
15
  return (
8
16
  <RNModal
9
17
  transparent
@@ -14,9 +22,7 @@ const Component = <T extends SelectionType>({ onRequestClose, children, ...modal
14
22
  >
15
23
  <Backdrop onPress={onRequestClose} effect="none">
16
24
  <PressableSurface>
17
- <ModalContent>
18
- {children}
19
- </ModalContent>
25
+ <ModalContent>{children}</ModalContent>
20
26
  </PressableSurface>
21
27
  </Backdrop>
22
28
  </RNModal>
@@ -1 +1 @@
1
- export { DatePicker, WebDatePickerProps } from './DatePicker';
1
+ export { DatePicker, WebDatePickerProps } from './DatePicker';
@@ -1,6 +1,6 @@
1
- import styled, { css } from "@emotion/native";
2
- import { hex2rgba, PressableSurface, StyleProps } from "@tecsinapse/react-core";
3
- import { Platform } from "react-native";
1
+ import styled, { css } from '@emotion/native';
2
+ import { hex2rgba, PressableSurface, StyleProps } from '@tecsinapse/react-core';
3
+ import { Platform } from 'react-native';
4
4
 
5
5
  const isWeb = Platform.OS === 'web';
6
6
 
@@ -5,11 +5,9 @@ import { Backdrop, ModalContent } from './styled';
5
5
 
6
6
  const Component: React.FC<DateTimeSelectorProps & ModalProps> = ({
7
7
  onRequestClose,
8
- onChange,
9
8
  children,
10
9
  ...rest
11
10
  }) => {
12
-
13
11
  return (
14
12
  <RNModal
15
13
  transparent
@@ -19,9 +17,7 @@ const Component: React.FC<DateTimeSelectorProps & ModalProps> = ({
19
17
  onRequestClose={onRequestClose}
20
18
  >
21
19
  <Backdrop onPress={onRequestClose} effect="none">
22
- <ModalContent>
23
- {children}
24
- </ModalContent>
20
+ <ModalContent>{children}</ModalContent>
25
21
  </Backdrop>
26
22
  </RNModal>
27
23
  );
@@ -1,7 +1,10 @@
1
- import styled, { css } from "@emotion/native";
2
- import { DateTimeSelectorProps, PressableSurface, RFValueStr, StyleProps } from "@tecsinapse/react-core";
3
- import { FC } from "react";
4
- import { Platform } from "react-native";
1
+ import styled, { css } from '@emotion/native';
2
+ import {
3
+ PressableSurface,
4
+ RFValueStr,
5
+ StyleProps,
6
+ } from '@tecsinapse/react-core';
7
+ import { Platform } from 'react-native';
5
8
 
6
9
  const isWeb = Platform.OS === 'web';
7
10
 
@@ -34,4 +37,4 @@ export const ModalContent = styled.View<Partial<StyleProps>>`
34
37
  `}
35
38
  `}
36
39
  overflow: hidden;
37
- `;
40
+ `;
@@ -0,0 +1,198 @@
1
+ import React from 'react';
2
+ import { Story } from '@storybook/react';
3
+ import Grid, { IGridWeb } from './Grid';
4
+ import { GridItem } from './Item';
5
+ import { Text } from '@tecsinapse/react-web-kit';
6
+ import styled from '@emotion/styled';
7
+
8
+ export default {
9
+ title: 'Web/Grid',
10
+ component: Grid,
11
+ subcomponents: { GridItem },
12
+ };
13
+
14
+ const Container = styled('div')`
15
+ background-color: orange;
16
+ padding: 8px;
17
+ border-width: 1px;
18
+ border-color: white;
19
+ border-style: solid;
20
+ border-radius: 8px;
21
+ `;
22
+
23
+ const TemplateGrid: Story<IGridWeb> = args => {
24
+ return (
25
+ <Grid {...args}>
26
+ <GridItem wrapper span={12}>
27
+ <Container>
28
+ <Text>Box</Text>
29
+ </Container>
30
+ </GridItem>
31
+
32
+ <GridItem wrapper span={6}>
33
+ <Container>
34
+ <Text>Box</Text>
35
+ </Container>
36
+ </GridItem>
37
+ <GridItem wrapper span={6}>
38
+ <Container>
39
+ <Text>Box</Text>
40
+ </Container>
41
+ </GridItem>
42
+
43
+ <GridItem wrapper span={4} flexShrink={1}>
44
+ <Container>
45
+ <Text>Box</Text>
46
+ </Container>
47
+ </GridItem>
48
+ <GridItem wrapper span={4} flexGrow={1}>
49
+ <Container>
50
+ <Text>Box</Text>
51
+ </Container>
52
+ </GridItem>
53
+ <GridItem wrapper span={4} flexShrink={1}>
54
+ <Container>
55
+ <Text>Box</Text>
56
+ </Container>
57
+ </GridItem>
58
+
59
+ <GridItem wrapper span={3} flexBasis={'content'} flex={1}>
60
+ {/** Width should consider component padding and grid spacing (8px left + 8px right + 2px grid for nano) */}
61
+ <Container style={{ width: 'calc(100% - 18px)' }}>
62
+ <Text>Box</Text>
63
+ </Container>
64
+ </GridItem>
65
+ <GridItem wrapper span={3} flexBasis={'content'}>
66
+ <Container>
67
+ <Text>Box</Text>
68
+ </Container>
69
+ </GridItem>
70
+ <GridItem wrapper span={3} flexBasis={'content'}>
71
+ <Container>
72
+ <Text>Box</Text>
73
+ </Container>
74
+ </GridItem>
75
+ <GridItem wrapper span={3} flexBasis={'content'}>
76
+ <Container>
77
+ <Text>Box</Text>
78
+ </Container>
79
+ </GridItem>
80
+ </Grid>
81
+ );
82
+ };
83
+
84
+ export const WithGridItem = TemplateGrid.bind({});
85
+
86
+ WithGridItem.args = {
87
+ spacing: 'nano',
88
+ };
89
+
90
+ const TemplateLayout: Story<IGridWeb> = args => {
91
+ return (
92
+ <Grid {...args}>
93
+ <Container>
94
+ <Text>Box</Text>
95
+ </Container>
96
+ <Container>
97
+ <Text>Box</Text>
98
+ </Container>
99
+ <Container>
100
+ <Text>Box</Text>
101
+ </Container>
102
+ <Container>
103
+ <Text>Box</Text>
104
+ </Container>
105
+ <Container>
106
+ <Text>Box</Text>
107
+ </Container>
108
+ <Container>
109
+ <Text>Box</Text>
110
+ </Container>
111
+ <Container>
112
+ <Text>Box</Text>
113
+ </Container>
114
+ <Container>
115
+ <Text>Box</Text>
116
+ </Container>
117
+ <Container>
118
+ <Text>Box</Text>
119
+ </Container>
120
+ <Container>
121
+ <Text>Box</Text>
122
+ </Container>
123
+ </Grid>
124
+ );
125
+ };
126
+
127
+ export const WithLayout = TemplateLayout.bind({});
128
+
129
+ WithLayout.args = {
130
+ layout: [[12], [6, 6], [4, 4, 4], [3, 3, 3, 3]],
131
+ spacing: 'mili',
132
+ };
133
+
134
+ const TemplateResponsive: Story<IGridWeb> = args => {
135
+ return (
136
+ <Grid {...args}>
137
+ <GridItem wrapper span={{ sm: 12 }}>
138
+ <Container>
139
+ <Text>Box</Text>
140
+ </Container>
141
+ </GridItem>
142
+
143
+ <GridItem wrapper span={{ sm: 6, md: 6 }}>
144
+ <Container>
145
+ <Text>Box</Text>
146
+ </Container>
147
+ </GridItem>
148
+ <GridItem wrapper span={{ sm: 6, md: 6 }}>
149
+ <Container>
150
+ <Text>Box</Text>
151
+ </Container>
152
+ </GridItem>
153
+
154
+ <GridItem wrapper span={{ sm: 12, md: 4 }} flexShrink={1}>
155
+ <Container>
156
+ <Text>Box</Text>
157
+ </Container>
158
+ </GridItem>
159
+ <GridItem wrapper span={{ sm: 6, md: 4 }} flexGrow={1}>
160
+ <Container>
161
+ <Text>Box</Text>
162
+ </Container>
163
+ </GridItem>
164
+ <GridItem wrapper span={{ sm: 6, md: 4 }} flexShrink={1}>
165
+ <Container>
166
+ <Text>Box</Text>
167
+ </Container>
168
+ </GridItem>
169
+
170
+ <GridItem wrapper span={{ sm: 12, lg: 3 }}>
171
+ <Container>
172
+ <Text>Box</Text>
173
+ </Container>
174
+ </GridItem>
175
+ <GridItem wrapper span={{ sm: 6, lg: 3 }}>
176
+ <Container>
177
+ <Text>Box</Text>
178
+ </Container>
179
+ </GridItem>
180
+ <GridItem wrapper span={{ sm: 6, lg: 3 }}>
181
+ <Container>
182
+ <Text>Box</Text>
183
+ </Container>
184
+ </GridItem>
185
+ <GridItem wrapper span={{ sm: 12, lg: 3 }}>
186
+ <Container>
187
+ <Text>Box</Text>
188
+ </Container>
189
+ </GridItem>
190
+ </Grid>
191
+ );
192
+ };
193
+
194
+ export const WithGridItemResponsive = TemplateResponsive.bind({});
195
+
196
+ WithGridItemResponsive.args = {
197
+ spacing: 'nano',
198
+ };
@@ -1,29 +1,9 @@
1
1
  import React from 'react';
2
2
  import { GridItem } from './Item';
3
- import { SpacingType } from '@tecsinapse/react-core';
3
+ import { IGrid } from '@tecsinapse/react-core';
4
4
 
5
- export interface IGrid extends React.HTMLAttributes<HTMLDivElement> {
6
- children: JSX.Element[];
7
- /** Layout should represent the multiplier of columns to fill the rows properly.
8
- * Example:
9
- * const layout = [
10
- * [6, 6], // Two elements on row
11
- * [4, 4, 4], // Three elements on row
12
- * [12], // One element on row
13
- * ];
14
- * */
15
- layout?: number[][];
16
- /** Number of grid columns to be considered (not the number of elements per row) */
17
- columns?: number;
18
- spacing?:
19
- | SpacingType
20
- | {
21
- top?: SpacingType;
22
- right?: SpacingType;
23
- bottom?: SpacingType;
24
- left?: SpacingType;
25
- };
26
- }
5
+ export type IGridWeb = IGrid &
6
+ Omit<React.HTMLAttributes<HTMLDivElement>, 'children'>;
27
7
 
28
8
  const Grid = ({
29
9
  children,
@@ -32,7 +12,7 @@ const Grid = ({
32
12
  style,
33
13
  spacing,
34
14
  ...rest
35
- }: IGrid) => {
15
+ }: IGridWeb): JSX.Element => {
36
16
  if (layout) {
37
17
  const flatLayout = layout.flat();
38
18
  return (
@@ -47,6 +27,7 @@ const Grid = ({
47
27
  >
48
28
  {React.Children.map(children, (child, index) => (
49
29
  <GridItem
30
+ key={`child-${index}`}
50
31
  columns={columns}
51
32
  span={flatLayout[index]}
52
33
  spacing={spacing}
@@ -68,11 +49,12 @@ const Grid = ({
68
49
  }}
69
50
  {...rest}
70
51
  >
71
- {React.Children.map(children, child => {
52
+ {React.Children.map(children, (child, index) => {
72
53
  return React.cloneElement(child, {
73
54
  ...child?.props,
74
55
  columns,
75
56
  spacing: child?.props.spacing ?? spacing,
57
+ key: `child-${index}`,
76
58
  });
77
59
  })}
78
60
  </div>
@@ -1,59 +1,53 @@
1
1
  import React from 'react';
2
2
  import {
3
- extractNumbersFromString,
4
- SpacingType,
3
+ IGridItem,
5
4
  useTheme,
5
+ Breakpoints,
6
+ getGridItemColumSpan,
7
+ getGridItemPadding,
6
8
  } from '@tecsinapse/react-core';
9
+ import { useBreakpoints } from '@tecsinapse/react-web-kit';
10
+ import { getSpan } from './functions';
7
11
 
8
- type FlexPositioning = 'flex-start' | 'flex-end' | 'center';
9
- type FlexAlignBase = FlexPositioning | 'stretch';
10
- type FlexAlignType = FlexAlignBase | 'baseline';
11
- type FlexSpacing = 'space-between' | 'space-around';
12
+ export type Span = Pick<Breakpoints, 'sm'> & Partial<Omit<Breakpoints, 'sm'>>;
12
13
 
13
- type PaddingPosition = 'top' | 'right' | 'bottom' | 'left';
14
-
15
- export interface IGridItem {
16
- children: React.ReactElement;
17
- /** Number of columns to fill */
18
- span: number;
19
- /** You don't have to give this property since is inherited from Grid */
20
- columns?: number;
21
- loading?: boolean;
22
- /** If your GridItem has a loading state, specify the component here (Skeleton) */
23
- loadingComponent?: React.ReactElement;
24
- /** Flex properties below */
25
- alignContent?: FlexAlignBase | FlexSpacing;
26
- alignItems?: FlexAlignType;
27
- alignSelf?: 'auto' | FlexAlignType;
28
- flex?: number;
29
- flexDirection?: 'row' | 'column' | 'row-reverse' | 'column-reverse';
30
- flexGrow?: number;
31
- flexShrink?: number;
32
- justifyContent?: FlexPositioning | FlexSpacing | 'space-evenly';
33
- /** You don't have to give this property since is inherited from Grid */
34
- spacing?:
35
- | SpacingType
36
- | {
37
- top?: SpacingType;
38
- right?: SpacingType;
39
- bottom?: SpacingType;
40
- left?: SpacingType;
41
- };
42
- /** Used to wrap children in a View when its style extrapolates the dimensions*/
43
- wrapper?: boolean;
14
+ export interface IGridItemWeb
15
+ extends Omit<IGridItem, 'span'>,
16
+ Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {
17
+ /** At least sm should exist */
18
+ span: number | Span;
19
+ /** Only specify this property if the GridItem will be 'dynamic', adjusting itself to content. Use this with `wrapper` for better result. */
20
+ flexBasis?:
21
+ | string
22
+ | 'content'
23
+ | 'auto'
24
+ | 'max-content'
25
+ | 'min-content'
26
+ | 'fit-content';
44
27
  }
45
28
 
46
29
  const GridItem = ({
47
30
  children,
48
- span,
31
+ span: _span,
49
32
  columns = 12,
50
33
  loadingComponent,
51
34
  loading = false,
52
35
  spacing: _spacing,
53
36
  wrapper = false,
37
+ alignContent,
38
+ alignItems,
39
+ alignSelf,
40
+ flex,
41
+ flexDirection,
42
+ flexGrow,
43
+ flexShrink,
44
+ justifyContent,
45
+ flexBasis,
46
+ style,
54
47
  ...rest
55
- }: IGridItem) => {
48
+ }: IGridItemWeb): JSX.Element => {
56
49
  const { spacing } = useTheme();
50
+ const { sm, md, lg } = useBreakpoints();
57
51
  if (!React.Children.only(children)) {
58
52
  throw new Error('The number of children in GridItem should be one');
59
53
  }
@@ -61,34 +55,40 @@ const GridItem = ({
61
55
  return loadingComponent;
62
56
  }
63
57
 
64
- const getPadding = (pos: PaddingPosition) => {
65
- if (_spacing) {
66
- if (typeof _spacing === 'string')
67
- return extractNumbersFromString(spacing[_spacing]);
68
- else if (typeof _spacing === 'object' && _spacing[pos]) {
69
- return extractNumbersFromString(spacing[_spacing[pos]!]);
70
- } else return undefined;
71
- } else return undefined;
72
- };
58
+ const span = typeof _span === 'number' ? _span : getSpan(_span, sm, md, lg);
73
59
 
74
- const style: React.CSSProperties = {
75
- ...rest,
60
+ const _style: React.CSSProperties = {
61
+ ...style,
62
+ alignContent,
63
+ alignItems,
64
+ alignSelf,
65
+ flexDirection,
66
+ flexGrow,
67
+ flexShrink,
68
+ justifyContent,
69
+ flex,
76
70
  boxSizing: 'border-box',
77
- flexBasis: `${100 / (columns / span)}%`,
78
- paddingTop: getPadding('top'),
79
- paddingBottom: getPadding('bottom'),
80
- paddingRight: getPadding('right'),
81
- paddingLeft: getPadding('left'),
71
+ flexBasis: flexBasis ?? `${getGridItemColumSpan(columns, span)}%`,
72
+ paddingTop: getGridItemPadding('top', _spacing, spacing),
73
+ paddingBottom: getGridItemPadding('bottom', _spacing, spacing),
74
+ paddingRight: getGridItemPadding('right', _spacing, spacing),
75
+ paddingLeft: getGridItemPadding('left', _spacing, spacing),
82
76
  };
83
77
 
84
78
  const clone = React.cloneElement(children, {
85
79
  ...children?.props,
86
80
  style: wrapper
87
81
  ? children?.props.style
88
- : { ...style, ...children?.props.style },
82
+ : { ..._style, ...children?.props.style },
89
83
  });
90
84
 
91
- return wrapper ? <div style={style}>{clone}</div> : clone;
85
+ return wrapper ? (
86
+ <div {...rest} style={_style}>
87
+ {clone}
88
+ </div>
89
+ ) : (
90
+ clone
91
+ );
92
92
  };
93
93
 
94
94
  export default GridItem;
@@ -0,0 +1,13 @@
1
+ import { Span } from './Item';
2
+
3
+ export const getSpan = (
4
+ value: Span,
5
+ sm: boolean,
6
+ md: boolean,
7
+ lg: boolean
8
+ ): number => {
9
+ if (sm) return value?.sm;
10
+ if (md) return value?.md ?? value?.sm;
11
+ if (lg) return value?.lg ?? value?.md ?? value?.sm;
12
+ return 0;
13
+ };