@hitachivantara/uikit-react-core 3.68.2 → 3.68.5
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/Header/Navigation/MenuBar/MenuBar.js +5 -1
- package/dist/Header/Navigation/MenuBar/MenuBar.js.map +1 -1
- package/dist/Header/Navigation/MenuItem/MenuItem.js +29 -9
- package/dist/Header/Navigation/MenuItem/MenuItem.js.map +1 -1
- package/dist/Header/Navigation/MenuItem/styles.js +4 -0
- package/dist/Header/Navigation/MenuItem/styles.js.map +1 -1
- package/dist/Header/Navigation/Navigation.d.ts +4 -0
- package/dist/Header/Navigation/Navigation.js +5 -1
- package/dist/Header/Navigation/Navigation.js.map +1 -1
- package/dist/VerticalNavigation/Navigation/Navigation.d.ts +8 -0
- package/dist/VerticalNavigation/Navigation/Navigation.js +10 -2
- package/dist/VerticalNavigation/Navigation/Navigation.js.map +1 -1
- package/dist/VerticalNavigation/TreeView/TreeViewItem.d.ts +8 -0
- package/dist/VerticalNavigation/TreeView/TreeViewItem.js +25 -4
- package/dist/VerticalNavigation/TreeView/TreeViewItem.js.map +1 -1
- package/dist/VerticalNavigation/TreeView/styles.js +3 -0
- package/dist/VerticalNavigation/TreeView/styles.js.map +1 -1
- package/dist/legacy/Header/Navigation/MenuBar/MenuBar.js +5 -1
- package/dist/legacy/Header/Navigation/MenuBar/MenuBar.js.map +1 -1
- package/dist/legacy/Header/Navigation/MenuItem/MenuItem.js +25 -9
- package/dist/legacy/Header/Navigation/MenuItem/MenuItem.js.map +1 -1
- package/dist/legacy/Header/Navigation/MenuItem/styles.js +4 -0
- package/dist/legacy/Header/Navigation/MenuItem/styles.js.map +1 -1
- package/dist/legacy/Header/Navigation/Navigation.d.ts +4 -0
- package/dist/legacy/Header/Navigation/Navigation.js +5 -1
- package/dist/legacy/Header/Navigation/Navigation.js.map +1 -1
- package/dist/legacy/VerticalNavigation/Navigation/Navigation.d.ts +8 -0
- package/dist/legacy/VerticalNavigation/Navigation/Navigation.js +10 -2
- package/dist/legacy/VerticalNavigation/Navigation/Navigation.js.map +1 -1
- package/dist/legacy/VerticalNavigation/TreeView/TreeViewItem.d.ts +8 -0
- package/dist/legacy/VerticalNavigation/TreeView/TreeViewItem.js +24 -4
- package/dist/legacy/VerticalNavigation/TreeView/TreeViewItem.js.map +1 -1
- package/dist/legacy/VerticalNavigation/TreeView/styles.js +3 -0
- package/dist/legacy/VerticalNavigation/TreeView/styles.js.map +1 -1
- package/dist/modern/Header/Navigation/MenuBar/MenuBar.js +5 -1
- package/dist/modern/Header/Navigation/MenuBar/MenuBar.js.map +1 -1
- package/dist/modern/Header/Navigation/MenuItem/MenuItem.js +24 -9
- package/dist/modern/Header/Navigation/MenuItem/MenuItem.js.map +1 -1
- package/dist/modern/Header/Navigation/MenuItem/styles.js +4 -0
- package/dist/modern/Header/Navigation/MenuItem/styles.js.map +1 -1
- package/dist/modern/Header/Navigation/Navigation.d.ts +4 -0
- package/dist/modern/Header/Navigation/Navigation.js +5 -1
- package/dist/modern/Header/Navigation/Navigation.js.map +1 -1
- package/dist/modern/VerticalNavigation/Navigation/Navigation.d.ts +8 -0
- package/dist/modern/VerticalNavigation/Navigation/Navigation.js +10 -2
- package/dist/modern/VerticalNavigation/Navigation/Navigation.js.map +1 -1
- package/dist/modern/VerticalNavigation/TreeView/TreeViewItem.d.ts +8 -0
- package/dist/modern/VerticalNavigation/TreeView/TreeViewItem.js +23 -4
- package/dist/modern/VerticalNavigation/TreeView/TreeViewItem.js.map +1 -1
- package/dist/modern/VerticalNavigation/TreeView/styles.js +3 -0
- package/dist/modern/VerticalNavigation/TreeView/styles.js.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","names":["selected","theme","background","hv","palette","atmosphere","atmo3","borderLeft","accent","acce3","hover","styles","root","display","atmo1","padding","margin","listStyle","outline","group","node","minHeight","marginBottom","disabled","selectable","unselectable","expandable","collapsed","expanded","unselected","focused","noIcon","withIcon","content","width","justifyContent","alignItems","height","paddingRight","spacing","xs","fontWeight","outlineStyles","cursor"],"sources":["../../../src/VerticalNavigation/TreeView/styles.js"],"sourcesContent":["import { outlineStyles } from \"../../Focus/styles\";\n\nconst selected = (theme) => ({\n background: theme.hv.palette.atmosphere.atmo3,\n borderLeft: `2px solid ${theme.hv.palette.accent.acce3}`,\n \"& *\": {\n background: theme.hv.palette.atmosphere.atmo3,\n },\n});\n\nconst hover = (theme) => ({\n background: theme.hv.palette.atmosphere.atmo3,\n \"& *\": {\n background: theme.hv.palette.atmosphere.atmo3,\n },\n});\n\nconst styles = (theme) => ({\n /* role=\"tree\" root element */\n root: {\n display: \"block\",\n background: theme.hv.palette.atmosphere.atmo1,\n padding: `0px`,\n margin: \"0\",\n listStyle: \"none\",\n\n outline: \"none\",\n },\n\n /* role=\"group\" element */\n group: {\n margin: \"8px 0 0 0\",\n padding: 0,\n },\n\n /* role=\"treeitem\" element */\n node: {\n listStyle: \"none\",\n minHeight: \"32px\",\n \"&:not(:last-child)\": {\n marginBottom: \"8px\",\n },\n },\n\n /* role=\"treeitem\" element states */\n disabled: {},\n selectable: {},\n unselectable: {},\n expandable: {},\n collapsed: {\n \"&>$group\": { display: \"none\" },\n },\n expanded: {\n \"&>$group\": { display: \"block\" },\n },\n selected: {},\n unselected: {},\n\n focused: {},\n\n noIcon: {},\n withIcon: {},\n\n /* role=\"button\" element */\n content: {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n height: \"32px\",\n borderLeft: `2px solid transparent`,\n paddingRight: theme.hv.spacing.xs,\n\n \"$expandable>&\": {\n fontWeight: 600,\n },\n\n // selected state\n \"$selected>&\": selected(theme),\n\n // hover\n \":not($disabled):not($selected)>&:hover\": hover(theme),\n \":not($disabled)$selected>&:hover\": {},\n\n // focus\n \":not($disabled):not($selected)>&:focus-visible\": hover(theme),\n \":not($disabled):not($selected)>&.focus-visible\": hover(theme),\n\n \"*:focus-visible $focused>&\": {\n ...outlineStyles,\n },\n\n \".focus-visible $focused>&\": {\n ...outlineStyles,\n },\n\n \"$focused>&\": {\n ...hover(theme),\n },\n\n \"&[disabled], &:active\": {\n outline: \"none\",\n },\n\n \"&:focus\": {\n outline: \"none\",\n },\n\n \"&:focus-visible\": {\n ...outlineStyles,\n },\n\n \"&.focus-visible\": {\n ...outlineStyles,\n },\n\n // cursor\n cursor: \"pointer\",\n \"& *\": {\n cursor: \"pointer\",\n },\n \"$disabled>&\": {\n cursor: \"not-allowed\",\n \"& *\": {\n cursor: \"not-allowed\",\n },\n },\n },\n});\n\nexport default styles;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;AAEA,IAAMA,QAAQ,GAAG,SAAXA,QAAW,CAACC,KAAD;EAAA,OAAY;IAC3BC,UAAU,EAAED,KAAK,CAACE,EAAN,CAASC,OAAT,CAAiBC,UAAjB,CAA4BC,KADb;IAE3BC,UAAU,sBAAeN,KAAK,CAACE,EAAN,CAASC,OAAT,CAAiBI,MAAjB,CAAwBC,KAAvC,CAFiB;IAG3B,OAAO;MACLP,UAAU,EAAED,KAAK,CAACE,EAAN,CAASC,OAAT,CAAiBC,UAAjB,CAA4BC;IADnC;EAHoB,CAAZ;AAAA,CAAjB;;AAQA,IAAMI,KAAK,GAAG,SAARA,KAAQ,CAACT,KAAD;EAAA,OAAY;IACxBC,UAAU,EAAED,KAAK,CAACE,EAAN,CAASC,OAAT,CAAiBC,UAAjB,CAA4BC,KADhB;IAExB,OAAO;MACLJ,UAAU,EAAED,KAAK,CAACE,EAAN,CAASC,OAAT,CAAiBC,UAAjB,CAA4BC;IADnC;EAFiB,CAAZ;AAAA,CAAd;;AAOA,IAAMK,MAAM,GAAG,SAATA,MAAS,CAACV,KAAD;EAAA,OAAY;IACzB;IACAW,IAAI,EAAE;MACJC,OAAO,EAAE,OADL;MAEJX,UAAU,EAAED,KAAK,CAACE,EAAN,CAASC,OAAT,CAAiBC,UAAjB,CAA4BS,KAFpC;MAGJC,OAAO,OAHH;MAIJC,MAAM,EAAE,GAJJ;MAKJC,SAAS,EAAE,MALP;MAOJC,OAAO,EAAE;IAPL,CAFmB;;IAYzB;IACAC,KAAK,EAAE;MACLH,MAAM,EAAE,WADH;MAELD,OAAO,EAAE;IAFJ,CAbkB;;IAkBzB;IACAK,IAAI,EAAE;MACJH,SAAS,EAAE,MADP;MAEJI,SAAS,EAAE,MAFP;MAGJ,sBAAsB;QACpBC,YAAY,EAAE;MADM;IAHlB,CAnBmB;;IA2BzB;IACAC,QAAQ,EAAE,EA5Be;IA6BzBC,UAAU,EAAE,EA7Ba;IA8BzBC,YAAY,EAAE,EA9BW;IA+BzBC,UAAU,EAAE,EA/Ba;IAgCzBC,SAAS,EAAE;MACT,YAAY;QAAEd,OAAO,EAAE;MAAX;IADH,CAhCc;IAmCzBe,QAAQ,EAAE;MACR,YAAY;QAAEf,OAAO,EAAE;MAAX;IADJ,CAnCe;IAsCzBb,QAAQ,EAAE,EAtCe;IAuCzB6B,UAAU,EAAE,EAvCa;
|
|
1
|
+
{"version":3,"file":"styles.js","names":["selected","theme","background","hv","palette","atmosphere","atmo3","borderLeft","accent","acce3","hover","styles","root","display","atmo1","padding","margin","listStyle","outline","group","node","minHeight","marginBottom","disabled","selectable","unselectable","expandable","collapsed","expanded","unselected","link","textDecoration","focused","noIcon","withIcon","content","width","justifyContent","alignItems","height","paddingRight","spacing","xs","fontWeight","outlineStyles","cursor"],"sources":["../../../src/VerticalNavigation/TreeView/styles.js"],"sourcesContent":["import { outlineStyles } from \"../../Focus/styles\";\n\nconst selected = (theme) => ({\n background: theme.hv.palette.atmosphere.atmo3,\n borderLeft: `2px solid ${theme.hv.palette.accent.acce3}`,\n \"& *\": {\n background: theme.hv.palette.atmosphere.atmo3,\n },\n});\n\nconst hover = (theme) => ({\n background: theme.hv.palette.atmosphere.atmo3,\n \"& *\": {\n background: theme.hv.palette.atmosphere.atmo3,\n },\n});\n\nconst styles = (theme) => ({\n /* role=\"tree\" root element */\n root: {\n display: \"block\",\n background: theme.hv.palette.atmosphere.atmo1,\n padding: `0px`,\n margin: \"0\",\n listStyle: \"none\",\n\n outline: \"none\",\n },\n\n /* role=\"group\" element */\n group: {\n margin: \"8px 0 0 0\",\n padding: 0,\n },\n\n /* role=\"treeitem\" element */\n node: {\n listStyle: \"none\",\n minHeight: \"32px\",\n \"&:not(:last-child)\": {\n marginBottom: \"8px\",\n },\n },\n\n /* role=\"treeitem\" element states */\n disabled: {},\n selectable: {},\n unselectable: {},\n expandable: {},\n collapsed: {\n \"&>$group\": { display: \"none\" },\n },\n expanded: {\n \"&>$group\": { display: \"block\" },\n },\n selected: {},\n unselected: {},\n link: {\n textDecoration: \"none\",\n },\n\n focused: {},\n\n noIcon: {},\n withIcon: {},\n\n /* role=\"button\" element */\n content: {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n height: \"32px\",\n borderLeft: `2px solid transparent`,\n paddingRight: theme.hv.spacing.xs,\n\n \"$expandable>&\": {\n fontWeight: 600,\n },\n\n // selected state\n \"$selected>&\": selected(theme),\n\n // hover\n \":not($disabled):not($selected)>&:hover\": hover(theme),\n \":not($disabled)$selected>&:hover\": {},\n\n // focus\n \":not($disabled):not($selected)>&:focus-visible\": hover(theme),\n \":not($disabled):not($selected)>&.focus-visible\": hover(theme),\n\n \"*:focus-visible $focused>&\": {\n ...outlineStyles,\n },\n\n \".focus-visible $focused>&\": {\n ...outlineStyles,\n },\n\n \"$focused>&\": {\n ...hover(theme),\n },\n\n \"&[disabled], &:active\": {\n outline: \"none\",\n },\n\n \"&:focus\": {\n outline: \"none\",\n },\n\n \"&:focus-visible\": {\n ...outlineStyles,\n },\n\n \"&.focus-visible\": {\n ...outlineStyles,\n },\n\n // cursor\n cursor: \"pointer\",\n \"& *\": {\n cursor: \"pointer\",\n },\n \"$disabled>&\": {\n cursor: \"not-allowed\",\n \"& *\": {\n cursor: \"not-allowed\",\n },\n },\n },\n});\n\nexport default styles;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;AAEA,IAAMA,QAAQ,GAAG,SAAXA,QAAW,CAACC,KAAD;EAAA,OAAY;IAC3BC,UAAU,EAAED,KAAK,CAACE,EAAN,CAASC,OAAT,CAAiBC,UAAjB,CAA4BC,KADb;IAE3BC,UAAU,sBAAeN,KAAK,CAACE,EAAN,CAASC,OAAT,CAAiBI,MAAjB,CAAwBC,KAAvC,CAFiB;IAG3B,OAAO;MACLP,UAAU,EAAED,KAAK,CAACE,EAAN,CAASC,OAAT,CAAiBC,UAAjB,CAA4BC;IADnC;EAHoB,CAAZ;AAAA,CAAjB;;AAQA,IAAMI,KAAK,GAAG,SAARA,KAAQ,CAACT,KAAD;EAAA,OAAY;IACxBC,UAAU,EAAED,KAAK,CAACE,EAAN,CAASC,OAAT,CAAiBC,UAAjB,CAA4BC,KADhB;IAExB,OAAO;MACLJ,UAAU,EAAED,KAAK,CAACE,EAAN,CAASC,OAAT,CAAiBC,UAAjB,CAA4BC;IADnC;EAFiB,CAAZ;AAAA,CAAd;;AAOA,IAAMK,MAAM,GAAG,SAATA,MAAS,CAACV,KAAD;EAAA,OAAY;IACzB;IACAW,IAAI,EAAE;MACJC,OAAO,EAAE,OADL;MAEJX,UAAU,EAAED,KAAK,CAACE,EAAN,CAASC,OAAT,CAAiBC,UAAjB,CAA4BS,KAFpC;MAGJC,OAAO,OAHH;MAIJC,MAAM,EAAE,GAJJ;MAKJC,SAAS,EAAE,MALP;MAOJC,OAAO,EAAE;IAPL,CAFmB;;IAYzB;IACAC,KAAK,EAAE;MACLH,MAAM,EAAE,WADH;MAELD,OAAO,EAAE;IAFJ,CAbkB;;IAkBzB;IACAK,IAAI,EAAE;MACJH,SAAS,EAAE,MADP;MAEJI,SAAS,EAAE,MAFP;MAGJ,sBAAsB;QACpBC,YAAY,EAAE;MADM;IAHlB,CAnBmB;;IA2BzB;IACAC,QAAQ,EAAE,EA5Be;IA6BzBC,UAAU,EAAE,EA7Ba;IA8BzBC,YAAY,EAAE,EA9BW;IA+BzBC,UAAU,EAAE,EA/Ba;IAgCzBC,SAAS,EAAE;MACT,YAAY;QAAEd,OAAO,EAAE;MAAX;IADH,CAhCc;IAmCzBe,QAAQ,EAAE;MACR,YAAY;QAAEf,OAAO,EAAE;MAAX;IADJ,CAnCe;IAsCzBb,QAAQ,EAAE,EAtCe;IAuCzB6B,UAAU,EAAE,EAvCa;IAwCzBC,IAAI,EAAE;MACJC,cAAc,EAAE;IADZ,CAxCmB;IA4CzBC,OAAO,EAAE,EA5CgB;IA8CzBC,MAAM,EAAE,EA9CiB;IA+CzBC,QAAQ,EAAE,EA/Ce;;IAiDzB;IACAC,OAAO,EAAE;MACPC,KAAK,EAAE,MADA;MAEPvB,OAAO,EAAE,MAFF;MAGPwB,cAAc,EAAE,YAHT;MAIPC,UAAU,EAAE,QAJL;MAKPC,MAAM,EAAE,MALD;MAMPhC,UAAU,yBANH;MAOPiC,YAAY,EAAEvC,KAAK,CAACE,EAAN,CAASsC,OAAT,CAAiBC,EAPxB;MASP,iBAAiB;QACfC,UAAU,EAAE;MADG,CATV;MAaP;MACA,eAAe3C,QAAQ,CAACC,KAAD,CAdhB;MAgBP;MACA,0CAA0CS,KAAK,CAACT,KAAD,CAjBxC;MAkBP,oCAAoC,EAlB7B;MAoBP;MACA,kDAAkDS,KAAK,CAACT,KAAD,CArBhD;MAsBP,kDAAkDS,KAAK,CAACT,KAAD,CAtBhD;MAwBP,gDACK2C,qBADL,CAxBO;MA4BP,+CACKA,qBADL,CA5BO;MAgCP,gCACKlC,KAAK,CAACT,KAAD,CADV,CAhCO;MAoCP,yBAAyB;QACvBiB,OAAO,EAAE;MADc,CApClB;MAwCP,WAAW;QACTA,OAAO,EAAE;MADA,CAxCJ;MA4CP,qCACK0B,qBADL,CA5CO;MAgDP,qCACKA,qBADL,CAhDO;MAoDP;MACAC,MAAM,EAAE,SArDD;MAsDP,OAAO;QACLA,MAAM,EAAE;MADH,CAtDA;MAyDP,eAAe;QACbA,MAAM,EAAE,aADK;QAEb,OAAO;UACLA,MAAM,EAAE;QADH;MAFM;IAzDR;EAlDgB,CAAZ;AAAA,CAAf;;eAoHelC,M"}
|
|
@@ -83,10 +83,14 @@ process.env.NODE_ENV !== "production" ? MenuBar.propTypes = {
|
|
|
83
83
|
*
|
|
84
84
|
* id - the id to be applied to the root element.
|
|
85
85
|
* label - the label to be rendered on the menu item.
|
|
86
|
+
* href - the url used for navigation.
|
|
87
|
+
* target - the behavior when opening an url.
|
|
86
88
|
*/
|
|
87
89
|
data: PropTypes.arrayOf(PropTypes.shape({
|
|
88
90
|
id: PropTypes.string.isRequired,
|
|
89
|
-
label: PropTypes.string.isRequired
|
|
91
|
+
label: PropTypes.string.isRequired,
|
|
92
|
+
href: PropTypes.string,
|
|
93
|
+
target: PropTypes.string
|
|
90
94
|
})),
|
|
91
95
|
|
|
92
96
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuBar.js","names":["React","useContext","clsx","PropTypes","withStyles","SelectionContext","MenuItem","styles","MenuBar","classes","id","data","onClick","type","selectionPath","isMenu","isActive","filter","item","length","root","hidden","active","list","map","propTypes","shape","string","menubar","menu","isRequired","arrayOf","label","func","oneOf","name"],"sources":["../../../../../src/Header/Navigation/MenuBar/MenuBar.js"],"sourcesContent":["import React, { useContext } from \"react\";\nimport clsx from \"clsx\";\nimport PropTypes from \"prop-types\";\nimport { withStyles } from \"@material-ui/core\";\nimport SelectionContext from \"../utils/SelectionContext\";\nimport MenuItem from \"../MenuItem\";\nimport styles from \"./styles\";\n\nconst MenuBar = ({ classes, id, data = [], onClick, type }) => {\n const selectionPath = useContext(SelectionContext);\n\n const isMenu = type === \"menu\";\n const isActive = isMenu && data.filter((item) => item.id === selectionPath[1]).length > 0;\n\n return (\n <div\n className={clsx(classes.root, classes[`${type}`], {\n [classes.hidden]: isMenu,\n [classes.active]: isActive,\n })}\n >\n <ul id={id} className={classes.list} onFocus={() => {}}>\n {data.map((item) => (\n <MenuItem key={item.id} item={item} type={type} onClick={onClick} />\n ))}\n </ul>\n </div>\n );\n};\n\nMenuBar.propTypes = {\n /**\n * A Jss Object used to override or extend the styles applied.\n */\n classes: PropTypes.shape({\n /**\n * Styles applied to the root.\n */\n root: PropTypes.string,\n /**\n * Styles applied to the menu bar.\n */\n menubar: PropTypes.string,\n /**\n * Styles applied to the menu.\n */\n menu: PropTypes.string,\n /**\n * Styles applied when in menu mode.\n */\n hidden: PropTypes.string,\n /**\n * Styles applied when active.\n */\n active: PropTypes.string,\n /**\n * Styles applied to the list.\n */\n list: PropTypes.string,\n }).isRequired,\n /**\n * Id to be applied to the root node.\n */\n id: PropTypes.string,\n /**\n * An array containing the data for each menu item.\n *\n * id - the id to be applied to the root element.\n * label - the label to be rendered on the menu item.\n */\n data: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n })\n ),\n /**\n * Callback triggered when item is clicked.\n */\n onClick: PropTypes.func,\n /**\n * The type of menu.\n */\n type: PropTypes.oneOf([\"menubar\", \"menu\"]).isRequired,\n};\n\nexport default withStyles(styles, { name: \"HvHeaderMenuBar\" })(MenuBar);\n"],"mappings":";;;AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AACA,OAAOC,IAAP,MAAiB,MAAjB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,UAAT,QAA2B,mBAA3B;AACA,OAAOC,gBAAP,MAA6B,2BAA7B;AACA,OAAOC,QAAP,MAAqB,aAArB;AACA,OAAOC,MAAP,MAAmB,UAAnB;;AAEA,IAAMC,OAAO,GAAG,SAAVA,OAAU,OAA+C;EAAA,IAA5CC,OAA4C,QAA5CA,OAA4C;EAAA,IAAnCC,EAAmC,QAAnCA,EAAmC;EAAA,qBAA/BC,IAA+B;EAAA,IAA/BA,IAA+B,0BAAxB,EAAwB;EAAA,IAApBC,OAAoB,QAApBA,OAAoB;EAAA,IAAXC,IAAW,QAAXA,IAAW;EAC7D,IAAMC,aAAa,GAAGb,UAAU,CAACI,gBAAD,CAAhC;EAEA,IAAMU,MAAM,GAAGF,IAAI,KAAK,MAAxB;EACA,IAAMG,QAAQ,GAAGD,MAAM,IAAIJ,IAAI,CAACM,MAAL,CAAY,UAACC,IAAD;IAAA,OAAUA,IAAI,CAACR,EAAL,KAAYI,aAAa,CAAC,CAAD,CAAnC;EAAA,CAAZ,EAAoDK,MAApD,GAA6D,CAAxF;EAEA,oBACE;IACE,SAAS,EAAEjB,IAAI,CAACO,OAAO,CAACW,IAAT,EAAeX,OAAO,WAAII,IAAJ,EAAtB,EACKE,MADL,IACZN,OAAO,CAACY,MADI,EAEKL,QAFL,IAEZP,OAAO,CAACa,MAFI;EADjB,gBAME;IAAI,EAAE,EAAEZ,EAAR;IAAY,SAAS,EAAED,OAAO,CAACc,IAA/B;IAAqC,OAAO,EAAE,mBAAM,CAAE;EAAtD,GACGZ,IAAI,CAACa,GAAL,CAAS,UAACN,IAAD;IAAA,oBACR,oBAAC,QAAD;MAAU,GAAG,EAAEA,IAAI,CAACR,EAApB;MAAwB,IAAI,EAAEQ,IAA9B;MAAoC,IAAI,EAAEL,IAA1C;MAAgD,OAAO,EAAED;IAAzD,EADQ;EAAA,CAAT,CADH,CANF,CADF;AAcD,CApBD;;AAsBA,wCAAAJ,OAAO,CAACiB,SAAR,GAAoB;EAClB;AACF;AACA;EACEhB,OAAO,EAAEN,SAAS,CAACuB,KAAV,CAAgB;IACvB;AACJ;AACA;IACIN,IAAI,EAAEjB,SAAS,CAACwB,MAJO;;IAKvB;AACJ;AACA;IACIC,OAAO,EAAEzB,SAAS,CAACwB,MARI;;IASvB;AACJ;AACA;IACIE,IAAI,EAAE1B,SAAS,CAACwB,MAZO;;IAavB;AACJ;AACA;IACIN,MAAM,EAAElB,SAAS,CAACwB,MAhBK;;IAiBvB;AACJ;AACA;IACIL,MAAM,EAAEnB,SAAS,CAACwB,MApBK;;IAqBvB;AACJ;AACA;IACIJ,IAAI,EAAEpB,SAAS,CAACwB;EAxBO,CAAhB,EAyBNG,UA7Be;;EA8BlB;AACF;AACA;EACEpB,EAAE,EAAEP,SAAS,CAACwB,MAjCI;;EAkClB;AACF;AACA;AACA;AACA;AACA;EACEhB,IAAI,EAAER,SAAS,CAAC4B,OAAV,CACJ5B,SAAS,CAACuB,KAAV,CAAgB;IACdhB,EAAE,EAAEP,SAAS,CAACwB,MAAV,CAAiBG,UADP;IAEdE,KAAK,EAAE7B,SAAS,CAACwB,MAAV,CAAiBG;
|
|
1
|
+
{"version":3,"file":"MenuBar.js","names":["React","useContext","clsx","PropTypes","withStyles","SelectionContext","MenuItem","styles","MenuBar","classes","id","data","onClick","type","selectionPath","isMenu","isActive","filter","item","length","root","hidden","active","list","map","propTypes","shape","string","menubar","menu","isRequired","arrayOf","label","href","target","func","oneOf","name"],"sources":["../../../../../src/Header/Navigation/MenuBar/MenuBar.js"],"sourcesContent":["import React, { useContext } from \"react\";\nimport clsx from \"clsx\";\nimport PropTypes from \"prop-types\";\nimport { withStyles } from \"@material-ui/core\";\nimport SelectionContext from \"../utils/SelectionContext\";\nimport MenuItem from \"../MenuItem\";\nimport styles from \"./styles\";\n\nconst MenuBar = ({ classes, id, data = [], onClick, type }) => {\n const selectionPath = useContext(SelectionContext);\n\n const isMenu = type === \"menu\";\n const isActive = isMenu && data.filter((item) => item.id === selectionPath[1]).length > 0;\n\n return (\n <div\n className={clsx(classes.root, classes[`${type}`], {\n [classes.hidden]: isMenu,\n [classes.active]: isActive,\n })}\n >\n <ul id={id} className={classes.list} onFocus={() => {}}>\n {data.map((item) => (\n <MenuItem key={item.id} item={item} type={type} onClick={onClick} />\n ))}\n </ul>\n </div>\n );\n};\n\nMenuBar.propTypes = {\n /**\n * A Jss Object used to override or extend the styles applied.\n */\n classes: PropTypes.shape({\n /**\n * Styles applied to the root.\n */\n root: PropTypes.string,\n /**\n * Styles applied to the menu bar.\n */\n menubar: PropTypes.string,\n /**\n * Styles applied to the menu.\n */\n menu: PropTypes.string,\n /**\n * Styles applied when in menu mode.\n */\n hidden: PropTypes.string,\n /**\n * Styles applied when active.\n */\n active: PropTypes.string,\n /**\n * Styles applied to the list.\n */\n list: PropTypes.string,\n }).isRequired,\n /**\n * Id to be applied to the root node.\n */\n id: PropTypes.string,\n /**\n * An array containing the data for each menu item.\n *\n * id - the id to be applied to the root element.\n * label - the label to be rendered on the menu item.\n * href - the url used for navigation.\n * target - the behavior when opening an url.\n */\n data: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n href: PropTypes.string,\n target: PropTypes.string,\n })\n ),\n /**\n * Callback triggered when item is clicked.\n */\n onClick: PropTypes.func,\n /**\n * The type of menu.\n */\n type: PropTypes.oneOf([\"menubar\", \"menu\"]).isRequired,\n};\n\nexport default withStyles(styles, { name: \"HvHeaderMenuBar\" })(MenuBar);\n"],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import "core-js/modules/es.string.link.js";
|
|
1
3
|
import React, { useContext } from "react";
|
|
2
4
|
import clsx from "clsx";
|
|
3
5
|
import PropTypes from "prop-types";
|
|
@@ -51,6 +53,15 @@ var MenuItem = function MenuItem(_ref) {
|
|
|
51
53
|
};
|
|
52
54
|
|
|
53
55
|
var isIe = isBrowser(["ie", "edge"]);
|
|
56
|
+
var label = /*#__PURE__*/React.createElement(HvTypography, {
|
|
57
|
+
variant: isSelected ? "selectedNavText" : "normalText"
|
|
58
|
+
}, item.label);
|
|
59
|
+
var itemProps = {
|
|
60
|
+
onClick: actionHandler,
|
|
61
|
+
onKeyDown: actionHandler,
|
|
62
|
+
tabIndex: 0,
|
|
63
|
+
onFocus: handleFocus
|
|
64
|
+
};
|
|
54
65
|
return /*#__PURE__*/React.createElement("li", {
|
|
55
66
|
id: id,
|
|
56
67
|
key: item.label,
|
|
@@ -58,16 +69,14 @@ var MenuItem = function MenuItem(_ref) {
|
|
|
58
69
|
}, /*#__PURE__*/React.createElement(ConditionalWrapper, {
|
|
59
70
|
condition: isIe,
|
|
60
71
|
wrapper: focusWrapper
|
|
61
|
-
}, /*#__PURE__*/React.createElement("
|
|
62
|
-
|
|
72
|
+
}, item !== null && item !== void 0 && item.href ? /*#__PURE__*/React.createElement("a", _extends({
|
|
73
|
+
className: clsx(classes.button, classes.link),
|
|
74
|
+
href: item === null || item === void 0 ? void 0 : item.href,
|
|
75
|
+
target: item === null || item === void 0 ? void 0 : item.target
|
|
76
|
+
}, itemProps), label) : /*#__PURE__*/React.createElement("div", _extends({
|
|
63
77
|
className: clsx(classes.button),
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
tabIndex: 0,
|
|
67
|
-
onFocus: handleFocus
|
|
68
|
-
}, /*#__PURE__*/React.createElement(HvTypography, {
|
|
69
|
-
variant: isSelected ? "selectedNavText" : "normalText"
|
|
70
|
-
}, item.label))), hasSubLevel && /*#__PURE__*/React.createElement(MenuBar, {
|
|
78
|
+
role: "button"
|
|
79
|
+
}, itemProps), label)), hasSubLevel && /*#__PURE__*/React.createElement(MenuBar, {
|
|
71
80
|
data: data,
|
|
72
81
|
onClick: onClick,
|
|
73
82
|
type: "menu"
|
|
@@ -99,6 +108,11 @@ process.env.NODE_ENV !== "production" ? MenuItem.propTypes = {
|
|
|
99
108
|
*/
|
|
100
109
|
button: PropTypes.string,
|
|
101
110
|
|
|
111
|
+
/**
|
|
112
|
+
* Style applied to each item button when it is behaving as a.
|
|
113
|
+
*/
|
|
114
|
+
link: PropTypes.string,
|
|
115
|
+
|
|
102
116
|
/**
|
|
103
117
|
* Style applied to the reference element used for ie focus.
|
|
104
118
|
*/
|
|
@@ -124,6 +138,8 @@ process.env.NODE_ENV !== "production" ? MenuItem.propTypes = {
|
|
|
124
138
|
item: PropTypes.shape({
|
|
125
139
|
id: PropTypes.string.isRequired,
|
|
126
140
|
label: PropTypes.string.isRequired,
|
|
141
|
+
href: PropTypes.string,
|
|
142
|
+
target: PropTypes.string,
|
|
127
143
|
data: PropTypes.arrayOf(PropTypes.shape({
|
|
128
144
|
id: PropTypes.string.isRequired,
|
|
129
145
|
label: PropTypes.string.isRequired
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuItem.js","names":["React","useContext","clsx","PropTypes","withStyles","KeyboardCodes","isKeypress","HvTypography","SelectionContext","FocusContext","ConditionalWrapper","MenuBar","styles","isBrowser","MenuItem","classes","id","item","type","onClick","selectionPath","dispatch","data","isMenu","isSelected","hasSubLevel","length","actionHandler","event","Enter","SpaceBar","currentTarget","blur","handleFocus","itemFocused","focusWrapper","childrenToWrap","externalReference","isIe","label","root","selectedItem","notSelectedItem","button","propTypes","shape","string","falseFocus","isRequired","arrayOf","func","oneOf","name"],"sources":["../../../../../src/Header/Navigation/MenuItem/MenuItem.js"],"sourcesContent":["import React, { useContext } from \"react\";\nimport clsx from \"clsx\";\nimport PropTypes from \"prop-types\";\nimport { withStyles } from \"@material-ui/core\";\nimport { KeyboardCodes, isKeypress } from \"../../../utils/KeyboardUtils\";\nimport HvTypography from \"../../../Typography\";\nimport SelectionContext from \"../utils/SelectionContext\";\nimport { FocusContext } from \"../utils/FocusContext\";\nimport ConditionalWrapper from \"../../../utils/ConditionalWrapper\";\nimport MenuBar from \"../MenuBar\";\nimport styles from \"./styles\";\nimport isBrowser from \"../../../utils/browser\";\n\nconst MenuItem = ({ classes, id, item, type, onClick }) => {\n const selectionPath = useContext(SelectionContext);\n const { dispatch } = useContext(FocusContext);\n\n const { data } = item;\n const isMenu = type === \"menu\";\n const isSelected = selectionPath[isMenu ? 1 : 0] === item.id;\n const hasSubLevel = data && data.length;\n\n const actionHandler = (event) => {\n if (\n event.type === \"click\" ||\n isKeypress(event, KeyboardCodes.Enter) ||\n isKeypress(event, KeyboardCodes.SpaceBar)\n ) {\n if (event.type === \"click\") {\n event.currentTarget.blur();\n }\n\n onClick?.(event, item);\n }\n };\n\n const handleFocus = (event) => {\n dispatch({ type: \"setItemFocused\", itemFocused: event.currentTarget });\n };\n\n const focusWrapper = (childrenToWrap) => (\n <div className={classes.externalReference}>{childrenToWrap}</div>\n );\n const isIe = isBrowser([\"ie\", \"edge\"]);\n return (\n <li\n id={id}\n key={item.label}\n className={clsx(classes.root, classes[`${type}Item`], {\n [classes.selectedItem]: !isMenu && isSelected,\n [classes.notSelectedItem]: !isMenu && !isSelected,\n })}\n >\n <ConditionalWrapper condition={isIe} wrapper={focusWrapper}>\n
|
|
1
|
+
{"version":3,"file":"MenuItem.js","names":["React","useContext","clsx","PropTypes","withStyles","KeyboardCodes","isKeypress","HvTypography","SelectionContext","FocusContext","ConditionalWrapper","MenuBar","styles","isBrowser","MenuItem","classes","id","item","type","onClick","selectionPath","dispatch","data","isMenu","isSelected","hasSubLevel","length","actionHandler","event","Enter","SpaceBar","currentTarget","blur","handleFocus","itemFocused","focusWrapper","childrenToWrap","externalReference","isIe","label","itemProps","onKeyDown","tabIndex","onFocus","root","selectedItem","notSelectedItem","href","button","link","target","propTypes","shape","string","falseFocus","isRequired","arrayOf","func","oneOf","name"],"sources":["../../../../../src/Header/Navigation/MenuItem/MenuItem.js"],"sourcesContent":["import React, { useContext } from \"react\";\nimport clsx from \"clsx\";\nimport PropTypes from \"prop-types\";\nimport { withStyles } from \"@material-ui/core\";\nimport { KeyboardCodes, isKeypress } from \"../../../utils/KeyboardUtils\";\nimport HvTypography from \"../../../Typography\";\nimport SelectionContext from \"../utils/SelectionContext\";\nimport { FocusContext } from \"../utils/FocusContext\";\nimport ConditionalWrapper from \"../../../utils/ConditionalWrapper\";\nimport MenuBar from \"../MenuBar\";\nimport styles from \"./styles\";\nimport isBrowser from \"../../../utils/browser\";\n\nconst MenuItem = ({ classes, id, item, type, onClick }) => {\n const selectionPath = useContext(SelectionContext);\n const { dispatch } = useContext(FocusContext);\n\n const { data } = item;\n const isMenu = type === \"menu\";\n const isSelected = selectionPath[isMenu ? 1 : 0] === item.id;\n const hasSubLevel = data && data.length;\n\n const actionHandler = (event) => {\n if (\n event.type === \"click\" ||\n isKeypress(event, KeyboardCodes.Enter) ||\n isKeypress(event, KeyboardCodes.SpaceBar)\n ) {\n if (event.type === \"click\") {\n event.currentTarget.blur();\n }\n\n onClick?.(event, item);\n }\n };\n\n const handleFocus = (event) => {\n dispatch({ type: \"setItemFocused\", itemFocused: event.currentTarget });\n };\n\n const focusWrapper = (childrenToWrap) => (\n <div className={classes.externalReference}>{childrenToWrap}</div>\n );\n const isIe = isBrowser([\"ie\", \"edge\"]);\n const label = (\n <HvTypography variant={isSelected ? \"selectedNavText\" : \"normalText\"}>\n {item.label}\n </HvTypography>\n );\n const itemProps = {\n onClick: actionHandler,\n onKeyDown: actionHandler,\n tabIndex: 0,\n onFocus: handleFocus,\n };\n return (\n <li\n id={id}\n key={item.label}\n className={clsx(classes.root, classes[`${type}Item`], {\n [classes.selectedItem]: !isMenu && isSelected,\n [classes.notSelectedItem]: !isMenu && !isSelected,\n })}\n >\n <ConditionalWrapper condition={isIe} wrapper={focusWrapper}>\n {item?.href ? (\n <a\n className={clsx(classes.button, classes.link)}\n href={item?.href}\n target={item?.target}\n {...itemProps}\n >\n {label}\n </a>\n ) : (\n <div className={clsx(classes.button)} role=\"button\" {...itemProps}>\n {label}\n </div>\n )}\n </ConditionalWrapper>\n {hasSubLevel && <MenuBar data={data} onClick={onClick} type=\"menu\" />}\n </li>\n );\n};\n\nMenuItem.propTypes = {\n /**\n * A Jss Object used to override or extend the styles applied.\n */\n classes: PropTypes.shape({\n /**\n * Style applied to the first element in the hierarchy.\n */\n root: PropTypes.string,\n /**\n * Style applied to the li element when it is selected.\n */\n selectedItem: PropTypes.string,\n /**\n * Style applied to the li element when it isn't selected.\n */\n notSelectedItem: PropTypes.string,\n /**\n * Style applied to each item button.\n */\n button: PropTypes.string,\n /**\n * Style applied to each item button when it is behaving as a.\n */\n link: PropTypes.string,\n /**\n * Style applied to the reference element used for ie focus.\n */\n externalReference: PropTypes.string,\n /**\n * Style applied to simulated a focus in ie.\n */\n falseFocus: PropTypes.string,\n }).isRequired,\n /**\n * Id to be applied to the root node.\n */\n id: PropTypes.string,\n /**\n * An object containing the data for each menu item.\n *\n * id - the id to be applied to the root element.\n * label - the label to be rendered on the menu item.\n */\n item: PropTypes.shape({\n id: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n href: PropTypes.string,\n target: PropTypes.string,\n data: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n })\n ),\n }).isRequired,\n /**\n * Callback triggered when item is clicked.\n */\n onClick: PropTypes.func,\n /**\n * The type of menu.\n */\n type: PropTypes.oneOf([\"menubar\", \"menu\"]).isRequired,\n};\n\nexport default withStyles(styles, { name: \"HvHeaderMenuItem\" })(MenuItem);\n"],"mappings":"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"}
|
|
@@ -58,6 +58,10 @@ var styles = function styles(theme) {
|
|
|
58
58
|
},
|
|
59
59
|
"&.focus-visible": _objectSpread({}, outlineStyles)
|
|
60
60
|
},
|
|
61
|
+
link: {
|
|
62
|
+
display: "block",
|
|
63
|
+
textDecoration: "none"
|
|
64
|
+
},
|
|
61
65
|
externalReference: _objectSpread({}, externalReference),
|
|
62
66
|
falseFocus: _objectSpread(_objectSpread({}, falseFocus), {}, {
|
|
63
67
|
top: "4px"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","names":["focusStyles","outlineStyles","externalReference","falseFocus","styles","theme","hoverColor","hv","palette","atmosphere","atmo3","root","display","backgroundColor","selectedItem","borderTop","accent","acce3","paddingTop","notSelectedItem","marginTop","button","border","cursor","padding","hvSpacing","outline","top"],"sources":["../../../../../src/Header/Navigation/MenuItem/styles.js"],"sourcesContent":["import \"focus-within-polyfill\";\nimport focusStyles, { outlineStyles } from \"../../../Focus/styles\";\n\nconst { externalReference, falseFocus } = focusStyles;\n\nconst styles = (theme) => {\n const hoverColor = theme.hv.palette.atmosphere.atmo3;\n\n return {\n root: {\n display: \"inline\",\n \"&:hover\": {\n \"& > [role='button']\": {\n backgroundColor: hoverColor,\n },\n \"&:focus-within\": {\n \"& > [role='button']\": {\n backgroundColor: hoverColor,\n },\n },\n },\n // IE fallback code (using focus-within-polyfill)\n \"&.focus-within\": {\n \"& > [role='button']\": {\n backgroundColor: hoverColor,\n },\n },\n },\n selectedItem: {\n borderTop: `2px solid ${theme.hv.palette.accent.acce3}`,\n paddingTop: \"2px\",\n },\n notSelectedItem: {\n marginTop: \"4px\",\n },\n button: {\n border: \"none\",\n cursor: \"pointer\",\n padding: theme.hvSpacing(\"8px\", \"sm\"),\n \"&:active\": {\n outline: \"none\",\n },\n \"&:focus\": {\n outline: \"none\",\n backgroundColor: hoverColor,\n },\n \"&.focus-visible\": {\n ...outlineStyles,\n },\n },\n externalReference: {\n ...externalReference,\n },\n falseFocus: {\n ...falseFocus,\n top: \"4px\",\n },\n };\n};\n\nexport default styles;\n"],"mappings":";;;;;;;;;;;;;AAAA,OAAO,uBAAP;AACA,OAAOA,WAAP,IAAsBC,aAAtB,QAA2C,uBAA3C;AAEA,IAAQC,iBAAR,GAA0CF,WAA1C,CAAQE,iBAAR;AAAA,IAA2BC,UAA3B,GAA0CH,WAA1C,CAA2BG,UAA3B;;AAEA,IAAMC,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD,EAAW;EACxB,IAAMC,UAAU,GAAGD,KAAK,CAACE,EAAN,CAASC,OAAT,CAAiBC,UAAjB,CAA4BC,KAA/C;EAEA,OAAO;IACLC,IAAI,EAAE;MACJC,OAAO,EAAE,QADL;MAEJ,WAAW;QACT,uBAAuB;UACrBC,eAAe,EAAEP;QADI,CADd;QAIT,kBAAkB;UAChB,uBAAuB;YACrBO,eAAe,EAAEP;UADI;QADP;MAJT,CAFP;MAYJ;MACA,kBAAkB;QAChB,uBAAuB;UACrBO,eAAe,EAAEP;QADI;MADP;IAbd,CADD;IAoBLQ,YAAY,EAAE;MACZC,SAAS,sBAAeV,KAAK,CAACE,EAAN,CAASC,OAAT,CAAiBQ,MAAjB,CAAwBC,KAAvC,CADG;MAEZC,UAAU,EAAE;IAFA,CApBT;IAwBLC,eAAe,EAAE;MACfC,SAAS,EAAE;IADI,CAxBZ;IA2BLC,MAAM,EAAE;MACNC,MAAM,EAAE,MADF;MAENC,MAAM,EAAE,SAFF;MAGNC,OAAO,EAAEnB,KAAK,CAACoB,SAAN,CAAgB,KAAhB,EAAuB,IAAvB,CAHH;MAIN,YAAY;QACVC,OAAO,EAAE;MADC,CAJN;MAON,WAAW;QACTA,OAAO,EAAE,MADA;QAETb,eAAe,EAAEP;MAFR,CAPL;MAWN,qCACKL,aADL;IAXM,CA3BH;
|
|
1
|
+
{"version":3,"file":"styles.js","names":["focusStyles","outlineStyles","externalReference","falseFocus","styles","theme","hoverColor","hv","palette","atmosphere","atmo3","root","display","backgroundColor","selectedItem","borderTop","accent","acce3","paddingTop","notSelectedItem","marginTop","button","border","cursor","padding","hvSpacing","outline","link","textDecoration","top"],"sources":["../../../../../src/Header/Navigation/MenuItem/styles.js"],"sourcesContent":["import \"focus-within-polyfill\";\nimport focusStyles, { outlineStyles } from \"../../../Focus/styles\";\n\nconst { externalReference, falseFocus } = focusStyles;\n\nconst styles = (theme) => {\n const hoverColor = theme.hv.palette.atmosphere.atmo3;\n\n return {\n root: {\n display: \"inline\",\n \"&:hover\": {\n \"& > [role='button']\": {\n backgroundColor: hoverColor,\n },\n \"&:focus-within\": {\n \"& > [role='button']\": {\n backgroundColor: hoverColor,\n },\n },\n },\n // IE fallback code (using focus-within-polyfill)\n \"&.focus-within\": {\n \"& > [role='button']\": {\n backgroundColor: hoverColor,\n },\n },\n },\n selectedItem: {\n borderTop: `2px solid ${theme.hv.palette.accent.acce3}`,\n paddingTop: \"2px\",\n },\n notSelectedItem: {\n marginTop: \"4px\",\n },\n button: {\n border: \"none\",\n cursor: \"pointer\",\n padding: theme.hvSpacing(\"8px\", \"sm\"),\n \"&:active\": {\n outline: \"none\",\n },\n \"&:focus\": {\n outline: \"none\",\n backgroundColor: hoverColor,\n },\n \"&.focus-visible\": {\n ...outlineStyles,\n },\n },\n link: {\n display: \"block\",\n textDecoration: \"none\",\n },\n externalReference: {\n ...externalReference,\n },\n falseFocus: {\n ...falseFocus,\n top: \"4px\",\n },\n };\n};\n\nexport default styles;\n"],"mappings":";;;;;;;;;;;;;AAAA,OAAO,uBAAP;AACA,OAAOA,WAAP,IAAsBC,aAAtB,QAA2C,uBAA3C;AAEA,IAAQC,iBAAR,GAA0CF,WAA1C,CAAQE,iBAAR;AAAA,IAA2BC,UAA3B,GAA0CH,WAA1C,CAA2BG,UAA3B;;AAEA,IAAMC,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD,EAAW;EACxB,IAAMC,UAAU,GAAGD,KAAK,CAACE,EAAN,CAASC,OAAT,CAAiBC,UAAjB,CAA4BC,KAA/C;EAEA,OAAO;IACLC,IAAI,EAAE;MACJC,OAAO,EAAE,QADL;MAEJ,WAAW;QACT,uBAAuB;UACrBC,eAAe,EAAEP;QADI,CADd;QAIT,kBAAkB;UAChB,uBAAuB;YACrBO,eAAe,EAAEP;UADI;QADP;MAJT,CAFP;MAYJ;MACA,kBAAkB;QAChB,uBAAuB;UACrBO,eAAe,EAAEP;QADI;MADP;IAbd,CADD;IAoBLQ,YAAY,EAAE;MACZC,SAAS,sBAAeV,KAAK,CAACE,EAAN,CAASC,OAAT,CAAiBQ,MAAjB,CAAwBC,KAAvC,CADG;MAEZC,UAAU,EAAE;IAFA,CApBT;IAwBLC,eAAe,EAAE;MACfC,SAAS,EAAE;IADI,CAxBZ;IA2BLC,MAAM,EAAE;MACNC,MAAM,EAAE,MADF;MAENC,MAAM,EAAE,SAFF;MAGNC,OAAO,EAAEnB,KAAK,CAACoB,SAAN,CAAgB,KAAhB,EAAuB,IAAvB,CAHH;MAIN,YAAY;QACVC,OAAO,EAAE;MADC,CAJN;MAON,WAAW;QACTA,OAAO,EAAE,MADA;QAETb,eAAe,EAAEP;MAFR,CAPL;MAWN,qCACKL,aADL;IAXM,CA3BH;IA0CL0B,IAAI,EAAE;MACJf,OAAO,EAAE,OADL;MAEJgB,cAAc,EAAE;IAFZ,CA1CD;IA8CL1B,iBAAiB,oBACZA,iBADY,CA9CZ;IAiDLC,UAAU,kCACLA,UADK;MAER0B,GAAG,EAAE;IAFG;EAjDL,CAAP;AAsDD,CAzDD;;AA2DA,eAAezB,MAAf"}
|
|
@@ -5,6 +5,8 @@ export interface NavigationItemProp {
|
|
|
5
5
|
id: string;
|
|
6
6
|
label: string;
|
|
7
7
|
path?: string;
|
|
8
|
+
href?: string;
|
|
9
|
+
target?: string;
|
|
8
10
|
}
|
|
9
11
|
|
|
10
12
|
export type HvHeaderNavigationClassKey = "root";
|
|
@@ -20,6 +22,8 @@ export interface HvHeaderNavigationProps
|
|
|
20
22
|
*
|
|
21
23
|
* id - the id to be applied to the root element.
|
|
22
24
|
* label - the label to be rendered on the menu item.
|
|
25
|
+
* href - the url for navigation.
|
|
26
|
+
* target - the behavior when opening a link.
|
|
23
27
|
*/
|
|
24
28
|
data: NavigationItemProp[];
|
|
25
29
|
/**
|
|
@@ -57,10 +57,14 @@ process.env.NODE_ENV !== "production" ? Navigation.propTypes = {
|
|
|
57
57
|
*
|
|
58
58
|
* id - the id to be applied to the root element.
|
|
59
59
|
* label - the label to be rendered on the menu item.
|
|
60
|
+
* href - the url used for navigation.
|
|
61
|
+
* target - the behavior when opening an url.
|
|
60
62
|
*/
|
|
61
63
|
data: PropTypes.arrayOf(PropTypes.shape({
|
|
62
64
|
id: PropTypes.string.isRequired,
|
|
63
|
-
label: PropTypes.string.isRequired
|
|
65
|
+
label: PropTypes.string.isRequired,
|
|
66
|
+
href: PropTypes.string,
|
|
67
|
+
target: PropTypes.string
|
|
64
68
|
})).isRequired,
|
|
65
69
|
|
|
66
70
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Navigation.js","names":["React","PropTypes","clsx","withStyles","FocusProvider","SelectionContext","useSelectionPath","MenuBar","styles","Navigation","classes","className","data","selected","onClick","others","selectionPath","handleClick","event","selection","root","propTypes","shape","string","isRequired","arrayOf","id","label","func","name"],"sources":["../../../../src/Header/Navigation/Navigation.js"],"sourcesContent":["import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport clsx from \"clsx\";\nimport { withStyles } from \"@material-ui/core\";\nimport { FocusProvider } from \"./utils/FocusContext\";\nimport SelectionContext from \"./utils/SelectionContext\";\nimport useSelectionPath from \"./utils/useSelectionPath\";\nimport MenuBar from \"./MenuBar\";\nimport styles from \"./styles\";\n\nconst Navigation = ({ classes, className, data, selected, onClick, ...others }) => {\n const selectionPath = useSelectionPath(data, selected);\n\n const handleClick = (event, selection) => {\n onClick?.(event, selection);\n };\n\n return (\n <SelectionContext.Provider value={selectionPath}>\n <FocusProvider>\n <nav className={clsx(className, classes.root)} {...others}>\n <MenuBar data={data} onClick={handleClick} type=\"menubar\" />\n </nav>\n </FocusProvider>\n </SelectionContext.Provider>\n );\n};\n\nNavigation.propTypes = {\n /**\n * A Jss Object used to override or extend the styles applied.\n */\n classes: PropTypes.shape({\n /**\n * Styles applied to the component root class.\n */\n root: PropTypes.string,\n }).isRequired,\n /**\n * Class names to be applied.\n */\n className: PropTypes.string,\n /**\n * An array containing the data for each menu item.\n *\n * id - the id to be applied to the root element.\n * label - the label to be rendered on the menu item.\n */\n data: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n })\n ).isRequired,\n /**\n * Menu item id selected.\n */\n selected: PropTypes.string,\n /**\n * Callback triggered when any item is clicked.\n */\n onClick: PropTypes.func,\n};\n\nexport default withStyles(styles, { name: \"HvHeaderNavigation\" })(Navigation);\n"],"mappings":";;;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,IAAP,MAAiB,MAAjB;AACA,SAASC,UAAT,QAA2B,mBAA3B;AACA,SAASC,aAAT,QAA8B,sBAA9B;AACA,OAAOC,gBAAP,MAA6B,0BAA7B;AACA,OAAOC,gBAAP,MAA6B,0BAA7B;AACA,OAAOC,OAAP,MAAoB,WAApB;AACA,OAAOC,MAAP,MAAmB,UAAnB;;AAEA,IAAMC,UAAU,GAAG,SAAbA,UAAa,OAAgE;EAAA,IAA7DC,OAA6D,QAA7DA,OAA6D;EAAA,IAApDC,SAAoD,QAApDA,SAAoD;EAAA,IAAzCC,IAAyC,QAAzCA,IAAyC;EAAA,IAAnCC,QAAmC,QAAnCA,QAAmC;EAAA,IAAzBC,OAAyB,QAAzBA,OAAyB;EAAA,IAAbC,MAAa;;EACjF,IAAMC,aAAa,GAAGV,gBAAgB,CAACM,IAAD,EAAOC,QAAP,CAAtC;;EAEA,IAAMI,WAAW,GAAG,SAAdA,WAAc,CAACC,KAAD,EAAQC,SAAR,EAAsB;IACxCL,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAGI,KAAH,EAAUC,SAAV,CAAP;EACD,CAFD;;EAIA,oBACE,oBAAC,gBAAD,CAAkB,QAAlB;IAA2B,KAAK,EAAEH;EAAlC,gBACE,oBAAC,aAAD,qBACE;IAAK,SAAS,EAAEd,IAAI,CAACS,SAAD,EAAYD,OAAO,CAACU,IAApB;EAApB,GAAmDL,MAAnD,gBACE,oBAAC,OAAD;IAAS,IAAI,EAAEH,IAAf;IAAqB,OAAO,EAAEK,WAA9B;IAA2C,IAAI,EAAC;EAAhD,EADF,CADF,CADF,CADF;AASD,CAhBD;;AAkBA,wCAAAR,UAAU,CAACY,SAAX,GAAuB;EACrB;AACF;AACA;EACEX,OAAO,EAAET,SAAS,CAACqB,KAAV,CAAgB;IACvB;AACJ;AACA;IACIF,IAAI,EAAEnB,SAAS,CAACsB;EAJO,CAAhB,EAKNC,UATkB;;EAUrB;AACF;AACA;EACEb,SAAS,EAAEV,SAAS,CAACsB,MAbA;;EAcrB;AACF;AACA;AACA;AACA;AACA;EACEX,IAAI,EAAEX,SAAS,CAACwB,OAAV,CACJxB,SAAS,CAACqB,KAAV,CAAgB;IACdI,EAAE,EAAEzB,SAAS,CAACsB,MAAV,CAAiBC,UADP;IAEdG,KAAK,EAAE1B,SAAS,CAACsB,MAAV,CAAiBC;
|
|
1
|
+
{"version":3,"file":"Navigation.js","names":["React","PropTypes","clsx","withStyles","FocusProvider","SelectionContext","useSelectionPath","MenuBar","styles","Navigation","classes","className","data","selected","onClick","others","selectionPath","handleClick","event","selection","root","propTypes","shape","string","isRequired","arrayOf","id","label","href","target","func","name"],"sources":["../../../../src/Header/Navigation/Navigation.js"],"sourcesContent":["import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport clsx from \"clsx\";\nimport { withStyles } from \"@material-ui/core\";\nimport { FocusProvider } from \"./utils/FocusContext\";\nimport SelectionContext from \"./utils/SelectionContext\";\nimport useSelectionPath from \"./utils/useSelectionPath\";\nimport MenuBar from \"./MenuBar\";\nimport styles from \"./styles\";\n\nconst Navigation = ({ classes, className, data, selected, onClick, ...others }) => {\n const selectionPath = useSelectionPath(data, selected);\n\n const handleClick = (event, selection) => {\n onClick?.(event, selection);\n };\n\n return (\n <SelectionContext.Provider value={selectionPath}>\n <FocusProvider>\n <nav className={clsx(className, classes.root)} {...others}>\n <MenuBar data={data} onClick={handleClick} type=\"menubar\" />\n </nav>\n </FocusProvider>\n </SelectionContext.Provider>\n );\n};\n\nNavigation.propTypes = {\n /**\n * A Jss Object used to override or extend the styles applied.\n */\n classes: PropTypes.shape({\n /**\n * Styles applied to the component root class.\n */\n root: PropTypes.string,\n }).isRequired,\n /**\n * Class names to be applied.\n */\n className: PropTypes.string,\n /**\n * An array containing the data for each menu item.\n *\n * id - the id to be applied to the root element.\n * label - the label to be rendered on the menu item.\n * href - the url used for navigation.\n * target - the behavior when opening an url.\n */\n data: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n href: PropTypes.string,\n target: PropTypes.string,\n })\n ).isRequired,\n /**\n * Menu item id selected.\n */\n selected: PropTypes.string,\n /**\n * Callback triggered when any item is clicked.\n */\n onClick: PropTypes.func,\n};\n\nexport default withStyles(styles, { name: \"HvHeaderNavigation\" })(Navigation);\n"],"mappings":";;;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,IAAP,MAAiB,MAAjB;AACA,SAASC,UAAT,QAA2B,mBAA3B;AACA,SAASC,aAAT,QAA8B,sBAA9B;AACA,OAAOC,gBAAP,MAA6B,0BAA7B;AACA,OAAOC,gBAAP,MAA6B,0BAA7B;AACA,OAAOC,OAAP,MAAoB,WAApB;AACA,OAAOC,MAAP,MAAmB,UAAnB;;AAEA,IAAMC,UAAU,GAAG,SAAbA,UAAa,OAAgE;EAAA,IAA7DC,OAA6D,QAA7DA,OAA6D;EAAA,IAApDC,SAAoD,QAApDA,SAAoD;EAAA,IAAzCC,IAAyC,QAAzCA,IAAyC;EAAA,IAAnCC,QAAmC,QAAnCA,QAAmC;EAAA,IAAzBC,OAAyB,QAAzBA,OAAyB;EAAA,IAAbC,MAAa;;EACjF,IAAMC,aAAa,GAAGV,gBAAgB,CAACM,IAAD,EAAOC,QAAP,CAAtC;;EAEA,IAAMI,WAAW,GAAG,SAAdA,WAAc,CAACC,KAAD,EAAQC,SAAR,EAAsB;IACxCL,OAAO,SAAP,IAAAA,OAAO,WAAP,YAAAA,OAAO,CAAGI,KAAH,EAAUC,SAAV,CAAP;EACD,CAFD;;EAIA,oBACE,oBAAC,gBAAD,CAAkB,QAAlB;IAA2B,KAAK,EAAEH;EAAlC,gBACE,oBAAC,aAAD,qBACE;IAAK,SAAS,EAAEd,IAAI,CAACS,SAAD,EAAYD,OAAO,CAACU,IAApB;EAApB,GAAmDL,MAAnD,gBACE,oBAAC,OAAD;IAAS,IAAI,EAAEH,IAAf;IAAqB,OAAO,EAAEK,WAA9B;IAA2C,IAAI,EAAC;EAAhD,EADF,CADF,CADF,CADF;AASD,CAhBD;;AAkBA,wCAAAR,UAAU,CAACY,SAAX,GAAuB;EACrB;AACF;AACA;EACEX,OAAO,EAAET,SAAS,CAACqB,KAAV,CAAgB;IACvB;AACJ;AACA;IACIF,IAAI,EAAEnB,SAAS,CAACsB;EAJO,CAAhB,EAKNC,UATkB;;EAUrB;AACF;AACA;EACEb,SAAS,EAAEV,SAAS,CAACsB,MAbA;;EAcrB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEX,IAAI,EAAEX,SAAS,CAACwB,OAAV,CACJxB,SAAS,CAACqB,KAAV,CAAgB;IACdI,EAAE,EAAEzB,SAAS,CAACsB,MAAV,CAAiBC,UADP;IAEdG,KAAK,EAAE1B,SAAS,CAACsB,MAAV,CAAiBC,UAFV;IAGdI,IAAI,EAAE3B,SAAS,CAACsB,MAHF;IAIdM,MAAM,EAAE5B,SAAS,CAACsB;EAJJ,CAAhB,CADI,EAOJC,UA7BmB;;EA8BrB;AACF;AACA;EACEX,QAAQ,EAAEZ,SAAS,CAACsB,MAjCC;;EAkCrB;AACF;AACA;EACET,OAAO,EAAEb,SAAS,CAAC6B;AArCE,CAAvB;AAwCA,eAAe3B,UAAU,CAACK,MAAD,EAAS;EAAEuB,IAAI,EAAE;AAAR,CAAT,CAAV,CAAmDtB,UAAnD,CAAf"}
|
|
@@ -10,6 +10,14 @@ export interface NavigationData {
|
|
|
10
10
|
* the label to be rendered on the menu item.
|
|
11
11
|
*/
|
|
12
12
|
label: string;
|
|
13
|
+
/**
|
|
14
|
+
* The url for the link.
|
|
15
|
+
*/
|
|
16
|
+
href?: string;
|
|
17
|
+
/**
|
|
18
|
+
* The behavior when opening a link.
|
|
19
|
+
*/
|
|
20
|
+
target?: string;
|
|
13
21
|
/**
|
|
14
22
|
* Icon to be render.
|
|
15
23
|
*/
|
|
@@ -26,11 +26,15 @@ var createListHierarchy = function createListHierarchy(items, id, classes) {
|
|
|
26
26
|
icon = item.icon,
|
|
27
27
|
children = item.data,
|
|
28
28
|
selectable = item.selectable,
|
|
29
|
-
disabled = item.disabled
|
|
29
|
+
disabled = item.disabled,
|
|
30
|
+
href = item.href,
|
|
31
|
+
target = item.target;
|
|
30
32
|
var ItemText = wrapperTooltip(true, itemLabel, itemLabel);
|
|
31
33
|
return /*#__PURE__*/React.createElement(TreeViewItem, {
|
|
32
34
|
id: setId(id, itemId),
|
|
33
35
|
className: classes.listItem,
|
|
36
|
+
href: href,
|
|
37
|
+
target: target,
|
|
34
38
|
key: itemId,
|
|
35
39
|
nodeId: itemId,
|
|
36
40
|
label: /*#__PURE__*/React.createElement(ItemText, null),
|
|
@@ -264,12 +268,16 @@ process.env.NODE_ENV !== "production" ? Navigation.propTypes = {
|
|
|
264
268
|
* id - the id to be applied to the root element.
|
|
265
269
|
* label - the label to be rendered on the menu item.
|
|
266
270
|
* data - sub-menu items
|
|
271
|
+
* href - the url used for navigation.
|
|
272
|
+
* target - the behavior when opening an url.
|
|
267
273
|
*/
|
|
268
274
|
data: PropTypes.arrayOf(PropTypes.shape({
|
|
269
275
|
id: PropTypes.string.isRequired,
|
|
270
276
|
label: PropTypes.string.isRequired,
|
|
271
277
|
icon: PropTypes.node,
|
|
272
|
-
data: PropTypes.array
|
|
278
|
+
data: PropTypes.array,
|
|
279
|
+
href: PropTypes.string,
|
|
280
|
+
target: PropTypes.string
|
|
273
281
|
})).isRequired,
|
|
274
282
|
|
|
275
283
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Navigation.js","names":["React","useCallback","useMemo","PropTypes","deprecatedPropType","withStyles","clsx","TreeView","TreeViewItem","setId","useControlled","styles","wrapperTooltip","createListHierarchy","items","id","classes","map","item","itemId","itemLabel","label","icon","children","data","selectable","disabled","ItemText","listItem","undefined","getAllParents","parents","filter","length","childParents","flatMap","pathToElement","targetId","path","i","push","subPaths","Navigation","className","mode","collapsible","expandedProp","expanded","defaultExpanded","onToggle","selectedProp","selected","defaultSelected","onChange","onClick","others","setSelected","slice","setExpanded","handleChange","event","selectedId","selectedItem","handleToggle","newExpanded","root","list","propTypes","string","shape","isRequired","oneOf","bool","func","arrayOf","oneOfType","node","array","name"],"sources":["../../../../src/VerticalNavigation/Navigation/Navigation.js"],"sourcesContent":["import React, { useCallback, useMemo } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { deprecatedPropType, withStyles } from \"@material-ui/core\";\nimport clsx from \"clsx\";\nimport TreeView, { TreeViewItem } from \"../TreeView\";\nimport { setId, useControlled } from \"../../utils\";\nimport styles from \"./styles\";\nimport { wrapperTooltip } from \"../../List/utils\";\n\nconst createListHierarchy = (items, id, classes) =>\n items.map((item) => {\n const { id: itemId, label: itemLabel, icon, data: children, selectable, disabled } = item;\n\n const ItemText = wrapperTooltip(true, itemLabel, itemLabel);\n\n return (\n <TreeViewItem\n id={setId(id, itemId)}\n className={classes.listItem}\n key={itemId}\n nodeId={itemId}\n label={<ItemText />}\n icon={icon}\n payload={item}\n selectable={selectable}\n disabled={disabled}\n >\n {children ? createListHierarchy(children, id, classes) : undefined}\n </TreeViewItem>\n );\n });\n\nconst getAllParents = (items) => {\n const parents = items.filter((item) => item.data != null && item.data.length > 0);\n const childParents = parents.flatMap((item) => getAllParents(item.data));\n\n return [...parents, ...childParents];\n};\n\nfunction pathToElement(data, targetId) {\n const path = [];\n\n if (data != null && data.length > 0) {\n // eslint-disable-next-line no-plusplus\n for (let i = 0; i !== data.length; ++i) {\n const item = data[i];\n if (item.id === targetId) {\n path.push(item.id);\n break;\n }\n\n const subPaths = pathToElement(item.data, targetId);\n if (subPaths.length > 0) {\n path.push(item.id);\n path.push(...subPaths);\n break;\n }\n }\n }\n\n return path;\n}\n\nconst Navigation = ({\n id,\n\n className,\n classes,\n\n data,\n\n mode = \"navigation\",\n\n collapsible = false,\n expanded: expandedProp,\n defaultExpanded,\n onToggle,\n\n selected: selectedProp,\n defaultSelected,\n onChange,\n\n label,\n onClick,\n\n ...others\n}) => {\n const [selected, setSelected] = useControlled(selectedProp, defaultSelected);\n const [expanded, setExpanded] = useControlled(expandedProp, () => {\n if (defaultExpanded === true) {\n // all parent nodes will be expanded by default\n return getAllParents(data).map((item) => item.id);\n }\n\n if (defaultExpanded === false) {\n // all parent nodes will be collapsed by default\n return [];\n }\n\n if (defaultExpanded == null) {\n if (selected != null) {\n // the path to the selected node will be expanded (default behaviour)\n const path = pathToElement(data, selected);\n return path.slice(0, -1);\n }\n\n // nothing is expanded\n return [];\n }\n\n return defaultExpanded;\n });\n\n const handleChange = useCallback(\n (event, selectedId, selectedItem) => {\n setSelected(selectedId);\n\n if (onChange) {\n onChange(event, selectedItem);\n }\n\n // deprecated\n if (onClick) {\n onClick(event, selectedItem);\n }\n },\n [onChange, onClick, setSelected]\n );\n\n const handleToggle = useCallback(\n (event, newExpanded) => {\n setExpanded(newExpanded);\n\n if (onToggle) {\n onToggle(event, newExpanded);\n }\n\n // deprecated\n if (onClick) {\n onClick(event);\n }\n },\n [onClick, onToggle, setExpanded]\n );\n\n const children = useMemo(\n () => data && createListHierarchy(data, id, classes),\n [classes, data, id]\n );\n\n return (\n <nav id={id} className={clsx(className, classes.root)} aria-label={label} {...others}>\n <TreeView\n id={setId(id, \"tree\")}\n className={classes.list}\n selectable\n mode={mode}\n collapsible={collapsible}\n selected={selected}\n onChange={handleChange}\n expanded={expanded}\n onToggle={handleToggle}\n >\n {children}\n </TreeView>\n </nav>\n );\n};\n\nNavigation.propTypes = {\n /**\n * Id to be applied to the root node.\n */\n id: PropTypes.string,\n\n /**\n * Class names to be applied.\n */\n className: PropTypes.string,\n /**\n * A Jss Object used to override or extend the styles applied.\n */\n classes: PropTypes.shape({\n /**\n * Style applied to the root element.\n */\n root: PropTypes.string,\n /**\n * Style applied to the list.\n */\n list: PropTypes.string,\n /**\n * Style applied to the list items.\n */\n listItem: PropTypes.string,\n }).isRequired,\n\n /**\n * Modus operandi (role) of the widget instance.\n */\n mode: PropTypes.oneOf([\"treeview\", \"navigation\"]),\n /**\n * Can non-leaf nodes be collapsed / expanded.\n */\n collapsible: PropTypes.bool,\n\n /**\n * The ID of the selected page.\n */\n selected: PropTypes.string,\n /**\n * When uncontrolled, defines the initial selected page ID.\n */\n defaultSelected: PropTypes.string,\n /**\n * Callback fired when a navigation item is selected.\n *\n * @param {object} event The event source of the callback.\n * @param {object} page The data of the selected page.\n */\n onChange: PropTypes.func,\n\n /**\n * Expanded nodes' ids.\n */\n expanded: PropTypes.arrayOf(PropTypes.string),\n /**\n * When uncontrolled, defines the initial expanded nodes' ids.\n *\n * It also supports `true` for starting with all nodes expanded.\n * With `false` all nodes will be collapsed.\n *\n * By default it expands the needed nodes to display the current selection, if any.\n */\n defaultExpanded: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.bool]),\n /**\n * Callback fired when tree items are expanded/collapsed.\n *\n * @param {object} event The event source of the callback.\n * @param {array} nodeIds The ids of the expanded nodes (old and new).\n */\n onToggle: PropTypes.func,\n\n /**\n * An array containing the data for each menu item.\n *\n * id - the id to be applied to the root element.\n * label - the label to be rendered on the menu item.\n * data - sub-menu items\n */\n data: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n icon: PropTypes.node,\n data: PropTypes.array,\n })\n ).isRequired,\n\n /**\n * Callback triggered when any item is clicked.\n *\n * @deprecated use `onChange` for selection and `onToggle` for node expansion/collapse.\n */\n onClick: deprecatedPropType(PropTypes.func),\n /**\n * The root element (nav) aria label.\n *\n * @deprecated Use directly the `aria-label` property instead.\n */\n label: deprecatedPropType(PropTypes.string),\n};\n\nexport default withStyles(styles, { name: \"HvVerticalNavigationNavigation\" })(Navigation);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Navigation.js","names":["React","useCallback","useMemo","PropTypes","deprecatedPropType","withStyles","clsx","TreeView","TreeViewItem","setId","useControlled","styles","wrapperTooltip","createListHierarchy","items","id","classes","map","item","itemId","itemLabel","label","icon","children","data","selectable","disabled","href","target","ItemText","listItem","undefined","getAllParents","parents","filter","length","childParents","flatMap","pathToElement","targetId","path","i","push","subPaths","Navigation","className","mode","collapsible","expandedProp","expanded","defaultExpanded","onToggle","selectedProp","selected","defaultSelected","onChange","onClick","others","setSelected","slice","setExpanded","handleChange","event","selectedId","selectedItem","handleToggle","newExpanded","root","list","propTypes","string","shape","isRequired","oneOf","bool","func","arrayOf","oneOfType","node","array","name"],"sources":["../../../../src/VerticalNavigation/Navigation/Navigation.js"],"sourcesContent":["import React, { useCallback, useMemo } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { deprecatedPropType, withStyles } from \"@material-ui/core\";\nimport clsx from \"clsx\";\nimport TreeView, { TreeViewItem } from \"../TreeView\";\nimport { setId, useControlled } from \"../../utils\";\nimport styles from \"./styles\";\nimport { wrapperTooltip } from \"../../List/utils\";\n\nconst createListHierarchy = (items, id, classes) =>\n items.map((item) => {\n const {\n id: itemId,\n label: itemLabel,\n icon,\n data: children,\n selectable,\n disabled,\n href,\n target,\n } = item;\n\n const ItemText = wrapperTooltip(true, itemLabel, itemLabel);\n\n return (\n <TreeViewItem\n id={setId(id, itemId)}\n className={classes.listItem}\n href={href}\n target={target}\n key={itemId}\n nodeId={itemId}\n label={<ItemText />}\n icon={icon}\n payload={item}\n selectable={selectable}\n disabled={disabled}\n >\n {children ? createListHierarchy(children, id, classes) : undefined}\n </TreeViewItem>\n );\n });\n\nconst getAllParents = (items) => {\n const parents = items.filter((item) => item.data != null && item.data.length > 0);\n const childParents = parents.flatMap((item) => getAllParents(item.data));\n\n return [...parents, ...childParents];\n};\n\nfunction pathToElement(data, targetId) {\n const path = [];\n\n if (data != null && data.length > 0) {\n // eslint-disable-next-line no-plusplus\n for (let i = 0; i !== data.length; ++i) {\n const item = data[i];\n if (item.id === targetId) {\n path.push(item.id);\n break;\n }\n\n const subPaths = pathToElement(item.data, targetId);\n if (subPaths.length > 0) {\n path.push(item.id);\n path.push(...subPaths);\n break;\n }\n }\n }\n\n return path;\n}\n\nconst Navigation = ({\n id,\n\n className,\n classes,\n\n data,\n\n mode = \"navigation\",\n\n collapsible = false,\n expanded: expandedProp,\n defaultExpanded,\n onToggle,\n\n selected: selectedProp,\n defaultSelected,\n onChange,\n\n label,\n onClick,\n\n ...others\n}) => {\n const [selected, setSelected] = useControlled(selectedProp, defaultSelected);\n const [expanded, setExpanded] = useControlled(expandedProp, () => {\n if (defaultExpanded === true) {\n // all parent nodes will be expanded by default\n return getAllParents(data).map((item) => item.id);\n }\n\n if (defaultExpanded === false) {\n // all parent nodes will be collapsed by default\n return [];\n }\n\n if (defaultExpanded == null) {\n if (selected != null) {\n // the path to the selected node will be expanded (default behaviour)\n const path = pathToElement(data, selected);\n return path.slice(0, -1);\n }\n\n // nothing is expanded\n return [];\n }\n\n return defaultExpanded;\n });\n\n const handleChange = useCallback(\n (event, selectedId, selectedItem) => {\n setSelected(selectedId);\n\n if (onChange) {\n onChange(event, selectedItem);\n }\n\n // deprecated\n if (onClick) {\n onClick(event, selectedItem);\n }\n },\n [onChange, onClick, setSelected]\n );\n\n const handleToggle = useCallback(\n (event, newExpanded) => {\n setExpanded(newExpanded);\n\n if (onToggle) {\n onToggle(event, newExpanded);\n }\n\n // deprecated\n if (onClick) {\n onClick(event);\n }\n },\n [onClick, onToggle, setExpanded]\n );\n\n const children = useMemo(\n () => data && createListHierarchy(data, id, classes),\n [classes, data, id]\n );\n\n return (\n <nav id={id} className={clsx(className, classes.root)} aria-label={label} {...others}>\n <TreeView\n id={setId(id, \"tree\")}\n className={classes.list}\n selectable\n mode={mode}\n collapsible={collapsible}\n selected={selected}\n onChange={handleChange}\n expanded={expanded}\n onToggle={handleToggle}\n >\n {children}\n </TreeView>\n </nav>\n );\n};\n\nNavigation.propTypes = {\n /**\n * Id to be applied to the root node.\n */\n id: PropTypes.string,\n\n /**\n * Class names to be applied.\n */\n className: PropTypes.string,\n /**\n * A Jss Object used to override or extend the styles applied.\n */\n classes: PropTypes.shape({\n /**\n * Style applied to the root element.\n */\n root: PropTypes.string,\n /**\n * Style applied to the list.\n */\n list: PropTypes.string,\n /**\n * Style applied to the list items.\n */\n listItem: PropTypes.string,\n }).isRequired,\n\n /**\n * Modus operandi (role) of the widget instance.\n */\n mode: PropTypes.oneOf([\"treeview\", \"navigation\"]),\n /**\n * Can non-leaf nodes be collapsed / expanded.\n */\n collapsible: PropTypes.bool,\n\n /**\n * The ID of the selected page.\n */\n selected: PropTypes.string,\n /**\n * When uncontrolled, defines the initial selected page ID.\n */\n defaultSelected: PropTypes.string,\n /**\n * Callback fired when a navigation item is selected.\n *\n * @param {object} event The event source of the callback.\n * @param {object} page The data of the selected page.\n */\n onChange: PropTypes.func,\n\n /**\n * Expanded nodes' ids.\n */\n expanded: PropTypes.arrayOf(PropTypes.string),\n /**\n * When uncontrolled, defines the initial expanded nodes' ids.\n *\n * It also supports `true` for starting with all nodes expanded.\n * With `false` all nodes will be collapsed.\n *\n * By default it expands the needed nodes to display the current selection, if any.\n */\n defaultExpanded: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.bool]),\n /**\n * Callback fired when tree items are expanded/collapsed.\n *\n * @param {object} event The event source of the callback.\n * @param {array} nodeIds The ids of the expanded nodes (old and new).\n */\n onToggle: PropTypes.func,\n\n /**\n * An array containing the data for each menu item.\n *\n * id - the id to be applied to the root element.\n * label - the label to be rendered on the menu item.\n * data - sub-menu items\n * href - the url used for navigation.\n * target - the behavior when opening an url.\n */\n data: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n icon: PropTypes.node,\n data: PropTypes.array,\n href: PropTypes.string,\n target: PropTypes.string,\n })\n ).isRequired,\n\n /**\n * Callback triggered when any item is clicked.\n *\n * @deprecated use `onChange` for selection and `onToggle` for node expansion/collapse.\n */\n onClick: deprecatedPropType(PropTypes.func),\n /**\n * The root element (nav) aria label.\n *\n * @deprecated Use directly the `aria-label` property instead.\n */\n label: deprecatedPropType(PropTypes.string),\n};\n\nexport default withStyles(styles, { name: \"HvVerticalNavigationNavigation\" })(Navigation);\n"],"mappings":"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"}
|
|
@@ -40,6 +40,14 @@ export interface HvVerticalNavigationTreeViewItemProps
|
|
|
40
40
|
* The item label.
|
|
41
41
|
*/
|
|
42
42
|
label: React.ReactNode;
|
|
43
|
+
/**
|
|
44
|
+
* The url for the link.
|
|
45
|
+
*/
|
|
46
|
+
href: string;
|
|
47
|
+
/**
|
|
48
|
+
* The behavior when opening a link.
|
|
49
|
+
*/
|
|
50
|
+
target: string;
|
|
43
51
|
/**
|
|
44
52
|
* The node payload.
|
|
45
53
|
*/
|
|
@@ -4,8 +4,9 @@ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutPr
|
|
|
4
4
|
|
|
5
5
|
var _DropUpXS, _DropDownXS;
|
|
6
6
|
|
|
7
|
-
var _excluded = ["id", "className", "classes", "disabled", "selectable", "nodeId", "icon", "label", "payload", "onClick", "onMouseDown", "onFocus", "children"];
|
|
7
|
+
var _excluded = ["id", "className", "classes", "disabled", "selectable", "nodeId", "icon", "label", "href", "target", "payload", "onClick", "onMouseDown", "onFocus", "children"];
|
|
8
8
|
import "core-js/modules/es.array.concat.js";
|
|
9
|
+
import "core-js/modules/es.string.link.js";
|
|
9
10
|
import React, { useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
|
|
10
11
|
import clsx from "clsx";
|
|
11
12
|
import PropTypes from "prop-types";
|
|
@@ -35,6 +36,8 @@ var TreeViewItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
35
36
|
_props$icon = props.icon,
|
|
36
37
|
icon = _props$icon === void 0 ? null : _props$icon,
|
|
37
38
|
label = props.label,
|
|
39
|
+
href = props.href,
|
|
40
|
+
target = props.target,
|
|
38
41
|
payload = props.payload,
|
|
39
42
|
onClick = props.onClick,
|
|
40
43
|
onMouseDown = props.onMouseDown,
|
|
@@ -242,9 +245,11 @@ var TreeViewItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
242
245
|
var renderedContent = useMemo(function () {
|
|
243
246
|
return /*#__PURE__*/React.createElement(HvTypography, _extends({
|
|
244
247
|
id: setId(id, "button"),
|
|
245
|
-
component: "div",
|
|
248
|
+
component: href ? "a" : "div",
|
|
249
|
+
href: href,
|
|
250
|
+
target: target,
|
|
246
251
|
innerRef: contentRef,
|
|
247
|
-
className: classes.content,
|
|
252
|
+
className: clsx(classes.content, href != null && classes.link),
|
|
248
253
|
variant: disabled ? "placeholderText" : "normalText",
|
|
249
254
|
onClick: handleClick,
|
|
250
255
|
onMouseDown: handleMouseDown,
|
|
@@ -263,7 +268,7 @@ var TreeViewItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
263
268
|
"aria-expanded": expandable ? expanded : undefined,
|
|
264
269
|
"aria-controls": expandable ? setId(id, "group") : undefined
|
|
265
270
|
}), expandable && (expanded ? _DropUpXS || (_DropUpXS = /*#__PURE__*/React.createElement(DropUpXS, null)) : _DropDownXS || (_DropDownXS = /*#__PURE__*/React.createElement(DropDownXS, null))), icon, label);
|
|
266
|
-
}, [id, classes.content, handleClick, handleMouseDown, expandable, level, collapsible, treeviewMode, handleFocus,
|
|
271
|
+
}, [id, href, target, classes.content, classes.link, disabled, handleClick, handleMouseDown, expandable, icon, level, collapsible, treeviewMode, handleFocus, selectable, handleKeyDown, selected, expanded, label]);
|
|
267
272
|
var renderedChildren = useMemo(function () {
|
|
268
273
|
return children && /*#__PURE__*/React.createElement("ul", {
|
|
269
274
|
id: setId(id, "group"),
|
|
@@ -311,6 +316,11 @@ process.env.NODE_ENV !== "production" ? TreeViewItem.propTypes = {
|
|
|
311
316
|
*/
|
|
312
317
|
content: PropTypes.string,
|
|
313
318
|
|
|
319
|
+
/**
|
|
320
|
+
* Style applied to the content when it is a link.
|
|
321
|
+
*/
|
|
322
|
+
link: PropTypes.string,
|
|
323
|
+
|
|
314
324
|
/**
|
|
315
325
|
* Style applied to the group.
|
|
316
326
|
*/
|
|
@@ -387,6 +397,16 @@ process.env.NODE_ENV !== "production" ? TreeViewItem.propTypes = {
|
|
|
387
397
|
*/
|
|
388
398
|
label: PropTypes.node.isRequired,
|
|
389
399
|
|
|
400
|
+
/**
|
|
401
|
+
* The url for the link.
|
|
402
|
+
*/
|
|
403
|
+
href: PropTypes.string,
|
|
404
|
+
|
|
405
|
+
/**
|
|
406
|
+
* The behavior when opening a link.
|
|
407
|
+
*/
|
|
408
|
+
target: PropTypes.string,
|
|
409
|
+
|
|
390
410
|
/**
|
|
391
411
|
* The node payload.
|
|
392
412
|
*/
|