@hitachivantara/uikit-react-core 5.31.0 → 5.32.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/dist/cjs/components/BreadCrumb/BreadCrumb.cjs +1 -1
- package/dist/cjs/components/BreadCrumb/BreadCrumb.cjs.map +1 -1
- package/dist/cjs/components/BreadCrumb/Page/Page.cjs +10 -8
- package/dist/cjs/components/BreadCrumb/Page/Page.cjs.map +1 -1
- package/dist/cjs/components/BreadCrumb/Page/Page.styles.cjs +3 -3
- package/dist/cjs/components/BreadCrumb/Page/Page.styles.cjs.map +1 -1
- package/dist/cjs/components/InlineEditor/InlineEditor.cjs +3 -2
- package/dist/cjs/components/InlineEditor/InlineEditor.cjs.map +1 -1
- package/dist/cjs/components/InlineEditor/InlineEditor.styles.cjs +2 -2
- package/dist/cjs/components/InlineEditor/InlineEditor.styles.cjs.map +1 -1
- package/dist/cjs/components/Section/Section.cjs +50 -0
- package/dist/cjs/components/Section/Section.cjs.map +1 -0
- package/dist/cjs/components/Section/Section.styles.cjs +40 -0
- package/dist/cjs/components/Section/Section.styles.cjs.map +1 -0
- package/dist/cjs/index.cjs +4 -0
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/esm/components/BreadCrumb/BreadCrumb.js +2 -2
- package/dist/esm/components/BreadCrumb/BreadCrumb.js.map +1 -1
- package/dist/esm/components/BreadCrumb/Page/Page.js +10 -8
- package/dist/esm/components/BreadCrumb/Page/Page.js.map +1 -1
- package/dist/esm/components/BreadCrumb/Page/Page.styles.js +3 -3
- package/dist/esm/components/BreadCrumb/Page/Page.styles.js.map +1 -1
- package/dist/esm/components/InlineEditor/InlineEditor.js +3 -2
- package/dist/esm/components/InlineEditor/InlineEditor.js.map +1 -1
- package/dist/esm/components/InlineEditor/InlineEditor.styles.js +2 -2
- package/dist/esm/components/InlineEditor/InlineEditor.styles.js.map +1 -1
- package/dist/esm/components/Section/Section.js +51 -0
- package/dist/esm/components/Section/Section.js.map +1 -0
- package/dist/esm/components/Section/Section.styles.js +40 -0
- package/dist/esm/components/Section/Section.styles.js.map +1 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/types/index.d.ts +54 -3
- package/package.json +5 -5
|
@@ -47,7 +47,7 @@ const HvBreadCrumb = (props) => {
|
|
|
47
47
|
return /* @__PURE__ */ jsxRuntime.jsx(PathElement.HvPathElement, { classes: {
|
|
48
48
|
centerContainer: classes.centerContainer,
|
|
49
49
|
separatorContainer: classes.separatorContainer
|
|
50
|
-
}, last: isLast, children: React.isValidElement(elem) && elem || isLast && /* @__PURE__ */ jsxRuntime.jsx(Typography.HvTypography, { className: classes.currentPage, variant: "body", children: utils.removeExtension(elem.label) }) || /* @__PURE__ */ jsxRuntime.jsx(Page.
|
|
50
|
+
}, last: isLast, children: React.isValidElement(elem) && elem || isLast && /* @__PURE__ */ jsxRuntime.jsx(Typography.HvTypography, { className: classes.currentPage, variant: "body", children: utils.removeExtension(elem.label) }) || /* @__PURE__ */ jsxRuntime.jsx(Page.HvBreadCrumbPage, { elem, classes: {
|
|
51
51
|
a: classes.a,
|
|
52
52
|
link: classes.link
|
|
53
53
|
}, component, onClick }) }, key);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BreadCrumb.cjs","sources":["../../../../src/components/BreadCrumb/BreadCrumb.tsx"],"sourcesContent":["import { isValidElement, MouseEvent } from \"react\";\n\nimport isNil from \"lodash/isNil\";\n\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { HvDropDownMenuProps } from \"@core/components/DropDownMenu\";\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { HvTypography } from \"@core/components/Typography\";\n\nimport { HvPathElement } from \"./PathElement\";\nimport {
|
|
1
|
+
{"version":3,"file":"BreadCrumb.cjs","sources":["../../../../src/components/BreadCrumb/BreadCrumb.tsx"],"sourcesContent":["import { isValidElement, MouseEvent } from \"react\";\n\nimport isNil from \"lodash/isNil\";\n\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { HvDropDownMenuProps } from \"@core/components/DropDownMenu\";\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { HvTypography } from \"@core/components/Typography\";\n\nimport { HvPathElement } from \"./PathElement\";\nimport { HvBreadCrumbPage } from \"./Page\";\nimport { staticClasses, useClasses } from \"./BreadCrumb.styles\";\nimport { pathWithSubMenu, removeExtension } from \"./utils\";\nimport { HvBreadCrumbPathElement } from \"./types\";\n\nexport { staticClasses as breadCrumbClasses };\n\nexport type HvBreadCrumbClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvBreadCrumbProps\n extends HvBaseProps<HTMLDivElement, \"onClick\"> {\n /** List of breadcrumb. */\n listRoute?: HvBreadCrumbPathElement[];\n /** URL to build the breadcrumb. */\n url?: string;\n /** Number of pages visible. */\n maxVisible?: number;\n /** The component used for the link node. Either a string to use a DOM element or a component. */\n component?: React.ElementType;\n /** Function passed to the component. If defined the component prop is used as the link node. */\n onClick?: (event: MouseEvent<HTMLElement>, data: any) => void;\n /** Props passed down to the DropDownMenu sub-menu component. */\n dropDownMenuProps?: Partial<HvDropDownMenuProps>;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvBreadCrumbClasses;\n}\n\n/**\n * A breadcrumb is a graphical control element frequently used as a navigational aid.\n */\nexport const HvBreadCrumb = (props: HvBreadCrumbProps) => {\n const {\n classes: classesProp,\n className,\n id,\n listRoute = [],\n maxVisible,\n url,\n onClick,\n component,\n dropDownMenuProps,\n ...others\n } = useDefaultProps(\"HvBreadCrumb\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n const maxVisibleElem = maxVisible && maxVisible < 2 ? 2 : maxVisible;\n let listPath = listRoute.slice();\n\n // build the listPath object list\n if (!isNil(url)) {\n listPath = [];\n\n // get the domain\n const baseUrl = url.match(/^.*\\/\\/[^/]+/);\n\n // get url without domain\n const urlWithoutDomain = url.replace(/^.*\\/\\/[^/]+/, \"\");\n\n const pathNames = urlWithoutDomain.split(\"/\").filter((x) => x);\n\n pathNames.map((elem, index) =>\n listPath.push({\n label: decodeURI(elem),\n path: `${baseUrl}/${pathNames.slice(0, index + 1).join(\"/\")}`,\n })\n );\n }\n\n const breadcrumbPath =\n maxVisibleElem && listPath.length > maxVisibleElem\n ? pathWithSubMenu(\n id,\n listPath,\n maxVisibleElem,\n onClick,\n dropDownMenuProps\n )\n : listPath;\n\n return (\n <nav id={id} className={cx(classes.root, className)} {...others}>\n <ol className={classes.orderedList}>\n {listPath.map((elem, index) => {\n const key = `key_${index}`;\n const isLast = index === breadcrumbPath.length - 1;\n\n return (\n <HvPathElement\n classes={{\n centerContainer: classes.centerContainer,\n separatorContainer: classes.separatorContainer,\n }}\n key={key}\n last={isLast}\n >\n {(isValidElement(elem) && elem) ||\n (isLast && (\n <HvTypography className={classes.currentPage} variant=\"body\">\n {removeExtension(elem.label)}\n </HvTypography>\n )) || (\n <HvBreadCrumbPage\n elem={elem}\n classes={{\n a: classes.a,\n link: classes.link,\n }}\n component={component}\n onClick={onClick}\n />\n )}\n </HvPathElement>\n );\n })}\n </ol>\n </nav>\n );\n};\n"],"names":["HvBreadCrumb","props","classes","classesProp","className","id","listRoute","maxVisible","url","onClick","component","dropDownMenuProps","others","useDefaultProps","cx","useClasses","maxVisibleElem","listPath","slice","isNil","baseUrl","match","urlWithoutDomain","replace","pathNames","split","filter","x","map","elem","index","push","label","decodeURI","path","join","breadcrumbPath","length","pathWithSubMenu","jsx","root","orderedList","key","isLast","HvPathElement","centerContainer","separatorContainer","isValidElement","HvTypography","currentPage","removeExtension","HvBreadCrumbPage","a","link"],"mappings":";;;;;;;;;;;;;AAyCaA,MAAAA,eAAeA,CAACC,UAA6B;AAClD,QAAA;AAAA,IACJC,SAASC;AAAAA,IACTC;AAAAA,IACAC;AAAAA,IACAC,YAAY,CAAE;AAAA,IACdC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACA,GAAGC;AAAAA,EAAAA,IACDC,gBAAgB,gBAAA,gBAAgBZ,KAAK;AAEnC,QAAA;AAAA,IAAEC;AAAAA,IAASY;AAAAA,EAAAA,IAAOC,kBAAAA,WAAWZ,WAAW;AAE9C,QAAMa,iBAAiBT,cAAcA,aAAa,IAAI,IAAIA;AACtDU,MAAAA,WAAWX,UAAUY;AAGrB,MAAA,CAACC,eAAAA,QAAMX,GAAG,GAAG;AACfS,eAAW,CAAA;AAGLG,UAAAA,UAAUZ,IAAIa,MAAM,cAAc;AAGxC,UAAMC,mBAAmBd,IAAIe,QAAQ,gBAAgB,EAAE;AAEvD,UAAMC,YAAYF,iBAAiBG,MAAM,GAAG,EAAEC,OAAQC,OAAMA,CAAC;AAE7DH,cAAUI,IAAI,CAACC,MAAMC,UACnBb,SAASc,KAAK;AAAA,MACZC,OAAOC,UAAUJ,IAAI;AAAA,MACrBK,MAAO,GAAEd,OAAQ,IAAGI,UAAUN,MAAM,GAAGY,QAAQ,CAAC,EAAEK,KAAK,GAAG,CAAE;AAAA,IAC7D,CAAA,CACH;AAAA,EACF;AAEMC,QAAAA,iBACJpB,kBAAkBC,SAASoB,SAASrB,iBAChCsB,MAAAA,gBACEjC,IACAY,UACAD,gBACAP,SACAE,iBACF,IACAM;AAGJ,SAAAsB,+BAAC,SAAI,IAAQ,WAAWzB,GAAGZ,QAAQsC,MAAMpC,SAAS,GAAOQ,GAAAA,QACvD,UAAC2B,2BAAAA,IAAA,MAAA,EAAG,WAAWrC,QAAQuC,aACpBxB,mBAASW,IAAI,CAACC,MAAMC,UAAU;AACvBY,UAAAA,MAAO,OAAMZ,KAAM;AACnBa,UAAAA,SAASb,UAAUM,eAAeC,SAAS;AAG/C,WAAAE,2BAAA,IAACK,6BACC,SAAS;AAAA,MACPC,iBAAiB3C,QAAQ2C;AAAAA,MACzBC,oBAAoB5C,QAAQ4C;AAAAA,IAC9B,GAEA,MAAMH,QAEJI,UAAAA,MAAAA,eAAelB,IAAI,KAAKA,QACvBc,UACCJ,2BAAA,IAACS,yBAAa,EAAA,WAAW9C,QAAQ+C,aAAa,SAAQ,QACnDC,UAAAA,MAAAA,gBAAgBrB,KAAKG,KAAK,EAC7B,CAAA,KAEAO,2BAAAA,IAACY,KAAAA,kBACC,EAAA,MACA,SAAS;AAAA,MACPC,GAAGlD,QAAQkD;AAAAA,MACXC,MAAMnD,QAAQmD;AAAAA,IAEhB,GAAA,WACA,QAEH,CAAA,EAAA,GAlBEX,GAmBP;AAAA,EAAA,CAEH,GACH,EACF,CAAA;AAEJ;;;"}
|
|
@@ -3,13 +3,15 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const jsxRuntime = require("@emotion/react/jsx-runtime");
|
|
4
4
|
const Page_styles = require("./Page.styles.cjs");
|
|
5
5
|
const OverflowTooltip = require("../../OverflowTooltip/OverflowTooltip.cjs");
|
|
6
|
+
const useDefaultProps = require("../../../hooks/useDefaultProps.cjs");
|
|
6
7
|
const Typography = require("../../Typography/Typography.cjs");
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
const HvBreadCrumbPage = (props) => {
|
|
9
|
+
const {
|
|
10
|
+
component,
|
|
11
|
+
onClick,
|
|
12
|
+
elem,
|
|
13
|
+
classes: classesProp
|
|
14
|
+
} = useDefaultProps.useDefaultProps("HvBreadCrumbPage", props);
|
|
13
15
|
const {
|
|
14
16
|
classes,
|
|
15
17
|
cx
|
|
@@ -25,6 +27,6 @@ const HvPage = ({
|
|
|
25
27
|
};
|
|
26
28
|
return /* @__PURE__ */ jsxRuntime.jsx(Typography.HvTypography, { noWrap: true, variant: "label", component: component || "a", href: elem.path, onClick: onClick && handleClick, className: cx(classes.link, classes.label, classes.a), ...others, children: /* @__PURE__ */ jsxRuntime.jsx(OverflowTooltip.HvOverflowTooltip, { data: elem.label }) });
|
|
27
29
|
};
|
|
28
|
-
exports.
|
|
29
|
-
exports.
|
|
30
|
+
exports.breadCrumbPageClasses = Page_styles.staticClasses;
|
|
31
|
+
exports.HvBreadCrumbPage = HvBreadCrumbPage;
|
|
30
32
|
//# sourceMappingURL=Page.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Page.cjs","sources":["../../../../../src/components/BreadCrumb/Page/Page.tsx"],"sourcesContent":["import { MouseEvent } from \"react\";\n\nimport { HvTypography } from \"@core/components/Typography\";\nimport { HvOverflowTooltip } from \"@core/components/OverflowTooltip\";\nimport { ExtractNames } from \"@core/utils/classes\";\n\nimport { HvBreadCrumbPathElement } from \"../types\";\nimport { staticClasses, useClasses } from \"./Page.styles\";\n\nexport { staticClasses as
|
|
1
|
+
{"version":3,"file":"Page.cjs","sources":["../../../../../src/components/BreadCrumb/Page/Page.tsx"],"sourcesContent":["import { MouseEvent } from \"react\";\n\nimport { HvTypography } from \"@core/components/Typography\";\nimport { HvOverflowTooltip } from \"@core/components/OverflowTooltip\";\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { useDefaultProps } from \"@core/hooks\";\n\nimport { HvBreadCrumbPathElement } from \"../types\";\nimport { staticClasses, useClasses } from \"./Page.styles\";\n\nexport { staticClasses as breadCrumbPageClasses };\n\nexport type HvBreadCrumbPageClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvBreadCrumbPageProps {\n component?: React.ElementType;\n onClick?: (event: MouseEvent<HTMLElement>, data: any) => void;\n elem: HvBreadCrumbPathElement;\n classes?: HvBreadCrumbPageClasses;\n}\n\nexport const HvBreadCrumbPage = (props: HvBreadCrumbPageProps) => {\n const {\n component,\n onClick,\n elem,\n classes: classesProp,\n } = useDefaultProps(\"HvBreadCrumbPage\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n const { label, path, ...others } = elem;\n\n const handleClick = (event: MouseEvent<HTMLElement>) => {\n event.preventDefault();\n onClick?.(event, elem);\n };\n\n return (\n <HvTypography\n noWrap\n variant=\"label\"\n component={component || \"a\"}\n href={elem.path}\n onClick={onClick && handleClick}\n className={cx(classes.link, classes.label, classes.a)}\n {...others}\n >\n <HvOverflowTooltip data={elem.label} />\n </HvTypography>\n );\n};\n"],"names":["HvBreadCrumbPage","props","component","onClick","elem","classes","classesProp","useDefaultProps","cx","useClasses","label","path","others","handleClick","event","preventDefault","jsx","HvTypography","link","a","HvOverflowTooltip"],"mappings":";;;;;;;AAqBaA,MAAAA,mBAAmBA,CAACC,UAAiC;AAC1D,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC,SAASC;AAAAA,EAAAA,IACPC,gBAAgB,gBAAA,oBAAoBN,KAAK;AAEvC,QAAA;AAAA,IAAEI;AAAAA,IAASG;AAAAA,EAAAA,IAAOC,YAAAA,WAAWH,WAAW;AAExC,QAAA;AAAA,IAAEI;AAAAA,IAAOC;AAAAA,IAAM,GAAGC;AAAAA,EAAWR,IAAAA;AAE7BS,QAAAA,cAAcA,CAACC,UAAmC;AACtDA,UAAMC,eAAe;AACrBZ,uCAAUW,OAAOV;AAAAA,EAAI;AAGvB,SACGY,2BAAAA,IAAAC,WAAAA,cAAA,EACC,QAAM,MACN,SAAQ,SACR,WAAWf,aAAa,KACxB,MAAME,KAAKO,MACX,SAASR,WAAWU,aACpB,WAAWL,GAAGH,QAAQa,MAAMb,QAAQK,OAAOL,QAAQc,CAAC,GAChDP,GAAAA,QAEJ,UAACI,2BAAA,IAAAI,gBAAA,mBAAA,EAAkB,MAAMhB,KAAKM,OAAM,EACtC,CAAA;AAEJ;;;"}
|
|
@@ -6,7 +6,7 @@ const focusUtils = require("../../../utils/focusUtils.cjs");
|
|
|
6
6
|
const {
|
|
7
7
|
staticClasses,
|
|
8
8
|
useClasses
|
|
9
|
-
} = classes.createClasses("
|
|
9
|
+
} = classes.createClasses("HvBreadCrumbPage", {
|
|
10
10
|
link: {
|
|
11
11
|
padding: `8px ${uikitStyles.theme.space.xs}`,
|
|
12
12
|
borderRadius: uikitStyles.theme.radii.base,
|
|
@@ -14,10 +14,10 @@ const {
|
|
|
14
14
|
textTransform: "capitalize",
|
|
15
15
|
"&:hover": {
|
|
16
16
|
cursor: "pointer",
|
|
17
|
-
backgroundColor: uikitStyles.theme.colors.
|
|
17
|
+
backgroundColor: uikitStyles.theme.colors.primary_20
|
|
18
18
|
},
|
|
19
19
|
"&:focus": {
|
|
20
|
-
backgroundColor: uikitStyles.theme.colors.
|
|
20
|
+
backgroundColor: uikitStyles.theme.colors.primary_20
|
|
21
21
|
},
|
|
22
22
|
"&:focus-visible": {
|
|
23
23
|
...focusUtils.outlineStyles
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Page.styles.cjs","sources":["../../../../../src/components/BreadCrumb/Page/Page.styles.tsx"],"sourcesContent":["import { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { createClasses } from \"@core/utils/classes\";\nimport { outlineStyles } from \"@core/utils/focusUtils\";\n\nexport const { staticClasses, useClasses } = createClasses(\"
|
|
1
|
+
{"version":3,"file":"Page.styles.cjs","sources":["../../../../../src/components/BreadCrumb/Page/Page.styles.tsx"],"sourcesContent":["import { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { createClasses } from \"@core/utils/classes\";\nimport { outlineStyles } from \"@core/utils/focusUtils\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvBreadCrumbPage\", {\n link: {\n padding: `8px ${theme.space.xs}`,\n borderRadius: theme.radii.base,\n maxWidth: 170 + 16,\n textTransform: \"capitalize\",\n \"&:hover\": {\n cursor: \"pointer\",\n backgroundColor: theme.colors.primary_20,\n },\n \"&:focus\": {\n backgroundColor: theme.colors.primary_20,\n },\n \"&:focus-visible\": {\n ...outlineStyles,\n },\n },\n label: {},\n a: {},\n});\n"],"names":["staticClasses","useClasses","createClasses","link","padding","theme","space","xs","borderRadius","radii","base","maxWidth","textTransform","cursor","backgroundColor","colors","primary_20","outlineStyles","label","a"],"mappings":";;;;;AAKa,MAAA;AAAA,EAAEA;AAAAA,EAAeC;AAAW,IAAIC,QAAAA,cAAc,oBAAoB;AAAA,EAC7EC,MAAM;AAAA,IACJC,SAAU,OAAMC,YAAMC,MAAAA,MAAMC,EAAG;AAAA,IAC/BC,cAAcH,YAAAA,MAAMI,MAAMC;AAAAA,IAC1BC,UAAU,MAAM;AAAA,IAChBC,eAAe;AAAA,IACf,WAAW;AAAA,MACTC,QAAQ;AAAA,MACRC,iBAAiBT,YAAAA,MAAMU,OAAOC;AAAAA,IAChC;AAAA,IACA,WAAW;AAAA,MACTF,iBAAiBT,YAAAA,MAAMU,OAAOC;AAAAA,IAChC;AAAA,IACA,mBAAmB;AAAA,MACjB,GAAGC,WAAAA;AAAAA,IACL;AAAA,EACF;AAAA,EACAC,OAAO,CAAC;AAAA,EACRC,GAAG,CAAC;AACN,CAAC;;;"}
|
|
@@ -26,6 +26,7 @@ const HvInlineEditor = (props) => {
|
|
|
26
26
|
onKeyDown,
|
|
27
27
|
buttonProps,
|
|
28
28
|
typographyProps,
|
|
29
|
+
disabled,
|
|
29
30
|
...others
|
|
30
31
|
} = useDefaultProps.useDefaultProps("HvInlineEditor", props);
|
|
31
32
|
const {
|
|
@@ -71,7 +72,7 @@ const HvInlineEditor = (props) => {
|
|
|
71
72
|
setValue(val);
|
|
72
73
|
onChange == null ? void 0 : onChange(event, val);
|
|
73
74
|
};
|
|
74
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cx(classes.root, className), children: editMode ? /* @__PURE__ */ jsxRuntime.jsx(InputComponent, { inputRef, classes: {
|
|
75
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cx(classes.root, className), children: editMode && !disabled ? /* @__PURE__ */ jsxRuntime.jsx(InputComponent, { inputRef, classes: {
|
|
75
76
|
root: classes.inputRoot,
|
|
76
77
|
input: classes.input,
|
|
77
78
|
inputBorderContainer: classes.inputBorderContainer
|
|
@@ -84,7 +85,7 @@ const HvInlineEditor = (props) => {
|
|
|
84
85
|
[classes.iconVisible]: showIcon
|
|
85
86
|
}) }), className: cx(classes.button, {
|
|
86
87
|
[classes.largeText]: parseInt(lineHeight, 10) >= 28
|
|
87
|
-
}), onClick: handleClick, ...buttonProps, children: /* @__PURE__ */ jsxRuntime.jsx(Typography.HvTypography, { variant, noWrap: true, className: cx(classes.text, {
|
|
88
|
+
}), onClick: handleClick, disabled, ...buttonProps, children: /* @__PURE__ */ jsxRuntime.jsx(Typography.HvTypography, { variant, noWrap: true, className: cx(classes.text, {
|
|
88
89
|
[classes.textEmpty]: !value
|
|
89
90
|
}), ...typographyProps, children: value || placeholder }) }) });
|
|
90
91
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InlineEditor.cjs","sources":["../../../../src/components/InlineEditor/InlineEditor.tsx"],"sourcesContent":["import React, { useLayoutEffect, useRef, useState } from \"react\";\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\n\nimport { Edit } from \"@hitachivantara/uikit-react-icons\";\n\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { useControlled } from \"@core/hooks/useControlled\";\nimport { useTheme } from \"@core/hooks/useTheme\";\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { isKey } from \"@core/utils/keyboardUtils\";\nimport { HvButtonProps, HvButton } from \"@core/components/Button\";\nimport {\n HvTypographyVariants,\n HvTypographyProps,\n HvTypography,\n} from \"@core/components/Typography\";\nimport { HvInput, HvInputProps } from \"@core/components/Input\";\n\nimport { staticClasses, useClasses } from \"./InlineEditor.styles\";\n\nexport { staticClasses as inlineEditorClasses };\n\nexport type HvInlineEditorClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvInlineEditorProps\n extends HvBaseProps<HTMLDivElement, \"onBlur\" | \"onChange\"> {\n /** The value of the form element. */\n value?: string;\n /** Whether the Edit icon should always be visible */\n showIcon?: boolean;\n /** Component to use as the input. The component \"inherit\" from `HvBaseInput` (such as `HvInput` or `HvTextArea`) */\n component?: React.ElementType;\n /** Variant of the HvTypography to display */\n variant?: HvTypographyVariants;\n /** Called when the input is blurred. */\n onBlur?: (\n event: React.FocusEvent<HTMLTextAreaElement | HTMLInputElement>,\n value: string\n ) => void;\n /** Called when the input value changes. */\n onChange?: (event: React.SyntheticEvent, value: string) => void;\n /** Props passed to the HvButton component */\n buttonProps?: HvButtonProps;\n /** Props passed to the HvTypography text component */\n typographyProps?: HvTypographyProps;\n /** A Jss Object used to override or extend the styles applied to the empty state component. */\n classes?: HvInlineEditorClasses;\n}\n\n/**\n * An Inline Editor allows the user to edit a record without making a major switch\n * between viewing and editing, making it an efficient method of updating a record.\n */\nexport const HvInlineEditor = (props: HvInlineEditorProps) => {\n const {\n className,\n classes: classesProp,\n value: valueProp,\n defaultValue,\n showIcon,\n component: InputComponent = HvInput,\n variant = \"body\",\n placeholder = \"Enter text\",\n onBlur,\n onChange,\n onKeyDown,\n buttonProps,\n typographyProps,\n ...others\n } = useDefaultProps(\"HvInlineEditor\", props);\n\n const { classes, cx } = useClasses(classesProp);\n const [value, setValue] = useControlled(valueProp, defaultValue);\n const [editMode, setEditMode] = useState(false);\n const [cachedValue, setCachedValue] = useState(value);\n const inputRef = useRef<HTMLInputElement>();\n const { activeTheme } = useTheme();\n\n const typographyStyles = activeTheme?.typography[variant] || {};\n const { lineHeight } = typographyStyles;\n\n useLayoutEffect(() => {\n const input = inputRef.current;\n if (editMode && input) {\n input.focus();\n input.select();\n }\n }, [editMode]);\n\n const handleClick = () => {\n setEditMode(true);\n setCachedValue(value);\n };\n\n const handleBlur: HvInputProps[\"onBlur\"] = (event) => {\n setEditMode(false);\n\n const newValue = value || cachedValue; // empty values should be ignored\n setValue(newValue);\n onBlur?.(event, newValue);\n };\n\n const handleKeyDown: HvInputProps[\"onKeyDown\"] = (event) => {\n if (isKey(event, \"Esc\")) {\n setEditMode(false);\n setValue(cachedValue);\n }\n onKeyDown?.(event as any);\n };\n\n const handleChange: HvInputProps[\"onChange\"] = (event, val) => {\n setValue(val);\n onChange?.(event, val);\n };\n\n return (\n <div className={cx(classes.root, className)}>\n {editMode ? (\n <InputComponent\n inputRef={inputRef}\n classes={{\n root: classes.inputRoot,\n input: classes.input,\n inputBorderContainer: classes.inputBorderContainer,\n }}\n inputProps={{\n style: {\n ...typographyStyles,\n height: InputComponent === HvInput ? lineHeight : undefined,\n },\n }}\n value={value}\n onBlur={handleBlur}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n {...others}\n />\n ) : (\n <HvButton\n variant=\"secondaryGhost\"\n overrideIconColors={false}\n endIcon={\n <Edit\n color=\"secondary_60\"\n role=\"none\"\n className={cx(classes.icon, {
|
|
1
|
+
{"version":3,"file":"InlineEditor.cjs","sources":["../../../../src/components/InlineEditor/InlineEditor.tsx"],"sourcesContent":["import React, { useLayoutEffect, useRef, useState } from \"react\";\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\n\nimport { Edit } from \"@hitachivantara/uikit-react-icons\";\n\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { useControlled } from \"@core/hooks/useControlled\";\nimport { useTheme } from \"@core/hooks/useTheme\";\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { isKey } from \"@core/utils/keyboardUtils\";\nimport { HvButtonProps, HvButton } from \"@core/components/Button\";\nimport {\n HvTypographyVariants,\n HvTypographyProps,\n HvTypography,\n} from \"@core/components/Typography\";\nimport { HvInput, HvInputProps } from \"@core/components/Input\";\n\nimport { staticClasses, useClasses } from \"./InlineEditor.styles\";\n\nexport { staticClasses as inlineEditorClasses };\n\nexport type HvInlineEditorClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvInlineEditorProps\n extends HvBaseProps<HTMLDivElement, \"onBlur\" | \"onChange\"> {\n /** The value of the form element. */\n value?: string;\n /** Whether the Edit icon should always be visible */\n showIcon?: boolean;\n /** Component to use as the input. The component \"inherit\" from `HvBaseInput` (such as `HvInput` or `HvTextArea`) */\n component?: React.ElementType;\n /** Variant of the HvTypography to display */\n variant?: HvTypographyVariants;\n /** Called when the input is blurred. */\n onBlur?: (\n event: React.FocusEvent<HTMLTextAreaElement | HTMLInputElement>,\n value: string\n ) => void;\n /** Called when the input value changes. */\n onChange?: (event: React.SyntheticEvent, value: string) => void;\n /** Props passed to the HvButton component */\n buttonProps?: HvButtonProps;\n /** Props passed to the HvTypography text component */\n typographyProps?: HvTypographyProps;\n /** Whether the editor is disabled or not. */\n disabled?: boolean;\n /** A Jss Object used to override or extend the styles applied to the empty state component. */\n classes?: HvInlineEditorClasses;\n}\n\n/**\n * An Inline Editor allows the user to edit a record without making a major switch\n * between viewing and editing, making it an efficient method of updating a record.\n */\nexport const HvInlineEditor = (props: HvInlineEditorProps) => {\n const {\n className,\n classes: classesProp,\n value: valueProp,\n defaultValue,\n showIcon,\n component: InputComponent = HvInput,\n variant = \"body\",\n placeholder = \"Enter text\",\n onBlur,\n onChange,\n onKeyDown,\n buttonProps,\n typographyProps,\n disabled,\n ...others\n } = useDefaultProps(\"HvInlineEditor\", props);\n\n const { classes, cx } = useClasses(classesProp);\n const [value, setValue] = useControlled(valueProp, defaultValue);\n const [editMode, setEditMode] = useState(false);\n const [cachedValue, setCachedValue] = useState(value);\n const inputRef = useRef<HTMLInputElement>();\n const { activeTheme } = useTheme();\n\n const typographyStyles = activeTheme?.typography[variant] || {};\n const { lineHeight } = typographyStyles;\n\n useLayoutEffect(() => {\n const input = inputRef.current;\n if (editMode && input) {\n input.focus();\n input.select();\n }\n }, [editMode]);\n\n const handleClick = () => {\n setEditMode(true);\n setCachedValue(value);\n };\n\n const handleBlur: HvInputProps[\"onBlur\"] = (event) => {\n setEditMode(false);\n\n const newValue = value || cachedValue; // empty values should be ignored\n setValue(newValue);\n onBlur?.(event, newValue);\n };\n\n const handleKeyDown: HvInputProps[\"onKeyDown\"] = (event) => {\n if (isKey(event, \"Esc\")) {\n setEditMode(false);\n setValue(cachedValue);\n }\n onKeyDown?.(event as any);\n };\n\n const handleChange: HvInputProps[\"onChange\"] = (event, val) => {\n setValue(val);\n onChange?.(event, val);\n };\n\n return (\n <div className={cx(classes.root, className)}>\n {editMode && !disabled ? (\n <InputComponent\n inputRef={inputRef}\n classes={{\n root: classes.inputRoot,\n input: classes.input,\n inputBorderContainer: classes.inputBorderContainer,\n }}\n inputProps={{\n style: {\n ...typographyStyles,\n height: InputComponent === HvInput ? lineHeight : undefined,\n },\n }}\n value={value}\n onBlur={handleBlur}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n {...others}\n />\n ) : (\n <HvButton\n variant=\"secondaryGhost\"\n overrideIconColors={false}\n endIcon={\n <Edit\n color=\"secondary_60\"\n role=\"none\"\n className={cx(classes.icon, {\n [classes.iconVisible]: showIcon,\n })}\n />\n }\n className={cx(classes.button, {\n [classes.largeText]: parseInt(lineHeight as string, 10) >= 28,\n })}\n onClick={handleClick}\n disabled={disabled}\n {...buttonProps}\n >\n <HvTypography\n variant={variant}\n noWrap\n className={cx(classes.text, { [classes.textEmpty]: !value })}\n {...typographyProps}\n >\n {value || placeholder}\n </HvTypography>\n </HvButton>\n )}\n </div>\n );\n};\n"],"names":["HvInlineEditor","props","className","classes","classesProp","value","valueProp","defaultValue","showIcon","component","InputComponent","HvInput","variant","placeholder","onBlur","onChange","onKeyDown","buttonProps","typographyProps","disabled","others","useDefaultProps","cx","useClasses","setValue","useControlled","editMode","setEditMode","useState","cachedValue","setCachedValue","inputRef","useRef","activeTheme","useTheme","typographyStyles","typography","lineHeight","useLayoutEffect","input","current","focus","select","handleClick","handleBlur","event","newValue","handleKeyDown","isKey","handleChange","val","jsx","root","inputRoot","inputBorderContainer","style","height","undefined","HvButton","Edit","icon","iconVisible","button","largeText","parseInt","HvTypography","text","textEmpty"],"mappings":"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"}
|
|
@@ -40,11 +40,11 @@ const {
|
|
|
40
40
|
maxWidth: "100%",
|
|
41
41
|
justifyContent: "flex-start",
|
|
42
42
|
alignItems: "center",
|
|
43
|
-
backgroundColor:
|
|
43
|
+
backgroundColor: uikitStyles.theme.colors.atmo1,
|
|
44
44
|
border: `1px solid transparent`,
|
|
45
45
|
"&:hover, &:focus": {
|
|
46
46
|
border: `1px solid ${uikitStyles.theme.colors.primary}`,
|
|
47
|
-
backgroundColor:
|
|
47
|
+
backgroundColor: uikitStyles.theme.colors.atmo1,
|
|
48
48
|
"& $icon": {
|
|
49
49
|
visibility: "visible"
|
|
50
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InlineEditor.styles.cjs","sources":["../../../../src/components/InlineEditor/InlineEditor.styles.tsx"],"sourcesContent":["import { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { createClasses } from \"@core/utils/classes\";\nimport { inputClasses } from \"@core/components/Input\";\nimport { baseInputClasses } from \"@core/components/BaseInput\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvInlineEditor\", {\n root: {\n [`& .${baseInputClasses.inputRoot}.${inputClasses.inputRoot}`]: {\n height: \"100%\",\n minHeight: \"32px\",\n },\n },\n inputBorderContainer: {\n top: \"unset\",\n bottom: 0,\n },\n input: {},\n inputRoot: {},\n text: {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n alignSelf: \"center\",\n },\n largeText: {},\n textEmpty: {\n color: theme.colors.secondary_60,\n },\n button: {\n padding: theme.spacing(\"6px\", \"8px\", \"5px\", \"8px\"),\n minHeight: \"32px\",\n\n boxSizing: \"border-box\",\n cursor: \"text\",\n height: \"100%\",\n width: \"100%\",\n maxWidth: \"100%\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n\n backgroundColor:
|
|
1
|
+
{"version":3,"file":"InlineEditor.styles.cjs","sources":["../../../../src/components/InlineEditor/InlineEditor.styles.tsx"],"sourcesContent":["import { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { createClasses } from \"@core/utils/classes\";\nimport { inputClasses } from \"@core/components/Input\";\nimport { baseInputClasses } from \"@core/components/BaseInput\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvInlineEditor\", {\n root: {\n [`& .${baseInputClasses.inputRoot}.${inputClasses.inputRoot}`]: {\n height: \"100%\",\n minHeight: \"32px\",\n },\n },\n inputBorderContainer: {\n top: \"unset\",\n bottom: 0,\n },\n input: {},\n inputRoot: {},\n text: {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n alignSelf: \"center\",\n },\n largeText: {},\n textEmpty: {\n color: theme.colors.secondary_60,\n },\n button: {\n padding: theme.spacing(\"6px\", \"8px\", \"5px\", \"8px\"),\n minHeight: \"32px\",\n\n boxSizing: \"border-box\",\n cursor: \"text\",\n height: \"100%\",\n width: \"100%\",\n maxWidth: \"100%\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n\n backgroundColor: theme.colors.atmo1,\n border: `1px solid transparent`,\n\n \"&:hover, &:focus\": {\n border: `1px solid ${theme.colors.primary}`,\n backgroundColor: theme.colors.atmo1,\n\n \"& $icon\": {\n visibility: \"visible\",\n },\n },\n\n \"&:active\": {\n border: `1px solid ${theme.colors.secondary}`,\n backgroundColor: \"transparent\",\n\n \"& $icon\": {\n visibility: \"visible\",\n },\n },\n\n \"& > div\": {\n width: \"100%\",\n },\n \"& > div > span\": {\n width: \"100%\",\n },\n },\n icon: {\n cursor: \"pointer\",\n visibility: \"hidden\",\n alignSelf: \"center\",\n height: \"16px\",\n width: \"32px\",\n minWidth: \"32px\",\n\n \"& svg\": {\n margin: theme.spacing(0, \"xs\"),\n },\n },\n iconVisible: {\n visibility: \"visible\",\n },\n});\n"],"names":["staticClasses","useClasses","createClasses","root","baseInputClasses","inputRoot","inputClasses","height","minHeight","inputBorderContainer","top","bottom","input","text","overflow","textOverflow","whiteSpace","alignSelf","largeText","textEmpty","color","theme","colors","secondary_60","button","padding","spacing","boxSizing","cursor","width","maxWidth","justifyContent","alignItems","backgroundColor","atmo1","border","primary","visibility","secondary","icon","minWidth","margin","iconVisible"],"mappings":";;;;;;AAMa,MAAA;AAAA,EAAEA;AAAAA,EAAeC;AAAW,IAAIC,QAAAA,cAAc,kBAAkB;AAAA,EAC3EC,MAAM;AAAA,IACJ,CAAE,MAAKC,+BAAiBC,SAAU,IAAGC,aAAaD,cAAAA,SAAU,EAAC,GAAG;AAAA,MAC9DE,QAAQ;AAAA,MACRC,WAAW;AAAA,IACb;AAAA,EACF;AAAA,EACAC,sBAAsB;AAAA,IACpBC,KAAK;AAAA,IACLC,QAAQ;AAAA,EACV;AAAA,EACAC,OAAO,CAAC;AAAA,EACRP,WAAW,CAAC;AAAA,EACZQ,MAAM;AAAA,IACJC,UAAU;AAAA,IACVC,cAAc;AAAA,IACdC,YAAY;AAAA,IACZC,WAAW;AAAA,EACb;AAAA,EACAC,WAAW,CAAC;AAAA,EACZC,WAAW;AAAA,IACTC,OAAOC,YAAAA,MAAMC,OAAOC;AAAAA,EACtB;AAAA,EACAC,QAAQ;AAAA,IACNC,SAASJ,YAAMK,MAAAA,QAAQ,OAAO,OAAO,OAAO,KAAK;AAAA,IACjDlB,WAAW;AAAA,IAEXmB,WAAW;AAAA,IACXC,QAAQ;AAAA,IACRrB,QAAQ;AAAA,IACRsB,OAAO;AAAA,IACPC,UAAU;AAAA,IACVC,gBAAgB;AAAA,IAChBC,YAAY;AAAA,IAEZC,iBAAiBZ,YAAAA,MAAMC,OAAOY;AAAAA,IAC9BC,QAAS;AAAA,IAET,oBAAoB;AAAA,MAClBA,QAAS,aAAYd,YAAMC,MAAAA,OAAOc,OAAQ;AAAA,MAC1CH,iBAAiBZ,YAAAA,MAAMC,OAAOY;AAAAA,MAE9B,WAAW;AAAA,QACTG,YAAY;AAAA,MACd;AAAA,IACF;AAAA,IAEA,YAAY;AAAA,MACVF,QAAS,aAAYd,YAAMC,MAAAA,OAAOgB,SAAU;AAAA,MAC5CL,iBAAiB;AAAA,MAEjB,WAAW;AAAA,QACTI,YAAY;AAAA,MACd;AAAA,IACF;AAAA,IAEA,WAAW;AAAA,MACTR,OAAO;AAAA,IACT;AAAA,IACA,kBAAkB;AAAA,MAChBA,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACAU,MAAM;AAAA,IACJX,QAAQ;AAAA,IACRS,YAAY;AAAA,IACZpB,WAAW;AAAA,IACXV,QAAQ;AAAA,IACRsB,OAAO;AAAA,IACPW,UAAU;AAAA,IAEV,SAAS;AAAA,MACPC,QAAQpB,YAAAA,MAAMK,QAAQ,GAAG,IAAI;AAAA,IAC/B;AAAA,EACF;AAAA,EACAgB,aAAa;AAAA,IACXL,YAAY;AAAA,EACd;AACF,CAAC;;;"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("@emotion/react/jsx-runtime");
|
|
4
|
+
const useDefaultProps = require("../../hooks/useDefaultProps.cjs");
|
|
5
|
+
const useControlled = require("../../hooks/useControlled.cjs");
|
|
6
|
+
const useUniqueId = require("../../hooks/useUniqueId.cjs");
|
|
7
|
+
const uikitReactIcons = require("@hitachivantara/uikit-react-icons");
|
|
8
|
+
const setId = require("../../utils/setId.cjs");
|
|
9
|
+
const Section_styles = require("./Section.styles.cjs");
|
|
10
|
+
const Button = require("../Button/Button.cjs");
|
|
11
|
+
const HvSection = (props) => {
|
|
12
|
+
const {
|
|
13
|
+
id,
|
|
14
|
+
classes: classesProp,
|
|
15
|
+
className,
|
|
16
|
+
title,
|
|
17
|
+
expandable,
|
|
18
|
+
expanded,
|
|
19
|
+
defaultExpanded = true,
|
|
20
|
+
actions,
|
|
21
|
+
onToggle,
|
|
22
|
+
expandButtonProps,
|
|
23
|
+
children,
|
|
24
|
+
...others
|
|
25
|
+
} = useDefaultProps.useDefaultProps("HvSection", props);
|
|
26
|
+
const {
|
|
27
|
+
classes,
|
|
28
|
+
cx
|
|
29
|
+
} = Section_styles.useClasses(classesProp);
|
|
30
|
+
const [isOpen, setIsOpen] = useControlled.useControlled(expanded, Boolean(defaultExpanded));
|
|
31
|
+
const elementId = useUniqueId.useUniqueId(id, "hvSection");
|
|
32
|
+
const contentId = setId.setId(elementId, "content");
|
|
33
|
+
const showContent = expandable ? !!isOpen : true;
|
|
34
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { id: elementId, className: cx(classes.root, className), ...others, children: [
|
|
35
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: classes.header, children: [
|
|
36
|
+
expandable && /* @__PURE__ */ jsxRuntime.jsx(Button.HvButton, { icon: true, onClick: (event) => {
|
|
37
|
+
setIsOpen((o) => !o);
|
|
38
|
+
onToggle == null ? void 0 : onToggle(event, !isOpen);
|
|
39
|
+
}, "aria-expanded": isOpen, "aria-controls": contentId, "aria-label": isOpen ? "Collapse" : "Expand", ...expandButtonProps, children: isOpen ? /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.Up, {}) : /* @__PURE__ */ jsxRuntime.jsx(uikitReactIcons.Down, {}) }),
|
|
40
|
+
title,
|
|
41
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: classes.actions, children: actions })
|
|
42
|
+
] }),
|
|
43
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { id: contentId, hidden: !isOpen, className: cx(classes.content, {
|
|
44
|
+
[classes.hidden]: !showContent
|
|
45
|
+
}), children })
|
|
46
|
+
] });
|
|
47
|
+
};
|
|
48
|
+
exports.sectionClasses = Section_styles.staticClasses;
|
|
49
|
+
exports.HvSection = HvSection;
|
|
50
|
+
//# sourceMappingURL=Section.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Section.cjs","sources":["../../../../src/components/Section/Section.tsx"],"sourcesContent":["import { HvBaseProps } from \"@core/types/generic\";\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { HvButton, HvButtonProps } from \"@core/components/Button\";\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\nimport { useControlled } from \"@core/hooks/useControlled\";\nimport { useUniqueId } from \"@core/hooks/useUniqueId\";\nimport { Down, Up } from \"@hitachivantara/uikit-react-icons\";\nimport { setId } from \"@core/utils/setId\";\nimport { staticClasses, useClasses } from \"./Section.styles\";\n\nexport { staticClasses as sectionClasses };\n\nexport type HvSectionClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvSectionProps\n extends Omit<HvBaseProps<HTMLDivElement>, \"title\"> {\n /** The title of the section */\n title?: React.ReactNode;\n /** Whether or not the section is expandable. */\n expandable?: boolean;\n /** Whether the section is open or not, if this property is defined the accordion must be fully controlled. */\n expanded?: boolean;\n /** When uncontrolled, defines the initial expanded state. */\n defaultExpanded?: boolean;\n /** Section actions */\n // actions?: HvActionGeneric[];\n actions?: React.ReactNode;\n /** Section onExpand callback */\n onToggle?: (\n event: React.MouseEventHandler<HTMLButtonElement>,\n open: boolean\n ) => void;\n /** Props to be passed to the expand button */\n expandButtonProps?: HvButtonProps;\n /** A Jss Object used to override or extend the styles applied to the empty state component. */\n classes?: HvSectionClasses;\n}\n\n/**\n * Sections allow grouping information on a page under the same topic.\n */\nexport const HvSection = (props: HvSectionProps) => {\n const {\n id,\n classes: classesProp,\n className,\n title,\n expandable,\n expanded,\n defaultExpanded = true,\n actions,\n onToggle,\n expandButtonProps,\n children,\n ...others\n } = useDefaultProps(\"HvSection\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n const [isOpen, setIsOpen] = useControlled(expanded, Boolean(defaultExpanded));\n\n const elementId = useUniqueId(id, \"hvSection\");\n const contentId = setId(elementId, \"content\");\n\n const showContent = expandable ? !!isOpen : true;\n\n return (\n <div id={elementId} className={cx(classes.root, className)} {...others}>\n <div className={classes.header}>\n {expandable && (\n <HvButton\n icon\n onClick={(event) => {\n setIsOpen((o) => !o);\n onToggle?.(event, !isOpen);\n }}\n aria-expanded={isOpen}\n aria-controls={contentId}\n aria-label={isOpen ? \"Collapse\" : \"Expand\"}\n {...expandButtonProps}\n >\n {isOpen ? <Up /> : <Down />}\n </HvButton>\n )}\n {title}\n <div className={classes.actions}>{actions}</div>\n </div>\n <div\n id={contentId}\n hidden={!isOpen}\n className={cx(classes.content, { [classes.hidden]: !showContent })}\n >\n {children}\n </div>\n </div>\n );\n};\n"],"names":["HvSection","props","id","classes","classesProp","className","title","expandable","expanded","defaultExpanded","actions","onToggle","expandButtonProps","children","others","useDefaultProps","cx","useClasses","isOpen","setIsOpen","useControlled","Boolean","elementId","useUniqueId","contentId","setId","showContent","jsxs","root","header","jsx","HvButton","event","o","Up","Down","content","hidden"],"mappings":";;;;;;;;;;AAyCaA,MAAAA,YAAYA,CAACC,UAA0B;AAC5C,QAAA;AAAA,IACJC;AAAAA,IACAC,SAASC;AAAAA,IACTC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC,kBAAkB;AAAA,IAClBC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACA,GAAGC;AAAAA,EAAAA,IACDC,gBAAgB,gBAAA,aAAad,KAAK;AAEhC,QAAA;AAAA,IAAEE;AAAAA,IAASa;AAAAA,EAAAA,IAAOC,eAAAA,WAAWb,WAAW;AAExC,QAAA,CAACc,QAAQC,SAAS,IAAIC,cAAAA,cAAcZ,UAAUa,QAAQZ,eAAe,CAAC;AAEtEa,QAAAA,YAAYC,YAAAA,YAAYrB,IAAI,WAAW;AACvCsB,QAAAA,YAAYC,MAAAA,MAAMH,WAAW,SAAS;AAE5C,QAAMI,cAAcnB,aAAa,CAAC,CAACW,SAAS;AAG1C,SAAAS,2BAAA,KAAC,OAAI,EAAA,IAAIL,WAAW,WAAWN,GAAGb,QAAQyB,MAAMvB,SAAS,GAAOS,GAAAA,QAC9D,UAAA;AAAA,IAACa,2BAAA,KAAA,OAAA,EAAI,WAAWxB,QAAQ0B,QACrBtB,UAAAA;AAAAA,MAAAA,cACEuB,2BAAA,IAAAC,iBAAA,EACC,MAAI,MACJ,SAAUC,CAAU,UAAA;AACPC,kBAAAA,CAAAA,MAAM,CAACA,CAAC;AACRD,6CAAAA,OAAO,CAACd;AAAAA,MAAM,GAE3B,iBAAeA,QACf,iBAAeM,WACf,cAAYN,SAAS,aAAa,UAC9BN,GAAAA,mBAEHM,UAAS,SAAAY,2BAAA,IAACI,sBAAK,IAAGJ,+BAACK,gBAAAA,OAAO,CAAA,GAC7B;AAAA,MAED7B;AAAAA,MACAwB,2BAAA,IAAA,OAAA,EAAI,WAAW3B,QAAQO,SAAUA,UAAQ,SAAA;AAAA,IAAA,GAC5C;AAAA,IACAoB,2BAAAA,IAAC,OACC,EAAA,IAAIN,WACJ,QAAQ,CAACN,QACT,WAAWF,GAAGb,QAAQiC,SAAS;AAAA,MAAE,CAACjC,QAAQkC,MAAM,GAAG,CAACX;AAAAA,IAAAA,CAAa,GAEhEb,SACH,CAAA;AAAA,EACF,EAAA,CAAA;AAEJ;;;"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const uikitStyles = require("@hitachivantara/uikit-styles");
|
|
4
|
+
const classes = require("../../utils/classes.cjs");
|
|
5
|
+
const {
|
|
6
|
+
staticClasses,
|
|
7
|
+
useClasses
|
|
8
|
+
} = classes.createClasses("HvSection", {
|
|
9
|
+
root: {
|
|
10
|
+
width: "100%",
|
|
11
|
+
display: "flex",
|
|
12
|
+
flexDirection: "column",
|
|
13
|
+
padding: uikitStyles.theme.space.sm,
|
|
14
|
+
backgroundColor: uikitStyles.theme.colors.atmo1,
|
|
15
|
+
borderRadius: uikitStyles.theme.radii.round,
|
|
16
|
+
border: `1px solid ${uikitStyles.theme.colors.atmo4}`
|
|
17
|
+
},
|
|
18
|
+
hidden: {
|
|
19
|
+
height: 0,
|
|
20
|
+
display: "none"
|
|
21
|
+
},
|
|
22
|
+
header: {
|
|
23
|
+
display: "flex",
|
|
24
|
+
alignItems: "center",
|
|
25
|
+
position: "relative",
|
|
26
|
+
minHeight: uikitStyles.theme.sizes.sm
|
|
27
|
+
},
|
|
28
|
+
content: {
|
|
29
|
+
marginTop: uikitStyles.theme.space.sm
|
|
30
|
+
},
|
|
31
|
+
actions: {
|
|
32
|
+
display: "flex",
|
|
33
|
+
gap: uikitStyles.theme.space.xs,
|
|
34
|
+
position: "absolute",
|
|
35
|
+
right: 0
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
exports.staticClasses = staticClasses;
|
|
39
|
+
exports.useClasses = useClasses;
|
|
40
|
+
//# sourceMappingURL=Section.styles.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Section.styles.cjs","sources":["../../../../src/components/Section/Section.styles.tsx"],"sourcesContent":["import { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { createClasses } from \"@core/utils/classes\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvSection\", {\n root: {\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n padding: theme.space.sm,\n backgroundColor: theme.colors.atmo1,\n borderRadius: theme.radii.round,\n border: `1px solid ${theme.colors.atmo4}`,\n },\n hidden: { height: 0, display: \"none\" },\n header: {\n display: \"flex\",\n alignItems: \"center\",\n position: \"relative\",\n minHeight: theme.sizes.sm,\n },\n content: {\n marginTop: theme.space.sm,\n },\n actions: {\n display: \"flex\",\n gap: theme.space.xs,\n position: \"absolute\",\n right: 0,\n },\n});\n"],"names":["staticClasses","useClasses","createClasses","root","width","display","flexDirection","padding","theme","space","sm","backgroundColor","colors","atmo1","borderRadius","radii","round","border","atmo4","hidden","height","header","alignItems","position","minHeight","sizes","content","marginTop","actions","gap","xs","right"],"mappings":";;;;AAIa,MAAA;AAAA,EAAEA;AAAAA,EAAeC;AAAW,IAAIC,QAAAA,cAAc,aAAa;AAAA,EACtEC,MAAM;AAAA,IACJC,OAAO;AAAA,IACPC,SAAS;AAAA,IACTC,eAAe;AAAA,IACfC,SAASC,YAAAA,MAAMC,MAAMC;AAAAA,IACrBC,iBAAiBH,YAAAA,MAAMI,OAAOC;AAAAA,IAC9BC,cAAcN,YAAAA,MAAMO,MAAMC;AAAAA,IAC1BC,QAAS,aAAYT,YAAMI,MAAAA,OAAOM,KAAM;AAAA,EAC1C;AAAA,EACAC,QAAQ;AAAA,IAAEC,QAAQ;AAAA,IAAGf,SAAS;AAAA,EAAO;AAAA,EACrCgB,QAAQ;AAAA,IACNhB,SAAS;AAAA,IACTiB,YAAY;AAAA,IACZC,UAAU;AAAA,IACVC,WAAWhB,YAAAA,MAAMiB,MAAMf;AAAAA,EACzB;AAAA,EACAgB,SAAS;AAAA,IACPC,WAAWnB,YAAAA,MAAMC,MAAMC;AAAAA,EACzB;AAAA,EACAkB,SAAS;AAAA,IACPvB,SAAS;AAAA,IACTwB,KAAKrB,YAAAA,MAAMC,MAAMqB;AAAAA,IACjBP,UAAU;AAAA,IACVQ,OAAO;AAAA,EACT;AACF,CAAC;;;"}
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -262,6 +262,8 @@ const CarouselControls = require("./components/Carousel/CarouselControls.cjs");
|
|
|
262
262
|
const CarouselThumbnails = require("./components/Carousel/CarouselThumbnails.cjs");
|
|
263
263
|
const TimePicker_styles = require("./components/TimePicker/TimePicker.styles.cjs");
|
|
264
264
|
const TimePicker = require("./components/TimePicker/TimePicker.cjs");
|
|
265
|
+
const Section_styles = require("./components/Section/Section.styles.cjs");
|
|
266
|
+
const Section = require("./components/Section/Section.cjs");
|
|
265
267
|
const useClickOutside = require("./hooks/useClickOutside.cjs");
|
|
266
268
|
const useControlled = require("./hooks/useControlled.cjs");
|
|
267
269
|
const useForkRef = require("./hooks/useForkRef.cjs");
|
|
@@ -622,6 +624,8 @@ exports.HvCarouselControls = CarouselControls.HvCarouselControls;
|
|
|
622
624
|
exports.HvCarouselThumbnails = CarouselThumbnails.HvCarouselThumbnails;
|
|
623
625
|
exports.timePickerClasses = TimePicker_styles.staticClasses;
|
|
624
626
|
exports.HvTimePicker = TimePicker.HvTimePicker;
|
|
627
|
+
exports.sectionClasses = Section_styles.staticClasses;
|
|
628
|
+
exports.HvSection = Section.HvSection;
|
|
625
629
|
exports.useClickOutside = useClickOutside.useClickOutside;
|
|
626
630
|
exports.useControlled = useControlled.useControlled;
|
|
627
631
|
exports.useForkRef = useForkRef.useForkRef;
|
package/dist/cjs/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -6,7 +6,7 @@ import { useClasses } from "./BreadCrumb.styles.js";
|
|
|
6
6
|
import { staticClasses } from "./BreadCrumb.styles.js";
|
|
7
7
|
import { pathWithSubMenu, removeExtension } from "./utils.js";
|
|
8
8
|
import { HvPathElement } from "./PathElement/PathElement.js";
|
|
9
|
-
import {
|
|
9
|
+
import { HvBreadCrumbPage } from "./Page/Page.js";
|
|
10
10
|
import { HvTypography } from "../Typography/Typography.js";
|
|
11
11
|
const HvBreadCrumb = (props) => {
|
|
12
12
|
const {
|
|
@@ -44,7 +44,7 @@ const HvBreadCrumb = (props) => {
|
|
|
44
44
|
return /* @__PURE__ */ jsx(HvPathElement, { classes: {
|
|
45
45
|
centerContainer: classes.centerContainer,
|
|
46
46
|
separatorContainer: classes.separatorContainer
|
|
47
|
-
}, last: isLast, children: isValidElement(elem) && elem || isLast && /* @__PURE__ */ jsx(HvTypography, { className: classes.currentPage, variant: "body", children: removeExtension(elem.label) }) || /* @__PURE__ */ jsx(
|
|
47
|
+
}, last: isLast, children: isValidElement(elem) && elem || isLast && /* @__PURE__ */ jsx(HvTypography, { className: classes.currentPage, variant: "body", children: removeExtension(elem.label) }) || /* @__PURE__ */ jsx(HvBreadCrumbPage, { elem, classes: {
|
|
48
48
|
a: classes.a,
|
|
49
49
|
link: classes.link
|
|
50
50
|
}, component, onClick }) }, key);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BreadCrumb.js","sources":["../../../../src/components/BreadCrumb/BreadCrumb.tsx"],"sourcesContent":["import { isValidElement, MouseEvent } from \"react\";\n\nimport isNil from \"lodash/isNil\";\n\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { HvDropDownMenuProps } from \"@core/components/DropDownMenu\";\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { HvTypography } from \"@core/components/Typography\";\n\nimport { HvPathElement } from \"./PathElement\";\nimport {
|
|
1
|
+
{"version":3,"file":"BreadCrumb.js","sources":["../../../../src/components/BreadCrumb/BreadCrumb.tsx"],"sourcesContent":["import { isValidElement, MouseEvent } from \"react\";\n\nimport isNil from \"lodash/isNil\";\n\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { HvDropDownMenuProps } from \"@core/components/DropDownMenu\";\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { HvTypography } from \"@core/components/Typography\";\n\nimport { HvPathElement } from \"./PathElement\";\nimport { HvBreadCrumbPage } from \"./Page\";\nimport { staticClasses, useClasses } from \"./BreadCrumb.styles\";\nimport { pathWithSubMenu, removeExtension } from \"./utils\";\nimport { HvBreadCrumbPathElement } from \"./types\";\n\nexport { staticClasses as breadCrumbClasses };\n\nexport type HvBreadCrumbClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvBreadCrumbProps\n extends HvBaseProps<HTMLDivElement, \"onClick\"> {\n /** List of breadcrumb. */\n listRoute?: HvBreadCrumbPathElement[];\n /** URL to build the breadcrumb. */\n url?: string;\n /** Number of pages visible. */\n maxVisible?: number;\n /** The component used for the link node. Either a string to use a DOM element or a component. */\n component?: React.ElementType;\n /** Function passed to the component. If defined the component prop is used as the link node. */\n onClick?: (event: MouseEvent<HTMLElement>, data: any) => void;\n /** Props passed down to the DropDownMenu sub-menu component. */\n dropDownMenuProps?: Partial<HvDropDownMenuProps>;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvBreadCrumbClasses;\n}\n\n/**\n * A breadcrumb is a graphical control element frequently used as a navigational aid.\n */\nexport const HvBreadCrumb = (props: HvBreadCrumbProps) => {\n const {\n classes: classesProp,\n className,\n id,\n listRoute = [],\n maxVisible,\n url,\n onClick,\n component,\n dropDownMenuProps,\n ...others\n } = useDefaultProps(\"HvBreadCrumb\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n const maxVisibleElem = maxVisible && maxVisible < 2 ? 2 : maxVisible;\n let listPath = listRoute.slice();\n\n // build the listPath object list\n if (!isNil(url)) {\n listPath = [];\n\n // get the domain\n const baseUrl = url.match(/^.*\\/\\/[^/]+/);\n\n // get url without domain\n const urlWithoutDomain = url.replace(/^.*\\/\\/[^/]+/, \"\");\n\n const pathNames = urlWithoutDomain.split(\"/\").filter((x) => x);\n\n pathNames.map((elem, index) =>\n listPath.push({\n label: decodeURI(elem),\n path: `${baseUrl}/${pathNames.slice(0, index + 1).join(\"/\")}`,\n })\n );\n }\n\n const breadcrumbPath =\n maxVisibleElem && listPath.length > maxVisibleElem\n ? pathWithSubMenu(\n id,\n listPath,\n maxVisibleElem,\n onClick,\n dropDownMenuProps\n )\n : listPath;\n\n return (\n <nav id={id} className={cx(classes.root, className)} {...others}>\n <ol className={classes.orderedList}>\n {listPath.map((elem, index) => {\n const key = `key_${index}`;\n const isLast = index === breadcrumbPath.length - 1;\n\n return (\n <HvPathElement\n classes={{\n centerContainer: classes.centerContainer,\n separatorContainer: classes.separatorContainer,\n }}\n key={key}\n last={isLast}\n >\n {(isValidElement(elem) && elem) ||\n (isLast && (\n <HvTypography className={classes.currentPage} variant=\"body\">\n {removeExtension(elem.label)}\n </HvTypography>\n )) || (\n <HvBreadCrumbPage\n elem={elem}\n classes={{\n a: classes.a,\n link: classes.link,\n }}\n component={component}\n onClick={onClick}\n />\n )}\n </HvPathElement>\n );\n })}\n </ol>\n </nav>\n );\n};\n"],"names":["HvBreadCrumb","props","classes","classesProp","className","id","listRoute","maxVisible","url","onClick","component","dropDownMenuProps","others","useDefaultProps","cx","useClasses","maxVisibleElem","listPath","slice","isNil","baseUrl","match","urlWithoutDomain","replace","pathNames","split","filter","x","map","elem","index","push","label","decodeURI","path","join","breadcrumbPath","length","pathWithSubMenu","root","orderedList","key","isLast","centerContainer","separatorContainer","isValidElement","currentPage","removeExtension","a","link"],"mappings":";;;;;;;;;;AAyCaA,MAAAA,eAAeA,CAACC,UAA6B;AAClD,QAAA;AAAA,IACJC,SAASC;AAAAA,IACTC;AAAAA,IACAC;AAAAA,IACAC,YAAY,CAAE;AAAA,IACdC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACA,GAAGC;AAAAA,EAAAA,IACDC,gBAAgB,gBAAgBZ,KAAK;AAEnC,QAAA;AAAA,IAAEC;AAAAA,IAASY;AAAAA,EAAAA,IAAOC,WAAWZ,WAAW;AAE9C,QAAMa,iBAAiBT,cAAcA,aAAa,IAAI,IAAIA;AACtDU,MAAAA,WAAWX,UAAUY;AAGrB,MAAA,CAACC,MAAMX,GAAG,GAAG;AACfS,eAAW,CAAA;AAGLG,UAAAA,UAAUZ,IAAIa,MAAM,cAAc;AAGxC,UAAMC,mBAAmBd,IAAIe,QAAQ,gBAAgB,EAAE;AAEvD,UAAMC,YAAYF,iBAAiBG,MAAM,GAAG,EAAEC,OAAQC,OAAMA,CAAC;AAE7DH,cAAUI,IAAI,CAACC,MAAMC,UACnBb,SAASc,KAAK;AAAA,MACZC,OAAOC,UAAUJ,IAAI;AAAA,MACrBK,MAAO,GAAEd,OAAQ,IAAGI,UAAUN,MAAM,GAAGY,QAAQ,CAAC,EAAEK,KAAK,GAAG,CAAE;AAAA,IAC7D,CAAA,CACH;AAAA,EACF;AAEMC,QAAAA,iBACJpB,kBAAkBC,SAASoB,SAASrB,iBAChCsB,gBACEjC,IACAY,UACAD,gBACAP,SACAE,iBACF,IACAM;AAGJ,SAAA,oBAAC,SAAI,IAAQ,WAAWH,GAAGZ,QAAQqC,MAAMnC,SAAS,GAAOQ,GAAAA,QACvD,UAAC,oBAAA,MAAA,EAAG,WAAWV,QAAQsC,aACpBvB,mBAASW,IAAI,CAACC,MAAMC,UAAU;AACvBW,UAAAA,MAAO,OAAMX,KAAM;AACnBY,UAAAA,SAASZ,UAAUM,eAAeC,SAAS;AAG/C,WAAA,oBAAC,iBACC,SAAS;AAAA,MACPM,iBAAiBzC,QAAQyC;AAAAA,MACzBC,oBAAoB1C,QAAQ0C;AAAAA,IAC9B,GAEA,MAAMF,QAEJG,UAAAA,eAAehB,IAAI,KAAKA,QACvBa,UACC,oBAAC,cAAa,EAAA,WAAWxC,QAAQ4C,aAAa,SAAQ,QACnDC,UAAAA,gBAAgBlB,KAAKG,KAAK,EAC7B,CAAA,KAEA,oBAAC,kBACC,EAAA,MACA,SAAS;AAAA,MACPgB,GAAG9C,QAAQ8C;AAAAA,MACXC,MAAM/C,QAAQ+C;AAAAA,IAEhB,GAAA,WACA,QAEH,CAAA,EAAA,GAlBER,GAmBP;AAAA,EAAA,CAEH,GACH,EACF,CAAA;AAEJ;"}
|
|
@@ -2,13 +2,15 @@ import { jsx } from "@emotion/react/jsx-runtime";
|
|
|
2
2
|
import { useClasses } from "./Page.styles.js";
|
|
3
3
|
import { staticClasses } from "./Page.styles.js";
|
|
4
4
|
import { HvOverflowTooltip } from "../../OverflowTooltip/OverflowTooltip.js";
|
|
5
|
+
import { useDefaultProps } from "../../../hooks/useDefaultProps.js";
|
|
5
6
|
import { HvTypography } from "../../Typography/Typography.js";
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
const HvBreadCrumbPage = (props) => {
|
|
8
|
+
const {
|
|
9
|
+
component,
|
|
10
|
+
onClick,
|
|
11
|
+
elem,
|
|
12
|
+
classes: classesProp
|
|
13
|
+
} = useDefaultProps("HvBreadCrumbPage", props);
|
|
12
14
|
const {
|
|
13
15
|
classes,
|
|
14
16
|
cx
|
|
@@ -25,7 +27,7 @@ const HvPage = ({
|
|
|
25
27
|
return /* @__PURE__ */ jsx(HvTypography, { noWrap: true, variant: "label", component: component || "a", href: elem.path, onClick: onClick && handleClick, className: cx(classes.link, classes.label, classes.a), ...others, children: /* @__PURE__ */ jsx(HvOverflowTooltip, { data: elem.label }) });
|
|
26
28
|
};
|
|
27
29
|
export {
|
|
28
|
-
|
|
29
|
-
staticClasses as
|
|
30
|
+
HvBreadCrumbPage,
|
|
31
|
+
staticClasses as breadCrumbPageClasses
|
|
30
32
|
};
|
|
31
33
|
//# sourceMappingURL=Page.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Page.js","sources":["../../../../../src/components/BreadCrumb/Page/Page.tsx"],"sourcesContent":["import { MouseEvent } from \"react\";\n\nimport { HvTypography } from \"@core/components/Typography\";\nimport { HvOverflowTooltip } from \"@core/components/OverflowTooltip\";\nimport { ExtractNames } from \"@core/utils/classes\";\n\nimport { HvBreadCrumbPathElement } from \"../types\";\nimport { staticClasses, useClasses } from \"./Page.styles\";\n\nexport { staticClasses as
|
|
1
|
+
{"version":3,"file":"Page.js","sources":["../../../../../src/components/BreadCrumb/Page/Page.tsx"],"sourcesContent":["import { MouseEvent } from \"react\";\n\nimport { HvTypography } from \"@core/components/Typography\";\nimport { HvOverflowTooltip } from \"@core/components/OverflowTooltip\";\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { useDefaultProps } from \"@core/hooks\";\n\nimport { HvBreadCrumbPathElement } from \"../types\";\nimport { staticClasses, useClasses } from \"./Page.styles\";\n\nexport { staticClasses as breadCrumbPageClasses };\n\nexport type HvBreadCrumbPageClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvBreadCrumbPageProps {\n component?: React.ElementType;\n onClick?: (event: MouseEvent<HTMLElement>, data: any) => void;\n elem: HvBreadCrumbPathElement;\n classes?: HvBreadCrumbPageClasses;\n}\n\nexport const HvBreadCrumbPage = (props: HvBreadCrumbPageProps) => {\n const {\n component,\n onClick,\n elem,\n classes: classesProp,\n } = useDefaultProps(\"HvBreadCrumbPage\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n const { label, path, ...others } = elem;\n\n const handleClick = (event: MouseEvent<HTMLElement>) => {\n event.preventDefault();\n onClick?.(event, elem);\n };\n\n return (\n <HvTypography\n noWrap\n variant=\"label\"\n component={component || \"a\"}\n href={elem.path}\n onClick={onClick && handleClick}\n className={cx(classes.link, classes.label, classes.a)}\n {...others}\n >\n <HvOverflowTooltip data={elem.label} />\n </HvTypography>\n );\n};\n"],"names":["HvBreadCrumbPage","props","component","onClick","elem","classes","classesProp","useDefaultProps","cx","useClasses","label","path","others","handleClick","event","preventDefault","link","a"],"mappings":";;;;;;AAqBaA,MAAAA,mBAAmBA,CAACC,UAAiC;AAC1D,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC,SAASC;AAAAA,EAAAA,IACPC,gBAAgB,oBAAoBN,KAAK;AAEvC,QAAA;AAAA,IAAEI;AAAAA,IAASG;AAAAA,EAAAA,IAAOC,WAAWH,WAAW;AAExC,QAAA;AAAA,IAAEI;AAAAA,IAAOC;AAAAA,IAAM,GAAGC;AAAAA,EAAWR,IAAAA;AAE7BS,QAAAA,cAAcA,CAACC,UAAmC;AACtDA,UAAMC,eAAe;AACrBZ,uCAAUW,OAAOV;AAAAA,EAAI;AAGvB,SACG,oBAAA,cAAA,EACC,QAAM,MACN,SAAQ,SACR,WAAWF,aAAa,KACxB,MAAME,KAAKO,MACX,SAASR,WAAWU,aACpB,WAAWL,GAAGH,QAAQW,MAAMX,QAAQK,OAAOL,QAAQY,CAAC,GAChDL,GAAAA,QAEJ,UAAC,oBAAA,mBAAA,EAAkB,MAAMR,KAAKM,OAAM,EACtC,CAAA;AAEJ;"}
|
|
@@ -4,7 +4,7 @@ import { outlineStyles } from "../../../utils/focusUtils.js";
|
|
|
4
4
|
const {
|
|
5
5
|
staticClasses,
|
|
6
6
|
useClasses
|
|
7
|
-
} = createClasses("
|
|
7
|
+
} = createClasses("HvBreadCrumbPage", {
|
|
8
8
|
link: {
|
|
9
9
|
padding: `8px ${theme.space.xs}`,
|
|
10
10
|
borderRadius: theme.radii.base,
|
|
@@ -12,10 +12,10 @@ const {
|
|
|
12
12
|
textTransform: "capitalize",
|
|
13
13
|
"&:hover": {
|
|
14
14
|
cursor: "pointer",
|
|
15
|
-
backgroundColor: theme.colors.
|
|
15
|
+
backgroundColor: theme.colors.primary_20
|
|
16
16
|
},
|
|
17
17
|
"&:focus": {
|
|
18
|
-
backgroundColor: theme.colors.
|
|
18
|
+
backgroundColor: theme.colors.primary_20
|
|
19
19
|
},
|
|
20
20
|
"&:focus-visible": {
|
|
21
21
|
...outlineStyles
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Page.styles.js","sources":["../../../../../src/components/BreadCrumb/Page/Page.styles.tsx"],"sourcesContent":["import { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { createClasses } from \"@core/utils/classes\";\nimport { outlineStyles } from \"@core/utils/focusUtils\";\n\nexport const { staticClasses, useClasses } = createClasses(\"
|
|
1
|
+
{"version":3,"file":"Page.styles.js","sources":["../../../../../src/components/BreadCrumb/Page/Page.styles.tsx"],"sourcesContent":["import { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { createClasses } from \"@core/utils/classes\";\nimport { outlineStyles } from \"@core/utils/focusUtils\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvBreadCrumbPage\", {\n link: {\n padding: `8px ${theme.space.xs}`,\n borderRadius: theme.radii.base,\n maxWidth: 170 + 16,\n textTransform: \"capitalize\",\n \"&:hover\": {\n cursor: \"pointer\",\n backgroundColor: theme.colors.primary_20,\n },\n \"&:focus\": {\n backgroundColor: theme.colors.primary_20,\n },\n \"&:focus-visible\": {\n ...outlineStyles,\n },\n },\n label: {},\n a: {},\n});\n"],"names":["staticClasses","useClasses","createClasses","link","padding","theme","space","xs","borderRadius","radii","base","maxWidth","textTransform","cursor","backgroundColor","colors","primary_20","outlineStyles","label","a"],"mappings":";;;AAKa,MAAA;AAAA,EAAEA;AAAAA,EAAeC;AAAW,IAAIC,cAAc,oBAAoB;AAAA,EAC7EC,MAAM;AAAA,IACJC,SAAU,OAAMC,MAAMC,MAAMC,EAAG;AAAA,IAC/BC,cAAcH,MAAMI,MAAMC;AAAAA,IAC1BC,UAAU,MAAM;AAAA,IAChBC,eAAe;AAAA,IACf,WAAW;AAAA,MACTC,QAAQ;AAAA,MACRC,iBAAiBT,MAAMU,OAAOC;AAAAA,IAChC;AAAA,IACA,WAAW;AAAA,MACTF,iBAAiBT,MAAMU,OAAOC;AAAAA,IAChC;AAAA,IACA,mBAAmB;AAAA,MACjB,GAAGC;AAAAA,IACL;AAAA,EACF;AAAA,EACAC,OAAO,CAAC;AAAA,EACRC,GAAG,CAAC;AACN,CAAC;"}
|
|
@@ -25,6 +25,7 @@ const HvInlineEditor = (props) => {
|
|
|
25
25
|
onKeyDown,
|
|
26
26
|
buttonProps,
|
|
27
27
|
typographyProps,
|
|
28
|
+
disabled,
|
|
28
29
|
...others
|
|
29
30
|
} = useDefaultProps("HvInlineEditor", props);
|
|
30
31
|
const {
|
|
@@ -70,7 +71,7 @@ const HvInlineEditor = (props) => {
|
|
|
70
71
|
setValue(val);
|
|
71
72
|
onChange == null ? void 0 : onChange(event, val);
|
|
72
73
|
};
|
|
73
|
-
return /* @__PURE__ */ jsx("div", { className: cx(classes.root, className), children: editMode ? /* @__PURE__ */ jsx(InputComponent, { inputRef, classes: {
|
|
74
|
+
return /* @__PURE__ */ jsx("div", { className: cx(classes.root, className), children: editMode && !disabled ? /* @__PURE__ */ jsx(InputComponent, { inputRef, classes: {
|
|
74
75
|
root: classes.inputRoot,
|
|
75
76
|
input: classes.input,
|
|
76
77
|
inputBorderContainer: classes.inputBorderContainer
|
|
@@ -83,7 +84,7 @@ const HvInlineEditor = (props) => {
|
|
|
83
84
|
[classes.iconVisible]: showIcon
|
|
84
85
|
}) }), className: cx(classes.button, {
|
|
85
86
|
[classes.largeText]: parseInt(lineHeight, 10) >= 28
|
|
86
|
-
}), onClick: handleClick, ...buttonProps, children: /* @__PURE__ */ jsx(HvTypography, { variant, noWrap: true, className: cx(classes.text, {
|
|
87
|
+
}), onClick: handleClick, disabled, ...buttonProps, children: /* @__PURE__ */ jsx(HvTypography, { variant, noWrap: true, className: cx(classes.text, {
|
|
87
88
|
[classes.textEmpty]: !value
|
|
88
89
|
}), ...typographyProps, children: value || placeholder }) }) });
|
|
89
90
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InlineEditor.js","sources":["../../../../src/components/InlineEditor/InlineEditor.tsx"],"sourcesContent":["import React, { useLayoutEffect, useRef, useState } from \"react\";\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\n\nimport { Edit } from \"@hitachivantara/uikit-react-icons\";\n\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { useControlled } from \"@core/hooks/useControlled\";\nimport { useTheme } from \"@core/hooks/useTheme\";\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { isKey } from \"@core/utils/keyboardUtils\";\nimport { HvButtonProps, HvButton } from \"@core/components/Button\";\nimport {\n HvTypographyVariants,\n HvTypographyProps,\n HvTypography,\n} from \"@core/components/Typography\";\nimport { HvInput, HvInputProps } from \"@core/components/Input\";\n\nimport { staticClasses, useClasses } from \"./InlineEditor.styles\";\n\nexport { staticClasses as inlineEditorClasses };\n\nexport type HvInlineEditorClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvInlineEditorProps\n extends HvBaseProps<HTMLDivElement, \"onBlur\" | \"onChange\"> {\n /** The value of the form element. */\n value?: string;\n /** Whether the Edit icon should always be visible */\n showIcon?: boolean;\n /** Component to use as the input. The component \"inherit\" from `HvBaseInput` (such as `HvInput` or `HvTextArea`) */\n component?: React.ElementType;\n /** Variant of the HvTypography to display */\n variant?: HvTypographyVariants;\n /** Called when the input is blurred. */\n onBlur?: (\n event: React.FocusEvent<HTMLTextAreaElement | HTMLInputElement>,\n value: string\n ) => void;\n /** Called when the input value changes. */\n onChange?: (event: React.SyntheticEvent, value: string) => void;\n /** Props passed to the HvButton component */\n buttonProps?: HvButtonProps;\n /** Props passed to the HvTypography text component */\n typographyProps?: HvTypographyProps;\n /** A Jss Object used to override or extend the styles applied to the empty state component. */\n classes?: HvInlineEditorClasses;\n}\n\n/**\n * An Inline Editor allows the user to edit a record without making a major switch\n * between viewing and editing, making it an efficient method of updating a record.\n */\nexport const HvInlineEditor = (props: HvInlineEditorProps) => {\n const {\n className,\n classes: classesProp,\n value: valueProp,\n defaultValue,\n showIcon,\n component: InputComponent = HvInput,\n variant = \"body\",\n placeholder = \"Enter text\",\n onBlur,\n onChange,\n onKeyDown,\n buttonProps,\n typographyProps,\n ...others\n } = useDefaultProps(\"HvInlineEditor\", props);\n\n const { classes, cx } = useClasses(classesProp);\n const [value, setValue] = useControlled(valueProp, defaultValue);\n const [editMode, setEditMode] = useState(false);\n const [cachedValue, setCachedValue] = useState(value);\n const inputRef = useRef<HTMLInputElement>();\n const { activeTheme } = useTheme();\n\n const typographyStyles = activeTheme?.typography[variant] || {};\n const { lineHeight } = typographyStyles;\n\n useLayoutEffect(() => {\n const input = inputRef.current;\n if (editMode && input) {\n input.focus();\n input.select();\n }\n }, [editMode]);\n\n const handleClick = () => {\n setEditMode(true);\n setCachedValue(value);\n };\n\n const handleBlur: HvInputProps[\"onBlur\"] = (event) => {\n setEditMode(false);\n\n const newValue = value || cachedValue; // empty values should be ignored\n setValue(newValue);\n onBlur?.(event, newValue);\n };\n\n const handleKeyDown: HvInputProps[\"onKeyDown\"] = (event) => {\n if (isKey(event, \"Esc\")) {\n setEditMode(false);\n setValue(cachedValue);\n }\n onKeyDown?.(event as any);\n };\n\n const handleChange: HvInputProps[\"onChange\"] = (event, val) => {\n setValue(val);\n onChange?.(event, val);\n };\n\n return (\n <div className={cx(classes.root, className)}>\n {editMode ? (\n <InputComponent\n inputRef={inputRef}\n classes={{\n root: classes.inputRoot,\n input: classes.input,\n inputBorderContainer: classes.inputBorderContainer,\n }}\n inputProps={{\n style: {\n ...typographyStyles,\n height: InputComponent === HvInput ? lineHeight : undefined,\n },\n }}\n value={value}\n onBlur={handleBlur}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n {...others}\n />\n ) : (\n <HvButton\n variant=\"secondaryGhost\"\n overrideIconColors={false}\n endIcon={\n <Edit\n color=\"secondary_60\"\n role=\"none\"\n className={cx(classes.icon, {
|
|
1
|
+
{"version":3,"file":"InlineEditor.js","sources":["../../../../src/components/InlineEditor/InlineEditor.tsx"],"sourcesContent":["import React, { useLayoutEffect, useRef, useState } from \"react\";\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\n\nimport { Edit } from \"@hitachivantara/uikit-react-icons\";\n\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { useControlled } from \"@core/hooks/useControlled\";\nimport { useTheme } from \"@core/hooks/useTheme\";\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { isKey } from \"@core/utils/keyboardUtils\";\nimport { HvButtonProps, HvButton } from \"@core/components/Button\";\nimport {\n HvTypographyVariants,\n HvTypographyProps,\n HvTypography,\n} from \"@core/components/Typography\";\nimport { HvInput, HvInputProps } from \"@core/components/Input\";\n\nimport { staticClasses, useClasses } from \"./InlineEditor.styles\";\n\nexport { staticClasses as inlineEditorClasses };\n\nexport type HvInlineEditorClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvInlineEditorProps\n extends HvBaseProps<HTMLDivElement, \"onBlur\" | \"onChange\"> {\n /** The value of the form element. */\n value?: string;\n /** Whether the Edit icon should always be visible */\n showIcon?: boolean;\n /** Component to use as the input. The component \"inherit\" from `HvBaseInput` (such as `HvInput` or `HvTextArea`) */\n component?: React.ElementType;\n /** Variant of the HvTypography to display */\n variant?: HvTypographyVariants;\n /** Called when the input is blurred. */\n onBlur?: (\n event: React.FocusEvent<HTMLTextAreaElement | HTMLInputElement>,\n value: string\n ) => void;\n /** Called when the input value changes. */\n onChange?: (event: React.SyntheticEvent, value: string) => void;\n /** Props passed to the HvButton component */\n buttonProps?: HvButtonProps;\n /** Props passed to the HvTypography text component */\n typographyProps?: HvTypographyProps;\n /** Whether the editor is disabled or not. */\n disabled?: boolean;\n /** A Jss Object used to override or extend the styles applied to the empty state component. */\n classes?: HvInlineEditorClasses;\n}\n\n/**\n * An Inline Editor allows the user to edit a record without making a major switch\n * between viewing and editing, making it an efficient method of updating a record.\n */\nexport const HvInlineEditor = (props: HvInlineEditorProps) => {\n const {\n className,\n classes: classesProp,\n value: valueProp,\n defaultValue,\n showIcon,\n component: InputComponent = HvInput,\n variant = \"body\",\n placeholder = \"Enter text\",\n onBlur,\n onChange,\n onKeyDown,\n buttonProps,\n typographyProps,\n disabled,\n ...others\n } = useDefaultProps(\"HvInlineEditor\", props);\n\n const { classes, cx } = useClasses(classesProp);\n const [value, setValue] = useControlled(valueProp, defaultValue);\n const [editMode, setEditMode] = useState(false);\n const [cachedValue, setCachedValue] = useState(value);\n const inputRef = useRef<HTMLInputElement>();\n const { activeTheme } = useTheme();\n\n const typographyStyles = activeTheme?.typography[variant] || {};\n const { lineHeight } = typographyStyles;\n\n useLayoutEffect(() => {\n const input = inputRef.current;\n if (editMode && input) {\n input.focus();\n input.select();\n }\n }, [editMode]);\n\n const handleClick = () => {\n setEditMode(true);\n setCachedValue(value);\n };\n\n const handleBlur: HvInputProps[\"onBlur\"] = (event) => {\n setEditMode(false);\n\n const newValue = value || cachedValue; // empty values should be ignored\n setValue(newValue);\n onBlur?.(event, newValue);\n };\n\n const handleKeyDown: HvInputProps[\"onKeyDown\"] = (event) => {\n if (isKey(event, \"Esc\")) {\n setEditMode(false);\n setValue(cachedValue);\n }\n onKeyDown?.(event as any);\n };\n\n const handleChange: HvInputProps[\"onChange\"] = (event, val) => {\n setValue(val);\n onChange?.(event, val);\n };\n\n return (\n <div className={cx(classes.root, className)}>\n {editMode && !disabled ? (\n <InputComponent\n inputRef={inputRef}\n classes={{\n root: classes.inputRoot,\n input: classes.input,\n inputBorderContainer: classes.inputBorderContainer,\n }}\n inputProps={{\n style: {\n ...typographyStyles,\n height: InputComponent === HvInput ? lineHeight : undefined,\n },\n }}\n value={value}\n onBlur={handleBlur}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n {...others}\n />\n ) : (\n <HvButton\n variant=\"secondaryGhost\"\n overrideIconColors={false}\n endIcon={\n <Edit\n color=\"secondary_60\"\n role=\"none\"\n className={cx(classes.icon, {\n [classes.iconVisible]: showIcon,\n })}\n />\n }\n className={cx(classes.button, {\n [classes.largeText]: parseInt(lineHeight as string, 10) >= 28,\n })}\n onClick={handleClick}\n disabled={disabled}\n {...buttonProps}\n >\n <HvTypography\n variant={variant}\n noWrap\n className={cx(classes.text, { [classes.textEmpty]: !value })}\n {...typographyProps}\n >\n {value || placeholder}\n </HvTypography>\n </HvButton>\n )}\n </div>\n );\n};\n"],"names":["HvInlineEditor","props","className","classes","classesProp","value","valueProp","defaultValue","showIcon","component","InputComponent","HvInput","variant","placeholder","onBlur","onChange","onKeyDown","buttonProps","typographyProps","disabled","others","useDefaultProps","cx","useClasses","setValue","useControlled","editMode","setEditMode","useState","cachedValue","setCachedValue","inputRef","useRef","activeTheme","useTheme","typographyStyles","typography","lineHeight","useLayoutEffect","input","current","focus","select","handleClick","handleBlur","event","newValue","handleKeyDown","isKey","handleChange","val","root","inputRoot","inputBorderContainer","style","height","undefined","icon","iconVisible","button","largeText","parseInt","text","textEmpty"],"mappings":"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"}
|
|
@@ -38,11 +38,11 @@ const {
|
|
|
38
38
|
maxWidth: "100%",
|
|
39
39
|
justifyContent: "flex-start",
|
|
40
40
|
alignItems: "center",
|
|
41
|
-
backgroundColor:
|
|
41
|
+
backgroundColor: theme.colors.atmo1,
|
|
42
42
|
border: `1px solid transparent`,
|
|
43
43
|
"&:hover, &:focus": {
|
|
44
44
|
border: `1px solid ${theme.colors.primary}`,
|
|
45
|
-
backgroundColor:
|
|
45
|
+
backgroundColor: theme.colors.atmo1,
|
|
46
46
|
"& $icon": {
|
|
47
47
|
visibility: "visible"
|
|
48
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InlineEditor.styles.js","sources":["../../../../src/components/InlineEditor/InlineEditor.styles.tsx"],"sourcesContent":["import { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { createClasses } from \"@core/utils/classes\";\nimport { inputClasses } from \"@core/components/Input\";\nimport { baseInputClasses } from \"@core/components/BaseInput\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvInlineEditor\", {\n root: {\n [`& .${baseInputClasses.inputRoot}.${inputClasses.inputRoot}`]: {\n height: \"100%\",\n minHeight: \"32px\",\n },\n },\n inputBorderContainer: {\n top: \"unset\",\n bottom: 0,\n },\n input: {},\n inputRoot: {},\n text: {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n alignSelf: \"center\",\n },\n largeText: {},\n textEmpty: {\n color: theme.colors.secondary_60,\n },\n button: {\n padding: theme.spacing(\"6px\", \"8px\", \"5px\", \"8px\"),\n minHeight: \"32px\",\n\n boxSizing: \"border-box\",\n cursor: \"text\",\n height: \"100%\",\n width: \"100%\",\n maxWidth: \"100%\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n\n backgroundColor:
|
|
1
|
+
{"version":3,"file":"InlineEditor.styles.js","sources":["../../../../src/components/InlineEditor/InlineEditor.styles.tsx"],"sourcesContent":["import { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { createClasses } from \"@core/utils/classes\";\nimport { inputClasses } from \"@core/components/Input\";\nimport { baseInputClasses } from \"@core/components/BaseInput\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvInlineEditor\", {\n root: {\n [`& .${baseInputClasses.inputRoot}.${inputClasses.inputRoot}`]: {\n height: \"100%\",\n minHeight: \"32px\",\n },\n },\n inputBorderContainer: {\n top: \"unset\",\n bottom: 0,\n },\n input: {},\n inputRoot: {},\n text: {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n alignSelf: \"center\",\n },\n largeText: {},\n textEmpty: {\n color: theme.colors.secondary_60,\n },\n button: {\n padding: theme.spacing(\"6px\", \"8px\", \"5px\", \"8px\"),\n minHeight: \"32px\",\n\n boxSizing: \"border-box\",\n cursor: \"text\",\n height: \"100%\",\n width: \"100%\",\n maxWidth: \"100%\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n\n backgroundColor: theme.colors.atmo1,\n border: `1px solid transparent`,\n\n \"&:hover, &:focus\": {\n border: `1px solid ${theme.colors.primary}`,\n backgroundColor: theme.colors.atmo1,\n\n \"& $icon\": {\n visibility: \"visible\",\n },\n },\n\n \"&:active\": {\n border: `1px solid ${theme.colors.secondary}`,\n backgroundColor: \"transparent\",\n\n \"& $icon\": {\n visibility: \"visible\",\n },\n },\n\n \"& > div\": {\n width: \"100%\",\n },\n \"& > div > span\": {\n width: \"100%\",\n },\n },\n icon: {\n cursor: \"pointer\",\n visibility: \"hidden\",\n alignSelf: \"center\",\n height: \"16px\",\n width: \"32px\",\n minWidth: \"32px\",\n\n \"& svg\": {\n margin: theme.spacing(0, \"xs\"),\n },\n },\n iconVisible: {\n visibility: \"visible\",\n },\n});\n"],"names":["staticClasses","useClasses","createClasses","root","baseInputClasses","inputRoot","inputClasses","height","minHeight","inputBorderContainer","top","bottom","input","text","overflow","textOverflow","whiteSpace","alignSelf","largeText","textEmpty","color","theme","colors","secondary_60","button","padding","spacing","boxSizing","cursor","width","maxWidth","justifyContent","alignItems","backgroundColor","atmo1","border","primary","visibility","secondary","icon","minWidth","margin","iconVisible"],"mappings":";;;;AAMa,MAAA;AAAA,EAAEA;AAAAA,EAAeC;AAAW,IAAIC,cAAc,kBAAkB;AAAA,EAC3EC,MAAM;AAAA,IACJ,CAAE,MAAKC,gBAAiBC,SAAU,IAAGC,gBAAaD,SAAU,EAAC,GAAG;AAAA,MAC9DE,QAAQ;AAAA,MACRC,WAAW;AAAA,IACb;AAAA,EACF;AAAA,EACAC,sBAAsB;AAAA,IACpBC,KAAK;AAAA,IACLC,QAAQ;AAAA,EACV;AAAA,EACAC,OAAO,CAAC;AAAA,EACRP,WAAW,CAAC;AAAA,EACZQ,MAAM;AAAA,IACJC,UAAU;AAAA,IACVC,cAAc;AAAA,IACdC,YAAY;AAAA,IACZC,WAAW;AAAA,EACb;AAAA,EACAC,WAAW,CAAC;AAAA,EACZC,WAAW;AAAA,IACTC,OAAOC,MAAMC,OAAOC;AAAAA,EACtB;AAAA,EACAC,QAAQ;AAAA,IACNC,SAASJ,MAAMK,QAAQ,OAAO,OAAO,OAAO,KAAK;AAAA,IACjDlB,WAAW;AAAA,IAEXmB,WAAW;AAAA,IACXC,QAAQ;AAAA,IACRrB,QAAQ;AAAA,IACRsB,OAAO;AAAA,IACPC,UAAU;AAAA,IACVC,gBAAgB;AAAA,IAChBC,YAAY;AAAA,IAEZC,iBAAiBZ,MAAMC,OAAOY;AAAAA,IAC9BC,QAAS;AAAA,IAET,oBAAoB;AAAA,MAClBA,QAAS,aAAYd,MAAMC,OAAOc,OAAQ;AAAA,MAC1CH,iBAAiBZ,MAAMC,OAAOY;AAAAA,MAE9B,WAAW;AAAA,QACTG,YAAY;AAAA,MACd;AAAA,IACF;AAAA,IAEA,YAAY;AAAA,MACVF,QAAS,aAAYd,MAAMC,OAAOgB,SAAU;AAAA,MAC5CL,iBAAiB;AAAA,MAEjB,WAAW;AAAA,QACTI,YAAY;AAAA,MACd;AAAA,IACF;AAAA,IAEA,WAAW;AAAA,MACTR,OAAO;AAAA,IACT;AAAA,IACA,kBAAkB;AAAA,MAChBA,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACAU,MAAM;AAAA,IACJX,QAAQ;AAAA,IACRS,YAAY;AAAA,IACZpB,WAAW;AAAA,IACXV,QAAQ;AAAA,IACRsB,OAAO;AAAA,IACPW,UAAU;AAAA,IAEV,SAAS;AAAA,MACPC,QAAQpB,MAAMK,QAAQ,GAAG,IAAI;AAAA,IAC/B;AAAA,EACF;AAAA,EACAgB,aAAa;AAAA,IACXL,YAAY;AAAA,EACd;AACF,CAAC;"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { jsxs, jsx } from "@emotion/react/jsx-runtime";
|
|
2
|
+
import { useDefaultProps } from "../../hooks/useDefaultProps.js";
|
|
3
|
+
import { useControlled } from "../../hooks/useControlled.js";
|
|
4
|
+
import { useUniqueId } from "../../hooks/useUniqueId.js";
|
|
5
|
+
import { Up, Down } from "@hitachivantara/uikit-react-icons";
|
|
6
|
+
import { setId } from "../../utils/setId.js";
|
|
7
|
+
import { useClasses } from "./Section.styles.js";
|
|
8
|
+
import { staticClasses } from "./Section.styles.js";
|
|
9
|
+
import { HvButton } from "../Button/Button.js";
|
|
10
|
+
const HvSection = (props) => {
|
|
11
|
+
const {
|
|
12
|
+
id,
|
|
13
|
+
classes: classesProp,
|
|
14
|
+
className,
|
|
15
|
+
title,
|
|
16
|
+
expandable,
|
|
17
|
+
expanded,
|
|
18
|
+
defaultExpanded = true,
|
|
19
|
+
actions,
|
|
20
|
+
onToggle,
|
|
21
|
+
expandButtonProps,
|
|
22
|
+
children,
|
|
23
|
+
...others
|
|
24
|
+
} = useDefaultProps("HvSection", props);
|
|
25
|
+
const {
|
|
26
|
+
classes,
|
|
27
|
+
cx
|
|
28
|
+
} = useClasses(classesProp);
|
|
29
|
+
const [isOpen, setIsOpen] = useControlled(expanded, Boolean(defaultExpanded));
|
|
30
|
+
const elementId = useUniqueId(id, "hvSection");
|
|
31
|
+
const contentId = setId(elementId, "content");
|
|
32
|
+
const showContent = expandable ? !!isOpen : true;
|
|
33
|
+
return /* @__PURE__ */ jsxs("div", { id: elementId, className: cx(classes.root, className), ...others, children: [
|
|
34
|
+
/* @__PURE__ */ jsxs("div", { className: classes.header, children: [
|
|
35
|
+
expandable && /* @__PURE__ */ jsx(HvButton, { icon: true, onClick: (event) => {
|
|
36
|
+
setIsOpen((o) => !o);
|
|
37
|
+
onToggle == null ? void 0 : onToggle(event, !isOpen);
|
|
38
|
+
}, "aria-expanded": isOpen, "aria-controls": contentId, "aria-label": isOpen ? "Collapse" : "Expand", ...expandButtonProps, children: isOpen ? /* @__PURE__ */ jsx(Up, {}) : /* @__PURE__ */ jsx(Down, {}) }),
|
|
39
|
+
title,
|
|
40
|
+
/* @__PURE__ */ jsx("div", { className: classes.actions, children: actions })
|
|
41
|
+
] }),
|
|
42
|
+
/* @__PURE__ */ jsx("div", { id: contentId, hidden: !isOpen, className: cx(classes.content, {
|
|
43
|
+
[classes.hidden]: !showContent
|
|
44
|
+
}), children })
|
|
45
|
+
] });
|
|
46
|
+
};
|
|
47
|
+
export {
|
|
48
|
+
HvSection,
|
|
49
|
+
staticClasses as sectionClasses
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=Section.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Section.js","sources":["../../../../src/components/Section/Section.tsx"],"sourcesContent":["import { HvBaseProps } from \"@core/types/generic\";\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { HvButton, HvButtonProps } from \"@core/components/Button\";\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\nimport { useControlled } from \"@core/hooks/useControlled\";\nimport { useUniqueId } from \"@core/hooks/useUniqueId\";\nimport { Down, Up } from \"@hitachivantara/uikit-react-icons\";\nimport { setId } from \"@core/utils/setId\";\nimport { staticClasses, useClasses } from \"./Section.styles\";\n\nexport { staticClasses as sectionClasses };\n\nexport type HvSectionClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvSectionProps\n extends Omit<HvBaseProps<HTMLDivElement>, \"title\"> {\n /** The title of the section */\n title?: React.ReactNode;\n /** Whether or not the section is expandable. */\n expandable?: boolean;\n /** Whether the section is open or not, if this property is defined the accordion must be fully controlled. */\n expanded?: boolean;\n /** When uncontrolled, defines the initial expanded state. */\n defaultExpanded?: boolean;\n /** Section actions */\n // actions?: HvActionGeneric[];\n actions?: React.ReactNode;\n /** Section onExpand callback */\n onToggle?: (\n event: React.MouseEventHandler<HTMLButtonElement>,\n open: boolean\n ) => void;\n /** Props to be passed to the expand button */\n expandButtonProps?: HvButtonProps;\n /** A Jss Object used to override or extend the styles applied to the empty state component. */\n classes?: HvSectionClasses;\n}\n\n/**\n * Sections allow grouping information on a page under the same topic.\n */\nexport const HvSection = (props: HvSectionProps) => {\n const {\n id,\n classes: classesProp,\n className,\n title,\n expandable,\n expanded,\n defaultExpanded = true,\n actions,\n onToggle,\n expandButtonProps,\n children,\n ...others\n } = useDefaultProps(\"HvSection\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n const [isOpen, setIsOpen] = useControlled(expanded, Boolean(defaultExpanded));\n\n const elementId = useUniqueId(id, \"hvSection\");\n const contentId = setId(elementId, \"content\");\n\n const showContent = expandable ? !!isOpen : true;\n\n return (\n <div id={elementId} className={cx(classes.root, className)} {...others}>\n <div className={classes.header}>\n {expandable && (\n <HvButton\n icon\n onClick={(event) => {\n setIsOpen((o) => !o);\n onToggle?.(event, !isOpen);\n }}\n aria-expanded={isOpen}\n aria-controls={contentId}\n aria-label={isOpen ? \"Collapse\" : \"Expand\"}\n {...expandButtonProps}\n >\n {isOpen ? <Up /> : <Down />}\n </HvButton>\n )}\n {title}\n <div className={classes.actions}>{actions}</div>\n </div>\n <div\n id={contentId}\n hidden={!isOpen}\n className={cx(classes.content, { [classes.hidden]: !showContent })}\n >\n {children}\n </div>\n </div>\n );\n};\n"],"names":["HvSection","props","id","classes","classesProp","className","title","expandable","expanded","defaultExpanded","actions","onToggle","expandButtonProps","children","others","useDefaultProps","cx","useClasses","isOpen","setIsOpen","useControlled","Boolean","elementId","useUniqueId","contentId","setId","showContent","root","header","event","o","content","hidden"],"mappings":";;;;;;;;;AAyCaA,MAAAA,YAAYA,CAACC,UAA0B;AAC5C,QAAA;AAAA,IACJC;AAAAA,IACAC,SAASC;AAAAA,IACTC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC,kBAAkB;AAAA,IAClBC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACA,GAAGC;AAAAA,EAAAA,IACDC,gBAAgB,aAAad,KAAK;AAEhC,QAAA;AAAA,IAAEE;AAAAA,IAASa;AAAAA,EAAAA,IAAOC,WAAWb,WAAW;AAExC,QAAA,CAACc,QAAQC,SAAS,IAAIC,cAAcZ,UAAUa,QAAQZ,eAAe,CAAC;AAEtEa,QAAAA,YAAYC,YAAYrB,IAAI,WAAW;AACvCsB,QAAAA,YAAYC,MAAMH,WAAW,SAAS;AAE5C,QAAMI,cAAcnB,aAAa,CAAC,CAACW,SAAS;AAG1C,SAAA,qBAAC,OAAI,EAAA,IAAII,WAAW,WAAWN,GAAGb,QAAQwB,MAAMtB,SAAS,GAAOS,GAAAA,QAC9D,UAAA;AAAA,IAAC,qBAAA,OAAA,EAAI,WAAWX,QAAQyB,QACrBrB,UAAAA;AAAAA,MAAAA,cACE,oBAAA,UAAA,EACC,MAAI,MACJ,SAAUsB,CAAU,UAAA;AACPC,kBAAAA,CAAAA,MAAM,CAACA,CAAC;AACRD,6CAAAA,OAAO,CAACX;AAAAA,MAAM,GAE3B,iBAAeA,QACf,iBAAeM,WACf,cAAYN,SAAS,aAAa,UAC9BN,GAAAA,mBAEHM,UAAS,SAAA,oBAAC,MAAK,IAAG,oBAAC,OAAO,CAAA,GAC7B;AAAA,MAEDZ;AAAAA,MACA,oBAAA,OAAA,EAAI,WAAWH,QAAQO,SAAUA,UAAQ,SAAA;AAAA,IAAA,GAC5C;AAAA,IACA,oBAAC,OACC,EAAA,IAAIc,WACJ,QAAQ,CAACN,QACT,WAAWF,GAAGb,QAAQ4B,SAAS;AAAA,MAAE,CAAC5B,QAAQ6B,MAAM,GAAG,CAACN;AAAAA,IAAAA,CAAa,GAEhEb,SACH,CAAA;AAAA,EACF,EAAA,CAAA;AAEJ;"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { theme } from "@hitachivantara/uikit-styles";
|
|
2
|
+
import { createClasses } from "../../utils/classes.js";
|
|
3
|
+
const {
|
|
4
|
+
staticClasses,
|
|
5
|
+
useClasses
|
|
6
|
+
} = createClasses("HvSection", {
|
|
7
|
+
root: {
|
|
8
|
+
width: "100%",
|
|
9
|
+
display: "flex",
|
|
10
|
+
flexDirection: "column",
|
|
11
|
+
padding: theme.space.sm,
|
|
12
|
+
backgroundColor: theme.colors.atmo1,
|
|
13
|
+
borderRadius: theme.radii.round,
|
|
14
|
+
border: `1px solid ${theme.colors.atmo4}`
|
|
15
|
+
},
|
|
16
|
+
hidden: {
|
|
17
|
+
height: 0,
|
|
18
|
+
display: "none"
|
|
19
|
+
},
|
|
20
|
+
header: {
|
|
21
|
+
display: "flex",
|
|
22
|
+
alignItems: "center",
|
|
23
|
+
position: "relative",
|
|
24
|
+
minHeight: theme.sizes.sm
|
|
25
|
+
},
|
|
26
|
+
content: {
|
|
27
|
+
marginTop: theme.space.sm
|
|
28
|
+
},
|
|
29
|
+
actions: {
|
|
30
|
+
display: "flex",
|
|
31
|
+
gap: theme.space.xs,
|
|
32
|
+
position: "absolute",
|
|
33
|
+
right: 0
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
export {
|
|
37
|
+
staticClasses,
|
|
38
|
+
useClasses
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=Section.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Section.styles.js","sources":["../../../../src/components/Section/Section.styles.tsx"],"sourcesContent":["import { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { createClasses } from \"@core/utils/classes\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvSection\", {\n root: {\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n padding: theme.space.sm,\n backgroundColor: theme.colors.atmo1,\n borderRadius: theme.radii.round,\n border: `1px solid ${theme.colors.atmo4}`,\n },\n hidden: { height: 0, display: \"none\" },\n header: {\n display: \"flex\",\n alignItems: \"center\",\n position: \"relative\",\n minHeight: theme.sizes.sm,\n },\n content: {\n marginTop: theme.space.sm,\n },\n actions: {\n display: \"flex\",\n gap: theme.space.xs,\n position: \"absolute\",\n right: 0,\n },\n});\n"],"names":["staticClasses","useClasses","createClasses","root","width","display","flexDirection","padding","theme","space","sm","backgroundColor","colors","atmo1","borderRadius","radii","round","border","atmo4","hidden","height","header","alignItems","position","minHeight","sizes","content","marginTop","actions","gap","xs","right"],"mappings":";;AAIa,MAAA;AAAA,EAAEA;AAAAA,EAAeC;AAAW,IAAIC,cAAc,aAAa;AAAA,EACtEC,MAAM;AAAA,IACJC,OAAO;AAAA,IACPC,SAAS;AAAA,IACTC,eAAe;AAAA,IACfC,SAASC,MAAMC,MAAMC;AAAAA,IACrBC,iBAAiBH,MAAMI,OAAOC;AAAAA,IAC9BC,cAAcN,MAAMO,MAAMC;AAAAA,IAC1BC,QAAS,aAAYT,MAAMI,OAAOM,KAAM;AAAA,EAC1C;AAAA,EACAC,QAAQ;AAAA,IAAEC,QAAQ;AAAA,IAAGf,SAAS;AAAA,EAAO;AAAA,EACrCgB,QAAQ;AAAA,IACNhB,SAAS;AAAA,IACTiB,YAAY;AAAA,IACZC,UAAU;AAAA,IACVC,WAAWhB,MAAMiB,MAAMf;AAAAA,EACzB;AAAA,EACAgB,SAAS;AAAA,IACPC,WAAWnB,MAAMC,MAAMC;AAAAA,EACzB;AAAA,EACAkB,SAAS;AAAA,IACPvB,SAAS;AAAA,IACTwB,KAAKrB,MAAMC,MAAMqB;AAAAA,IACjBP,UAAU;AAAA,IACVQ,OAAO;AAAA,EACT;AACF,CAAC;"}
|
package/dist/esm/index.js
CHANGED
|
@@ -260,6 +260,8 @@ import { HvCarouselControls } from "./components/Carousel/CarouselControls.js";
|
|
|
260
260
|
import { HvCarouselThumbnails } from "./components/Carousel/CarouselThumbnails.js";
|
|
261
261
|
import { staticClasses as staticClasses112 } from "./components/TimePicker/TimePicker.styles.js";
|
|
262
262
|
import { HvTimePicker } from "./components/TimePicker/TimePicker.js";
|
|
263
|
+
import { staticClasses as staticClasses113 } from "./components/Section/Section.styles.js";
|
|
264
|
+
import { HvSection } from "./components/Section/Section.js";
|
|
263
265
|
import { useClickOutside } from "./hooks/useClickOutside.js";
|
|
264
266
|
import { useControlled } from "./hooks/useControlled.js";
|
|
265
267
|
import { useForkRef } from "./hooks/useForkRef.js";
|
|
@@ -393,6 +395,7 @@ export {
|
|
|
393
395
|
HvRightControl,
|
|
394
396
|
HvScrollToHorizontal,
|
|
395
397
|
HvScrollToVertical,
|
|
398
|
+
HvSection,
|
|
396
399
|
HvSelectionList,
|
|
397
400
|
HvSimpleGrid,
|
|
398
401
|
HvSlider,
|
|
@@ -575,6 +578,7 @@ export {
|
|
|
575
578
|
staticClasses89 as rightControlClasses,
|
|
576
579
|
staticClasses106 as scrollToHorizontalClasses,
|
|
577
580
|
staticClasses104 as scrollToVerticalClasses,
|
|
581
|
+
staticClasses113 as sectionClasses,
|
|
578
582
|
staticClasses11 as selectionListClasses,
|
|
579
583
|
setElementAttrs,
|
|
580
584
|
setId,
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -4000,6 +4000,8 @@ export declare interface HvInlineEditorProps extends HvBaseProps<HTMLDivElement,
|
|
|
4000
4000
|
buttonProps?: HvButtonProps;
|
|
4001
4001
|
/** Props passed to the HvTypography text component */
|
|
4002
4002
|
typographyProps?: HvTypographyProps;
|
|
4003
|
+
/** Whether the editor is disabled or not. */
|
|
4004
|
+
disabled?: boolean;
|
|
4003
4005
|
/** A Jss Object used to override or extend the styles applied to the empty state component. */
|
|
4004
4006
|
classes?: HvInlineEditorClasses;
|
|
4005
4007
|
}
|
|
@@ -5412,6 +5414,32 @@ export declare interface HvScrollToVerticalProps extends HvBaseProps<HTMLOListEl
|
|
|
5412
5414
|
classes?: HvScrollToVerticalClasses;
|
|
5413
5415
|
}
|
|
5414
5416
|
|
|
5417
|
+
/**
|
|
5418
|
+
* Sections allow grouping information on a page under the same topic.
|
|
5419
|
+
*/
|
|
5420
|
+
export declare const HvSection: (props: HvSectionProps) => JSX_2.Element;
|
|
5421
|
+
|
|
5422
|
+
export declare type HvSectionClasses = ExtractNames<typeof useClasses_119>;
|
|
5423
|
+
|
|
5424
|
+
export declare interface HvSectionProps extends Omit<HvBaseProps<HTMLDivElement>, "title"> {
|
|
5425
|
+
/** The title of the section */
|
|
5426
|
+
title?: React.ReactNode;
|
|
5427
|
+
/** Whether or not the section is expandable. */
|
|
5428
|
+
expandable?: boolean;
|
|
5429
|
+
/** Whether the section is open or not, if this property is defined the accordion must be fully controlled. */
|
|
5430
|
+
expanded?: boolean;
|
|
5431
|
+
/** When uncontrolled, defines the initial expanded state. */
|
|
5432
|
+
defaultExpanded?: boolean;
|
|
5433
|
+
/** Section actions */
|
|
5434
|
+
actions?: React.ReactNode;
|
|
5435
|
+
/** Section onExpand callback */
|
|
5436
|
+
onToggle?: (event: React.MouseEventHandler<HTMLButtonElement>, open: boolean) => void;
|
|
5437
|
+
/** Props to be passed to the expand button */
|
|
5438
|
+
expandButtonProps?: HvButtonProps;
|
|
5439
|
+
/** A Jss Object used to override or extend the styles applied to the empty state component. */
|
|
5440
|
+
classes?: HvSectionClasses;
|
|
5441
|
+
}
|
|
5442
|
+
|
|
5415
5443
|
/**
|
|
5416
5444
|
* Allows the user to select one or more items from a list of choices.
|
|
5417
5445
|
*
|
|
@@ -7570,6 +7598,14 @@ export declare const scrollToVerticalClasses: {
|
|
|
7570
7598
|
positionAbsolute: "HvScrollToVertical-positionAbsolute";
|
|
7571
7599
|
};
|
|
7572
7600
|
|
|
7601
|
+
export declare const sectionClasses: {
|
|
7602
|
+
hidden: "HvSection-hidden";
|
|
7603
|
+
content: "HvSection-content";
|
|
7604
|
+
header: "HvSection-header";
|
|
7605
|
+
root: "HvSection-root";
|
|
7606
|
+
actions: "HvSection-actions";
|
|
7607
|
+
};
|
|
7608
|
+
|
|
7573
7609
|
export declare const selectionListClasses: {
|
|
7574
7610
|
label: "HvSelectionList-label";
|
|
7575
7611
|
root: "HvSelectionList-root";
|
|
@@ -7899,10 +7935,10 @@ export declare const treeViewItemClasses: {
|
|
|
7899
7935
|
node: "HvVerticalNavigationTreeViewItem-node";
|
|
7900
7936
|
focused: "HvVerticalNavigationTreeViewItem-focused";
|
|
7901
7937
|
selectable: "HvVerticalNavigationTreeViewItem-selectable";
|
|
7938
|
+
expandable: "HvVerticalNavigationTreeViewItem-expandable";
|
|
7902
7939
|
labelIcon: "HvVerticalNavigationTreeViewItem-labelIcon";
|
|
7903
7940
|
collapsed: "HvVerticalNavigationTreeViewItem-collapsed";
|
|
7904
7941
|
minimized: "HvVerticalNavigationTreeViewItem-minimized";
|
|
7905
|
-
expandable: "HvVerticalNavigationTreeViewItem-expandable";
|
|
7906
7942
|
unselected: "HvVerticalNavigationTreeViewItem-unselected";
|
|
7907
7943
|
labelExpandable: "HvVerticalNavigationTreeViewItem-labelExpandable";
|
|
7908
7944
|
};
|
|
@@ -8049,7 +8085,7 @@ declare const useClasses_102: (classesProp?: Partial<Record<"root", string>>, ad
|
|
|
8049
8085
|
cx: (...args: any) => string;
|
|
8050
8086
|
};
|
|
8051
8087
|
|
|
8052
|
-
declare const useClasses_103: (classesProp?: Partial<Record<"content" | "unselectable" | "link" | "label" | "group" | "hide" | "expanded" | "disabled" | "selected" | "node" | "focused" | "selectable" | "
|
|
8088
|
+
declare const useClasses_103: (classesProp?: Partial<Record<"content" | "unselectable" | "link" | "label" | "group" | "hide" | "expanded" | "disabled" | "selected" | "node" | "focused" | "selectable" | "expandable" | "labelIcon" | "collapsed" | "minimized" | "unselected" | "labelExpandable", string>>, addStatic?: boolean) => {
|
|
8053
8089
|
classes: {
|
|
8054
8090
|
content: string;
|
|
8055
8091
|
unselectable: string;
|
|
@@ -8063,10 +8099,10 @@ declare const useClasses_103: (classesProp?: Partial<Record<"content" | "unselec
|
|
|
8063
8099
|
node: string;
|
|
8064
8100
|
focused: string;
|
|
8065
8101
|
selectable: string;
|
|
8102
|
+
expandable: string;
|
|
8066
8103
|
labelIcon: string;
|
|
8067
8104
|
collapsed: string;
|
|
8068
8105
|
minimized: string;
|
|
8069
|
-
expandable: string;
|
|
8070
8106
|
unselected: string;
|
|
8071
8107
|
labelExpandable: string;
|
|
8072
8108
|
};
|
|
@@ -8389,6 +8425,21 @@ declare const useClasses_118: (classesProp?: Partial<Record<"placeholder" | "lab
|
|
|
8389
8425
|
cx: (...args: any) => string;
|
|
8390
8426
|
};
|
|
8391
8427
|
|
|
8428
|
+
declare const useClasses_119: (classesProp?: Partial<Record<"hidden" | "content" | "header" | "root" | "actions", string>>, addStatic?: boolean) => {
|
|
8429
|
+
classes: {
|
|
8430
|
+
hidden: string;
|
|
8431
|
+
content: string;
|
|
8432
|
+
header: string;
|
|
8433
|
+
root: string;
|
|
8434
|
+
actions: string;
|
|
8435
|
+
};
|
|
8436
|
+
css: {
|
|
8437
|
+
(template: TemplateStringsArray, ...args: CSSInterpolation[]): string;
|
|
8438
|
+
(...args: CSSInterpolation[]): string;
|
|
8439
|
+
};
|
|
8440
|
+
cx: (...args: any) => string;
|
|
8441
|
+
};
|
|
8442
|
+
|
|
8392
8443
|
declare const useClasses_12: (classesProp?: Partial<Record<"root" | "popper" | "list", string>>, addStatic?: boolean) => {
|
|
8393
8444
|
classes: {
|
|
8394
8445
|
root: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hitachivantara/uikit-react-core",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.32.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"author": "Hitachi Vantara UI Kit Team",
|
|
6
6
|
"description": "Core React components for the NEXT Design System.",
|
|
@@ -33,9 +33,9 @@
|
|
|
33
33
|
"@emotion/css": "^11.11.0",
|
|
34
34
|
"@emotion/serialize": "^1.1.2",
|
|
35
35
|
"@emotion/utils": "^1.2.1",
|
|
36
|
-
"@hitachivantara/uikit-react-icons": "^5.6.
|
|
37
|
-
"@hitachivantara/uikit-react-shared": "^5.1.
|
|
38
|
-
"@hitachivantara/uikit-styles": "^5.
|
|
36
|
+
"@hitachivantara/uikit-react-icons": "^5.6.10",
|
|
37
|
+
"@hitachivantara/uikit-react-shared": "^5.1.14",
|
|
38
|
+
"@hitachivantara/uikit-styles": "^5.14.0",
|
|
39
39
|
"@internationalized/date": "^3.2.0",
|
|
40
40
|
"@mui/base": "^5.0.0-beta.4",
|
|
41
41
|
"@popperjs/core": "^2.11.8",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"access": "public",
|
|
65
65
|
"directory": "package"
|
|
66
66
|
},
|
|
67
|
-
"gitHead": "
|
|
67
|
+
"gitHead": "c3dfa0e28fb43a89c410cd673b7e3ab20a7b70c6",
|
|
68
68
|
"main": "dist/cjs/index.cjs",
|
|
69
69
|
"exports": {
|
|
70
70
|
".": {
|