@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.
- package/CHANGELOG.md +41 -0
- package/dist/components/atoms/Accordion/Accordion.js.map +1 -1
- package/dist/components/atoms/Accordion/animations.js.map +1 -1
- package/dist/components/atoms/Accordion/index.js.map +1 -1
- package/dist/components/atoms/Accordion/styled.js +1 -1
- package/dist/components/atoms/Accordion/styled.js.map +1 -1
- package/dist/components/atoms/Badge/Badge.js +1 -1
- package/dist/components/atoms/Badge/Badge.js.map +1 -1
- package/dist/components/atoms/Badge/index.js.map +1 -1
- package/dist/components/atoms/Button/Button.d.ts +2 -0
- package/dist/components/atoms/Button/Button.js +19 -3
- package/dist/components/atoms/Button/Button.js.map +1 -1
- package/dist/components/atoms/Button/hooks/useMouseHover.d.ts +3 -3
- package/dist/components/atoms/Button/hooks/useMouseHover.js +13 -3
- package/dist/components/atoms/Button/hooks/useMouseHover.js.map +1 -1
- package/dist/components/atoms/Button/hooks/useMousePressed.d.ts +5 -0
- package/dist/components/atoms/Button/hooks/useMousePressed.js +32 -0
- package/dist/components/atoms/Button/hooks/useMousePressed.js.map +1 -0
- package/dist/components/atoms/Button/index.js.map +1 -1
- package/dist/components/atoms/Button/styled.js +9 -4
- package/dist/components/atoms/Button/styled.js.map +1 -1
- package/dist/components/atoms/Dropdown/index.js.map +1 -1
- package/dist/components/atoms/Dropdown/styled.js.map +1 -1
- package/dist/components/atoms/Input/Input.d.ts +4 -3
- package/dist/components/atoms/Input/Input.js +1 -1
- package/dist/components/atoms/Input/Input.js.map +1 -1
- package/dist/components/atoms/Input/index.js.map +1 -1
- package/dist/components/atoms/Input/styled.js.map +1 -1
- package/dist/components/atoms/InputMask/InputMask.d.ts +4 -3
- package/dist/components/atoms/InputMask/InputMask.js +1 -1
- package/dist/components/atoms/InputMask/InputMask.js.map +1 -1
- package/dist/components/atoms/InputMask/index.js.map +1 -1
- package/dist/components/atoms/InputMask/styled.js.map +1 -1
- package/dist/components/atoms/Modal/Modal.js +1 -1
- package/dist/components/atoms/Modal/Modal.js.map +1 -1
- package/dist/components/atoms/Modal/animations.js.map +1 -1
- package/dist/components/atoms/Modal/index.js.map +1 -1
- package/dist/components/atoms/Modal/styled.js.map +1 -1
- package/dist/components/atoms/Overlay/Overlay.js.map +1 -1
- package/dist/components/atoms/Overlay/animations.js.map +1 -1
- package/dist/components/atoms/Overlay/index.js.map +1 -1
- package/dist/components/atoms/Overlay/styled.js.map +1 -1
- package/dist/components/atoms/Skeleton/Skeleton.js +1 -1
- package/dist/components/atoms/Skeleton/Skeleton.js.map +1 -1
- package/dist/components/atoms/Skeleton/index.js.map +1 -1
- package/dist/components/atoms/Skeleton/styled.js.map +1 -1
- package/dist/components/atoms/Table/Body/TBody.js.map +1 -1
- package/dist/components/atoms/Table/Body/index.js.map +1 -1
- package/dist/components/atoms/Table/Cell/Td.js.map +1 -1
- package/dist/components/atoms/Table/Cell/index.js.map +1 -1
- package/dist/components/atoms/Table/Cell/styled.js.map +1 -1
- package/dist/components/atoms/Table/Container/TableContainer.js.map +1 -1
- package/dist/components/atoms/Table/Container/index.js.map +1 -1
- package/dist/components/atoms/Table/Container/styled.js.map +1 -1
- package/dist/components/atoms/Table/Footer/TFoot.js.map +1 -1
- package/dist/components/atoms/Table/Footer/index.js.map +1 -1
- package/dist/components/atoms/Table/Footer/styled.js.map +1 -1
- package/dist/components/atoms/Table/Header/THead.js.map +1 -1
- package/dist/components/atoms/Table/Header/Th.js.map +1 -1
- package/dist/components/atoms/Table/Header/index.js +4 -4
- package/dist/components/atoms/Table/Header/index.js.map +1 -1
- package/dist/components/atoms/Table/Header/styled.js +1 -1
- package/dist/components/atoms/Table/Header/styled.js.map +1 -1
- package/dist/components/atoms/Table/Row/Tr.js.map +1 -1
- package/dist/components/atoms/Table/Row/index.js.map +1 -1
- package/dist/components/atoms/Table/Row/styled.js.map +1 -1
- package/dist/components/atoms/Table/Table.js.map +1 -1
- package/dist/components/atoms/Table/Toolbar/TableToolbar.js.map +1 -1
- package/dist/components/atoms/Table/Toolbar/index.js.map +1 -1
- package/dist/components/atoms/Table/Toolbar/styled.js.map +1 -1
- package/dist/components/atoms/Table/index.js +18 -18
- package/dist/components/atoms/Table/index.js.map +1 -1
- package/dist/components/atoms/Table/styled.js.map +1 -1
- package/dist/components/atoms/Tag/Tag.js +1 -1
- package/dist/components/atoms/Tag/Tag.js.map +1 -1
- package/dist/components/atoms/Tag/index.js.map +1 -1
- package/dist/components/atoms/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/atoms/Tooltip/index.js +4 -4
- package/dist/components/atoms/Tooltip/index.js.map +1 -1
- package/dist/components/atoms/Tooltip/styled.js +3 -1
- package/dist/components/atoms/Tooltip/styled.js.map +1 -1
- package/dist/components/molecules/Breadcrumbs/BreadcrumbItem/BreadcrumbItem.js +1 -1
- package/dist/components/molecules/Breadcrumbs/BreadcrumbItem/BreadcrumbItem.js.map +1 -1
- package/dist/components/molecules/Breadcrumbs/BreadcrumbItem/index.js.map +1 -1
- package/dist/components/molecules/Breadcrumbs/BreadcrumbItem/styled.js +1 -1
- package/dist/components/molecules/Breadcrumbs/BreadcrumbItem/styled.js.map +1 -1
- package/dist/components/molecules/Breadcrumbs/Breadcrumbs.js.map +1 -1
- package/dist/components/molecules/Breadcrumbs/index.js +6 -6
- package/dist/components/molecules/Breadcrumbs/index.js.map +1 -1
- package/dist/components/molecules/Breadcrumbs/styled.js.map +1 -1
- package/dist/components/molecules/DatePicker/DatePicker.js +1 -1
- package/dist/components/molecules/DatePicker/DatePicker.js.map +1 -1
- package/dist/components/molecules/DatePicker/Modal.js +1 -1
- package/dist/components/molecules/DatePicker/Modal.js.map +1 -1
- package/dist/components/molecules/DatePicker/index.js.map +1 -1
- package/dist/components/molecules/DatePicker/styled.js.map +1 -1
- package/dist/components/molecules/DateTimePicker/DateTimePicker.js +1 -1
- package/dist/components/molecules/DateTimePicker/DateTimePicker.js.map +1 -1
- package/dist/components/molecules/DateTimePicker/Modal.js +1 -2
- package/dist/components/molecules/DateTimePicker/Modal.js.map +1 -1
- package/dist/components/molecules/DateTimePicker/index.js.map +1 -1
- package/dist/components/molecules/DateTimePicker/styled.js.map +1 -1
- package/dist/components/molecules/Drawer/Drawer.js +3 -1
- package/dist/components/molecules/Drawer/Drawer.js.map +1 -1
- package/dist/components/molecules/Drawer/animations.js +1 -1
- package/dist/components/molecules/Drawer/animations.js.map +1 -1
- package/dist/components/molecules/Drawer/index.js.map +1 -1
- package/dist/components/molecules/Drawer/styled.js +2 -0
- package/dist/components/molecules/Drawer/styled.js.map +1 -1
- package/dist/components/molecules/Grid/Grid.d.ts +3 -13
- package/dist/components/molecules/Grid/Grid.js +5 -3
- package/dist/components/molecules/Grid/Grid.js.map +1 -1
- package/dist/components/molecules/Grid/Item/Item.d.ts +6 -27
- package/dist/components/molecules/Grid/Item/Item.js +41 -19
- package/dist/components/molecules/Grid/Item/Item.js.map +1 -1
- package/dist/components/molecules/Grid/Item/functions.d.ts +2 -0
- package/dist/components/molecules/Grid/Item/functions.js +16 -0
- package/dist/components/molecules/Grid/Item/functions.js.map +1 -0
- package/dist/components/molecules/Grid/Item/index.d.ts +1 -1
- package/dist/components/molecules/Grid/Item/index.js.map +1 -1
- package/dist/components/molecules/Grid/index.d.ts +2 -2
- package/dist/components/molecules/Grid/index.js +4 -4
- package/dist/components/molecules/Grid/index.js.map +1 -1
- package/dist/components/molecules/IconTextButton/IconTextButton.d.ts +6 -0
- package/dist/components/molecules/IconTextButton/IconTextButton.js +64 -0
- package/dist/components/molecules/IconTextButton/IconTextButton.js.map +1 -0
- package/dist/components/molecules/IconTextButton/TextComponent.d.ts +12 -0
- package/dist/components/molecules/IconTextButton/TextComponent.js +32 -0
- package/dist/components/molecules/IconTextButton/TextComponent.js.map +1 -0
- package/dist/components/molecules/IconTextButton/hooks/useIconTextButton.d.ts +6 -0
- package/dist/components/molecules/IconTextButton/hooks/useIconTextButton.js +31 -0
- package/dist/components/molecules/IconTextButton/hooks/useIconTextButton.js.map +1 -0
- package/dist/components/molecules/IconTextButton/index.d.ts +1 -0
- package/dist/components/molecules/IconTextButton/index.js +24 -0
- package/dist/components/molecules/IconTextButton/index.js.map +1 -0
- package/dist/components/molecules/IconTextButton/styled.d.ts +1 -0
- package/dist/components/molecules/IconTextButton/styled.js +33 -0
- package/dist/components/molecules/IconTextButton/styled.js.map +1 -0
- package/dist/components/molecules/InputPassword/InputPassword.js +1 -1
- package/dist/components/molecules/InputPassword/InputPassword.js.map +1 -1
- package/dist/components/molecules/InputPassword/index.js.map +1 -1
- package/dist/components/molecules/LabeledSwitch/LabelComponent.d.ts +12 -0
- package/dist/components/molecules/LabeledSwitch/LabelComponent.js +38 -0
- package/dist/components/molecules/LabeledSwitch/LabelComponent.js.map +1 -0
- package/dist/components/molecules/LabeledSwitch/LabeledSwitch.d.ts +7 -0
- package/dist/components/molecules/LabeledSwitch/LabeledSwitch.js +55 -0
- package/dist/components/molecules/LabeledSwitch/LabeledSwitch.js.map +1 -0
- package/dist/components/molecules/LabeledSwitch/index.d.ts +1 -0
- package/dist/components/molecules/LabeledSwitch/index.js +24 -0
- package/dist/components/molecules/LabeledSwitch/index.js.map +1 -0
- package/dist/components/molecules/LabeledSwitch/styled.d.ts +8 -0
- package/dist/components/molecules/LabeledSwitch/styled.js +39 -0
- package/dist/components/molecules/LabeledSwitch/styled.js.map +1 -0
- package/dist/components/molecules/Masonry/Masonry.js.map +1 -1
- package/dist/components/molecules/Masonry/index.js.map +1 -1
- package/dist/components/molecules/Masonry/styled.js.map +1 -1
- package/dist/components/molecules/Menubar/MenuBlock/MenuBlock.js.map +1 -1
- package/dist/components/molecules/Menubar/MenuBlock/MenuItem/MenuItem.js +1 -1
- package/dist/components/molecules/Menubar/MenuBlock/MenuItem/MenuItem.js.map +1 -1
- package/dist/components/molecules/Menubar/MenuBlock/MenuItem/SubMenuBlock/SubMenuBlock.js +1 -1
- package/dist/components/molecules/Menubar/MenuBlock/MenuItem/SubMenuBlock/SubMenuBlock.js.map +1 -1
- package/dist/components/molecules/Menubar/MenuBlock/MenuItem/SubMenuBlock/index.js.map +1 -1
- package/dist/components/molecules/Menubar/MenuBlock/MenuItem/SubMenuBlock/styled.js +1 -1
- package/dist/components/molecules/Menubar/MenuBlock/MenuItem/SubMenuBlock/styled.js.map +1 -1
- package/dist/components/molecules/Menubar/MenuBlock/MenuItem/index.js.map +1 -1
- package/dist/components/molecules/Menubar/MenuBlock/MenuItem/styled.js.map +1 -1
- package/dist/components/molecules/Menubar/MenuBlock/index.js.map +1 -1
- package/dist/components/molecules/Menubar/MenuBlock/styled.js +1 -1
- package/dist/components/molecules/Menubar/MenuBlock/styled.js.map +1 -1
- package/dist/components/molecules/Menubar/Menubar.js +1 -1
- package/dist/components/molecules/Menubar/Menubar.js.map +1 -1
- package/dist/components/molecules/Menubar/MostUsed/MostUsed.js +1 -1
- package/dist/components/molecules/Menubar/MostUsed/MostUsed.js.map +1 -1
- package/dist/components/molecules/Menubar/MostUsed/index.js.map +1 -1
- package/dist/components/molecules/Menubar/MostUsed/styled.js +1 -1
- package/dist/components/molecules/Menubar/MostUsed/styled.js.map +1 -1
- package/dist/components/molecules/Menubar/SearchResultItem/SearchResultItem.js +1 -1
- package/dist/components/molecules/Menubar/SearchResultItem/SearchResultItem.js.map +1 -1
- package/dist/components/molecules/Menubar/SearchResultItem/index.js.map +1 -1
- package/dist/components/molecules/Menubar/SearchResultItem/styled.js +1 -1
- package/dist/components/molecules/Menubar/SearchResultItem/styled.js.map +1 -1
- package/dist/components/molecules/Menubar/SearchResultItem/utils.d.ts +1 -1
- package/dist/components/molecules/Menubar/SearchResultItem/utils.js +2 -2
- package/dist/components/molecules/Menubar/SearchResultItem/utils.js.map +1 -1
- package/dist/components/molecules/Menubar/animations.js +1 -1
- package/dist/components/molecules/Menubar/animations.js.map +1 -1
- package/dist/components/molecules/Menubar/index.js +4 -4
- package/dist/components/molecules/Menubar/index.js.map +1 -1
- package/dist/components/molecules/Menubar/styled.js +1 -1
- package/dist/components/molecules/Menubar/styled.js.map +1 -1
- package/dist/components/molecules/Menubar/types.js.map +1 -1
- package/dist/components/molecules/Menubar/utils.js.map +1 -1
- package/dist/components/molecules/Select/Dropdown/Dropdown.js.map +1 -1
- package/dist/components/molecules/Select/Dropdown/components/SearchInput.js.map +1 -1
- package/dist/components/molecules/Select/Dropdown/components/index.js.map +1 -1
- package/dist/components/molecules/Select/Dropdown/index.js.map +1 -1
- package/dist/components/molecules/Select/Dropdown/styled.js +1 -1
- package/dist/components/molecules/Select/Dropdown/styled.js.map +1 -1
- package/dist/components/molecules/Select/Select.js +1 -1
- package/dist/components/molecules/Select/Select.js.map +1 -1
- package/dist/components/molecules/Select/SelectItem/SelectItem.js.map +1 -1
- package/dist/components/molecules/Select/SelectItem/index.js.map +1 -1
- package/dist/components/molecules/Select/SelectItem/styled.js +1 -1
- package/dist/components/molecules/Select/SelectItem/styled.js.map +1 -1
- package/dist/components/molecules/Select/animations.js.map +1 -1
- package/dist/components/molecules/Select/functions.js.map +1 -1
- package/dist/components/molecules/Select/index.js.map +1 -1
- package/dist/components/molecules/Select/styled.js +1 -1
- package/dist/components/molecules/Select/styled.js.map +1 -1
- package/dist/components/molecules/Snackbar/Snackbar.js +1 -1
- package/dist/components/molecules/Snackbar/Snackbar.js.map +1 -1
- package/dist/components/molecules/Snackbar/index.js.map +1 -1
- package/dist/components/molecules/Snackbar/styled.js.map +1 -1
- package/dist/components/molecules/TextArea/TextArea.js +1 -1
- package/dist/components/molecules/TextArea/TextArea.js.map +1 -1
- package/dist/components/molecules/TextArea/index.js.map +1 -1
- package/dist/components/molecules/TextArea/styled.js.map +1 -1
- package/dist/components/organisms/DataGrid/DataGrid.d.ts +1 -1
- package/dist/components/organisms/DataGrid/DataGrid.js.map +1 -1
- package/dist/components/organisms/DataGrid/Footer/Footer.js.map +1 -1
- package/dist/components/organisms/DataGrid/Footer/index.js.map +1 -1
- package/dist/components/organisms/DataGrid/Footer/styled.js +1 -1
- package/dist/components/organisms/DataGrid/Footer/styled.js.map +1 -1
- package/dist/components/organisms/DataGrid/Header/Header.d.ts +1 -1
- package/dist/components/organisms/DataGrid/Header/Header.js.map +1 -1
- package/dist/components/organisms/DataGrid/Header/index.js.map +1 -1
- package/dist/components/organisms/DataGrid/Header/styled.js.map +1 -1
- package/dist/components/organisms/DataGrid/Header/utils.js +1 -1
- package/dist/components/organisms/DataGrid/Header/utils.js.map +1 -1
- package/dist/components/organisms/DataGrid/Row/Row.js.map +1 -1
- package/dist/components/organisms/DataGrid/Row/index.js.map +1 -1
- package/dist/components/organisms/DataGrid/index.js.map +1 -1
- package/dist/components/organisms/DataGrid/styled.js.map +1 -1
- package/dist/components/organisms/DataGrid/types.js.map +1 -1
- package/dist/components/organisms/DataGrid/utils.js +1 -1
- package/dist/components/organisms/DataGrid/utils.js.map +1 -1
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.js +16 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/useBreakpoints.d.ts +6 -0
- package/dist/hooks/useBreakpoints.js +27 -0
- package/dist/hooks/useBreakpoints.js.map +1 -0
- package/dist/hooks/useClickAwayListener.js.map +1 -1
- package/dist/hooks/useWindowSize.d.ts +6 -0
- package/dist/hooks/useWindowSize.js +35 -0
- package/dist/hooks/useWindowSize.js.map +1 -0
- package/dist/index.d.ts +14 -13
- package/dist/index.js +155 -139
- package/dist/index.js.map +1 -1
- package/package.json +6 -6
- package/src/components/atoms/Button/Button.tsx +20 -1
- package/src/components/atoms/Button/hooks/useMouseHover.ts +17 -9
- package/src/components/atoms/Button/hooks/useMousePressed.ts +29 -0
- package/src/components/atoms/Button/styled.ts +23 -6
- package/src/components/atoms/Input/Input.tsx +4 -5
- package/src/components/atoms/InputMask/InputMask.tsx +4 -5
- package/src/components/molecules/DatePicker/Modal.tsx +11 -5
- package/src/components/molecules/DatePicker/index.ts +1 -1
- package/src/components/molecules/DatePicker/styled.ts +3 -3
- package/src/components/molecules/DateTimePicker/Modal.tsx +1 -5
- package/src/components/molecules/DateTimePicker/styled.ts +8 -5
- package/src/components/molecules/Grid/Grid.stories.tsx +198 -0
- package/src/components/molecules/Grid/Grid.tsx +7 -25
- package/src/components/molecules/Grid/Item/Item.tsx +57 -57
- package/src/components/molecules/Grid/Item/functions.ts +13 -0
- package/src/components/molecules/Grid/Item/index.ts +1 -1
- package/src/components/molecules/Grid/index.ts +2 -2
- package/src/components/molecules/IconTextButton/IconTextButton.stories.tsx +51 -0
- package/src/components/molecules/IconTextButton/IconTextButton.tsx +64 -0
- package/src/components/molecules/IconTextButton/TextComponent.tsx +39 -0
- package/src/components/molecules/IconTextButton/hooks/useIconTextButton.ts +31 -0
- package/src/components/molecules/IconTextButton/index.ts +4 -0
- package/src/components/molecules/IconTextButton/styled.ts +18 -0
- package/src/components/molecules/LabeledSwitch/LabelComponent.tsx +46 -0
- package/src/components/molecules/LabeledSwitch/LabeledSwitch.stories.tsx +41 -0
- package/src/components/molecules/LabeledSwitch/LabeledSwitch.tsx +58 -0
- package/src/components/molecules/LabeledSwitch/index.ts +4 -0
- package/src/components/molecules/LabeledSwitch/styled.ts +26 -0
- package/src/components/molecules/Menubar/Menubar.tsx +4 -3
- package/src/components/molecules/Menubar/SearchResultItem/utils.tsx +2 -2
- package/src/components/molecules/Select/Dropdown/Dropdown.tsx +4 -3
- package/src/components/molecules/Select/Select.tsx +10 -8
- package/src/components/organisms/DataGrid/DataGrid.tsx +16 -20
- package/src/components/organisms/DataGrid/Header/Header.tsx +1 -1
- package/src/hooks/index.ts +2 -0
- package/src/hooks/useBreakpoints.ts +18 -0
- package/src/hooks/useWindowSize.ts +25 -0
- package/src/index.ts +33 -24
|
@@ -1,17 +1,25 @@
|
|
|
1
1
|
import { useCallback, useState } from 'react';
|
|
2
2
|
|
|
3
|
-
export const useMouseHover = (
|
|
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(() =>
|
|
7
|
-
active
|
|
8
|
-
|
|
9
|
-
|
|
10
|
+
const handleMouseOver = useCallback(() => {
|
|
11
|
+
if (active) {
|
|
12
|
+
setMouseOver(true);
|
|
13
|
+
onMouseOver?.();
|
|
14
|
+
}
|
|
15
|
+
}, [active, setMouseOver]);
|
|
10
16
|
|
|
11
|
-
const handleMouseOut = useCallback(() =>
|
|
12
|
-
active
|
|
13
|
-
|
|
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 {
|
|
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
|
-
|
|
24
|
+
variant = 'filled',
|
|
17
25
|
disabled,
|
|
18
|
-
}: { mouseOver: boolean } & WebButtonProps &
|
|
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[
|
|
24
|
-
border-color: ${theme?.color[
|
|
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 &
|
|
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
|
|
13
|
-
|
|
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
|
|
13
|
-
|
|
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 {
|
|
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>({
|
|
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
|
|
2
|
-
import { hex2rgba, PressableSurface, StyleProps } from
|
|
3
|
-
import { Platform } from
|
|
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
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
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 {
|
|
3
|
+
import { IGrid } from '@tecsinapse/react-core';
|
|
4
4
|
|
|
5
|
-
export
|
|
6
|
-
children
|
|
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
|
-
}:
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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
|
-
}:
|
|
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
|
|
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
|
|
75
|
-
...
|
|
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: `${
|
|
78
|
-
paddingTop:
|
|
79
|
-
paddingBottom:
|
|
80
|
-
paddingRight:
|
|
81
|
-
paddingLeft:
|
|
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
|
-
: { ...
|
|
82
|
+
: { ..._style, ...children?.props.style },
|
|
89
83
|
});
|
|
90
84
|
|
|
91
|
-
return wrapper ?
|
|
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
|
+
};
|