@hitachivantara/uikit-react-core 5.24.1 → 5.24.3
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/dist/cjs/components/BulkActions/BulkActions.cjs +0 -4
- package/dist/cjs/components/BulkActions/BulkActions.cjs.map +1 -1
- package/dist/cjs/components/Card/Card.cjs +2 -2
- package/dist/cjs/components/Card/Card.cjs.map +1 -1
- package/dist/cjs/components/Card/Card.styles.cjs +1 -1
- package/dist/cjs/components/Card/Card.styles.cjs.map +1 -1
- package/dist/cjs/components/CheckBoxGroup/CheckBoxGroup.styles.cjs +0 -4
- package/dist/cjs/components/CheckBoxGroup/CheckBoxGroup.styles.cjs.map +1 -1
- package/dist/cjs/components/DropDownMenu/DropDownMenu.styles.cjs +1 -1
- package/dist/cjs/components/DropDownMenu/DropDownMenu.styles.cjs.map +1 -1
- package/dist/cjs/components/FilterGroup/RightPanel/RightPanel.styles.cjs +0 -4
- package/dist/cjs/components/FilterGroup/RightPanel/RightPanel.styles.cjs.map +1 -1
- package/dist/cjs/components/Footer/Footer.cjs +2 -2
- package/dist/cjs/components/Footer/Footer.cjs.map +1 -1
- package/dist/cjs/components/GlobalActions/GlobalActions.cjs +38 -17
- package/dist/cjs/components/GlobalActions/GlobalActions.cjs.map +1 -1
- package/dist/cjs/components/GlobalActions/GlobalActions.styles.cjs +42 -89
- package/dist/cjs/components/GlobalActions/GlobalActions.styles.cjs.map +1 -1
- package/dist/cjs/components/List/List.styles.cjs +13 -28
- package/dist/cjs/components/List/List.styles.cjs.map +1 -1
- package/dist/cjs/components/ListContainer/ListContainer.cjs +8 -4
- package/dist/cjs/components/ListContainer/ListContainer.cjs.map +1 -1
- package/dist/cjs/components/ListContainer/ListContainer.styles.cjs +12 -0
- package/dist/cjs/components/ListContainer/ListContainer.styles.cjs.map +1 -0
- package/dist/cjs/components/ListContainer/ListContext/ListContext.cjs.map +1 -1
- package/dist/cjs/components/ListContainer/ListItem/ListItem.cjs +43 -31
- package/dist/cjs/components/ListContainer/ListItem/ListItem.cjs.map +1 -1
- package/dist/cjs/components/ListContainer/ListItem/ListItem.styles.cjs +47 -75
- package/dist/cjs/components/ListContainer/ListItem/ListItem.styles.cjs.map +1 -1
- package/dist/cjs/components/Loading/Loading.cjs +18 -13
- package/dist/cjs/components/Loading/Loading.cjs.map +1 -1
- package/dist/cjs/components/Loading/Loading.styles.cjs +44 -96
- package/dist/cjs/components/Loading/Loading.styles.cjs.map +1 -1
- package/dist/cjs/components/RadioGroup/RadioGroup.styles.cjs +0 -4
- package/dist/cjs/components/RadioGroup/RadioGroup.styles.cjs.map +1 -1
- package/dist/cjs/components/ScrollTo/Horizontal/ScrollToHorizontal.cjs +2 -2
- package/dist/cjs/components/ScrollTo/Horizontal/ScrollToHorizontal.cjs.map +1 -1
- package/dist/cjs/components/ScrollTo/Vertical/ScrollToVertical.cjs +2 -2
- package/dist/cjs/components/ScrollTo/Vertical/ScrollToVertical.cjs.map +1 -1
- package/dist/cjs/components/SelectionList/SelectionList.cjs +25 -15
- package/dist/cjs/components/SelectionList/SelectionList.cjs.map +1 -1
- package/dist/cjs/components/SelectionList/SelectionList.styles.cjs +41 -119
- package/dist/cjs/components/SelectionList/SelectionList.styles.cjs.map +1 -1
- package/dist/cjs/components/Stack/Stack.cjs +8 -7
- package/dist/cjs/components/Stack/Stack.cjs.map +1 -1
- package/dist/cjs/components/Stack/Stack.styles.cjs +18 -37
- package/dist/cjs/components/Stack/Stack.styles.cjs.map +1 -1
- package/dist/cjs/components/Tab/Tab.cjs +12 -8
- package/dist/cjs/components/Tab/Tab.cjs.map +1 -1
- package/dist/cjs/components/Tab/Tab.styles.cjs +53 -57
- package/dist/cjs/components/Tab/Tab.styles.cjs.map +1 -1
- package/dist/cjs/components/Table/Table.styles.cjs +6 -7
- package/dist/cjs/components/Table/Table.styles.cjs.map +1 -1
- package/dist/cjs/components/Table/TableRow/TableRow.styles.cjs +6 -22
- package/dist/cjs/components/Table/TableRow/TableRow.styles.cjs.map +1 -1
- package/dist/cjs/components/Table/hooks/useSticky.cjs +5 -1
- package/dist/cjs/components/Table/hooks/useSticky.cjs.map +1 -1
- package/dist/cjs/components/Table/utils/utils.cjs +15 -42
- package/dist/cjs/components/Table/utils/utils.cjs.map +1 -1
- package/dist/cjs/components/Tabs/Tabs.cjs +11 -8
- package/dist/cjs/components/Tabs/Tabs.cjs.map +1 -1
- package/dist/cjs/components/Tabs/Tabs.styles.cjs +16 -20
- package/dist/cjs/components/Tabs/Tabs.styles.cjs.map +1 -1
- package/dist/cjs/components/TagsInput/TagsInput.styles.cjs +4 -4
- package/dist/cjs/components/TagsInput/TagsInput.styles.cjs.map +1 -1
- package/dist/cjs/components/TextArea/TextArea.cjs +32 -21
- package/dist/cjs/components/TextArea/TextArea.cjs.map +1 -1
- package/dist/cjs/components/TextArea/TextArea.styles.cjs +45 -142
- package/dist/cjs/components/TextArea/TextArea.styles.cjs.map +1 -1
- package/dist/cjs/components/Typography/Typography.cjs +2 -2
- package/dist/cjs/components/Typography/Typography.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/NavigationSlider/NavigationSlider.styles.cjs +3 -3
- package/dist/cjs/components/VerticalNavigation/NavigationSlider/NavigationSlider.styles.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/TreeView/TreeViewItem.styles.cjs +4 -11
- package/dist/cjs/components/VerticalNavigation/TreeView/TreeViewItem.styles.cjs.map +1 -1
- package/dist/cjs/components/VerticalNavigation/TreeView/descendants.cjs +1 -9
- package/dist/cjs/components/VerticalNavigation/TreeView/descendants.cjs.map +1 -1
- package/dist/cjs/index.cjs +18 -18
- package/dist/esm/components/BulkActions/BulkActions.js +0 -4
- package/dist/esm/components/BulkActions/BulkActions.js.map +1 -1
- package/dist/esm/components/Card/Card.js +2 -2
- package/dist/esm/components/Card/Card.js.map +1 -1
- package/dist/esm/components/Card/Card.styles.js +1 -1
- package/dist/esm/components/Card/Card.styles.js.map +1 -1
- package/dist/esm/components/CheckBoxGroup/CheckBoxGroup.styles.js +0 -4
- package/dist/esm/components/CheckBoxGroup/CheckBoxGroup.styles.js.map +1 -1
- package/dist/esm/components/DropDownMenu/DropDownMenu.styles.js +1 -1
- package/dist/esm/components/DropDownMenu/DropDownMenu.styles.js.map +1 -1
- package/dist/esm/components/FilterGroup/RightPanel/RightPanel.styles.js +0 -4
- package/dist/esm/components/FilterGroup/RightPanel/RightPanel.styles.js.map +1 -1
- package/dist/esm/components/Footer/Footer.js +2 -2
- package/dist/esm/components/Footer/Footer.js.map +1 -1
- package/dist/esm/components/GlobalActions/GlobalActions.js +44 -22
- package/dist/esm/components/GlobalActions/GlobalActions.js.map +1 -1
- package/dist/esm/components/GlobalActions/GlobalActions.styles.js +42 -87
- package/dist/esm/components/GlobalActions/GlobalActions.styles.js.map +1 -1
- package/dist/esm/components/List/List.styles.js +13 -28
- package/dist/esm/components/List/List.styles.js.map +1 -1
- package/dist/esm/components/ListContainer/ListContainer.js +10 -5
- package/dist/esm/components/ListContainer/ListContainer.js.map +1 -1
- package/dist/esm/components/ListContainer/ListContainer.styles.js +12 -0
- package/dist/esm/components/ListContainer/ListContainer.styles.js.map +1 -0
- package/dist/esm/components/ListContainer/ListContext/ListContext.js.map +1 -1
- package/dist/esm/components/ListContainer/ListItem/ListItem.js +46 -33
- package/dist/esm/components/ListContainer/ListItem/ListItem.js.map +1 -1
- package/dist/esm/components/ListContainer/ListItem/ListItem.styles.js +47 -73
- package/dist/esm/components/ListContainer/ListItem/ListItem.styles.js.map +1 -1
- package/dist/esm/components/Loading/Loading.js +21 -15
- package/dist/esm/components/Loading/Loading.js.map +1 -1
- package/dist/esm/components/Loading/Loading.styles.js +44 -94
- package/dist/esm/components/Loading/Loading.styles.js.map +1 -1
- package/dist/esm/components/RadioGroup/RadioGroup.styles.js +0 -4
- package/dist/esm/components/RadioGroup/RadioGroup.styles.js.map +1 -1
- package/dist/esm/components/ScrollTo/Horizontal/ScrollToHorizontal.js +2 -2
- package/dist/esm/components/ScrollTo/Horizontal/ScrollToHorizontal.js.map +1 -1
- package/dist/esm/components/ScrollTo/Vertical/ScrollToVertical.js +2 -2
- package/dist/esm/components/ScrollTo/Vertical/ScrollToVertical.js.map +1 -1
- package/dist/esm/components/SelectionList/SelectionList.js +28 -17
- package/dist/esm/components/SelectionList/SelectionList.js.map +1 -1
- package/dist/esm/components/SelectionList/SelectionList.styles.js +41 -117
- package/dist/esm/components/SelectionList/SelectionList.styles.js.map +1 -1
- package/dist/esm/components/Stack/Stack.js +11 -9
- package/dist/esm/components/Stack/Stack.js.map +1 -1
- package/dist/esm/components/Stack/Stack.styles.js +18 -35
- package/dist/esm/components/Stack/Stack.styles.js.map +1 -1
- package/dist/esm/components/Tab/Tab.js +15 -10
- package/dist/esm/components/Tab/Tab.js.map +1 -1
- package/dist/esm/components/Tab/Tab.styles.js +53 -55
- package/dist/esm/components/Tab/Tab.styles.js.map +1 -1
- package/dist/esm/components/Table/Table.styles.js +6 -7
- package/dist/esm/components/Table/Table.styles.js.map +1 -1
- package/dist/esm/components/Table/TableRow/TableRow.styles.js +6 -22
- package/dist/esm/components/Table/TableRow/TableRow.styles.js.map +1 -1
- package/dist/esm/components/Table/hooks/useSticky.js +5 -1
- package/dist/esm/components/Table/hooks/useSticky.js.map +1 -1
- package/dist/esm/components/Table/utils/utils.js +15 -42
- package/dist/esm/components/Table/utils/utils.js.map +1 -1
- package/dist/esm/components/Tabs/Tabs.js +14 -10
- package/dist/esm/components/Tabs/Tabs.js.map +1 -1
- package/dist/esm/components/Tabs/Tabs.styles.js +16 -18
- package/dist/esm/components/Tabs/Tabs.styles.js.map +1 -1
- package/dist/esm/components/TagsInput/TagsInput.styles.js +6 -6
- package/dist/esm/components/TextArea/TextArea.js +35 -23
- package/dist/esm/components/TextArea/TextArea.js.map +1 -1
- package/dist/esm/components/TextArea/TextArea.styles.js +45 -140
- package/dist/esm/components/TextArea/TextArea.styles.js.map +1 -1
- package/dist/esm/components/Typography/Typography.js +2 -2
- package/dist/esm/components/Typography/Typography.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/NavigationSlider/NavigationSlider.styles.js +3 -3
- package/dist/esm/components/VerticalNavigation/NavigationSlider/NavigationSlider.styles.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/TreeView/TreeViewItem.styles.js +4 -11
- package/dist/esm/components/VerticalNavigation/TreeView/TreeViewItem.styles.js.map +1 -1
- package/dist/esm/components/VerticalNavigation/TreeView/descendants.js +1 -9
- package/dist/esm/components/VerticalNavigation/TreeView/descendants.js.map +1 -1
- package/dist/esm/index.js +236 -236
- package/dist/types/index.d.ts +452 -385
- package/package.json +3 -3
- package/dist/cjs/components/GlobalActions/globalActionsClasses.cjs +0 -8
- package/dist/cjs/components/GlobalActions/globalActionsClasses.cjs.map +0 -1
- package/dist/cjs/components/ListContainer/ListItem/listItemClasses.cjs +0 -8
- package/dist/cjs/components/ListContainer/ListItem/listItemClasses.cjs.map +0 -1
- package/dist/cjs/components/ListContainer/listContainerClasses.cjs +0 -8
- package/dist/cjs/components/ListContainer/listContainerClasses.cjs.map +0 -1
- package/dist/cjs/components/Loading/loadingClasses.cjs +0 -8
- package/dist/cjs/components/Loading/loadingClasses.cjs.map +0 -1
- package/dist/cjs/components/SelectionList/selectionListClasses.cjs +0 -8
- package/dist/cjs/components/SelectionList/selectionListClasses.cjs.map +0 -1
- package/dist/cjs/components/Stack/stackClasses.cjs +0 -8
- package/dist/cjs/components/Stack/stackClasses.cjs.map +0 -1
- package/dist/cjs/components/Tab/tabClasses.cjs +0 -8
- package/dist/cjs/components/Tab/tabClasses.cjs.map +0 -1
- package/dist/cjs/components/Tabs/tabsClasses.cjs +0 -8
- package/dist/cjs/components/Tabs/tabsClasses.cjs.map +0 -1
- package/dist/cjs/components/TextArea/textAreaClasses.cjs +0 -8
- package/dist/cjs/components/TextArea/textAreaClasses.cjs.map +0 -1
- package/dist/esm/components/GlobalActions/globalActionsClasses.js +0 -8
- package/dist/esm/components/GlobalActions/globalActionsClasses.js.map +0 -1
- package/dist/esm/components/ListContainer/ListItem/listItemClasses.js +0 -8
- package/dist/esm/components/ListContainer/ListItem/listItemClasses.js.map +0 -1
- package/dist/esm/components/ListContainer/listContainerClasses.js +0 -8
- package/dist/esm/components/ListContainer/listContainerClasses.js.map +0 -1
- package/dist/esm/components/Loading/loadingClasses.js +0 -8
- package/dist/esm/components/Loading/loadingClasses.js.map +0 -1
- package/dist/esm/components/SelectionList/selectionListClasses.js +0 -8
- package/dist/esm/components/SelectionList/selectionListClasses.js.map +0 -1
- package/dist/esm/components/Stack/stackClasses.js +0 -8
- package/dist/esm/components/Stack/stackClasses.js.map +0 -1
- package/dist/esm/components/Tab/tabClasses.js +0 -8
- package/dist/esm/components/Tab/tabClasses.js.map +0 -1
- package/dist/esm/components/Tabs/tabsClasses.js +0 -8
- package/dist/esm/components/Tabs/tabsClasses.js.map +0 -1
- package/dist/esm/components/TextArea/textAreaClasses.js +0 -8
- package/dist/esm/components/TextArea/textAreaClasses.js.map +0 -1
|
@@ -1,46 +1,19 @@
|
|
|
1
1
|
import { theme } from "@hitachivantara/uikit-styles";
|
|
2
|
-
const getBorderStyles = (type, color,
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
},
|
|
18
|
-
"& td:not(:first-of-type):not(:last-child)": {
|
|
19
|
-
borderTop: `1px solid ${color}`,
|
|
20
|
-
borderBottom: `1px solid ${color}`
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
if (type === "cell") {
|
|
25
|
-
return {
|
|
26
|
-
":first-of-type&": {
|
|
27
|
-
borderLeft: `1px solid ${theme.table.rowBorderColor}`,
|
|
28
|
-
borderTop: `1px solid ${theme.table.rowBorderColor}`,
|
|
29
|
-
borderBottom: `1px solid ${theme.table.rowBorderColor}`,
|
|
30
|
-
borderRadius: `${rowBorderRadius} 0 0 ${rowBorderRadius}`
|
|
31
|
-
},
|
|
32
|
-
":last-child&": {
|
|
33
|
-
borderRight: `1px solid ${theme.table.rowBorderColor}`,
|
|
34
|
-
borderTop: `1px solid ${theme.table.rowBorderColor}`,
|
|
35
|
-
borderBottom: `1px solid ${theme.table.rowBorderColor}`,
|
|
36
|
-
borderRadius: `0 ${rowBorderRadius} ${rowBorderRadius} 0`
|
|
37
|
-
},
|
|
38
|
-
":not(:first-of-type):not(:last-child)&": {
|
|
39
|
-
borderTop: `1px solid ${theme.table.rowBorderColor}`,
|
|
40
|
-
borderBottom: `1px solid ${theme.table.rowBorderColor}`
|
|
41
|
-
}
|
|
42
|
-
};
|
|
43
|
-
}
|
|
2
|
+
const getBorderStyles = (type, color = theme.table.rowBorderColor, rowBorderRadius = theme.table.rowBorderRadius) => {
|
|
3
|
+
return {
|
|
4
|
+
"& td": {
|
|
5
|
+
borderTop: `1px solid ${color}`,
|
|
6
|
+
borderBottom: `1px solid ${color}`
|
|
7
|
+
},
|
|
8
|
+
"& td:first-of-type": {
|
|
9
|
+
borderLeft: `1px solid ${color}`,
|
|
10
|
+
borderRadius: `${rowBorderRadius} 0 0 ${rowBorderRadius}`
|
|
11
|
+
},
|
|
12
|
+
"& td:last-of-type": {
|
|
13
|
+
borderRight: `1px solid ${color}`,
|
|
14
|
+
borderRadius: `0 ${rowBorderRadius} ${rowBorderRadius} 0`
|
|
15
|
+
}
|
|
16
|
+
};
|
|
44
17
|
};
|
|
45
18
|
export {
|
|
46
19
|
getBorderStyles
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../../../src/components/Table/utils/utils.ts"],"sourcesContent":["import { theme } from \"@hitachivantara/uikit-styles\";\n\nexport const getBorderStyles = (\n type:
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../../src/components/Table/utils/utils.ts"],"sourcesContent":["import { theme } from \"@hitachivantara/uikit-styles\";\n\nexport const getBorderStyles = (\n type: \"row\",\n color = theme.table.rowBorderColor,\n rowBorderRadius = theme.table.rowBorderRadius\n) => {\n return {\n \"& td\": {\n borderTop: `1px solid ${color}`,\n borderBottom: `1px solid ${color}`,\n },\n \"& td:first-of-type\": {\n borderLeft: `1px solid ${color}`,\n borderRadius: `${rowBorderRadius} 0 0 ${rowBorderRadius}`,\n },\n \"& td:last-of-type\": {\n borderRight: `1px solid ${color}`,\n borderRadius: `0 ${rowBorderRadius} ${rowBorderRadius} 0`,\n },\n };\n};\n"],"names":["getBorderStyles","type","color","theme","table","rowBorderColor","rowBorderRadius","borderTop","borderBottom","borderLeft","borderRadius","borderRight"],"mappings":";AAEaA,MAAAA,kBAAkBA,CAC7BC,MACAC,QAAQC,MAAMC,MAAMC,gBACpBC,kBAAkBH,MAAMC,MAAME,oBAC3B;AACI,SAAA;AAAA,IACL,QAAQ;AAAA,MACNC,WAAY,aAAYL;AAAAA,MACxBM,cAAe,aAAYN;AAAAA,IAC7B;AAAA,IACA,sBAAsB;AAAA,MACpBO,YAAa,aAAYP;AAAAA,MACzBQ,cAAe,GAAEJ,uBAAuBA;AAAAA,IAC1C;AAAA,IACA,qBAAqB;AAAA,MACnBK,aAAc,aAAYT;AAAAA,MAC1BQ,cAAe,KAAIJ,mBAAmBA;AAAAA,IACxC;AAAA,EAAA;AAEJ;"}
|
|
@@ -1,19 +1,22 @@
|
|
|
1
|
+
import { Tabs } from "@mui/material";
|
|
1
2
|
import { useDefaultProps } from "../../hooks/useDefaultProps.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import tabsClasses from "./tabsClasses.js";
|
|
3
|
+
import { useClasses } from "./Tabs.styles.js";
|
|
4
|
+
import { staticClasses } from "./Tabs.styles.js";
|
|
5
5
|
import { jsx } from "@emotion/react/jsx-runtime";
|
|
6
6
|
const HvTabs = (props) => {
|
|
7
7
|
const {
|
|
8
|
-
classes,
|
|
8
|
+
classes: classesProp,
|
|
9
9
|
...others
|
|
10
10
|
} = useDefaultProps("HvTabs", props);
|
|
11
|
-
|
|
11
|
+
const {
|
|
12
|
+
classes
|
|
13
|
+
} = useClasses(classesProp);
|
|
14
|
+
return /* @__PURE__ */ jsx(Tabs, {
|
|
12
15
|
classes: {
|
|
13
|
-
root:
|
|
14
|
-
flexContainer:
|
|
15
|
-
indicator:
|
|
16
|
-
scroller:
|
|
16
|
+
root: classes.root,
|
|
17
|
+
flexContainer: classes.flexContainer,
|
|
18
|
+
indicator: classes.indicator,
|
|
19
|
+
scroller: classes.scroller
|
|
17
20
|
},
|
|
18
21
|
TabIndicatorProps: {
|
|
19
22
|
children: /* @__PURE__ */ jsx("div", {})
|
|
@@ -22,6 +25,7 @@ const HvTabs = (props) => {
|
|
|
22
25
|
});
|
|
23
26
|
};
|
|
24
27
|
export {
|
|
25
|
-
HvTabs
|
|
28
|
+
HvTabs,
|
|
29
|
+
staticClasses as tabsClasses
|
|
26
30
|
};
|
|
27
31
|
//# sourceMappingURL=Tabs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tabs.js","sources":["../../../../src/components/Tabs/Tabs.tsx"],"sourcesContent":["import { TabsProps as MuiTabsProps } from \"@mui/material\";\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\
|
|
1
|
+
{"version":3,"file":"Tabs.js","sources":["../../../../src/components/Tabs/Tabs.tsx"],"sourcesContent":["import { Tabs, TabsProps as MuiTabsProps } from \"@mui/material\";\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { staticClasses, useClasses } from \"./Tabs.styles\";\n\nexport { staticClasses as tabsClasses };\n\nexport type HvTabsClasses = ExtractNames<typeof useClasses>;\n\n// Mui Tabs props: https://mui.com/material-ui/api/tabs/#props\nexport interface HvTabsProps\n extends MuiTabsProps,\n HvBaseProps<HTMLButtonElement, \"onChange\"> {\n /**\n * The value of the currently selected Tab. If you don't want any selected Tab, you can set this property to `false`.\n */\n value?: any;\n /**\n * Callback fired when the value changes.\n */\n onChange?: (event: React.SyntheticEvent, value: any) => void;\n /**\n * A Jss Object used to override or extend the component styles.\n */\n classes?: HvTabsClasses;\n}\n\n/**\n * A Tab is a graphical control element that allows multiple documents or panels to be contained within a single window.\n * Tabs can be used as a navigational widget for switching between sets of documents.\n */\nexport const HvTabs = (props: HvTabsProps) => {\n const { classes: classesProp, ...others } = useDefaultProps(\"HvTabs\", props);\n\n const { classes } = useClasses(classesProp);\n\n return (\n <Tabs\n classes={{\n root: classes.root,\n flexContainer: classes.flexContainer,\n indicator: classes.indicator,\n scroller: classes.scroller,\n }}\n TabIndicatorProps={{ children: <div /> }}\n {...others}\n />\n );\n};\n"],"names":["HvTabs","props","classes","classesProp","others","useDefaultProps","useClasses","Tabs","root","flexContainer","indicator","scroller","TabIndicatorProps","children","_jsx"],"mappings":";;;;;AAgCaA,MAAAA,SAASA,CAACC,UAAuB;AACtC,QAAA;AAAA,IAAEC,SAASC;AAAAA,IAAa,GAAGC;AAAAA,EAAAA,IAAWC,gBAAgB,UAAUJ,KAAK;AAErE,QAAA;AAAA,IAAEC;AAAAA,EAAAA,IAAYI,WAAWH,WAAW;AAE1C,6BACGI,MAAI;AAAA,IACHL,SAAS;AAAA,MACPM,MAAMN,QAAQM;AAAAA,MACdC,eAAeP,QAAQO;AAAAA,MACvBC,WAAWR,QAAQQ;AAAAA,MACnBC,UAAUT,QAAQS;AAAAA,IACpB;AAAA,IACAC,mBAAmB;AAAA,MAAEC,UAAUC,oBAAM,OAAA,EAAA;AAAA,IAAE;AAAA,IAAE,GACrCV;AAAAA,EAAAA,CACL;AAEL;"}
|
|
@@ -1,36 +1,34 @@
|
|
|
1
|
-
import _styled from "@emotion/styled/base";
|
|
2
1
|
import { theme } from "@hitachivantara/uikit-styles";
|
|
3
|
-
import {
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
// Override Mui styling: https://mui.com/material-ui/api/tabs/#css
|
|
14
|
-
"& .MuiTabs-indicator": {
|
|
2
|
+
import { createClasses } from "../../utils/classes.js";
|
|
3
|
+
const {
|
|
4
|
+
staticClasses,
|
|
5
|
+
useClasses
|
|
6
|
+
} = createClasses("HvTabs", {
|
|
7
|
+
root: {
|
|
8
|
+
minHeight: 0,
|
|
9
|
+
overflow: "visible"
|
|
10
|
+
},
|
|
11
|
+
indicator: {
|
|
15
12
|
display: "flex",
|
|
16
13
|
justifyContent: "center",
|
|
17
14
|
backgroundColor: "transparent",
|
|
18
15
|
"& > div": {
|
|
19
16
|
width: "100%",
|
|
20
|
-
backgroundColor: theme.colors.secondary
|
|
17
|
+
backgroundColor: `${theme.colors.secondary}`
|
|
21
18
|
},
|
|
22
19
|
height: 2
|
|
23
20
|
},
|
|
24
|
-
|
|
21
|
+
scroller: {
|
|
25
22
|
overflow: "visible !important"
|
|
26
23
|
},
|
|
27
|
-
|
|
24
|
+
flexContainer: {
|
|
28
25
|
"& button:first-of-type": {
|
|
29
26
|
marginLeft: "3px"
|
|
30
27
|
}
|
|
31
28
|
}
|
|
32
|
-
}
|
|
29
|
+
});
|
|
33
30
|
export {
|
|
34
|
-
|
|
31
|
+
staticClasses,
|
|
32
|
+
useClasses
|
|
35
33
|
};
|
|
36
34
|
//# sourceMappingURL=Tabs.styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tabs.styles.js","sources":["../../../../src/components/Tabs/Tabs.styles.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"Tabs.styles.js","sources":["../../../../src/components/Tabs/Tabs.styles.tsx"],"sourcesContent":["import { theme } from \"@hitachivantara/uikit-styles\";\nimport { createClasses } from \"@core/utils/classes\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvTabs\", {\n root: {\n minHeight: 0,\n overflow: \"visible\",\n },\n indicator: {\n display: \"flex\",\n justifyContent: \"center\",\n backgroundColor: \"transparent\",\n \"& > div\": {\n width: \"100%\",\n backgroundColor: `${theme.colors.secondary}`,\n },\n height: 2,\n },\n scroller: {\n overflow: \"visible !important\",\n },\n flexContainer: {\n \"& button:first-of-type\": {\n marginLeft: \"3px\",\n },\n },\n});\n"],"names":["staticClasses","useClasses","createClasses","root","minHeight","overflow","indicator","display","justifyContent","backgroundColor","width","theme","colors","secondary","height","scroller","flexContainer","marginLeft"],"mappings":";;AAGa,MAAA;AAAA,EAAEA;AAAAA,EAAeC;AAAW,IAAIC,cAAc,UAAU;AAAA,EACnEC,MAAM;AAAA,IACJC,WAAW;AAAA,IACXC,UAAU;AAAA,EACZ;AAAA,EACAC,WAAW;AAAA,IACTC,SAAS;AAAA,IACTC,gBAAgB;AAAA,IAChBC,iBAAiB;AAAA,IACjB,WAAW;AAAA,MACTC,OAAO;AAAA,MACPD,iBAAkB,GAAEE,MAAMC,OAAOC;AAAAA,IACnC;AAAA,IACAC,QAAQ;AAAA,EACV;AAAA,EACAC,UAAU;AAAA,IACRV,UAAU;AAAA,EACZ;AAAA,EACAW,eAAe;AAAA,IACb,0BAA0B;AAAA,MACxBC,YAAY;AAAA,IACd;AAAA,EACF;AACF,CAAC;"}
|
|
@@ -5,7 +5,8 @@ import tagsInputClasses from "./tagsInputClasses.js";
|
|
|
5
5
|
import { jsx } from "@emotion/react/jsx-runtime";
|
|
6
6
|
import { staticClasses } from "../BaseInput/BaseInput.styles.js";
|
|
7
7
|
import "../BaseInput/BaseInput.js";
|
|
8
|
-
import
|
|
8
|
+
import { staticClasses as staticClasses$1 } from "../ListContainer/ListItem/ListItem.styles.js";
|
|
9
|
+
import { HvListItem } from "../ListContainer/ListItem/ListItem.js";
|
|
9
10
|
import { HvTag } from "../Tag/Tag.js";
|
|
10
11
|
import { HvInput } from "../Input/Input.js";
|
|
11
12
|
import { HvFormElement } from "../Forms/FormElement/FormElement.js";
|
|
@@ -14,9 +15,8 @@ import { HvInfoMessage } from "../Forms/InfoMessage/InfoMessage.js";
|
|
|
14
15
|
import { HvCharCounter } from "../Forms/CharCounter/CharCounter.js";
|
|
15
16
|
import { HvListContainer } from "../ListContainer/ListContainer.js";
|
|
16
17
|
import { HvWarningText } from "../Forms/WarningText/WarningText.js";
|
|
17
|
-
import { HvListItem } from "../ListContainer/ListItem/ListItem.js";
|
|
18
18
|
import { HvSuggestions } from "../Forms/Suggestions/Suggestions.js";
|
|
19
|
-
import { staticClasses as staticClasses$
|
|
19
|
+
import { staticClasses as staticClasses$2 } from "../Forms/Suggestions/Suggestions.styles.js";
|
|
20
20
|
function _EMOTION_STRINGIFIED_CSS_ERROR__() {
|
|
21
21
|
return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).";
|
|
22
22
|
}
|
|
@@ -216,7 +216,7 @@ const StyledListItem = /* @__PURE__ */ _styled((props) => /* @__PURE__ */ jsx(Hv
|
|
|
216
216
|
"&:not(:last-child)": {
|
|
217
217
|
marginBottom: 2
|
|
218
218
|
},
|
|
219
|
-
[`&.${
|
|
219
|
+
[`&.${staticClasses$1.gutters}`]: {
|
|
220
220
|
padding: "0 5px"
|
|
221
221
|
},
|
|
222
222
|
...$singleLine && {
|
|
@@ -260,7 +260,7 @@ const StyledInputListItem = /* @__PURE__ */ _styled((props) => /* @__PURE__ */ j
|
|
|
260
260
|
flexGrow: 1,
|
|
261
261
|
height: 24,
|
|
262
262
|
lineHeight: "24px",
|
|
263
|
-
[`&.${
|
|
263
|
+
[`&.${staticClasses$1.gutters}`]: {
|
|
264
264
|
padding: "0 5px"
|
|
265
265
|
},
|
|
266
266
|
...$singleLine && {
|
|
@@ -337,7 +337,7 @@ const StyledSuggestions = /* @__PURE__ */ _styled((props) => /* @__PURE__ */ jsx
|
|
|
337
337
|
width: "100%",
|
|
338
338
|
position: "relative",
|
|
339
339
|
top: 59,
|
|
340
|
-
[`& .${staticClasses$
|
|
340
|
+
[`& .${staticClasses$2.root} .${staticClasses$2.list} &`]: {
|
|
341
341
|
width: "100%"
|
|
342
342
|
}
|
|
343
343
|
}, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2h2LXVpa2l0LXJlYWN0L2h2LXVpa2l0LXJlYWN0L3BhY2thZ2VzL2NvcmUvc3JjL2NvbXBvbmVudHMvVGFnc0lucHV0L1RhZ3NJbnB1dC5zdHlsZXMudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTJSaUMiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvaHYtdWlraXQtcmVhY3QvaHYtdWlraXQtcmVhY3QvcGFja2FnZXMvY29yZS9zcmMvY29tcG9uZW50cy9UYWdzSW5wdXQvVGFnc0lucHV0LnN0eWxlcy50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gXCJAZW1vdGlvbi9zdHlsZWRcIjtcblxuaW1wb3J0IHsgdGhlbWUgfSBmcm9tIFwiQGhpdGFjaGl2YW50YXJhL3Vpa2l0LXN0eWxlc1wiO1xuXG5pbXBvcnQge1xuICBIdkNoYXJDb3VudGVyLFxuICBIdkZvcm1FbGVtZW50LFxuICBIdkluZm9NZXNzYWdlLFxuICBIdkxhYmVsLFxuICBIdlN1Z2dlc3Rpb25zLFxuICBIdldhcm5pbmdUZXh0LFxuICBIdkZvcm1FbGVtZW50UHJvcHMsXG4gIEh2TGFiZWxQcm9wcyxcbiAgSHZJbmZvTWVzc2FnZVByb3BzLFxuICBIdkNoYXJDb3VudGVyUHJvcHMsXG4gIEh2V2FybmluZ1RleHRQcm9wcyxcbiAgSHZTdWdnZXN0aW9uc1Byb3BzLFxuICBzdWdnZXN0aW9uc0NsYXNzZXMsXG59IGZyb20gXCJAY29yZS9jb21wb25lbnRzL0Zvcm1zXCI7XG5pbXBvcnQgeyBIdklucHV0LCBIdklucHV0UHJvcHMgfSBmcm9tIFwiQGNvcmUvY29tcG9uZW50cy9JbnB1dFwiO1xuaW1wb3J0IHsgSHZUYWcsIEh2VGFnUHJvcHMgfSBmcm9tIFwiQGNvcmUvY29tcG9uZW50cy9UYWdcIjtcbmltcG9ydCB7IGJhc2VJbnB1dENsYXNzZXMgfSBmcm9tIFwiQGNvcmUvY29tcG9uZW50cy9CYXNlSW5wdXRcIjtcbmltcG9ydCB7XG4gIEh2TGlzdENvbnRhaW5lcixcbiAgSHZMaXN0SXRlbVByb3BzLFxuICBIdkxpc3RJdGVtLFxuICBsaXN0SXRlbUNsYXNzZXMsXG59IGZyb20gXCJAY29yZS9jb21wb25lbnRzL0xpc3RDb250YWluZXJcIjtcbmltcG9ydCB7IHRyYW5zaWVudE9wdGlvbnMgfSBmcm9tIFwiQGNvcmUvdXRpbHMvdHJhbnNpZW50T3B0aW9uc1wiO1xuXG5pbXBvcnQgdGFnc0lucHV0Q2xhc3NlcyBmcm9tIFwiLi90YWdzSW5wdXRDbGFzc2VzXCI7XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRGb3JtRWxlbWVudCA9IHN0eWxlZCgocHJvcHM6IEh2Rm9ybUVsZW1lbnRQcm9wcykgPT4gKFxuICA8SHZGb3JtRWxlbWVudCB7Li4ucHJvcHN9IC8+XG4pKSh7XG4gIGRpc3BsYXk6IFwiaW5saW5lLWJsb2NrXCIsXG4gIHdpZHRoOiBcIjEwMCVcIixcbn0pO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkTGFiZWxDb250YWluZXIgPSBzdHlsZWQoXCJkaXZcIikoe1xuICBmbG9hdDogXCJsZWZ0XCIsXG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBhbGlnbkl0ZW1zOiBcImZsZXgtc3RhcnRcIixcbn0pO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkTGFiZWwgPSBzdHlsZWQoKHByb3BzOiBIdkxhYmVsUHJvcHMpID0+IChcbiAgPEh2TGFiZWwgey4uLnByb3BzfSAvPlxuKSkoe1xuICBkaXNwbGF5OiBcImJsb2NrXCIsXG4gIGZsb2F0OiBcImxlZnRcIixcbiAgcGFkZGluZ0JvdHRvbTogXCI2cHhcIixcbn0pO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkRGVzY3JpcHRpb24gPSBzdHlsZWQoKHByb3BzOiBIdkluZm9NZXNzYWdlUHJvcHMpID0+IChcbiAgPEh2SW5mb01lc3NhZ2Ugey4uLnByb3BzfSAvPlxuKSkoe1xuICBkaXNwbGF5OiBcImJsb2NrXCIsXG4gIGZsb2F0OiBcImxlZnRcIixcbn0pO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkQ2hhckNvdW50ZXIgPSBzdHlsZWQoKHByb3BzOiBIdkNoYXJDb3VudGVyUHJvcHMpID0+IChcbiAgPEh2Q2hhckNvdW50ZXIgey4uLnByb3BzfSAvPlxuKSkoKCkgPT4gKHtcbiAgZGlzcGxheTogXCJibG9ja1wiLFxuICBmbG9hdDogXCJyaWdodFwiLFxuICB0ZXh0QWxpZ246IFwicmlnaHRcIixcbiAgbWFyZ2luQm90dG9tOiBcIjZweFwiLFxufSkpO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkVGFnc0xpc3QgPSBzdHlsZWQoXG4gIEh2TGlzdENvbnRhaW5lcixcbiAgdHJhbnNpZW50T3B0aW9uc1xuKShcbiAgKHtcbiAgICAkZGlzYWJsZWQsXG4gICAgJHNpbmdsZUxpbmUsXG4gICAgJGVycm9yLFxuICAgICRyZXNpemFibGUsXG4gICAgJGludmFsaWQsXG4gICAgJHJlYWRPbmx5LFxuICB9OiB7XG4gICAgJGRpc2FibGVkOiBib29sZWFuO1xuICAgICRzaW5nbGVMaW5lOiBib29sZWFuO1xuICAgICRlcnJvcjogYm9vbGVhbjtcbiAgICAkcmVzaXphYmxlOiBib29sZWFuO1xuICAgICRpbnZhbGlkOiBib29sZWFuO1xuICAgICRyZWFkT25seTogYm9vbGVhbjtcbiAgfSkgPT4gKHtcbiAgICBkaXNwbGF5OiBcImZsZXhcIixcbiAgICBhbGlnbkNvbnRlbnQ6IFwiZmxleC1zdGFydFwiLFxuICAgIGZsb2F0OiBcImxlZnRcIixcbiAgICBjbGVhcjogXCJib3RoXCIsXG4gICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgIG1heFdpZHRoOiBcIjEwMCVcIixcbiAgICBoZWlnaHQ6IFwiMzJweFwiLFxuICAgIHBhZGRpbmc6IDUsXG4gICAgb3ZlcmZsb3c6IFwiYXV0b1wiLFxuICAgIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG5cbiAgICBmbGV4RGlyZWN0aW9uOiBcInJvd1wiLFxuICAgIGZsZXhXcmFwOiBcIndyYXBcIixcblxuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuY29sb3JzLmF0bW8xLFxuICAgIGJvcmRlcjogYDFweCBzb2xpZCAke3RoZW1lLnRhZ3NJbnB1dC5ib3JkZXJDb2xvcn1gLFxuICAgIGJvcmRlclJhZGl1czogdGhlbWUucmFkaWkuYmFzZSxcblxuICAgIFwiJjpob3ZlclwiOiB7XG4gICAgICBjdXJzb3I6IFwidGV4dFwiLFxuICAgICAgYm9yZGVyOiBgMXB4IHNvbGlkICR7dGhlbWUudGFnc0lucHV0LmhvdmVyQ29sb3J9YCxcbiAgICB9LFxuXG4gICAgW2AmIC4ke2Jhc2VJbnB1dENsYXNzZXMuaW5wdXRSb290fWBdOiB7XG4gICAgICBib3JkZXI6IFwibm9uZVwiLFxuICAgIH0sXG5cbiAgICBcIiY6Zm9jdXMsICY6Zm9jdXMtd2l0aGluLCAmOmZvY3VzLXZpc2libGVcIjoge1xuICAgICAgb3V0bGluZUNvbG9yOiBcIiM1MkE4RUNcIixcbiAgICAgIG91dGxpbmVTdHlsZTogXCJzb2xpZFwiLFxuICAgICAgb3V0bGluZVdpZHRoOiBcIjBweFwiLFxuICAgICAgb3V0bGluZU9mZnNldDogXCItMXB4XCIsXG4gICAgICBib3hTaGFkb3c6IFwiMCAwIDAgMXB4ICM1MkE4RUMsIDAgMCAwIDRweCByZ2JhKDI5LDE1NSwyMDksLjMpXCIsXG4gICAgfSxcblxuICAgIC4uLigkZGlzYWJsZWQgJiYge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS50YWdzSW5wdXQuZGlzYWJsZWRCYWNrZ3JvdW5kQ29sb3IsXG4gICAgICBib3JkZXI6IGAxcHggc29saWQgJHt0aGVtZS5jb2xvcnMuYXRtbzR9YCxcblxuICAgICAgXCImOmZvY3VzLXdpdGhpbiwgJjpob3ZlclwiOiB7XG4gICAgICAgIGJvcmRlcjogYDFweCBzb2xpZCAke3RoZW1lLmNvbG9ycy5hdG1vNH1gLFxuICAgICAgfSxcbiAgICB9KSxcblxuICAgIC4uLigkcmVhZE9ubHkgJiYge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS50YWdzSW5wdXQucmVhZE9ubHlCYWNrZ3JvdW5kQ29sb3IsXG4gICAgICBib3JkZXI6IGAxcHggc29saWQgJHt0aGVtZS50YWdzSW5wdXQucmVhZE9ubHlCb3JkZXJDb2xvcn1gLFxuICAgICAgXCImOmhvdmVyXCI6IHtcbiAgICAgICAgYm9yZGVyOiBgMXB4IHNvbGlkICR7dGhlbWUudGFnc0lucHV0LnJlYWRPbmx5Qm9yZGVyQ29sb3J9YCxcbiAgICAgIH0sXG4gICAgfSksXG5cbiAgICAuLi4oJHNpbmdsZUxpbmUgJiYge1xuICAgICAgb3ZlcmZsb3dYOiBcImhpZGRlblwiLFxuICAgICAgb3ZlcmZsb3dZOiBcImhpZGRlblwiLFxuICAgICAgaGVpZ2h0OiAzMixcbiAgICAgIGRpc3BsYXk6IFwidGFibGUtcm93XCIsXG4gICAgICBwYWRkaW5nVG9wOiAwLFxuICAgIH0pLFxuXG4gICAgLi4uKCRlcnJvciAmJiB7XG4gICAgICBib3JkZXI6IGAxcHggc29saWQgJHt0aGVtZS5jb2xvcnMubmVnYXRpdmV9YCxcbiAgICB9KSxcblxuICAgIC4uLigkcmVzaXphYmxlICYmIHtcbiAgICAgIHdpZHRoOiBcImF1dG9cIixcbiAgICAgIHJlc2l6ZTogXCJib3RoXCIsXG4gICAgICBvdmVyZmxvdzogXCJhdXRvXCIsXG4gICAgfSksXG5cbiAgICAuLi4oJGludmFsaWQgJiYge1xuICAgICAgYm9yZGVyOiBgMXB4IHNvbGlkICR7dGhlbWUuY29sb3JzLm5lZ2F0aXZlfSFpbXBvcnRhbnRgLFxuICAgIH0pLFxuICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IFN0eWxlZEVycm9yID0gc3R5bGVkKChwcm9wczogSHZXYXJuaW5nVGV4dFByb3BzKSA9PiAoXG4gIDxIdldhcm5pbmdUZXh0IHsuLi5wcm9wc30gLz5cbikpKHtcbiAgZmxvYXQ6IFwibGVmdFwiLFxufSk7XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRMaXN0SXRlbSA9IHN0eWxlZChcbiAgKHByb3BzOiBIdkxpc3RJdGVtUHJvcHMpID0+IDxIdkxpc3RJdGVtIHsuLi5wcm9wc30gLz4sXG4gIHRyYW5zaWVudE9wdGlvbnNcbikoKHsgJHNpbmdsZUxpbmUgfTogeyAkc2luZ2xlTGluZTogYm9vbGVhbiB9KSA9PiAoe1xuICBtYXJnaW5Cb3R0b206IDIsXG4gIGhlaWdodDogMjQsXG4gIGxpbmVIZWlnaHQ6IFwiMjRweFwiLFxuICBcIiY6bm90KDpsYXN0LWNoaWxkKVwiOiB7XG4gICAgbWFyZ2luQm90dG9tOiAyLFxuICB9LFxuICBbYCYuJHtsaXN0SXRlbUNsYXNzZXMuZ3V0dGVyc31gXToge1xuICAgIHBhZGRpbmc6IFwiMCA1cHhcIixcbiAgfSxcbiAgLi4uKCRzaW5nbGVMaW5lICYmIHtcbiAgICBkaXNwbGF5OiBcInRhYmxlLWNlbGxcIixcbiAgICBwYWRkaW5nVG9wOiBcIjJweCFpbXBvcnRhbnRcIixcbiAgfSksXG59KSk7XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRUYWcgPSBzdHlsZWQoXG4gIChwcm9wczogSHZUYWdQcm9wcykgPT4gPEh2VGFnIHsuLi5wcm9wc30gLz4sXG4gIHRyYW5zaWVudE9wdGlvbnNcbikoKHsgJHNlbGVjdGVkIH06IHsgJHNlbGVjdGVkOiBib29sZWFuIH0pID0+ICh7XG4gIFtgJiAuJHt0YWdzSW5wdXRDbGFzc2VzLmNoaXBSb290fWBdOiB7XG4gICAgbWF4V2lkdGg6IFwibm9uZVwiLFxuICB9LFxuICAuLi4oJHNlbGVjdGVkICYmIHtcbiAgICBvdXRsaW5lQ29sb3I6IFwiIzUyQThFQ1wiLFxuICAgIG91dGxpbmVTdHlsZTogXCJzb2xpZFwiLFxuICAgIG91dGxpbmVXaWR0aDogXCIwcHhcIixcbiAgICBvdXRsaW5lT2Zmc2V0OiBcIi0xcHhcIixcbiAgICBib3hTaGFkb3c6IFwiMCAwIDAgMXB4ICM1MkE4RUMsIDAgMCAwIDRweCByZ2JhKDI5LDE1NSwyMDksLjMpXCIsXG4gIH0pLFxufSkpO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkSW5wdXRMaXN0SXRlbSA9IHN0eWxlZChcbiAgKHByb3BzOiBIdkxpc3RJdGVtUHJvcHMpID0+IDxIdkxpc3RJdGVtIHsuLi5wcm9wc30gLz4sXG4gIHRyYW5zaWVudE9wdGlvbnNcbikoXG4gICh7XG4gICAgJHNpbmdsZUxpbmUsXG4gICAgJGlzVGFnU2VsZWN0ZWQsXG4gIH06IHtcbiAgICAkc2luZ2xlTGluZTogYm9vbGVhbjtcbiAgICAkaXNUYWdTZWxlY3RlZDogYm9vbGVhbjtcbiAgfSkgPT4gKHtcbiAgICBkaXNwbGF5OiBcImZsZXhcIixcbiAgICBmbGV4R3JvdzogMSxcbiAgICBoZWlnaHQ6IDI0LFxuICAgIGxpbmVIZWlnaHQ6IFwiMjRweFwiLFxuICAgIFtgJi4ke2xpc3RJdGVtQ2xhc3Nlcy5ndXR0ZXJzfWBdOiB7XG4gICAgICBwYWRkaW5nOiBcIjAgNXB4XCIsXG4gICAgfSxcbiAgICAuLi4oJHNpbmdsZUxpbmUgJiYge1xuICAgICAgZGlzcGxheTogXCJ0YWJsZS1jZWxsXCIsXG4gICAgICBtaW5XaWR0aDogMTAwLFxuICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgICAgcGFkZGluZ1RvcDogXCIzcHghaW1wb3J0YW50XCIsXG4gICAgICB2ZXJ0aWNhbEFsaWduOiBcIm1pZGRsZVwiLFxuICAgIH0pLFxuICAgIC4uLigkaXNUYWdTZWxlY3RlZCAmJiB7XG4gICAgICBbYCYgLiR7YmFzZUlucHV0Q2xhc3Nlcy5pbnB1dFJvb3R9YF06IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5jb2xvcnMuYXRtbzEsXG4gICAgICB9LFxuICAgIH0pLFxuICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IFN0eWxlZElucHV0ID0gc3R5bGVkKFxuICAocHJvcHM6IEh2SW5wdXRQcm9wcykgPT4gPEh2SW5wdXQgey4uLnByb3BzfSAvPixcbiAgdHJhbnNpZW50T3B0aW9uc1xuKSgoeyAkc2luZ2xlTGluZSB9OiB7ICRzaW5nbGVMaW5lOiBib29sZWFuIH0pID0+ICh7XG4gIFtgJiAuJHtiYXNlSW5wdXRDbGFzc2VzLnJvb3R9YF06IHtcbiAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgYm9yZGVyOiBcIm5vbmVcIixcbiAgICBbYCY6aG92ZXIgLiR7dGFnc0lucHV0Q2xhc3Nlcy50YWdJbnB1dEJvcmRlckNvbnRhaW5lcn1gXToge1xuICAgICAgYmFja2dyb3VuZDogXCJub25lXCIsXG4gICAgfSxcbiAgICBbYCY6aG92ZXIgLiR7dGFnc0lucHV0Q2xhc3Nlcy50YWdJbnB1dEJvcmRlckNvbnRhaW5lcn1gXToge1xuICAgICAgYmFja2dyb3VuZDogXCJub25lXCIsXG4gICAgfSxcbiAgfSxcbiAgW2AmJiAuJHtiYXNlSW5wdXRDbGFzc2VzLmlucHV0Um9vdH1gXToge1xuICAgIG1hcmdpbkxlZnQ6IDAsXG4gICAgbWFyZ2luUmlnaHQ6IDAsXG4gICAgZmxleDogXCIxIDEgYXV0b1wiLFxuICAgIG1pbldpZHRoOiA0OCxcbiAgICBoZWlnaHQ6IDI0LFxuICAgIGxpbmVIZWlnaHQ6IFwiMjRweFwiLFxuICAgIHBhZGRpbmc6IDAsXG4gICAgYm9yZGVyOiBcIm5vbmVcIixcbiAgfSxcbiAgW2AmIC4ke2Jhc2VJbnB1dENsYXNzZXMuaW5wdXRCb3JkZXJDb250YWluZXJ9YF06IHtcbiAgICBib3JkZXI6IFwibm9uZVwiLFxuICAgIGJhY2tncm91bmQ6IFwibm9uZVwiLFxuICB9LFxuICBbYCYgLiR7YmFzZUlucHV0Q2xhc3Nlcy5pbnB1dFJvb3RGb2N1c2VkfWBdOiB7XG4gICAgb3V0bGluZTogXCJub25lIWltcG9ydGFudFwiLFxuICAgIGJveFNoYWRvdzogXCJub25lIWltcG9ydGFudFwiLFxuICB9LFxuICBbYCYgLiR7YmFzZUlucHV0Q2xhc3Nlcy5yb290fSAuJHtiYXNlSW5wdXRDbGFzc2VzLmlucHV0Um9vdFJlYWRPbmx5fWBdOiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiBcInRyYW5zcGFyZW50IFwiLFxuICAgIGJvcmRlcjogXCJub25lXCIsXG4gICAgXCImOmhvdmVyXCI6IHtcbiAgICAgIGJvcmRlcjogXCJub25lXCIsXG4gICAgfSxcbiAgfSxcbiAgW2AmJiAuJHtiYXNlSW5wdXRDbGFzc2VzLmlucHV0fWBdOiB7XG4gICAgbWFyZ2luTGVmdDogMCxcbiAgfSxcbiAgLi4uKCRzaW5nbGVMaW5lICYmIHt9KSxcbn0pKTtcblxuZXhwb3J0IGNvbnN0IFN0eWxlZFN1Z2dlc3Rpb25zID0gc3R5bGVkKChwcm9wczogSHZTdWdnZXN0aW9uc1Byb3BzKSA9PiAoXG4gIDxIdlN1Z2dlc3Rpb25zIHsuLi5wcm9wc30gLz5cbikpKHtcbiAgd2lkdGg6IFwiMTAwJVwiLFxuICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICB0b3A6IDU5LFxuICBbYCYgLiR7c3VnZ2VzdGlvbnNDbGFzc2VzLnJvb3R9IC4ke3N1Z2dlc3Rpb25zQ2xhc3Nlcy5saXN0fSAmYF06IHtcbiAgICB3aWR0aDogXCIxMDAlXCIsXG4gIH0sXG59KTtcbiJdfQ== */");
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { clsx } from "clsx";
|
|
2
1
|
import { forwardRef, useRef, useState, useMemo, useCallback, useEffect } from "react";
|
|
3
2
|
import { useForkRef } from "@mui/material";
|
|
4
3
|
import isNil from "lodash/isNil";
|
|
@@ -8,14 +7,20 @@ import { useControlled } from "../../hooks/useControlled.js";
|
|
|
8
7
|
import { useDefaultProps } from "../../hooks/useDefaultProps.js";
|
|
9
8
|
import validationState, { isInvalid } from "../Forms/FormElement/validationStates.js";
|
|
10
9
|
import { DEFAULT_ERROR_MESSAGES, validateInput, validationTypes, computeValidationState, computeValidationMessage, hasBuiltInValidations } from "../BaseInput/validations.js";
|
|
11
|
-
import {
|
|
12
|
-
import
|
|
10
|
+
import { useClasses } from "./TextArea.styles.js";
|
|
11
|
+
import { staticClasses } from "./TextArea.styles.js";
|
|
13
12
|
import { jsxs, jsx } from "@emotion/react/jsx-runtime";
|
|
13
|
+
import { HvCharCounter } from "../Forms/CharCounter/CharCounter.js";
|
|
14
|
+
import { HvFormElement } from "../Forms/FormElement/FormElement.js";
|
|
15
|
+
import { HvLabel } from "../Forms/Label/Label.js";
|
|
16
|
+
import { HvInfoMessage } from "../Forms/InfoMessage/InfoMessage.js";
|
|
17
|
+
import { HvBaseInput } from "../BaseInput/BaseInput.js";
|
|
18
|
+
import { HvWarningText } from "../Forms/WarningText/WarningText.js";
|
|
14
19
|
const HvTextArea = forwardRef((props, ref) => {
|
|
15
20
|
const {
|
|
16
21
|
id,
|
|
17
22
|
className,
|
|
18
|
-
classes,
|
|
23
|
+
classes: classesProp,
|
|
19
24
|
name,
|
|
20
25
|
label,
|
|
21
26
|
description,
|
|
@@ -50,6 +55,10 @@ const HvTextArea = forwardRef((props, ref) => {
|
|
|
50
55
|
onFocus,
|
|
51
56
|
...others
|
|
52
57
|
} = useDefaultProps("HvTextArea", props);
|
|
58
|
+
const {
|
|
59
|
+
classes,
|
|
60
|
+
cx
|
|
61
|
+
} = useClasses(classesProp);
|
|
53
62
|
const elementId = useUniqueId(id, "hvtextarea");
|
|
54
63
|
const isDirty = useRef(false);
|
|
55
64
|
const inputRef = useRef(null);
|
|
@@ -145,40 +154,43 @@ const HvTextArea = forwardRef((props, ref) => {
|
|
|
145
154
|
if (isStateInvalid) {
|
|
146
155
|
errorMessageId = canShowError ? setId(elementId, "error") : ariaErrorMessage;
|
|
147
156
|
}
|
|
148
|
-
return /* @__PURE__ */ jsxs(
|
|
157
|
+
return /* @__PURE__ */ jsxs(HvFormElement, {
|
|
149
158
|
id,
|
|
150
159
|
name,
|
|
151
160
|
status: validationState$1,
|
|
152
161
|
disabled,
|
|
153
162
|
required,
|
|
154
163
|
readOnly,
|
|
155
|
-
className:
|
|
156
|
-
|
|
164
|
+
className: cx(classes.root, {
|
|
165
|
+
[classes.resizable]: resizable,
|
|
166
|
+
[classes.disabled]: disabled,
|
|
167
|
+
[classes.invalid]: isStateInvalid
|
|
168
|
+
}, className),
|
|
157
169
|
onBlur: onContainerBlurHandler,
|
|
158
|
-
children: [(hasLabel || hasDescription) && /* @__PURE__ */ jsxs(
|
|
159
|
-
className:
|
|
160
|
-
children: [hasLabel && /* @__PURE__ */ jsx(
|
|
161
|
-
className:
|
|
170
|
+
children: [(hasLabel || hasDescription) && /* @__PURE__ */ jsxs("div", {
|
|
171
|
+
className: classes.labelContainer,
|
|
172
|
+
children: [hasLabel && /* @__PURE__ */ jsx(HvLabel, {
|
|
173
|
+
className: classes.label,
|
|
162
174
|
id: setId(id, "label"),
|
|
163
175
|
htmlFor: setId(elementId, "input"),
|
|
164
176
|
label
|
|
165
|
-
}), hasDescription && /* @__PURE__ */ jsx(
|
|
166
|
-
className:
|
|
177
|
+
}), hasDescription && /* @__PURE__ */ jsx(HvInfoMessage, {
|
|
178
|
+
className: classes.description,
|
|
167
179
|
id: setId(elementId, "description"),
|
|
168
180
|
children: description
|
|
169
181
|
})]
|
|
170
|
-
}), hasCounter && /* @__PURE__ */ jsx(
|
|
182
|
+
}), hasCounter && /* @__PURE__ */ jsx(HvCharCounter, {
|
|
171
183
|
id: setId(elementId, "charCounter"),
|
|
172
|
-
className:
|
|
184
|
+
className: classes.characterCounter,
|
|
173
185
|
separator: middleCountLabel,
|
|
174
186
|
currentCharQuantity: value.length,
|
|
175
187
|
maxCharQuantity,
|
|
176
188
|
...countCharProps
|
|
177
|
-
}), /* @__PURE__ */ jsx(
|
|
189
|
+
}), /* @__PURE__ */ jsx(HvBaseInput, {
|
|
178
190
|
classes: {
|
|
179
|
-
root:
|
|
180
|
-
input:
|
|
181
|
-
inputResizable:
|
|
191
|
+
root: classes.baseInput,
|
|
192
|
+
input: classes.input,
|
|
193
|
+
inputResizable: classes.inputResizable
|
|
182
194
|
},
|
|
183
195
|
id: hasLabel ? setId(elementId, "input") : setId(id, "input"),
|
|
184
196
|
name,
|
|
@@ -204,17 +216,17 @@ const HvTextArea = forwardRef((props, ref) => {
|
|
|
204
216
|
...inputProps
|
|
205
217
|
},
|
|
206
218
|
inputRef: forkedRef,
|
|
207
|
-
$resizable: resizable,
|
|
208
219
|
...others
|
|
209
|
-
}), canShowError && /* @__PURE__ */ jsx(
|
|
220
|
+
}), canShowError && /* @__PURE__ */ jsx(HvWarningText, {
|
|
210
221
|
id: setId(elementId, "error"),
|
|
211
|
-
className:
|
|
222
|
+
className: classes.error,
|
|
212
223
|
disableBorder: true,
|
|
213
224
|
children: validationMessage
|
|
214
225
|
})]
|
|
215
226
|
});
|
|
216
227
|
});
|
|
217
228
|
export {
|
|
218
|
-
HvTextArea
|
|
229
|
+
HvTextArea,
|
|
230
|
+
staticClasses as textAreaClasses
|
|
219
231
|
};
|
|
220
232
|
//# sourceMappingURL=TextArea.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextArea.js","sources":["../../../../src/components/TextArea/TextArea.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\n\nimport {\n useCallback,\n useRef,\n useState,\n useMemo,\n useEffect,\n forwardRef,\n} from \"react\";\n\nimport { useForkRef } from \"@mui/material\";\n\nimport isNil from \"lodash/isNil\";\n\nimport { setId } from \"@core/utils/setId\";\nimport { useUniqueId } from \"@core/hooks/useUniqueId\";\nimport { useControlled } from \"@core/hooks/useControlled\";\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\nimport validationStates, {\n isInvalid,\n} from \"@core/components/Forms/FormElement/validationStates\";\nimport { HvValidationMessages } from \"@core/types/forms\";\nimport {\n computeValidationMessage,\n computeValidationState,\n DEFAULT_ERROR_MESSAGES,\n hasBuiltInValidations,\n HvInputValidity,\n validateInput,\n validationTypes,\n} from \"@core/components/BaseInput/validations\";\nimport { HvBaseInputProps } from \"@core/components/BaseInput\";\nimport { HvCharCounterProps, HvFormStatus } from \"@core/components/Forms\";\n\nimport {\n StyledBaseInput,\n StyledCharCounter,\n StyledFormElement,\n StyledInfoMessage,\n StyledLabel,\n StyledLabelContainer,\n StyledWarningText,\n} from \"./TextArea.styles\";\nimport textAreaClasses, { HvTextAreaClasses } from \"./textAreaClasses\";\n\nexport interface HvTextAreaProps\n extends Omit<\n HvBaseInputProps,\n \"onChange\" | \"onBlur\" | \"rows\" | \"classes\" | \"onFocus\"\n > {\n /**\n * The label of the form element.\n *\n * The form element must be labeled for accessibility reasons.\n * If not provided, an aria-label or aria-labelledby must be provided instead.\n */\n label?: React.ReactNode;\n /**\n * Provide additional descriptive text for the form element.\n */\n description?: React.ReactNode;\n /**\n * The status of the form element.\n *\n * Valid is correct, invalid is incorrect and standBy means no validations have run.\n *\n * When uncontrolled and unspecified it will default to \"standBy\" and change to either \"valid\"\n * or \"invalid\" after any change to the state.\n */\n status?: HvFormStatus;\n /**\n * The error message to show when `status` is \"invalid\".\n */\n statusMessage?: React.ReactNode;\n /**\n * Text between the current char counter and max value.\n */\n middleCountLabel?: string;\n /**\n * An Object containing the various texts associated with the input.\n */\n validationMessages?: HvValidationMessages;\n /**\n * The custom validation function, it receives the value and must return\n * either `true` for valid or `false` for invalid, default validations would only\n * occur if this function is null or undefined\n */\n validation?: (value: string) => boolean;\n /**\n * The maximum allowed length of the characters, if this value is null no check\n * will be performed.\n */\n maxCharQuantity?: number;\n /**\n * The minimum allowed length of the characters, if this value is null no check\n * will be perform.\n */\n minCharQuantity?: number;\n /**\n * If `true` it should autofocus.\n */\n autoFocus?: boolean;\n /**\n * The number of rows of the text area\n */\n rows?: number;\n /**\n * If `true` the component is resizable.\n */\n resizable?: boolean;\n /**\n * Auto-scroll: automatically scroll to the end on value changes.\n * Will stop if the user scrolls up and resume if scrolled to the bottom.\n */\n autoScroll?: boolean;\n /**\n * If true it isn't possible to pass the `maxCharQuantity`\n */\n blockMax?: boolean;\n /**\n * If `true` the character counter isn't shown even if maxCharQuantity is set.\n */\n hideCounter?: boolean;\n /**\n * Props passed to the char count.\n */\n countCharProps?: Partial<HvCharCounterProps>;\n /**\n * Called back when the value is changed.\n */\n onChange?: (\n event: React.ChangeEvent<HTMLTextAreaElement>,\n value: string\n ) => void;\n /**\n * Called back when the value is changed.\n */\n onBlur?: (\n event: React.FocusEvent<HTMLTextAreaElement>,\n value: string,\n validationState: HvInputValidity\n ) => void;\n /**\n * The function that will be executed onBlur, allows checking the value state,\n * it receives the value.\n */\n onFocus?: (\n event: React.FocusEvent<HTMLTextAreaElement>,\n value: string\n ) => void;\n /**\n * A Jss Object used to override or extend the component styles applied.\n */\n classes?: HvTextAreaClasses;\n}\n\n/**\n * A text area is a multiline text input box, with an optional character counter when there is a length limit.\n */\nexport const HvTextArea = forwardRef<any, HvTextAreaProps>((props, ref) => {\n const {\n id,\n className,\n classes,\n name,\n label,\n description,\n placeholder,\n status,\n statusMessage,\n validationMessages,\n maxCharQuantity,\n minCharQuantity,\n value: valueProp,\n inputRef: inputRefProp,\n rows = 1,\n defaultValue = \"\",\n middleCountLabel = \"/\",\n countCharProps = {},\n inputProps = {},\n required = false,\n readOnly = false,\n disabled = false,\n autoFocus = false,\n resizable = false,\n autoScroll = false,\n hideCounter = false,\n blockMax = false,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\": ariaDescribedBy,\n \"aria-errormessage\": ariaErrorMessage,\n validation,\n onChange,\n onBlur,\n onFocus,\n ...others\n } = useDefaultProps(\"HvTextArea\", props);\n const elementId = useUniqueId(id, \"hvtextarea\");\n\n // Signals that the user has manually edited the input value\n const isDirty = useRef<boolean>(false);\n\n const inputRef = useRef<HTMLTextAreaElement>(null);\n const forkedRef = useForkRef(ref, inputRefProp, inputRef);\n\n const [focused, setFocused] = useState<boolean>(false);\n\n const [autoScrolling, setAutoScrolling] = useState(autoScroll);\n\n const [validationState, setValidationState] = useControlled(\n status,\n validationStates.standBy\n );\n\n const [validationMessage, setValidationMessage] = useControlled(\n statusMessage,\n \"\"\n );\n\n const [value, setValue] = useControlled(valueProp, defaultValue);\n\n const isStateInvalid = isInvalid(validationState);\n\n const isEmptyValue = value == null || value === \"\";\n\n const hasLabel = label != null;\n\n const hasDescription = description != null;\n\n const hasCounter = maxCharQuantity != null && !hideCounter;\n\n // ValidationMessages reference tends to change, as users will not memorize/useState for it;\n // Dependencies must be more explicit so we set\n const errorMessages = useMemo(\n () => ({ ...DEFAULT_ERROR_MESSAGES, ...validationMessages }),\n [validationMessages]\n );\n\n // Validates the input, sets the status and the statusMessage accordingly (if uncontrolled)\n // and returns the validity state of the input.\n const performValidation = useCallback(() => {\n const inputValidity = validateInput(\n inputRef.current,\n value,\n required,\n minCharQuantity,\n maxCharQuantity,\n validationTypes.none,\n validation\n );\n\n // This will only run if status is uncontrolled\n setValidationState(computeValidationState(inputValidity, isEmptyValue));\n\n // This will only run if statusMessage is uncontrolled\n setValidationMessage(\n computeValidationMessage(inputValidity, errorMessages)\n );\n\n return inputValidity;\n }, [\n errorMessages,\n inputRef,\n isEmptyValue,\n maxCharQuantity,\n minCharQuantity,\n required,\n setValidationMessage,\n setValidationState,\n validation,\n value,\n ]);\n\n const isOverflow = (currentValue) =>\n isNil(maxCharQuantity) ? false : currentValue.length > maxCharQuantity;\n\n /**\n * Limit the string to the maxCharQuantity length.\n *\n * @param value - string to evaluate\n * @returns {string|*} - string according the limit\n */\n const limitValue = (currentValue) => {\n if (currentValue === undefined || !blockMax) return currentValue;\n return !isOverflow(currentValue)\n ? currentValue\n : currentValue.substring(0, maxCharQuantity);\n };\n\n /**\n * Validates the text area updating the state and modifying the warning text, also executes\n * the user provided onBlur passing the current validation status and value.\n *\n * @returns {undefined}\n */\n const onContainerBlurHandler = (event) => {\n setFocused(false);\n\n const inputValidity = performValidation();\n\n onBlur?.(event, value, inputValidity);\n };\n\n /**\n * Updates the length of the string while is being inputted, also executes the user onChange\n * allowing the customization of the input if required.\n *\n * @param {String} value - The value provided by the HvInput\n */\n const onChangeHandler = (event, currentValue) => {\n isDirty.current = true;\n\n const limitedValue = blockMax ? limitValue(currentValue) : currentValue;\n\n // Set the input value (only when value is uncontrolled)\n setValue(limitedValue);\n\n onChange?.(event, limitedValue);\n };\n\n /**\n * Updates the state putting again the value from the state because the input value is\n * not automatically manage, it also executes the onFocus function from the user passing the value\n */\n const onFocusHandler = (event) => {\n setFocused(true);\n\n // Reset validation status to standBy (only when status is uncontrolled)\n setValidationState(validationStates.standBy);\n\n onFocus?.(event, value);\n };\n\n const isScrolledDown = useCallback(() => {\n const el = inputRef.current;\n return el == null || el.offsetHeight + el.scrollTop >= el.scrollHeight;\n }, [inputRef]);\n\n const scrollDown = useCallback(() => {\n const el = inputRef.current;\n if (el != null) {\n el.scrollTop = el.scrollHeight - el.clientHeight;\n }\n }, [inputRef]);\n\n const addScrollListener = useCallback(() => {\n const scrollHandler = {\n handleEvent: () => {\n setAutoScrolling(isScrolledDown());\n },\n };\n inputRef.current?.addEventListener(\"scroll\", scrollHandler);\n }, [inputRef, isScrolledDown]);\n\n useEffect(() => {\n if (autoScroll) {\n addScrollListener();\n }\n }, [autoScroll, addScrollListener]);\n\n useEffect(() => {\n if (autoScrolling) {\n scrollDown();\n }\n }, [valueProp, autoScrolling, scrollDown]);\n\n // Run initial validation after first render\n // and also when any validation condition changes\n useEffect(() => {\n if (focused || (!isDirty.current && isEmptyValue)) {\n // Skip validation if currently focused or if empty and\n // the user never manually edited the input value\n return;\n }\n\n performValidation();\n }, [focused, isEmptyValue, performValidation]);\n\n // The error message area will only be created if:\n // - an external element that provides an error message isn't identified via aria-errormessage AND\n // - both status and statusMessage properties are being controlled OR\n // - status is uncontrolled and any of the built-in validations are active\n const canShowError =\n ariaErrorMessage == null &&\n ((status !== undefined && statusMessage !== undefined) ||\n (status === undefined &&\n hasBuiltInValidations(\n required,\n validationTypes.none,\n minCharQuantity,\n // If blockMax is true maxCharQuantity will never produce an error\n // unless the value is controlled, so we can't prevent it to overflow maxCharQuantity\n maxCharQuantity != null && (blockMax !== true || value != null)\n ? maxCharQuantity\n : null,\n validation,\n inputProps\n )));\n\n let errorMessageId;\n if (isStateInvalid) {\n errorMessageId = canShowError\n ? setId(elementId, \"error\")\n : ariaErrorMessage;\n }\n\n return (\n <StyledFormElement\n id={id}\n name={name}\n status={validationState}\n disabled={disabled}\n required={required}\n readOnly={readOnly}\n className={clsx(\n textAreaClasses.root,\n classes?.root,\n className,\n resizable && clsx(textAreaClasses.resizable, classes?.resizable),\n disabled && clsx(textAreaClasses.disabled, classes?.disabled),\n isStateInvalid && clsx(textAreaClasses.invalid, classes?.invalid)\n )}\n $resizable={resizable}\n onBlur={onContainerBlurHandler}\n >\n {(hasLabel || hasDescription) && (\n <StyledLabelContainer\n className={clsx(\n textAreaClasses.labelContainer,\n classes?.labelContainer\n )}\n >\n {hasLabel && (\n <StyledLabel\n className={clsx(textAreaClasses.label, classes?.label)}\n id={setId(id, \"label\")}\n htmlFor={setId(elementId, \"input\")}\n label={label}\n />\n )}\n\n {hasDescription && (\n <StyledInfoMessage\n className={clsx(\n textAreaClasses.description,\n classes?.description\n )}\n id={setId(elementId, \"description\")}\n >\n {description}\n </StyledInfoMessage>\n )}\n </StyledLabelContainer>\n )}\n\n {hasCounter && (\n <StyledCharCounter\n id={setId(elementId, \"charCounter\")}\n className={clsx(\n textAreaClasses.characterCounter,\n classes?.characterCounter\n )}\n separator={middleCountLabel}\n currentCharQuantity={value.length}\n maxCharQuantity={maxCharQuantity}\n {...countCharProps}\n />\n )}\n\n <StyledBaseInput\n classes={{\n root: clsx(textAreaClasses.baseInput, classes?.baseInput),\n input: clsx(textAreaClasses.input, classes?.input),\n inputResizable: clsx(\n textAreaClasses.inputResizable,\n classes?.inputResizable\n ),\n }}\n id={hasLabel ? setId(elementId, \"input\") : setId(id, \"input\")}\n name={name}\n value={value}\n required={required}\n readOnly={readOnly}\n disabled={disabled}\n onChange={onChangeHandler}\n autoFocus={autoFocus}\n onFocus={onFocusHandler}\n placeholder={placeholder}\n invalid={isStateInvalid}\n resizable={resizable}\n multiline\n rows={rows}\n inputProps={{\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-invalid\": isStateInvalid ? true : undefined,\n \"aria-errormessage\": errorMessageId,\n \"aria-describedby\":\n ariaDescribedBy != null\n ? ariaDescribedBy\n : (description && setId(elementId, \"description\")) || undefined,\n \"aria-controls\": maxCharQuantity\n ? setId(elementId, \"charCounter\")\n : undefined,\n ...inputProps,\n }}\n inputRef={forkedRef}\n $resizable={resizable}\n {...others}\n />\n\n {canShowError && (\n <StyledWarningText\n id={setId(elementId, \"error\")}\n className={clsx(textAreaClasses.error, classes?.error)}\n disableBorder\n >\n {validationMessage}\n </StyledWarningText>\n )}\n </StyledFormElement>\n );\n});\n"],"names":["HvTextArea","forwardRef","props","ref","id","className","classes","name","label","description","placeholder","status","statusMessage","validationMessages","maxCharQuantity","minCharQuantity","value","valueProp","inputRef","inputRefProp","rows","defaultValue","middleCountLabel","countCharProps","inputProps","required","readOnly","disabled","autoFocus","resizable","autoScroll","hideCounter","blockMax","ariaLabel","ariaLabelledBy","ariaDescribedBy","ariaErrorMessage","validation","onChange","onBlur","onFocus","others","useDefaultProps","elementId","useUniqueId","isDirty","useRef","forkedRef","useForkRef","focused","setFocused","useState","autoScrolling","setAutoScrolling","validationState","setValidationState","useControlled","validationStates","standBy","validationMessage","setValidationMessage","setValue","isStateInvalid","isInvalid","isEmptyValue","hasLabel","hasDescription","hasCounter","errorMessages","useMemo","DEFAULT_ERROR_MESSAGES","performValidation","useCallback","inputValidity","validateInput","current","validationTypes","none","computeValidationState","computeValidationMessage","isOverflow","currentValue","isNil","length","limitValue","undefined","substring","onContainerBlurHandler","event","onChangeHandler","limitedValue","onFocusHandler","isScrolledDown","el","offsetHeight","scrollTop","scrollHeight","scrollDown","clientHeight","addScrollListener","scrollHandler","handleEvent","addEventListener","useEffect","canShowError","hasBuiltInValidations","errorMessageId","setId","StyledFormElement","clsx","textAreaClasses","root","invalid","$resizable","children","StyledLabelContainer","labelContainer","_jsx","StyledLabel","htmlFor","StyledInfoMessage","StyledCharCounter","characterCounter","separator","currentCharQuantity","StyledBaseInput","baseInput","input","inputResizable","multiline","StyledWarningText","error","disableBorder"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TextArea.js","sources":["../../../../src/components/TextArea/TextArea.tsx"],"sourcesContent":["import {\n useCallback,\n useRef,\n useState,\n useMemo,\n useEffect,\n forwardRef,\n} from \"react\";\n\nimport { useForkRef } from \"@mui/material\";\n\nimport isNil from \"lodash/isNil\";\n\nimport { setId } from \"@core/utils/setId\";\nimport { useUniqueId } from \"@core/hooks/useUniqueId\";\nimport { useControlled } from \"@core/hooks/useControlled\";\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\nimport validationStates, {\n isInvalid,\n} from \"@core/components/Forms/FormElement/validationStates\";\nimport { HvValidationMessages } from \"@core/types/forms\";\nimport {\n computeValidationMessage,\n computeValidationState,\n DEFAULT_ERROR_MESSAGES,\n hasBuiltInValidations,\n HvInputValidity,\n validateInput,\n validationTypes,\n} from \"@core/components/BaseInput/validations\";\nimport { HvBaseInput, HvBaseInputProps } from \"@core/components/BaseInput\";\nimport {\n HvCharCounter,\n HvCharCounterProps,\n HvFormElement,\n HvFormStatus,\n HvInfoMessage,\n HvLabel,\n HvWarningText,\n} from \"@core/components/Forms\";\nimport { ExtractNames } from \"@core/utils/classes\";\n\nimport { staticClasses, useClasses } from \"./TextArea.styles\";\n\nexport { staticClasses as textAreaClasses };\n\nexport type HvTextAreaClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvTextAreaProps\n extends Omit<\n HvBaseInputProps,\n \"onChange\" | \"onBlur\" | \"rows\" | \"classes\" | \"onFocus\"\n > {\n /**\n * The label of the form element.\n *\n * The form element must be labeled for accessibility reasons.\n * If not provided, an aria-label or aria-labelledby must be provided instead.\n */\n label?: React.ReactNode;\n /**\n * Provide additional descriptive text for the form element.\n */\n description?: React.ReactNode;\n /**\n * The status of the form element.\n *\n * Valid is correct, invalid is incorrect and standBy means no validations have run.\n *\n * When uncontrolled and unspecified it will default to \"standBy\" and change to either \"valid\"\n * or \"invalid\" after any change to the state.\n */\n status?: HvFormStatus;\n /**\n * The error message to show when `status` is \"invalid\".\n */\n statusMessage?: React.ReactNode;\n /**\n * Text between the current char counter and max value.\n */\n middleCountLabel?: string;\n /**\n * An Object containing the various texts associated with the input.\n */\n validationMessages?: HvValidationMessages;\n /**\n * The custom validation function, it receives the value and must return\n * either `true` for valid or `false` for invalid, default validations would only\n * occur if this function is null or undefined\n */\n validation?: (value: string) => boolean;\n /**\n * The maximum allowed length of the characters, if this value is null no check\n * will be performed.\n */\n maxCharQuantity?: number;\n /**\n * The minimum allowed length of the characters, if this value is null no check\n * will be perform.\n */\n minCharQuantity?: number;\n /**\n * If `true` it should autofocus.\n */\n autoFocus?: boolean;\n /**\n * The number of rows of the text area\n */\n rows?: number;\n /**\n * If `true` the component is resizable.\n */\n resizable?: boolean;\n /**\n * Auto-scroll: automatically scroll to the end on value changes.\n * Will stop if the user scrolls up and resume if scrolled to the bottom.\n */\n autoScroll?: boolean;\n /**\n * If true it isn't possible to pass the `maxCharQuantity`\n */\n blockMax?: boolean;\n /**\n * If `true` the character counter isn't shown even if maxCharQuantity is set.\n */\n hideCounter?: boolean;\n /**\n * Props passed to the char count.\n */\n countCharProps?: Partial<HvCharCounterProps>;\n /**\n * Called back when the value is changed.\n */\n onChange?: (\n event: React.ChangeEvent<HTMLTextAreaElement>,\n value: string\n ) => void;\n /**\n * Called back when the value is changed.\n */\n onBlur?: (\n event: React.FocusEvent<HTMLTextAreaElement>,\n value: string,\n validationState: HvInputValidity\n ) => void;\n /**\n * The function that will be executed onBlur, allows checking the value state,\n * it receives the value.\n */\n onFocus?: (\n event: React.FocusEvent<HTMLTextAreaElement>,\n value: string\n ) => void;\n /**\n * A Jss Object used to override or extend the component styles applied.\n */\n classes?: HvTextAreaClasses;\n}\n\n/**\n * A text area is a multiline text input box, with an optional character counter when there is a length limit.\n */\nexport const HvTextArea = forwardRef<any, HvTextAreaProps>((props, ref) => {\n const {\n id,\n className,\n classes: classesProp,\n name,\n label,\n description,\n placeholder,\n status,\n statusMessage,\n validationMessages,\n maxCharQuantity,\n minCharQuantity,\n value: valueProp,\n inputRef: inputRefProp,\n rows = 1,\n defaultValue = \"\",\n middleCountLabel = \"/\",\n countCharProps = {},\n inputProps = {},\n required = false,\n readOnly = false,\n disabled = false,\n autoFocus = false,\n resizable = false,\n autoScroll = false,\n hideCounter = false,\n blockMax = false,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\": ariaDescribedBy,\n \"aria-errormessage\": ariaErrorMessage,\n validation,\n onChange,\n onBlur,\n onFocus,\n ...others\n } = useDefaultProps(\"HvTextArea\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n const elementId = useUniqueId(id, \"hvtextarea\");\n\n // Signals that the user has manually edited the input value\n const isDirty = useRef<boolean>(false);\n\n const inputRef = useRef<HTMLTextAreaElement>(null);\n const forkedRef = useForkRef(ref, inputRefProp, inputRef);\n\n const [focused, setFocused] = useState<boolean>(false);\n\n const [autoScrolling, setAutoScrolling] = useState(autoScroll);\n\n const [validationState, setValidationState] = useControlled(\n status,\n validationStates.standBy\n );\n\n const [validationMessage, setValidationMessage] = useControlled(\n statusMessage,\n \"\"\n );\n\n const [value, setValue] = useControlled(valueProp, defaultValue);\n\n const isStateInvalid = isInvalid(validationState);\n\n const isEmptyValue = value == null || value === \"\";\n\n const hasLabel = label != null;\n\n const hasDescription = description != null;\n\n const hasCounter = maxCharQuantity != null && !hideCounter;\n\n // ValidationMessages reference tends to change, as users will not memorize/useState for it;\n // Dependencies must be more explicit so we set\n const errorMessages = useMemo(\n () => ({ ...DEFAULT_ERROR_MESSAGES, ...validationMessages }),\n [validationMessages]\n );\n\n // Validates the input, sets the status and the statusMessage accordingly (if uncontrolled)\n // and returns the validity state of the input.\n const performValidation = useCallback(() => {\n const inputValidity = validateInput(\n inputRef.current,\n value,\n required,\n minCharQuantity,\n maxCharQuantity,\n validationTypes.none,\n validation\n );\n\n // This will only run if status is uncontrolled\n setValidationState(computeValidationState(inputValidity, isEmptyValue));\n\n // This will only run if statusMessage is uncontrolled\n setValidationMessage(\n computeValidationMessage(inputValidity, errorMessages)\n );\n\n return inputValidity;\n }, [\n errorMessages,\n inputRef,\n isEmptyValue,\n maxCharQuantity,\n minCharQuantity,\n required,\n setValidationMessage,\n setValidationState,\n validation,\n value,\n ]);\n\n const isOverflow = (currentValue) =>\n isNil(maxCharQuantity) ? false : currentValue.length > maxCharQuantity;\n\n /**\n * Limit the string to the maxCharQuantity length.\n *\n * @param value - string to evaluate\n * @returns {string|*} - string according the limit\n */\n const limitValue = (currentValue) => {\n if (currentValue === undefined || !blockMax) return currentValue;\n return !isOverflow(currentValue)\n ? currentValue\n : currentValue.substring(0, maxCharQuantity);\n };\n\n /**\n * Validates the text area updating the state and modifying the warning text, also executes\n * the user provided onBlur passing the current validation status and value.\n *\n * @returns {undefined}\n */\n const onContainerBlurHandler = (event) => {\n setFocused(false);\n\n const inputValidity = performValidation();\n\n onBlur?.(event, value, inputValidity);\n };\n\n /**\n * Updates the length of the string while is being inputted, also executes the user onChange\n * allowing the customization of the input if required.\n *\n * @param {String} value - The value provided by the HvInput\n */\n const onChangeHandler = (event, currentValue) => {\n isDirty.current = true;\n\n const limitedValue = blockMax ? limitValue(currentValue) : currentValue;\n\n // Set the input value (only when value is uncontrolled)\n setValue(limitedValue);\n\n onChange?.(event, limitedValue);\n };\n\n /**\n * Updates the state putting again the value from the state because the input value is\n * not automatically manage, it also executes the onFocus function from the user passing the value\n */\n const onFocusHandler = (event) => {\n setFocused(true);\n\n // Reset validation status to standBy (only when status is uncontrolled)\n setValidationState(validationStates.standBy);\n\n onFocus?.(event, value);\n };\n\n const isScrolledDown = useCallback(() => {\n const el = inputRef.current;\n return el == null || el.offsetHeight + el.scrollTop >= el.scrollHeight;\n }, [inputRef]);\n\n const scrollDown = useCallback(() => {\n const el = inputRef.current;\n if (el != null) {\n el.scrollTop = el.scrollHeight - el.clientHeight;\n }\n }, [inputRef]);\n\n const addScrollListener = useCallback(() => {\n const scrollHandler = {\n handleEvent: () => {\n setAutoScrolling(isScrolledDown());\n },\n };\n inputRef.current?.addEventListener(\"scroll\", scrollHandler);\n }, [inputRef, isScrolledDown]);\n\n useEffect(() => {\n if (autoScroll) {\n addScrollListener();\n }\n }, [autoScroll, addScrollListener]);\n\n useEffect(() => {\n if (autoScrolling) {\n scrollDown();\n }\n }, [valueProp, autoScrolling, scrollDown]);\n\n // Run initial validation after first render\n // and also when any validation condition changes\n useEffect(() => {\n if (focused || (!isDirty.current && isEmptyValue)) {\n // Skip validation if currently focused or if empty and\n // the user never manually edited the input value\n return;\n }\n\n performValidation();\n }, [focused, isEmptyValue, performValidation]);\n\n // The error message area will only be created if:\n // - an external element that provides an error message isn't identified via aria-errormessage AND\n // - both status and statusMessage properties are being controlled OR\n // - status is uncontrolled and any of the built-in validations are active\n const canShowError =\n ariaErrorMessage == null &&\n ((status !== undefined && statusMessage !== undefined) ||\n (status === undefined &&\n hasBuiltInValidations(\n required,\n validationTypes.none,\n minCharQuantity,\n // If blockMax is true maxCharQuantity will never produce an error\n // unless the value is controlled, so we can't prevent it to overflow maxCharQuantity\n maxCharQuantity != null && (blockMax !== true || value != null)\n ? maxCharQuantity\n : null,\n validation,\n inputProps\n )));\n\n let errorMessageId;\n if (isStateInvalid) {\n errorMessageId = canShowError\n ? setId(elementId, \"error\")\n : ariaErrorMessage;\n }\n\n return (\n <HvFormElement\n id={id}\n name={name}\n status={validationState}\n disabled={disabled}\n required={required}\n readOnly={readOnly}\n className={cx(\n classes.root,\n {\n [classes.resizable]: resizable,\n [classes.disabled]: disabled,\n [classes.invalid]: isStateInvalid,\n },\n className\n )}\n onBlur={onContainerBlurHandler}\n >\n {(hasLabel || hasDescription) && (\n <div className={classes.labelContainer}>\n {hasLabel && (\n <HvLabel\n className={classes.label}\n id={setId(id, \"label\")}\n htmlFor={setId(elementId, \"input\")}\n label={label}\n />\n )}\n\n {hasDescription && (\n <HvInfoMessage\n className={classes.description}\n id={setId(elementId, \"description\")}\n >\n {description}\n </HvInfoMessage>\n )}\n </div>\n )}\n\n {hasCounter && (\n <HvCharCounter\n id={setId(elementId, \"charCounter\")}\n className={classes.characterCounter}\n separator={middleCountLabel}\n currentCharQuantity={value.length}\n maxCharQuantity={maxCharQuantity}\n {...countCharProps}\n />\n )}\n\n <HvBaseInput\n classes={{\n root: classes.baseInput,\n input: classes.input,\n inputResizable: classes.inputResizable,\n }}\n id={hasLabel ? setId(elementId, \"input\") : setId(id, \"input\")}\n name={name}\n value={value}\n required={required}\n readOnly={readOnly}\n disabled={disabled}\n onChange={onChangeHandler}\n autoFocus={autoFocus}\n onFocus={onFocusHandler}\n placeholder={placeholder}\n invalid={isStateInvalid}\n resizable={resizable}\n multiline\n rows={rows}\n inputProps={{\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-invalid\": isStateInvalid ? true : undefined,\n \"aria-errormessage\": errorMessageId,\n \"aria-describedby\":\n ariaDescribedBy != null\n ? ariaDescribedBy\n : (description && setId(elementId, \"description\")) || undefined,\n \"aria-controls\": maxCharQuantity\n ? setId(elementId, \"charCounter\")\n : undefined,\n ...inputProps,\n }}\n inputRef={forkedRef}\n {...others}\n />\n\n {canShowError && (\n <HvWarningText\n id={setId(elementId, \"error\")}\n className={classes.error}\n disableBorder\n >\n {validationMessage}\n </HvWarningText>\n )}\n </HvFormElement>\n );\n});\n"],"names":["HvTextArea","forwardRef","props","ref","id","className","classes","classesProp","name","label","description","placeholder","status","statusMessage","validationMessages","maxCharQuantity","minCharQuantity","value","valueProp","inputRef","inputRefProp","rows","defaultValue","middleCountLabel","countCharProps","inputProps","required","readOnly","disabled","autoFocus","resizable","autoScroll","hideCounter","blockMax","ariaLabel","ariaLabelledBy","ariaDescribedBy","ariaErrorMessage","validation","onChange","onBlur","onFocus","others","useDefaultProps","cx","useClasses","elementId","useUniqueId","isDirty","useRef","forkedRef","useForkRef","focused","setFocused","useState","autoScrolling","setAutoScrolling","validationState","setValidationState","useControlled","validationStates","standBy","validationMessage","setValidationMessage","setValue","isStateInvalid","isInvalid","isEmptyValue","hasLabel","hasDescription","hasCounter","errorMessages","useMemo","DEFAULT_ERROR_MESSAGES","performValidation","useCallback","inputValidity","validateInput","current","validationTypes","none","computeValidationState","computeValidationMessage","isOverflow","currentValue","isNil","length","limitValue","undefined","substring","onContainerBlurHandler","event","onChangeHandler","limitedValue","onFocusHandler","isScrolledDown","el","offsetHeight","scrollTop","scrollHeight","scrollDown","clientHeight","addScrollListener","scrollHandler","handleEvent","addEventListener","useEffect","canShowError","hasBuiltInValidations","errorMessageId","setId","HvFormElement","root","invalid","children","labelContainer","_jsx","HvLabel","htmlFor","HvInfoMessage","HvCharCounter","characterCounter","separator","currentCharQuantity","HvBaseInput","baseInput","input","inputResizable","multiline","HvWarningText","error","disableBorder"],"mappings":"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"}
|