@hitachivantara/uikit-react-core 5.3.0 → 5.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/dist/cjs/components/Dialog/Dialog.cjs +1 -1
  2. package/dist/cjs/components/Dialog/Dialog.cjs.map +1 -1
  3. package/dist/cjs/components/Dialog/Dialog.styles.cjs +3 -3
  4. package/dist/cjs/components/Dialog/Dialog.styles.cjs.map +1 -1
  5. package/dist/cjs/components/Forms/Suggestions/Suggestions.styles.cjs +4 -4
  6. package/dist/cjs/components/Forms/Suggestions/Suggestions.styles.cjs.map +1 -1
  7. package/dist/cjs/components/InlineEditor/InlineEditor.cjs +122 -0
  8. package/dist/cjs/components/InlineEditor/InlineEditor.cjs.map +1 -0
  9. package/dist/cjs/components/InlineEditor/InlineEditor.styles.cjs +74 -0
  10. package/dist/cjs/components/InlineEditor/InlineEditor.styles.cjs.map +1 -0
  11. package/dist/cjs/components/InlineEditor/inlineEditorClasses.cjs +8 -0
  12. package/dist/cjs/components/InlineEditor/inlineEditorClasses.cjs.map +1 -0
  13. package/dist/cjs/components/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.cjs +51 -0
  14. package/dist/cjs/components/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.cjs.map +1 -0
  15. package/dist/cjs/components/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.styles.cjs +54 -0
  16. package/dist/cjs/components/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.styles.cjs.map +1 -0
  17. package/dist/cjs/components/ScrollTo/Horizontal/HorizontalScrollListItem/horizontalScrollListItemClasses.cjs +8 -0
  18. package/dist/cjs/components/ScrollTo/Horizontal/HorizontalScrollListItem/horizontalScrollListItemClasses.cjs.map +1 -0
  19. package/dist/cjs/components/ScrollTo/Horizontal/ScrollToHorizontal.cjs +126 -0
  20. package/dist/cjs/components/ScrollTo/Horizontal/ScrollToHorizontal.cjs.map +1 -0
  21. package/dist/cjs/components/ScrollTo/Horizontal/ScrollToHorizontal.styles.cjs +46 -0
  22. package/dist/cjs/components/ScrollTo/Horizontal/ScrollToHorizontal.styles.cjs.map +1 -0
  23. package/dist/cjs/components/ScrollTo/Horizontal/scrollToHorizontalClasses.cjs +8 -0
  24. package/dist/cjs/components/ScrollTo/Horizontal/scrollToHorizontalClasses.cjs.map +1 -0
  25. package/dist/cjs/components/ScrollTo/Vertical/ScrollToVertical.cjs +90 -0
  26. package/dist/cjs/components/ScrollTo/Vertical/ScrollToVertical.cjs.map +1 -0
  27. package/dist/cjs/components/ScrollTo/Vertical/ScrollToVertical.styles.cjs +43 -0
  28. package/dist/cjs/components/ScrollTo/Vertical/ScrollToVertical.styles.cjs.map +1 -0
  29. package/dist/cjs/components/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.cjs +71 -0
  30. package/dist/cjs/components/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.cjs.map +1 -0
  31. package/dist/cjs/components/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.styles.cjs +54 -0
  32. package/dist/cjs/components/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.styles.cjs.map +1 -0
  33. package/dist/cjs/components/ScrollTo/Vertical/VerticalScrollListItem/verticalScrollListItemClasses.cjs +8 -0
  34. package/dist/cjs/components/ScrollTo/Vertical/VerticalScrollListItem/verticalScrollListItemClasses.cjs.map +1 -0
  35. package/dist/cjs/components/ScrollTo/Vertical/scrollToVerticalClasses.cjs +8 -0
  36. package/dist/cjs/components/ScrollTo/Vertical/scrollToVerticalClasses.cjs.map +1 -0
  37. package/dist/cjs/components/ScrollTo/useScrollTo.cjs +103 -0
  38. package/dist/cjs/components/ScrollTo/useScrollTo.cjs.map +1 -0
  39. package/dist/cjs/components/ScrollTo/utils.cjs +76 -0
  40. package/dist/cjs/components/ScrollTo/utils.cjs.map +1 -0
  41. package/dist/cjs/components/ScrollTo/withTooltip.cjs +20 -0
  42. package/dist/cjs/components/ScrollTo/withTooltip.cjs.map +1 -0
  43. package/dist/cjs/components/TimeAgo/TimeAgo.cjs +39 -0
  44. package/dist/cjs/components/TimeAgo/TimeAgo.cjs.map +1 -0
  45. package/dist/cjs/components/TimeAgo/formatUtils.cjs +134 -0
  46. package/dist/cjs/components/TimeAgo/formatUtils.cjs.map +1 -0
  47. package/dist/cjs/components/TimeAgo/timeAgoClasses.cjs +8 -0
  48. package/dist/cjs/components/TimeAgo/timeAgoClasses.cjs.map +1 -0
  49. package/dist/cjs/components/TimeAgo/useTimeAgo.cjs +29 -0
  50. package/dist/cjs/components/TimeAgo/useTimeAgo.cjs.map +1 -0
  51. package/dist/cjs/components/TimeAgo/useTimeout.cjs +17 -0
  52. package/dist/cjs/components/TimeAgo/useTimeout.cjs.map +1 -0
  53. package/dist/cjs/hocs/withTooltip.cjs +4 -4
  54. package/dist/cjs/hocs/withTooltip.cjs.map +1 -1
  55. package/dist/cjs/index.cjs +23 -0
  56. package/dist/cjs/index.cjs.map +1 -1
  57. package/dist/cjs/utils/theme.cjs +9 -0
  58. package/dist/cjs/utils/theme.cjs.map +1 -1
  59. package/dist/cjs/utils/wrapperTooltip.cjs +1 -1
  60. package/dist/cjs/utils/wrapperTooltip.cjs.map +1 -1
  61. package/dist/esm/components/Dialog/Dialog.js +2 -2
  62. package/dist/esm/components/Dialog/Dialog.js.map +1 -1
  63. package/dist/esm/components/Dialog/Dialog.styles.js +3 -3
  64. package/dist/esm/components/Dialog/Dialog.styles.js.map +1 -1
  65. package/dist/esm/components/Forms/Suggestions/Suggestions.styles.js +5 -5
  66. package/dist/esm/components/Forms/Suggestions/Suggestions.styles.js.map +1 -1
  67. package/dist/esm/components/InlineEditor/InlineEditor.js +122 -0
  68. package/dist/esm/components/InlineEditor/InlineEditor.js.map +1 -0
  69. package/dist/esm/components/InlineEditor/InlineEditor.styles.js +74 -0
  70. package/dist/esm/components/InlineEditor/InlineEditor.styles.js.map +1 -0
  71. package/dist/esm/components/InlineEditor/inlineEditorClasses.js +8 -0
  72. package/dist/esm/components/InlineEditor/inlineEditorClasses.js.map +1 -0
  73. package/dist/esm/components/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.js +51 -0
  74. package/dist/esm/components/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.js.map +1 -0
  75. package/dist/esm/components/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.styles.js +54 -0
  76. package/dist/esm/components/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.styles.js.map +1 -0
  77. package/dist/esm/components/ScrollTo/Horizontal/HorizontalScrollListItem/horizontalScrollListItemClasses.js +8 -0
  78. package/dist/esm/components/ScrollTo/Horizontal/HorizontalScrollListItem/horizontalScrollListItemClasses.js.map +1 -0
  79. package/dist/esm/components/ScrollTo/Horizontal/ScrollToHorizontal.js +126 -0
  80. package/dist/esm/components/ScrollTo/Horizontal/ScrollToHorizontal.js.map +1 -0
  81. package/dist/esm/components/ScrollTo/Horizontal/ScrollToHorizontal.styles.js +46 -0
  82. package/dist/esm/components/ScrollTo/Horizontal/ScrollToHorizontal.styles.js.map +1 -0
  83. package/dist/esm/components/ScrollTo/Horizontal/scrollToHorizontalClasses.js +8 -0
  84. package/dist/esm/components/ScrollTo/Horizontal/scrollToHorizontalClasses.js.map +1 -0
  85. package/dist/esm/components/ScrollTo/Vertical/ScrollToVertical.js +90 -0
  86. package/dist/esm/components/ScrollTo/Vertical/ScrollToVertical.js.map +1 -0
  87. package/dist/esm/components/ScrollTo/Vertical/ScrollToVertical.styles.js +43 -0
  88. package/dist/esm/components/ScrollTo/Vertical/ScrollToVertical.styles.js.map +1 -0
  89. package/dist/esm/components/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.js +71 -0
  90. package/dist/esm/components/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.js.map +1 -0
  91. package/dist/esm/components/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.styles.js +54 -0
  92. package/dist/esm/components/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.styles.js.map +1 -0
  93. package/dist/esm/components/ScrollTo/Vertical/VerticalScrollListItem/verticalScrollListItemClasses.js +8 -0
  94. package/dist/esm/components/ScrollTo/Vertical/VerticalScrollListItem/verticalScrollListItemClasses.js.map +1 -0
  95. package/dist/esm/components/ScrollTo/Vertical/scrollToVerticalClasses.js +8 -0
  96. package/dist/esm/components/ScrollTo/Vertical/scrollToVerticalClasses.js.map +1 -0
  97. package/dist/esm/components/ScrollTo/useScrollTo.js +103 -0
  98. package/dist/esm/components/ScrollTo/useScrollTo.js.map +1 -0
  99. package/dist/esm/components/ScrollTo/utils.js +76 -0
  100. package/dist/esm/components/ScrollTo/utils.js.map +1 -0
  101. package/dist/esm/components/ScrollTo/withTooltip.js +20 -0
  102. package/dist/esm/components/ScrollTo/withTooltip.js.map +1 -0
  103. package/dist/esm/components/TimeAgo/TimeAgo.js +37 -0
  104. package/dist/esm/components/TimeAgo/TimeAgo.js.map +1 -0
  105. package/dist/esm/components/TimeAgo/formatUtils.js +126 -0
  106. package/dist/esm/components/TimeAgo/formatUtils.js.map +1 -0
  107. package/dist/esm/components/TimeAgo/timeAgoClasses.js +8 -0
  108. package/dist/esm/components/TimeAgo/timeAgoClasses.js.map +1 -0
  109. package/dist/esm/components/TimeAgo/useTimeAgo.js +29 -0
  110. package/dist/esm/components/TimeAgo/useTimeAgo.js.map +1 -0
  111. package/dist/esm/components/TimeAgo/useTimeout.js +17 -0
  112. package/dist/esm/components/TimeAgo/useTimeout.js.map +1 -0
  113. package/dist/esm/hocs/withTooltip.js +4 -4
  114. package/dist/esm/hocs/withTooltip.js.map +1 -1
  115. package/dist/esm/index.js +42 -19
  116. package/dist/esm/index.js.map +1 -1
  117. package/dist/esm/utils/theme.js +9 -0
  118. package/dist/esm/utils/theme.js.map +1 -1
  119. package/dist/esm/utils/wrapperTooltip.js +2 -2
  120. package/dist/esm/utils/wrapperTooltip.js.map +1 -1
  121. package/dist/types/index.d.ts +244 -1
  122. package/package.json +6 -6
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HorizontalScrollListItem.js","sources":["../../../../../../src/components/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.tsx"],"sourcesContent":["import { HvBaseProps } from \"@core/types\";\nimport horizontalScrollListItemClasses, {\n HvHorizontalScrollListItemClasses,\n} from \"./horizontalScrollListItemClasses\";\nimport { ClassNames } from \"@emotion/react\";\nimport { clsx } from \"clsx\";\nimport { setId } from \"@core/utils\";\nimport { HvTypographyProps } from \"@core/components\";\nimport { styles } from \"./HorizontalScrollListItem.styles\";\n\nexport interface HvVerticalScrollListItemProps extends HvBaseProps {\n /** The text to render. */\n children: React.ReactNode;\n /** A function component that renders a typography wrapped with a tooltip. */\n tooltipWrapper: React.FunctionComponent<{\n id?: string;\n className?: string;\n variant?: HvTypographyProps[\"variant\"];\n children?: React.ReactNode;\n }>;\n /** Whether the element is selected. */\n selected?: boolean;\n /** The function to be executed when the element is clicked. */\n onClick?: (event: React.MouseEvent<HTMLDivElement>) => void;\n /** The function to be executed when the element is clicked. */\n onKeyDown?: (event: React.KeyboardEvent<HTMLDivElement>) => void;\n /** A Jss Object used to override or extend the styles applied. */\n classes?: HvHorizontalScrollListItemClasses;\n}\n\n/**\n * HvHorizontalScrollListItem a focusable item to be used as part of the horizontal scroll\n */\nexport const HvHorizontalScrollListItem = ({\n id,\n className,\n classes,\n selected,\n children,\n onClick,\n onKeyDown,\n tooltipWrapper,\n ...others\n}: HvVerticalScrollListItemProps) => {\n const variant = selected ? \"label\" : \"body\";\n const labelId = setId(id, \"label\");\n const buttonId = setId(id, \"button\");\n const Tooltip = tooltipWrapper;\n\n return (\n <ClassNames>\n {({ css }) => (\n <li\n id={id}\n className={clsx(\n className,\n classes?.root,\n horizontalScrollListItemClasses.root,\n css(styles.root)\n )}\n aria-current={selected}\n >\n <div\n id={buttonId}\n role=\"button\"\n tabIndex={0}\n onClick={onClick}\n onKeyDown={onKeyDown}\n className={clsx(\n classes?.button,\n horizontalScrollListItemClasses.button,\n css(styles.button)\n )}\n aria-labelledby={labelId}\n {...others}\n >\n <Tooltip\n id={labelId}\n className={clsx(\n classes?.text,\n horizontalScrollListItemClasses.text,\n css(styles.text),\n selected &&\n clsx(\n classes?.selected,\n horizontalScrollListItemClasses.selected,\n css(styles.selected)\n )\n )}\n variant={variant}\n >\n {children}\n </Tooltip>\n </div>\n </li>\n )}\n </ClassNames>\n );\n};\n"],"names":["HvHorizontalScrollListItem","id","className","classes","selected","children","onClick","onKeyDown","tooltipWrapper","others","variant","labelId","setId","buttonId","Tooltip","ClassNames","css","clsx","root","horizontalScrollListItemClasses","styles","role","tabIndex","button","text"],"mappings":";;;;;;AAiCO,MAAMA,6BAA6BA,CAAC;AAAA,EACzCC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACA,GAAGC;AAC0B,MAAM;AAC7BC,QAAAA,UAAUN,WAAW,UAAU;AAC/BO,QAAAA,UAAUC,MAAMX,IAAI,OAAO;AAC3BY,QAAAA,WAAWD,MAAMX,IAAI,QAAQ;AACnC,QAAMa,UAAUN;AAEhB,6BACGO,YAAU;AAAA,IAAAV,UACRA,CAAC;AAAA,MAAEW;AAAAA,IAAAA,0BACF,MAAA;AAAA,MACEf;AAAAA,MACAC,WAAWe,KACTf,WACAC,mCAASe,MACTC,gCAAgCD,MAChCF,IAAII,OAAOF,IAAI,CAAC;AAAA,MAElB,gBAAcd;AAAAA,MAASC,8BAEvB,OAAA;AAAA,QACEJ,IAAIY;AAAAA,QACJQ,MAAK;AAAA,QACLC,UAAU;AAAA,QACVhB;AAAAA,QACAC;AAAAA,QACAL,WAAWe,KACTd,mCAASoB,QACTJ,gCAAgCI,QAChCP,IAAII,OAAOG,MAAM,CAAC;AAAA,QAEpB,mBAAiBZ;AAAAA,QAAQ,GACrBF;AAAAA,QAAMJ,8BAETS,SAAO;AAAA,UACNb,IAAIU;AAAAA,UACJT,WAAWe,KACTd,mCAASqB,MACTL,gCAAgCK,MAChCR,IAAII,OAAOI,IAAI,GACfpB,YACEa,KACEd,mCAASC,UACTe,gCAAgCf,UAChCY,IAAII,OAAOhB,QAAQ,CAAC,CACrB;AAAA,UAELM;AAAAA,UAAiBL;AAAAA,QAAAA,CAER;AAAA,MAAA,CACD;AAAA,IAAA,CACN;AAAA,EAAA,CAGC;AAEjB;"}
@@ -0,0 +1,54 @@
1
+ import { theme } from "@hitachivantara/uikit-styles";
2
+ import scrollToHorizontalClasses from "../scrollToHorizontalClasses.js";
3
+ import { outlineStyles } from "../../../../utils/focusUtils.js";
4
+ const styles = {
5
+ root: {
6
+ padding: "10px 0"
7
+ },
8
+ button: {
9
+ display: "flex",
10
+ justifyContent: "center",
11
+ alignItems: "center",
12
+ height: theme.scrollTo.horizontal.buttonHeight,
13
+ cursor: "pointer",
14
+ borderBottom: theme.scrollTo.horizontal.buttonBottomBorder,
15
+ "&:hover": {
16
+ backgroundColor: theme.scrollTo.horizontal.buttonHoverBackgroundColor,
17
+ [`& .${scrollToHorizontalClasses.notSelected}`]: {
18
+ height: theme.scrollTo.dotHoverSize,
19
+ width: theme.scrollTo.dotHoverSize,
20
+ backgroundColor: theme.scrollTo.dotHoverColor
21
+ },
22
+ [`& .${scrollToHorizontalClasses.notSelectedRoot}`]: {
23
+ backgroundColor: theme.scrollTo.dotHoverBackgroundColor
24
+ }
25
+ },
26
+ "&:focus": {
27
+ outline: "none"
28
+ },
29
+ "&:focus-visible": {
30
+ ...outlineStyles
31
+ }
32
+ },
33
+ text: {
34
+ display: "flex",
35
+ flexDirection: "column",
36
+ alignItems: "center",
37
+ justifyContent: "center",
38
+ height: theme.scrollTo.horizontal.buttonHeight,
39
+ borderBottom: theme.scrollTo.horizontal.buttonBottomBorder,
40
+ "& p": {
41
+ padding: theme.scrollTo.horizontal.textPadding,
42
+ maxWidth: theme.scrollTo.horizontal.textMaxWidth,
43
+ textOverflow: "ellipsis",
44
+ overflow: "hidden"
45
+ }
46
+ },
47
+ selected: {
48
+ borderBottom: theme.scrollTo.horizontal.selectedButtonBottomBorder
49
+ }
50
+ };
51
+ export {
52
+ styles
53
+ };
54
+ //# sourceMappingURL=HorizontalScrollListItem.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HorizontalScrollListItem.styles.js","sources":["../../../../../../src/components/ScrollTo/Horizontal/HorizontalScrollListItem/HorizontalScrollListItem.styles.tsx"],"sourcesContent":["import { outlineStyles } from \"@core/utils\";\nimport { CSSInterpolation } from \"@emotion/serialize\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\nimport scrollToHorizontalClasses from \"../scrollToHorizontalClasses\";\n\nexport const styles: {\n root: CSSInterpolation;\n button: CSSInterpolation;\n text: CSSInterpolation;\n selected: CSSInterpolation;\n} = {\n root: {\n padding: \"10px 0\",\n },\n button: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: theme.scrollTo.horizontal.buttonHeight,\n cursor: \"pointer\",\n borderBottom: theme.scrollTo.horizontal.buttonBottomBorder,\n \"&:hover\": {\n backgroundColor: theme.scrollTo.horizontal.buttonHoverBackgroundColor,\n\n [`& .${scrollToHorizontalClasses.notSelected}`]: {\n height: theme.scrollTo.dotHoverSize,\n width: theme.scrollTo.dotHoverSize,\n backgroundColor: theme.scrollTo.dotHoverColor,\n },\n\n [`& .${scrollToHorizontalClasses.notSelectedRoot}`]: {\n backgroundColor: theme.scrollTo.dotHoverBackgroundColor,\n },\n },\n \"&:focus\": {\n outline: \"none\",\n },\n \"&:focus-visible\": {\n ...outlineStyles,\n },\n },\n text: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: theme.scrollTo.horizontal.buttonHeight,\n borderBottom: theme.scrollTo.horizontal.buttonBottomBorder,\n\n \"& p\": {\n padding: theme.scrollTo.horizontal.textPadding,\n maxWidth: theme.scrollTo.horizontal.textMaxWidth,\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n },\n },\n selected: {\n borderBottom: theme.scrollTo.horizontal.selectedButtonBottomBorder,\n },\n};\n"],"names":["styles","root","padding","button","display","justifyContent","alignItems","height","theme","scrollTo","horizontal","buttonHeight","cursor","borderBottom","buttonBottomBorder","backgroundColor","buttonHoverBackgroundColor","scrollToHorizontalClasses","notSelected","dotHoverSize","width","dotHoverColor","notSelectedRoot","dotHoverBackgroundColor","outline","outlineStyles","text","flexDirection","textPadding","maxWidth","textMaxWidth","textOverflow","overflow","selected","selectedButtonBottomBorder"],"mappings":";;;AAKO,MAAMA,SAKT;AAAA,EACFC,MAAM;AAAA,IACJC,SAAS;AAAA,EACX;AAAA,EACAC,QAAQ;AAAA,IACNC,SAAS;AAAA,IACTC,gBAAgB;AAAA,IAChBC,YAAY;AAAA,IACZC,QAAQC,MAAMC,SAASC,WAAWC;AAAAA,IAClCC,QAAQ;AAAA,IACRC,cAAcL,MAAMC,SAASC,WAAWI;AAAAA,IACxC,WAAW;AAAA,MACTC,iBAAiBP,MAAMC,SAASC,WAAWM;AAAAA,MAE3C,CAAE,MAAKC,0BAA0BC,aAAa,GAAG;AAAA,QAC/CX,QAAQC,MAAMC,SAASU;AAAAA,QACvBC,OAAOZ,MAAMC,SAASU;AAAAA,QACtBJ,iBAAiBP,MAAMC,SAASY;AAAAA,MAClC;AAAA,MAEA,CAAE,MAAKJ,0BAA0BK,iBAAiB,GAAG;AAAA,QACnDP,iBAAiBP,MAAMC,SAASc;AAAAA,MAClC;AAAA,IACF;AAAA,IACA,WAAW;AAAA,MACTC,SAAS;AAAA,IACX;AAAA,IACA,mBAAmB;AAAA,MACjB,GAAGC;AAAAA,IACL;AAAA,EACF;AAAA,EACAC,MAAM;AAAA,IACJtB,SAAS;AAAA,IACTuB,eAAe;AAAA,IACfrB,YAAY;AAAA,IACZD,gBAAgB;AAAA,IAChBE,QAAQC,MAAMC,SAASC,WAAWC;AAAAA,IAClCE,cAAcL,MAAMC,SAASC,WAAWI;AAAAA,IAExC,OAAO;AAAA,MACLZ,SAASM,MAAMC,SAASC,WAAWkB;AAAAA,MACnCC,UAAUrB,MAAMC,SAASC,WAAWoB;AAAAA,MACpCC,cAAc;AAAA,MACdC,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EACAC,UAAU;AAAA,IACRpB,cAAcL,MAAMC,SAASC,WAAWwB;AAAAA,EAC1C;AACF;"}
@@ -0,0 +1,8 @@
1
+ import { getClasses } from "../../../../utils/classes.js";
2
+ const classKeys = ["root", "selected", "button", "text"];
3
+ const horizontalScrollListItemClasses = getClasses(classKeys, "HvHorizontalScrollListItem");
4
+ const horizontalScrollListItemClasses$1 = horizontalScrollListItemClasses;
5
+ export {
6
+ horizontalScrollListItemClasses$1 as default
7
+ };
8
+ //# sourceMappingURL=horizontalScrollListItemClasses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"horizontalScrollListItemClasses.js","sources":["../../../../../../src/components/ScrollTo/Horizontal/HorizontalScrollListItem/horizontalScrollListItemClasses.ts"],"sourcesContent":["import { getClasses } from \"@core/utils\";\n\nexport interface HvHorizontalScrollListItemClasses {\n root?: string;\n selected?: string;\n button?: string;\n text?: string;\n}\n\nconst classKeys: string[] = [\"root\", \"selected\", \"button\", \"text\"];\n\nconst horizontalScrollListItemClasses =\n getClasses<HvHorizontalScrollListItemClasses>(\n classKeys,\n \"HvHorizontalScrollListItem\"\n );\n\nexport default horizontalScrollListItemClasses;\n"],"names":["classKeys","horizontalScrollListItemClasses","getClasses"],"mappings":";AASA,MAAMA,YAAsB,CAAC,QAAQ,YAAY,UAAU,MAAM;AAEjE,MAAMC,kCACJC,WACEF,WACA,4BAA4B;AAGhC,MAAA,oCAAeC;"}
@@ -0,0 +1,126 @@
1
+ import scrollToHorizontalClasses from "./scrollToHorizontalClasses.js";
2
+ import { ClassNames } from "@emotion/react";
3
+ import { clsx } from "clsx";
4
+ import { styles } from "./ScrollToHorizontal.styles.js";
5
+ import { useScrollTo } from "../useScrollTo.js";
6
+ import { useMemo, useCallback } from "react";
7
+ import { withTooltip } from "../withTooltip.js";
8
+ import { useTheme } from "@mui/material/styles";
9
+ import { theme } from "@hitachivantara/uikit-styles";
10
+ import fade from "../../../utils/hexToRgbA.js";
11
+ import { CurrentStep } from "@hitachivantara/uikit-react-icons";
12
+ import { useMediaQuery } from "@mui/material";
13
+ import { jsx, jsxs } from "@emotion/react/jsx-runtime";
14
+ import useUniqueId from "../../../hooks/useUniqueId.js";
15
+ import { HvHorizontalScrollListItem } from "./HorizontalScrollListItem/HorizontalScrollListItem.js";
16
+ import { useTheme as useTheme$1 } from "../../../hooks/useTheme.js";
17
+ import { setId } from "../../../utils/setId.js";
18
+ import { isKeypress } from "../../../utils/keyboardUtils/keyCheck.js";
19
+ import { keyboardCodes } from "../../../utils/keyboardUtils/keyboardCodes.js";
20
+ const {
21
+ Enter
22
+ } = keyboardCodes;
23
+ const HvScrollToHorizontal = ({
24
+ id,
25
+ defaultSelectedIndex = 0,
26
+ scrollElementId,
27
+ href = true,
28
+ onChange,
29
+ onClick,
30
+ onEnter,
31
+ className,
32
+ classes,
33
+ options,
34
+ offset = 0,
35
+ position = "relative",
36
+ tooltipPosition = "top",
37
+ ...others
38
+ }) => {
39
+ const muiTheme = useTheme();
40
+ const downSm = useMediaQuery(muiTheme.breakpoints.down("sm"));
41
+ const upMd = useMediaQuery(muiTheme.breakpoints.up("md"));
42
+ const {
43
+ activeTheme,
44
+ selectedMode
45
+ } = useTheme$1();
46
+ const elementId = useUniqueId(id, "hvHorizontalScrollto");
47
+ const [selectedIndex, setScrollTo] = useScrollTo(defaultSelectedIndex, scrollElementId, href, offset, options, onChange);
48
+ const handleSelection = (event, value, index) => {
49
+ event.preventDefault();
50
+ const wrappedOnChange = () => {
51
+ onChange == null ? void 0 : onChange(event, index);
52
+ };
53
+ setScrollTo(event, value, index, wrappedOnChange);
54
+ };
55
+ const tooltipWrappers = useMemo(() => {
56
+ return options.map((option) => {
57
+ return withTooltip(option.label, "div", tooltipPosition);
58
+ });
59
+ }, [options, tooltipPosition]);
60
+ const NotSelected = useCallback(() => {
61
+ return /* @__PURE__ */ jsx(ClassNames, {
62
+ children: ({
63
+ css
64
+ }) => /* @__PURE__ */ jsx("div", {
65
+ className: clsx(classes == null ? void 0 : classes.notSelectedRoot, scrollToHorizontalClasses.notSelectedRoot, css(styles.notSelectedRoot)),
66
+ children: /* @__PURE__ */ jsx("div", {
67
+ className: clsx(classes == null ? void 0 : classes.notSelected, scrollToHorizontalClasses.notSelected, css(styles.notSelected))
68
+ })
69
+ })
70
+ });
71
+ }, [classes == null ? void 0 : classes.notSelectedRoot, classes == null ? void 0 : classes.notSelected]);
72
+ const Selected = useCallback(() => {
73
+ return /* @__PURE__ */ jsx(ClassNames, {
74
+ children: ({
75
+ css
76
+ }) => /* @__PURE__ */ jsx(CurrentStep, {
77
+ height: activeTheme == null ? void 0 : activeTheme.scrollTo.dotSelectedSize,
78
+ width: activeTheme == null ? void 0 : activeTheme.scrollTo.dotSelectedSize,
79
+ className: clsx(classes == null ? void 0 : classes.selected, scrollToHorizontalClasses.selected, css(styles.selected))
80
+ })
81
+ });
82
+ }, [classes == null ? void 0 : classes.selected, activeTheme == null ? void 0 : activeTheme.scrollTo.dotSelectedSize]);
83
+ const tabs = options.map((option, index) => {
84
+ const selected = selectedIndex === index;
85
+ const tooltipWrapper = tooltipWrappers[index];
86
+ return /* @__PURE__ */ jsxs(HvHorizontalScrollListItem, {
87
+ id: setId(elementId, `item-${index}`),
88
+ onClick: (event) => {
89
+ handleSelection(event, option.value, index);
90
+ onClick == null ? void 0 : onClick(event, index);
91
+ },
92
+ onKeyDown: (event) => {
93
+ if (isKeypress(event, Enter) === true) {
94
+ handleSelection(event, option.value, index);
95
+ onEnter == null ? void 0 : onEnter(event, index);
96
+ }
97
+ },
98
+ tooltipWrapper,
99
+ selected,
100
+ children: [/* @__PURE__ */ jsx("p", {
101
+ children: option.label
102
+ }), selected ? /* @__PURE__ */ jsx(Selected, {}) : /* @__PURE__ */ jsx(NotSelected, {})]
103
+ }, option.key || option.label);
104
+ });
105
+ return /* @__PURE__ */ jsx(ClassNames, {
106
+ children: ({
107
+ css
108
+ }) => /* @__PURE__ */ jsx("ol", {
109
+ className: clsx(className, classes == null ? void 0 : classes.root, scrollToHorizontalClasses.root, css(styles.root), css({
110
+ width: position === "fixed" && (upMd || downSm) ? `calc(100% - 2*${theme.spacing(upMd ? 4 : 2)})` : "100%",
111
+ marginTop: 0,
112
+ marginBottom: 0,
113
+ marginRight: position === "fixed" && (upMd || downSm) ? theme.spacing(upMd ? 4 : 2) : 0,
114
+ marginLeft: position === "fixed" && (upMd || downSm) ? theme.spacing(upMd ? 4 : 2) : 0,
115
+ backgroundColor: fade(activeTheme == null ? void 0 : activeTheme.colors.modes[selectedMode].atmo2, activeTheme == null ? void 0 : activeTheme.scrollTo.backgroundColorOpacity)
116
+ }), position === "sticky" && clsx(classes == null ? void 0 : classes.positionSticky, scrollToHorizontalClasses.positionSticky, css(styles.positionSticky)), position === "fixed" && clsx(classes == null ? void 0 : classes.positionFixed, scrollToHorizontalClasses.positionFixed, css(styles.positionFixed))),
117
+ id: elementId,
118
+ ...others,
119
+ children: tabs
120
+ })
121
+ });
122
+ };
123
+ export {
124
+ HvScrollToHorizontal
125
+ };
126
+ //# sourceMappingURL=ScrollToHorizontal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScrollToHorizontal.js","sources":["../../../../../src/components/ScrollTo/Horizontal/ScrollToHorizontal.tsx"],"sourcesContent":["import { HvBaseProps } from \"@core/types\";\nimport scrollToHorizontalClasses, {\n HvScrollToHorizontalClasses,\n} from \"./scrollToHorizontalClasses\";\nimport { ClassNames } from \"@emotion/react\";\nimport { clsx } from \"clsx\";\nimport { useTheme, useUniqueId } from \"@core/hooks\";\nimport { styles } from \"./ScrollToHorizontal.styles\";\nimport { useScrollTo } from \"../useScrollTo\";\nimport { HvHorizontalScrollListItem } from \"./HorizontalScrollListItem\";\nimport { isKeypress, keyboardCodes, setId } from \"@core/utils\";\nimport { useCallback, useMemo } from \"react\";\nimport { withTooltip } from \"../withTooltip\";\nimport { useTheme as useMuiTheme } from \"@mui/material/styles\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\nimport fade from \"@core/utils/hexToRgbA\";\nimport { HvScrollToTooltipPositions } from \"../types\";\nimport { CurrentStep } from \"@hitachivantara/uikit-react-icons\";\nimport { useMediaQuery } from \"@mui/material\";\n\nconst { Enter } = keyboardCodes;\n\nexport interface HvScrollToHorizontalOption {\n key?: string;\n label: string;\n value: string;\n offset?: number;\n}\n\nexport type HvScrollToHorizontalPositions = \"sticky\" | \"fixed\" | \"relative\";\n\nexport interface HvScrollToHorizontalProps\n extends HvBaseProps<HTMLOListElement, { onChange; onClick }> {\n /** An Array of Objects with Label and Value. Label is the displayed Element and Value is the local navigation location applied */\n options: HvScrollToHorizontalOption[];\n /** True if the href location link should be applied. It will create an a element around every list item */\n href?: boolean;\n /** Default selected index passed from the parent. */\n defaultSelectedIndex?: number;\n /**\n * The Id of the scrollable container containing displayed elements.\n *\n * Defaults to `window` if unspecified.\n */\n scrollElementId?: string;\n /**\n * Defines the offset from the top of each element for getting an optimal viewing region in the container.\n * This allows to exclude regions of the container that are obscured by other content (such as fixed-positioned toolbars or titles)\n * or to put more breathing room between the targeted element and the edges of the container.\n *\n * Each element can also have a specific offset via the options property.\n */\n offset?: number;\n /** Position of the Horizontal scroll to. */\n position?: HvScrollToHorizontalPositions;\n /** Position of tooltip identifying the current item. */\n tooltipPosition?: HvScrollToTooltipPositions;\n /** A function called each time the selected index changes. */\n onChange?: (\n event:\n | Event\n | React.MouseEvent<HTMLDivElement>\n | React.KeyboardEvent<HTMLDivElement>,\n index: number\n ) => void;\n /** A function called each time an user clicks on a tab element. */\n onClick?: (event: React.MouseEvent<HTMLDivElement>, index: number) => void;\n /** A function called each time an user press enter on a tab element. */\n onEnter?: (event: React.KeyboardEvent<HTMLDivElement>, index: number) => void;\n /** A Jss Object used to override or extend the styles applied. */\n classes?: HvScrollToHorizontalClasses;\n}\n\n/**\n * The horizontal scroll to element can be used to quickly navigate in a page.\n */\nexport const HvScrollToHorizontal = ({\n id,\n defaultSelectedIndex = 0,\n scrollElementId,\n href = true,\n onChange,\n onClick,\n onEnter,\n className,\n classes,\n options,\n offset = 0,\n position = \"relative\",\n tooltipPosition = \"top\",\n ...others\n}: HvScrollToHorizontalProps) => {\n const muiTheme = useMuiTheme();\n\n const downSm = useMediaQuery(muiTheme.breakpoints.down(\"sm\"));\n const upMd = useMediaQuery(muiTheme.breakpoints.up(\"md\"));\n\n const { activeTheme, selectedMode } = useTheme();\n\n const elementId = useUniqueId(id, \"hvHorizontalScrollto\");\n\n const [selectedIndex, setScrollTo] = useScrollTo(\n defaultSelectedIndex,\n scrollElementId,\n href,\n offset,\n options,\n onChange\n );\n\n const handleSelection = (\n event:\n | React.MouseEvent<HTMLDivElement>\n | React.KeyboardEvent<HTMLDivElement>,\n value: string,\n index: number\n ) => {\n event.preventDefault();\n\n const wrappedOnChange = () => {\n onChange?.(event, index);\n };\n\n setScrollTo(event, value, index, wrappedOnChange);\n };\n\n const tooltipWrappers = useMemo(() => {\n return options.map((option) => {\n return withTooltip(option.label, \"div\", tooltipPosition);\n });\n }, [options, tooltipPosition]);\n\n const NotSelected = useCallback(() => {\n return (\n <ClassNames>\n {({ css }) => (\n <div\n className={clsx(\n classes?.notSelectedRoot,\n scrollToHorizontalClasses.notSelectedRoot,\n css(styles.notSelectedRoot)\n )}\n >\n <div\n className={clsx(\n classes?.notSelected,\n scrollToHorizontalClasses.notSelected,\n css(styles.notSelected)\n )}\n />\n </div>\n )}\n </ClassNames>\n );\n }, [classes?.notSelectedRoot, classes?.notSelected]);\n\n const Selected = useCallback(() => {\n return (\n <ClassNames>\n {({ css }) => (\n <CurrentStep\n height={activeTheme?.scrollTo.dotSelectedSize}\n width={activeTheme?.scrollTo.dotSelectedSize}\n className={clsx(\n classes?.selected,\n scrollToHorizontalClasses.selected,\n css(styles.selected)\n )}\n />\n )}\n </ClassNames>\n );\n }, [classes?.selected, activeTheme?.scrollTo.dotSelectedSize]);\n\n const tabs = options.map((option, index) => {\n const selected = selectedIndex === index;\n const tooltipWrapper = tooltipWrappers[index];\n\n return (\n <HvHorizontalScrollListItem\n id={setId(elementId, `item-${index}`)}\n onClick={(event) => {\n handleSelection(event, option.value, index);\n onClick?.(event, index);\n }}\n onKeyDown={(event) => {\n if (isKeypress(event, Enter) === true) {\n handleSelection(event, option.value, index);\n onEnter?.(event, index);\n }\n }}\n tooltipWrapper={tooltipWrapper}\n selected={selected}\n key={option.key || option.label}\n >\n <p>{option.label}</p>\n {selected ? <Selected /> : <NotSelected />}\n </HvHorizontalScrollListItem>\n );\n });\n\n return (\n <ClassNames>\n {({ css }) => (\n <ol\n className={clsx(\n className,\n classes?.root,\n scrollToHorizontalClasses.root,\n css(styles.root),\n css({\n width:\n position === \"fixed\" && (upMd || downSm)\n ? `calc(100% - 2*${theme.spacing(upMd ? 4 : 2)})`\n : \"100%\",\n marginTop: 0,\n marginBottom: 0,\n marginRight:\n position === \"fixed\" && (upMd || downSm)\n ? theme.spacing(upMd ? 4 : 2)\n : 0,\n marginLeft:\n position === \"fixed\" && (upMd || downSm)\n ? theme.spacing(upMd ? 4 : 2)\n : 0,\n backgroundColor: fade(\n activeTheme?.colors.modes[selectedMode].atmo2,\n activeTheme?.scrollTo.backgroundColorOpacity\n ),\n }),\n position === \"sticky\" &&\n clsx(\n classes?.positionSticky,\n scrollToHorizontalClasses.positionSticky,\n css(styles.positionSticky)\n ),\n position === \"fixed\" &&\n clsx(\n classes?.positionFixed,\n scrollToHorizontalClasses.positionFixed,\n css(styles.positionFixed)\n )\n )}\n id={elementId}\n {...others}\n >\n {tabs}\n </ol>\n )}\n </ClassNames>\n );\n};\n"],"names":["Enter","keyboardCodes","HvScrollToHorizontal","id","defaultSelectedIndex","scrollElementId","href","onChange","onClick","onEnter","className","classes","options","offset","position","tooltipPosition","others","muiTheme","useMuiTheme","downSm","useMediaQuery","breakpoints","down","upMd","up","activeTheme","selectedMode","useTheme","elementId","useUniqueId","selectedIndex","setScrollTo","useScrollTo","handleSelection","event","value","index","preventDefault","wrappedOnChange","tooltipWrappers","useMemo","map","option","withTooltip","label","NotSelected","useCallback","ClassNames","children","css","clsx","notSelectedRoot","scrollToHorizontalClasses","styles","notSelected","Selected","CurrentStep","height","scrollTo","dotSelectedSize","width","selected","tabs","tooltipWrapper","HvHorizontalScrollListItem","setId","onKeyDown","isKeypress","_jsx","key","root","theme","spacing","marginTop","marginBottom","marginRight","marginLeft","backgroundColor","fade","colors","modes","atmo2","backgroundColorOpacity","positionSticky","positionFixed"],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import { theme } from "@hitachivantara/uikit-styles";
2
+ const styles = {
3
+ root: {
4
+ display: "flex",
5
+ padding: "0 30px",
6
+ listStyleType: "none",
7
+ flexWrap: "wrap",
8
+ backdropFilter: `blur(${theme.scrollTo.backgroundColorBlur})`
9
+ },
10
+ positionSticky: {
11
+ position: "sticky",
12
+ zIndex: `calc(${theme.zIndices.banner} - 2)`,
13
+ top: 0,
14
+ left: 0
15
+ },
16
+ positionFixed: {
17
+ position: "fixed",
18
+ zIndex: `calc(${theme.zIndices.banner} - 2)`,
19
+ top: 0,
20
+ left: 0
21
+ },
22
+ notSelectedRoot: {
23
+ display: theme.scrollTo.horizontal.dotDisplay,
24
+ justifyContent: "center",
25
+ alignItems: "center",
26
+ height: theme.scrollTo.dotRootSize,
27
+ width: theme.scrollTo.dotRootSize,
28
+ borderRadius: theme.scrollTo.dotRootRadius
29
+ },
30
+ notSelected: {
31
+ height: theme.scrollTo.dotNotSelectedSize,
32
+ width: theme.scrollTo.dotNotSelectedSize,
33
+ borderRadius: "50%",
34
+ display: "inline-block",
35
+ backgroundColor: theme.scrollTo.dotNotSelectedColor
36
+ },
37
+ selected: {
38
+ display: theme.scrollTo.horizontal.dotDisplay,
39
+ height: theme.scrollTo.dotRootSize,
40
+ width: theme.scrollTo.dotRootSize
41
+ }
42
+ };
43
+ export {
44
+ styles
45
+ };
46
+ //# sourceMappingURL=ScrollToHorizontal.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScrollToHorizontal.styles.js","sources":["../../../../../src/components/ScrollTo/Horizontal/ScrollToHorizontal.styles.tsx"],"sourcesContent":["import { CSSInterpolation } from \"@emotion/serialize\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nexport const styles: {\n root: CSSInterpolation;\n positionSticky: CSSInterpolation;\n positionFixed: CSSInterpolation;\n notSelectedRoot: CSSInterpolation;\n notSelected: CSSInterpolation;\n selected: CSSInterpolation;\n} = {\n root: {\n display: \"flex\",\n padding: \"0 30px\",\n listStyleType: \"none\",\n flexWrap: \"wrap\",\n backdropFilter: `blur(${theme.scrollTo.backgroundColorBlur})`,\n },\n positionSticky: {\n position: \"sticky\",\n zIndex: `calc(${theme.zIndices.banner} - 2)`,\n top: 0,\n left: 0,\n },\n positionFixed: {\n position: \"fixed\",\n zIndex: `calc(${theme.zIndices.banner} - 2)`,\n top: 0,\n left: 0,\n },\n notSelectedRoot: {\n display: theme.scrollTo.horizontal.dotDisplay,\n justifyContent: \"center\",\n alignItems: \"center\",\n height: theme.scrollTo.dotRootSize,\n width: theme.scrollTo.dotRootSize,\n borderRadius: theme.scrollTo.dotRootRadius,\n },\n notSelected: {\n height: theme.scrollTo.dotNotSelectedSize,\n width: theme.scrollTo.dotNotSelectedSize,\n borderRadius: \"50%\",\n display: \"inline-block\",\n backgroundColor: theme.scrollTo.dotNotSelectedColor,\n },\n selected: {\n display: theme.scrollTo.horizontal.dotDisplay,\n height: theme.scrollTo.dotRootSize,\n width: theme.scrollTo.dotRootSize,\n },\n};\n"],"names":["styles","root","display","padding","listStyleType","flexWrap","backdropFilter","theme","scrollTo","backgroundColorBlur","positionSticky","position","zIndex","zIndices","banner","top","left","positionFixed","notSelectedRoot","horizontal","dotDisplay","justifyContent","alignItems","height","dotRootSize","width","borderRadius","dotRootRadius","notSelected","dotNotSelectedSize","backgroundColor","dotNotSelectedColor","selected"],"mappings":";AAGO,MAAMA,SAOT;AAAA,EACFC,MAAM;AAAA,IACJC,SAAS;AAAA,IACTC,SAAS;AAAA,IACTC,eAAe;AAAA,IACfC,UAAU;AAAA,IACVC,gBAAiB,QAAOC,MAAMC,SAASC;AAAAA,EACzC;AAAA,EACAC,gBAAgB;AAAA,IACdC,UAAU;AAAA,IACVC,QAAS,QAAOL,MAAMM,SAASC;AAAAA,IAC/BC,KAAK;AAAA,IACLC,MAAM;AAAA,EACR;AAAA,EACAC,eAAe;AAAA,IACbN,UAAU;AAAA,IACVC,QAAS,QAAOL,MAAMM,SAASC;AAAAA,IAC/BC,KAAK;AAAA,IACLC,MAAM;AAAA,EACR;AAAA,EACAE,iBAAiB;AAAA,IACfhB,SAASK,MAAMC,SAASW,WAAWC;AAAAA,IACnCC,gBAAgB;AAAA,IAChBC,YAAY;AAAA,IACZC,QAAQhB,MAAMC,SAASgB;AAAAA,IACvBC,OAAOlB,MAAMC,SAASgB;AAAAA,IACtBE,cAAcnB,MAAMC,SAASmB;AAAAA,EAC/B;AAAA,EACAC,aAAa;AAAA,IACXL,QAAQhB,MAAMC,SAASqB;AAAAA,IACvBJ,OAAOlB,MAAMC,SAASqB;AAAAA,IACtBH,cAAc;AAAA,IACdxB,SAAS;AAAA,IACT4B,iBAAiBvB,MAAMC,SAASuB;AAAAA,EAClC;AAAA,EACAC,UAAU;AAAA,IACR9B,SAASK,MAAMC,SAASW,WAAWC;AAAAA,IACnCG,QAAQhB,MAAMC,SAASgB;AAAAA,IACvBC,OAAOlB,MAAMC,SAASgB;AAAAA,EACxB;AACF;"}
@@ -0,0 +1,8 @@
1
+ import { getClasses } from "../../../utils/classes.js";
2
+ const classKeys = ["root", "positionSticky", "positionFixed", "notSelectedRoot", "notSelected", "selected"];
3
+ const scrollToHorizontalClasses = getClasses(classKeys, "HvScrollToHorizontal");
4
+ const scrollToHorizontalClasses$1 = scrollToHorizontalClasses;
5
+ export {
6
+ scrollToHorizontalClasses$1 as default
7
+ };
8
+ //# sourceMappingURL=scrollToHorizontalClasses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scrollToHorizontalClasses.js","sources":["../../../../../src/components/ScrollTo/Horizontal/scrollToHorizontalClasses.ts"],"sourcesContent":["import { getClasses } from \"@core/utils\";\n\nexport interface HvScrollToHorizontalClasses {\n root?: string;\n positionSticky?: string;\n positionFixed?: string;\n notSelectedRoot?: string;\n notSelected?: string;\n selected?: string;\n}\n\nconst classKeys: string[] = [\n \"root\",\n \"positionSticky\",\n \"positionFixed\",\n \"notSelectedRoot\",\n \"notSelected\",\n \"selected\",\n];\n\nconst scrollToHorizontalClasses = getClasses<HvScrollToHorizontalClasses>(\n classKeys,\n \"HvScrollToHorizontal\"\n);\n\nexport default scrollToHorizontalClasses;\n"],"names":["classKeys","scrollToHorizontalClasses","getClasses"],"mappings":";AAWA,MAAMA,YAAsB,CAC1B,QACA,kBACA,iBACA,mBACA,eACA,UAAU;AAGZ,MAAMC,4BAA4BC,WAChCF,WACA,sBAAsB;AAGxB,MAAA,8BAAeC;"}
@@ -0,0 +1,90 @@
1
+ import scrollToVerticalClasses from "./scrollToVerticalClasses.js";
2
+ import { generateDynamicStyles, styles } from "./ScrollToVertical.styles.js";
3
+ import { clsx } from "clsx";
4
+ import { useScrollTo } from "../useScrollTo.js";
5
+ import { useMemo } from "react";
6
+ import { withTooltip } from "../withTooltip.js";
7
+ import { ClassNames } from "@emotion/react";
8
+ import fade from "../../../utils/hexToRgbA.js";
9
+ import { jsx } from "@emotion/react/jsx-runtime";
10
+ import useUniqueId from "../../../hooks/useUniqueId.js";
11
+ import { HvVerticalScrollListItem } from "./VerticalScrollListItem/VerticalScrollListItem.js";
12
+ import { useTheme } from "../../../hooks/useTheme.js";
13
+ import { setId } from "../../../utils/setId.js";
14
+ import { isKeypress } from "../../../utils/keyboardUtils/keyCheck.js";
15
+ import { keyboardCodes } from "../../../utils/keyboardUtils/keyboardCodes.js";
16
+ const {
17
+ Enter
18
+ } = keyboardCodes;
19
+ const HvScrollToVertical = ({
20
+ id,
21
+ defaultSelectedIndex = 0,
22
+ scrollElementId,
23
+ href = true,
24
+ onChange,
25
+ onClick,
26
+ onEnter,
27
+ className,
28
+ classes,
29
+ options,
30
+ offset = 0,
31
+ position = "relative",
32
+ tooltipPosition = "left",
33
+ ...others
34
+ }) => {
35
+ const {
36
+ activeTheme,
37
+ selectedMode
38
+ } = useTheme();
39
+ const elementId = useUniqueId(id, "hvVerticalScrollto");
40
+ const [selectedIndex, setScrollTo] = useScrollTo(defaultSelectedIndex, scrollElementId, href, offset, options, onChange);
41
+ const handleSelection = (event, value, index) => {
42
+ event.preventDefault();
43
+ const wrappedOnChange = () => {
44
+ onChange == null ? void 0 : onChange(event, index);
45
+ };
46
+ setScrollTo(event, value, index, wrappedOnChange);
47
+ };
48
+ const tooltipWrappers = useMemo(() => {
49
+ return options.map((option) => {
50
+ return withTooltip(option.label, "div", tooltipPosition, false);
51
+ });
52
+ }, [options, tooltipPosition]);
53
+ const tabs = options.map((option, index) => {
54
+ const selected = selectedIndex === index;
55
+ const tooltipWrapper = tooltipWrappers[index];
56
+ return /* @__PURE__ */ jsx(HvVerticalScrollListItem, {
57
+ id: setId(elementId, `item-${index}`),
58
+ onClick: (event) => {
59
+ handleSelection(event, option.value, index);
60
+ onClick == null ? void 0 : onClick(event, index);
61
+ },
62
+ onKeyDown: (event) => {
63
+ if (isKeypress(event, Enter) === true) {
64
+ handleSelection(event, option.value, index);
65
+ onEnter == null ? void 0 : onEnter(event, index);
66
+ }
67
+ },
68
+ tooltipWrapper,
69
+ selected,
70
+ "aria-label": option.label
71
+ }, option.key || option.label);
72
+ });
73
+ const dynamicClasses = generateDynamicStyles(options.length);
74
+ return /* @__PURE__ */ jsx(ClassNames, {
75
+ children: ({
76
+ css
77
+ }) => /* @__PURE__ */ jsx("ol", {
78
+ className: clsx(className, classes == null ? void 0 : classes.root, scrollToVerticalClasses.root, css(styles.root), css({
79
+ backgroundColor: fade(activeTheme == null ? void 0 : activeTheme.colors.modes[selectedMode].atmo2, activeTheme == null ? void 0 : activeTheme.scrollTo.backgroundColorOpacity)
80
+ }), position === "fixed" && clsx(classes == null ? void 0 : classes.positionFixed, scrollToVerticalClasses.positionFixed, css(dynamicClasses.positionFixed)), position === "absolute" && clsx(classes == null ? void 0 : classes.positionAbsolute, scrollToVerticalClasses.positionAbsolute, css(dynamicClasses.positionAbsolute))),
81
+ id: elementId,
82
+ ...others,
83
+ children: tabs
84
+ })
85
+ });
86
+ };
87
+ export {
88
+ HvScrollToVertical
89
+ };
90
+ //# sourceMappingURL=ScrollToVertical.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScrollToVertical.js","sources":["../../../../../src/components/ScrollTo/Vertical/ScrollToVertical.tsx"],"sourcesContent":["import { HvBaseProps } from \"@core/types\";\nimport scrollToVerticalClasses, {\n HvScrollToVerticalClasses,\n} from \"./scrollToVerticalClasses\";\nimport { generateDynamicStyles, styles } from \"./ScrollToVertical.styles\";\nimport { clsx } from \"clsx\";\nimport { useTheme, useUniqueId } from \"@core/hooks\";\nimport { HvVerticalScrollListItem } from \"./VerticalScrollListItem\";\nimport { isKeypress, keyboardCodes, setId } from \"@core/utils\";\nimport { useScrollTo } from \"../useScrollTo\";\nimport { useMemo } from \"react\";\nimport { withTooltip } from \"../withTooltip\";\nimport { ClassNames } from \"@emotion/react\";\nimport fade from \"@core/utils/hexToRgbA\";\nimport { HvScrollToTooltipPositions } from \"../types\";\n\nconst { Enter } = keyboardCodes;\n\nexport interface HvScrollToVerticalOption {\n key?: string;\n label: string;\n value: string;\n offset?: number;\n}\n\nexport type HvScrollToVerticalPositions = \"absolute\" | \"fixed\" | \"relative\";\n\nexport interface HvScrollToVerticalProps\n extends HvBaseProps<HTMLOListElement, { onChange; onClick }> {\n /** An Array of Objects with Label and Value. Label is the displayed Element and Value is the local navigation location applied */\n options: HvScrollToVerticalOption[];\n /** True if the href location link should be applied. It will create an a element around every list item */\n href?: boolean;\n /** Default selected index passed from the parent. */\n defaultSelectedIndex?: number;\n /**\n * The Id of the scrollable container containing displayed elements.\n *\n * Defaults to `window` if unspecified.\n */\n scrollElementId?: string;\n /**\n * Defines the offset from the top of each element for getting an optimal viewing region in the container.\n * This allows to exclude regions of the container that are obscured by other content (such as fixed-positioned toolbars or titles)\n * or to put more breathing room between the targeted element and the edges of the container.\n *\n * Each element can also have a specific offset via the options property.\n */\n offset?: number;\n /** Position of the Vertical scroll to. */\n position?: HvScrollToVerticalPositions;\n /** Position of tooltip identifying the current item. */\n tooltipPosition?: HvScrollToTooltipPositions;\n /** A function called each time the selected index changes. */\n onChange?: (\n event:\n | Event\n | React.MouseEvent<HTMLDivElement>\n | React.KeyboardEvent<HTMLDivElement>,\n index: number\n ) => void;\n /** A function called each time an user clicks on a tab element. */\n onClick?: (event: React.MouseEvent<HTMLDivElement>, index: number) => void;\n /** A function called each time an user press enter on a tab element. */\n onEnter?: (event: React.KeyboardEvent<HTMLDivElement>, index: number) => void;\n /** A Jss Object used to override or extend the styles applied. */\n classes?: HvScrollToVerticalClasses;\n}\n\n/**\n * The vertical scroll to element can be used to quickly navigate in a page.\n */\nexport const HvScrollToVertical = ({\n id,\n defaultSelectedIndex = 0,\n scrollElementId,\n href = true,\n onChange,\n onClick,\n onEnter,\n className,\n classes,\n options,\n offset = 0,\n position = \"relative\",\n tooltipPosition = \"left\",\n ...others\n}: HvScrollToVerticalProps) => {\n const { activeTheme, selectedMode } = useTheme();\n\n const elementId = useUniqueId(id, \"hvVerticalScrollto\");\n\n const [selectedIndex, setScrollTo] = useScrollTo(\n defaultSelectedIndex,\n scrollElementId,\n href,\n offset,\n options,\n onChange\n );\n\n const handleSelection = (\n event:\n | React.MouseEvent<HTMLDivElement>\n | React.KeyboardEvent<HTMLDivElement>,\n value: string,\n index: number\n ) => {\n event.preventDefault();\n\n const wrappedOnChange = () => {\n onChange?.(event, index);\n };\n\n setScrollTo(event, value, index, wrappedOnChange);\n };\n\n const tooltipWrappers = useMemo(() => {\n return options.map((option) => {\n return withTooltip(option.label, \"div\", tooltipPosition, false);\n });\n }, [options, tooltipPosition]);\n\n const tabs = options.map((option, index) => {\n const selected = selectedIndex === index;\n const tooltipWrapper = tooltipWrappers[index];\n\n return (\n <HvVerticalScrollListItem\n id={setId(elementId, `item-${index}`)}\n onClick={(event) => {\n handleSelection(event, option.value, index);\n onClick?.(event, index);\n }}\n onKeyDown={(event) => {\n if (isKeypress(event, Enter) === true) {\n handleSelection(event, option.value, index);\n onEnter?.(event, index);\n }\n }}\n tooltipWrapper={tooltipWrapper}\n selected={selected}\n key={option.key || option.label}\n aria-label={option.label}\n />\n );\n });\n\n const dynamicClasses = generateDynamicStyles(options.length);\n\n return (\n <ClassNames>\n {({ css }) => (\n <ol\n className={clsx(\n className,\n classes?.root,\n scrollToVerticalClasses.root,\n css(styles.root),\n css({\n backgroundColor: fade(\n activeTheme?.colors.modes[selectedMode].atmo2,\n activeTheme?.scrollTo.backgroundColorOpacity\n ),\n }),\n position === \"fixed\" &&\n clsx(\n classes?.positionFixed,\n scrollToVerticalClasses.positionFixed,\n css(dynamicClasses.positionFixed)\n ),\n position === \"absolute\" &&\n clsx(\n classes?.positionAbsolute,\n scrollToVerticalClasses.positionAbsolute,\n css(dynamicClasses.positionAbsolute)\n )\n )}\n id={elementId}\n {...others}\n >\n {tabs}\n </ol>\n )}\n </ClassNames>\n );\n};\n"],"names":["Enter","keyboardCodes","HvScrollToVertical","id","defaultSelectedIndex","scrollElementId","href","onChange","onClick","onEnter","className","classes","options","offset","position","tooltipPosition","others","activeTheme","selectedMode","useTheme","elementId","useUniqueId","selectedIndex","setScrollTo","useScrollTo","handleSelection","event","value","index","preventDefault","wrappedOnChange","tooltipWrappers","useMemo","map","option","withTooltip","label","tabs","selected","tooltipWrapper","HvVerticalScrollListItem","setId","onKeyDown","isKeypress","key","dynamicClasses","generateDynamicStyles","length","ClassNames","children","css","clsx","root","scrollToVerticalClasses","styles","backgroundColor","fade","colors","modes","atmo2","scrollTo","backgroundColorOpacity","positionFixed","positionAbsolute"],"mappings":";;;;;;;;;;;;;;;AAgBA,MAAM;AAAA,EAAEA;AAAM,IAAIC;AAwDX,MAAMC,qBAAqBA,CAAC;AAAA,EACjCC;AAAAA,EACAC,uBAAuB;AAAA,EACvBC;AAAAA,EACAC,OAAO;AAAA,EACPC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,SAAS;AAAA,EACTC,WAAW;AAAA,EACXC,kBAAkB;AAAA,EAClB,GAAGC;AACoB,MAAM;AACvB,QAAA;AAAA,IAAEC;AAAAA,IAAaC;AAAAA,MAAiBC,SAAU;AAE1CC,QAAAA,YAAYC,YAAYlB,IAAI,oBAAoB;AAEhD,QAAA,CAACmB,eAAeC,WAAW,IAAIC,YACnCpB,sBACAC,iBACAC,MACAO,QACAD,SACAL,QAAQ;AAGV,QAAMkB,kBAAkBA,CACtBC,OAGAC,OACAC,UACG;AACHF,UAAMG,eAAgB;AAEtB,UAAMC,kBAAkBA,MAAM;AAC5BvB,2CAAWmB,OAAOE;AAAAA,IAAK;AAGbF,gBAAAA,OAAOC,OAAOC,OAAOE,eAAe;AAAA,EAAA;AAG5CC,QAAAA,kBAAkBC,QAAQ,MAAM;AAC7BpB,WAAAA,QAAQqB,IAAKC,CAAW,WAAA;AAC7B,aAAOC,YAAYD,OAAOE,OAAO,OAAOrB,iBAAiB,KAAK;AAAA,IAAA,CAC/D;AAAA,EAAA,GACA,CAACH,SAASG,eAAe,CAAC;AAE7B,QAAMsB,OAAOzB,QAAQqB,IAAI,CAACC,QAAQN,UAAU;AAC1C,UAAMU,WAAWhB,kBAAkBM;AAC7BW,UAAAA,iBAAiBR,gBAAgBH,KAAK;AAE5C,+BACGY,0BAAwB;AAAA,MACvBrC,IAAIsC,MAAMrB,WAAY,QAAOQ,OAAO;AAAA,MACpCpB,SAAUkB,CAAU,UAAA;AACFA,wBAAAA,OAAOQ,OAAOP,OAAOC,KAAK;AAC1CpB,2CAAUkB,OAAOE;AAAAA,MACnB;AAAA,MACAc,WAAYhB,CAAU,UAAA;AACpB,YAAIiB,WAAWjB,OAAO1B,KAAK,MAAM,MAAM;AACrB0B,0BAAAA,OAAOQ,OAAOP,OAAOC,KAAK;AAC1CnB,6CAAUiB,OAAOE;AAAAA,QACnB;AAAA,MACF;AAAA,MACAW;AAAAA,MACAD;AAAAA,MAEA,cAAYJ,OAAOE;AAAAA,IADdF,GAAAA,OAAOU,OAAOV,OAAOE,KAAK;AAAA,EAAA,CAIpC;AAEKS,QAAAA,iBAAiBC,sBAAsBlC,QAAQmC,MAAM;AAE3D,6BACGC,YAAU;AAAA,IAAAC,UACRA,CAAC;AAAA,MAAEC;AAAAA,IAAAA,0BACF,MAAA;AAAA,MACExC,WAAWyC,KACTzC,WACAC,mCAASyC,MACTC,wBAAwBD,MACxBF,IAAII,OAAOF,IAAI,GACfF,IAAI;AAAA,QACFK,iBAAiBC,KACfvC,2CAAawC,OAAOC,MAAMxC,cAAcyC,OACxC1C,2CAAa2C,SAASC,sBAAsB;AAAA,MAE/C,CAAA,GACD/C,aAAa,WACXqC,KACExC,mCAASmD,eACTT,wBAAwBS,eACxBZ,IAAIL,eAAeiB,aAAa,CAAC,GAErChD,aAAa,cACXqC,KACExC,mCAASoD,kBACTV,wBAAwBU,kBACxBb,IAAIL,eAAekB,gBAAgB,CAAC,CACrC;AAAA,MAEL5D,IAAIiB;AAAAA,MAAU,GACVJ;AAAAA,MAAMiC,UAETZ;AAAAA,IAAAA,CAAI;AAAA,EAAA,CAGE;AAEjB;"}
@@ -0,0 +1,43 @@
1
+ import { theme } from "@hitachivantara/uikit-styles";
2
+ const styles = {
3
+ root: {
4
+ display: "flex",
5
+ width: "32px",
6
+ padding: "0",
7
+ margin: 0,
8
+ listStyleType: "none",
9
+ flexWrap: "wrap",
10
+ flexDirection: "column",
11
+ backdropFilter: `blur(${theme.scrollTo.backgroundColorBlur})`
12
+ }
13
+ };
14
+ const calculateOffset = (quantityOfOptions) => {
15
+ const itemSize = 32;
16
+ const halfOptions = Math.round(quantityOfOptions * 0.5);
17
+ return halfOptions * itemSize;
18
+ };
19
+ const generateDynamicStyles = (quantityOfOptions) => {
20
+ const positionOffset = calculateOffset(quantityOfOptions);
21
+ const generatedStyles = {
22
+ positionAbsolute: {
23
+ width: "32px",
24
+ position: "absolute",
25
+ zIndex: `calc(${theme.zIndices.banner} - 2)`,
26
+ right: "0",
27
+ top: `calc(50% - ${positionOffset}px)`
28
+ },
29
+ positionFixed: {
30
+ width: "32px",
31
+ position: "fixed",
32
+ zIndex: `calc(${theme.zIndices.banner} - 2)`,
33
+ right: "0",
34
+ top: `calc(50% - ${positionOffset}px)`
35
+ }
36
+ };
37
+ return generatedStyles;
38
+ };
39
+ export {
40
+ generateDynamicStyles,
41
+ styles
42
+ };
43
+ //# sourceMappingURL=ScrollToVertical.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScrollToVertical.styles.js","sources":["../../../../../src/components/ScrollTo/Vertical/ScrollToVertical.styles.tsx"],"sourcesContent":["import { theme } from \"@hitachivantara/uikit-styles\";\nimport { CSSInterpolation } from \"@emotion/serialize\";\n\nexport const styles: {\n root: CSSInterpolation;\n} = {\n root: {\n display: \"flex\",\n width: \"32px\",\n padding: \"0\",\n margin: 0,\n listStyleType: \"none\",\n flexWrap: \"wrap\",\n flexDirection: \"column\",\n backdropFilter: `blur(${theme.scrollTo.backgroundColorBlur})`,\n },\n};\n\nconst calculateOffset = (quantityOfOptions: number) => {\n const itemSize = 32;\n const halfOptions = Math.round(quantityOfOptions * 0.5);\n\n return halfOptions * itemSize;\n};\n\nexport const generateDynamicStyles = (quantityOfOptions: number) => {\n const positionOffset = calculateOffset(quantityOfOptions);\n\n const generatedStyles: {\n positionAbsolute: CSSInterpolation;\n positionFixed: CSSInterpolation;\n } = {\n positionAbsolute: {\n width: \"32px\",\n position: \"absolute\",\n zIndex: `calc(${theme.zIndices.banner} - 2)`,\n right: \"0\",\n top: `calc(50% - ${positionOffset}px)`,\n },\n positionFixed: {\n width: \"32px\",\n position: \"fixed\",\n zIndex: `calc(${theme.zIndices.banner} - 2)`,\n right: \"0\",\n top: `calc(50% - ${positionOffset}px)`,\n },\n };\n\n return generatedStyles;\n};\n"],"names":["styles","root","display","width","padding","margin","listStyleType","flexWrap","flexDirection","backdropFilter","theme","scrollTo","backgroundColorBlur","calculateOffset","quantityOfOptions","itemSize","halfOptions","Math","round","generateDynamicStyles","positionOffset","generatedStyles","positionAbsolute","position","zIndex","zIndices","banner","right","top","positionFixed"],"mappings":";AAGO,MAAMA,SAET;AAAA,EACFC,MAAM;AAAA,IACJC,SAAS;AAAA,IACTC,OAAO;AAAA,IACPC,SAAS;AAAA,IACTC,QAAQ;AAAA,IACRC,eAAe;AAAA,IACfC,UAAU;AAAA,IACVC,eAAe;AAAA,IACfC,gBAAiB,QAAOC,MAAMC,SAASC;AAAAA,EACzC;AACF;AAEA,MAAMC,kBAAkBA,CAACC,sBAA8B;AACrD,QAAMC,WAAW;AACjB,QAAMC,cAAcC,KAAKC,MAAMJ,oBAAoB,GAAG;AAEtD,SAAOE,cAAcD;AACvB;AAEaI,MAAAA,wBAAwBA,CAACL,sBAA8B;AAC5DM,QAAAA,iBAAiBP,gBAAgBC,iBAAiB;AAExD,QAAMO,kBAGF;AAAA,IACFC,kBAAkB;AAAA,MAChBnB,OAAO;AAAA,MACPoB,UAAU;AAAA,MACVC,QAAS,QAAOd,MAAMe,SAASC;AAAAA,MAC/BC,OAAO;AAAA,MACPC,KAAM,cAAaR;AAAAA,IACrB;AAAA,IACAS,eAAe;AAAA,MACb1B,OAAO;AAAA,MACPoB,UAAU;AAAA,MACVC,QAAS,QAAOd,MAAMe,SAASC;AAAAA,MAC/BC,OAAO;AAAA,MACPC,KAAM,cAAaR;AAAAA,IACrB;AAAA,EAAA;AAGKC,SAAAA;AACT;"}
@@ -0,0 +1,71 @@
1
+ import verticalScrollListItemClasses from "./verticalScrollListItemClasses.js";
2
+ import { ClassNames } from "@emotion/react";
3
+ import { clsx } from "clsx";
4
+ import { styles } from "./VerticalScrollListItem.styles.js";
5
+ import { useCallback } from "react";
6
+ import { CurrentStep } from "@hitachivantara/uikit-react-icons";
7
+ import { jsx } from "@emotion/react/jsx-runtime";
8
+ import { useTheme } from "../../../../hooks/useTheme.js";
9
+ import { setId } from "../../../../utils/setId.js";
10
+ const HvVerticalScrollListItem = ({
11
+ id,
12
+ className,
13
+ classes,
14
+ selected,
15
+ "aria-label": ariaLabel,
16
+ onClick,
17
+ onKeyDown,
18
+ tooltipWrapper,
19
+ ...others
20
+ }) => {
21
+ const {
22
+ activeTheme
23
+ } = useTheme();
24
+ const variant = selected ? "label" : "body";
25
+ const labelId = setId(id, "label");
26
+ const buttonId = setId(id, "button");
27
+ const Tooltip = tooltipWrapper;
28
+ const NotSelected = useCallback(() => {
29
+ return /* @__PURE__ */ jsx(ClassNames, {
30
+ children: ({
31
+ css
32
+ }) => /* @__PURE__ */ jsx("div", {
33
+ className: clsx(classes == null ? void 0 : classes.notSelected, verticalScrollListItemClasses.notSelected, css(styles.notSelected))
34
+ })
35
+ });
36
+ }, [classes == null ? void 0 : classes.notSelected]);
37
+ const icon = selected ? /* @__PURE__ */ jsx(CurrentStep, {
38
+ height: activeTheme == null ? void 0 : activeTheme.scrollTo.dotSelectedSize,
39
+ width: activeTheme == null ? void 0 : activeTheme.scrollTo.dotSelectedSize
40
+ }) : /* @__PURE__ */ jsx(NotSelected, {});
41
+ return /* @__PURE__ */ jsx(ClassNames, {
42
+ children: ({
43
+ css
44
+ }) => /* @__PURE__ */ jsx("li", {
45
+ id,
46
+ className: clsx(className, classes == null ? void 0 : classes.root, verticalScrollListItemClasses.root, css(styles.root)),
47
+ "aria-current": selected,
48
+ children: /* @__PURE__ */ jsx("div", {
49
+ id: buttonId,
50
+ role: "button",
51
+ tabIndex: 0,
52
+ onClick,
53
+ onKeyDown,
54
+ className: clsx(classes == null ? void 0 : classes.button, verticalScrollListItemClasses.button, css(styles.button)),
55
+ "aria-label": ariaLabel,
56
+ "aria-labelledby": labelId,
57
+ ...others,
58
+ children: /* @__PURE__ */ jsx(Tooltip, {
59
+ id: labelId,
60
+ className: clsx(classes == null ? void 0 : classes.text, verticalScrollListItemClasses.text, css(styles.text)),
61
+ variant,
62
+ children: icon
63
+ })
64
+ })
65
+ })
66
+ });
67
+ };
68
+ export {
69
+ HvVerticalScrollListItem
70
+ };
71
+ //# sourceMappingURL=VerticalScrollListItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerticalScrollListItem.js","sources":["../../../../../../src/components/ScrollTo/Vertical/VerticalScrollListItem/VerticalScrollListItem.tsx"],"sourcesContent":["import { HvBaseProps } from \"@core/types\";\nimport verticalScrollListItemClasses, {\n HvVerticalScrollListItemClasses,\n} from \"./verticalScrollListItemClasses\";\nimport { ClassNames } from \"@emotion/react\";\nimport { clsx } from \"clsx\";\nimport { styles } from \"./VerticalScrollListItem.styles\";\nimport { HvTypographyProps } from \"@core/components\";\nimport { setId } from \"@core/utils\";\nimport { useCallback } from \"react\";\nimport { CurrentStep } from \"@hitachivantara/uikit-react-icons\";\nimport { useTheme } from \"@core/hooks\";\n\nexport interface HvVerticalScrollListItemProps extends HvBaseProps {\n /** A function component that renders a typography wrapped with a tooltip. */\n tooltipWrapper: React.FunctionComponent<{\n id?: string;\n className?: string;\n variant?: HvTypographyProps[\"variant\"];\n children?: React.ReactNode;\n }>;\n /** A Jss Object used to override or extend the styles applied. */\n classes?: HvVerticalScrollListItemClasses;\n /** Whether the element is selected. */\n selected?: boolean;\n /** The function to be executed when the element is clicked. */\n onClick?: (event: React.MouseEvent<HTMLDivElement>) => void;\n /** The function to be executed when the element is clicked. */\n onKeyDown?: (event: React.KeyboardEvent<HTMLDivElement>) => void;\n}\n\n/**\n * HvVerticalScrollListItem a focusable item to be used as part of the vertical scroll\n */\nexport const HvVerticalScrollListItem = ({\n id,\n className,\n classes,\n selected,\n \"aria-label\": ariaLabel,\n onClick,\n onKeyDown,\n tooltipWrapper,\n ...others\n}: HvVerticalScrollListItemProps) => {\n const { activeTheme } = useTheme();\n\n const variant: HvTypographyProps[\"variant\"] = selected ? \"label\" : \"body\";\n\n const labelId = setId(id, \"label\");\n\n const buttonId = setId(id, \"button\");\n\n const Tooltip = tooltipWrapper;\n\n const NotSelected = useCallback(() => {\n return (\n <ClassNames>\n {({ css }) => (\n <div\n className={clsx(\n classes?.notSelected,\n verticalScrollListItemClasses.notSelected,\n css(styles.notSelected)\n )}\n />\n )}\n </ClassNames>\n );\n }, [classes?.notSelected]);\n\n const icon = selected ? (\n <CurrentStep\n height={activeTheme?.scrollTo.dotSelectedSize}\n width={activeTheme?.scrollTo.dotSelectedSize}\n />\n ) : (\n <NotSelected />\n );\n\n return (\n <ClassNames>\n {({ css }) => (\n <li\n id={id}\n className={clsx(\n className,\n classes?.root,\n verticalScrollListItemClasses.root,\n css(styles.root)\n )}\n aria-current={selected}\n >\n <div\n id={buttonId}\n role=\"button\"\n tabIndex={0}\n onClick={onClick}\n onKeyDown={onKeyDown}\n className={clsx(\n classes?.button,\n verticalScrollListItemClasses.button,\n css(styles.button)\n )}\n aria-label={ariaLabel}\n aria-labelledby={labelId}\n {...others}\n >\n <Tooltip\n id={labelId}\n className={clsx(\n classes?.text,\n verticalScrollListItemClasses.text,\n css(styles.text)\n )}\n variant={variant}\n >\n {icon}\n </Tooltip>\n </div>\n </li>\n )}\n </ClassNames>\n );\n};\n"],"names":["HvVerticalScrollListItem","id","className","classes","selected","ariaLabel","onClick","onKeyDown","tooltipWrapper","others","activeTheme","useTheme","variant","labelId","setId","buttonId","Tooltip","NotSelected","useCallback","ClassNames","children","css","clsx","notSelected","verticalScrollListItemClasses","styles","icon","_jsx","CurrentStep","height","scrollTo","dotSelectedSize","width","root","role","tabIndex","button","text"],"mappings":";;;;;;;;;AAkCO,MAAMA,2BAA2BA,CAAC;AAAA,EACvCC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACA,cAAcC;AAAAA,EACdC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACA,GAAGC;AAC0B,MAAM;AAC7B,QAAA;AAAA,IAAEC;AAAAA,MAAgBC,SAAU;AAE5BC,QAAAA,UAAwCR,WAAW,UAAU;AAE7DS,QAAAA,UAAUC,MAAMb,IAAI,OAAO;AAE3Bc,QAAAA,WAAWD,MAAMb,IAAI,QAAQ;AAEnC,QAAMe,UAAUR;AAEVS,QAAAA,cAAcC,YAAY,MAAM;AACpC,+BACGC,YAAU;AAAA,MAAAC,UACRA,CAAC;AAAA,QAAEC;AAAAA,MAAAA,0BACF,OAAA;AAAA,QACEnB,WAAWoB,KACTnB,mCAASoB,aACTC,8BAA8BD,aAC9BF,IAAII,OAAOF,WAAW,CAAC;AAAA,MAAA,CACvB;AAAA,IAAA,CAGK;AAAA,EAAA,GAEd,CAACpB,mCAASoB,WAAW,CAAC;AAEnBG,QAAAA,OAAOtB,WACXuB,oBAACC,aAAW;AAAA,IACVC,QAAQnB,2CAAaoB,SAASC;AAAAA,IAC9BC,OAAOtB,2CAAaoB,SAASC;AAAAA,EAAgB,CAAA,IAG9Cd,oBAAAA,aACF,CAAA,CAAA;AAED,6BACGE,YAAU;AAAA,IAAAC,UACRA,CAAC;AAAA,MAAEC;AAAAA,IAAAA,0BACF,MAAA;AAAA,MACEpB;AAAAA,MACAC,WAAWoB,KACTpB,WACAC,mCAAS8B,MACTT,8BAA8BS,MAC9BZ,IAAII,OAAOQ,IAAI,CAAC;AAAA,MAElB,gBAAc7B;AAAAA,MAASgB,8BAEvB,OAAA;AAAA,QACEnB,IAAIc;AAAAA,QACJmB,MAAK;AAAA,QACLC,UAAU;AAAA,QACV7B;AAAAA,QACAC;AAAAA,QACAL,WAAWoB,KACTnB,mCAASiC,QACTZ,8BAA8BY,QAC9Bf,IAAII,OAAOW,MAAM,CAAC;AAAA,QAEpB,cAAY/B;AAAAA,QACZ,mBAAiBQ;AAAAA,QAAQ,GACrBJ;AAAAA,QAAMW,8BAETJ,SAAO;AAAA,UACNf,IAAIY;AAAAA,UACJX,WAAWoB,KACTnB,mCAASkC,MACTb,8BAA8Ba,MAC9BhB,IAAII,OAAOY,IAAI,CAAC;AAAA,UAElBzB;AAAAA,UAAiBQ,UAEhBM;AAAAA,QAAAA,CAAI;AAAA,MAAA,CACG;AAAA,IAAA,CACN;AAAA,EAAA,CAGC;AAEjB;"}
@@ -0,0 +1,54 @@
1
+ import { theme } from "@hitachivantara/uikit-styles";
2
+ import verticalScrollListItemClasses from "./verticalScrollListItemClasses.js";
3
+ import { outlineStyles } from "../../../../utils/focusUtils.js";
4
+ const styles = {
5
+ root: {
6
+ padding: "0",
7
+ height: "32px",
8
+ width: "32px",
9
+ display: "flex",
10
+ justifyContent: "center",
11
+ alignItems: "center"
12
+ },
13
+ notSelected: {
14
+ height: theme.scrollTo.dotNotSelectedSize,
15
+ width: theme.scrollTo.dotNotSelectedSize,
16
+ borderRadius: "50%",
17
+ display: "inline-block",
18
+ backgroundColor: theme.scrollTo.dotNotSelectedColor
19
+ },
20
+ text: {
21
+ height: theme.scrollTo.dotRootSize,
22
+ width: theme.scrollTo.dotRootSize,
23
+ display: "flex",
24
+ justifyContent: "center",
25
+ alignItems: "center"
26
+ },
27
+ button: {
28
+ display: "flex",
29
+ justifyContent: "center",
30
+ alignItems: "center",
31
+ height: theme.scrollTo.dotRootSize,
32
+ width: theme.scrollTo.dotRootSize,
33
+ borderRadius: theme.scrollTo.dotRootRadius,
34
+ cursor: "pointer",
35
+ "&:hover": {
36
+ backgroundColor: theme.scrollTo.dotHoverBackgroundColor,
37
+ [`& .${verticalScrollListItemClasses.notSelected}`]: {
38
+ height: theme.scrollTo.dotHoverSize,
39
+ width: theme.scrollTo.dotHoverSize,
40
+ backgroundColor: theme.scrollTo.dotHoverColor
41
+ }
42
+ },
43
+ "&:focus": {
44
+ outline: "none"
45
+ },
46
+ "&:focus-visible": {
47
+ ...outlineStyles
48
+ }
49
+ }
50
+ };
51
+ export {
52
+ styles
53
+ };
54
+ //# sourceMappingURL=VerticalScrollListItem.styles.js.map