@backstage/core-components 0.8.5 → 0.8.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +36 -0
- package/dist/index.d.ts +11 -3
- package/dist/index.esm.js +94 -31
- package/dist/index.esm.js.map +1 -1
- package/package.json +9 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,41 @@
|
|
|
1
1
|
# @backstage/core-components
|
|
2
2
|
|
|
3
|
+
## 0.8.7
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- f7257dff6f: The `<Link />` component now accepts a `noTrack` prop, which prevents the `click` event from being captured by the Analytics API. This can be used if tracking is explicitly not warranted, or in order to use custom link tracking in specific situations.
|
|
8
|
+
- 4c773ed25c: Change subtitle of Header style to use palette.bursts.fontColor
|
|
9
|
+
- f465b63b7f: Fix an issue where changes related to the `MobileSidebar` prevented scrolling pages. Additionally improve the menu of the `MobileSidebar` to not overlay the `BottomNavigation`.
|
|
10
|
+
- 064e750a50: Adding hover message to the Gauge and an info icon to the GaugeCard.
|
|
11
|
+
- a681cb9c2f: Make linkTarget configurable for MarkdownContent component
|
|
12
|
+
|
|
13
|
+
## 0.8.7-next.1
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- f7257dff6f: The `<Link />` component now accepts a `noTrack` prop, which prevents the `click` event from being captured by the Analytics API. This can be used if tracking is explicitly not warranted, or in order to use custom link tracking in specific situations.
|
|
18
|
+
|
|
19
|
+
## 0.8.7-next.0
|
|
20
|
+
|
|
21
|
+
### Patch Changes
|
|
22
|
+
|
|
23
|
+
- 4c773ed25c: Change subtitle of Header style to use palette.bursts.fontColor
|
|
24
|
+
- f465b63b7f: Fix an issue where changes related to the `MobileSidebar` prevented scrolling pages. Additionally improve the menu of the `MobileSidebar` to not overlay the `BottomNavigation`.
|
|
25
|
+
- a681cb9c2f: Make linkTarget configurable for MarkdownContent component
|
|
26
|
+
|
|
27
|
+
## 0.8.6
|
|
28
|
+
|
|
29
|
+
### Patch Changes
|
|
30
|
+
|
|
31
|
+
- b97a2460d5: Remove the `ignoreChildEvent` utility from the sidebar component to avoid conflicts with popovers
|
|
32
|
+
- bdc53553eb: chore(deps): bump `react-text-truncate` from 0.16.0 to 0.17.0
|
|
33
|
+
- 05f0f44180: chore(deps): bump `remark-gfm` from 2.0.0 to 3.0.1
|
|
34
|
+
- 15bac1d738: chore(deps): bump `react-markdown` from 7.1.2 to 8.0.0
|
|
35
|
+
- 7346b5fb96: chore(deps): bump `rc-progress` from 3.1.4 to 3.2.4
|
|
36
|
+
- 9abb28bb22: Fix issue where component types are not recognized causing the `MobileSidebar` to not render as intended.
|
|
37
|
+
- 1787694435: Updates styling of Header component by removing flex wrap and add max width of characters for subtitle
|
|
38
|
+
|
|
3
39
|
## 0.8.5
|
|
4
40
|
|
|
5
41
|
### Patch Changes
|
package/dist/index.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { ButtonProps as ButtonProps$1 } from '@material-ui/core/Button';
|
|
|
5
5
|
import { LinkProps as LinkProps$1 } from '@material-ui/core/Link';
|
|
6
6
|
import { LinkProps as LinkProps$2, NavLinkProps } from 'react-router-dom';
|
|
7
7
|
import CSS from 'csstype';
|
|
8
|
+
import { Options } from 'react-markdown';
|
|
8
9
|
import { TooltipProps } from '@material-ui/core/Tooltip';
|
|
9
10
|
import { TextTruncateProps } from 'react-text-truncate';
|
|
10
11
|
import { LinearProgressProps } from '@material-ui/core/LinearProgress';
|
|
@@ -65,13 +66,14 @@ declare function Avatar(props: AvatarProps): JSX.Element;
|
|
|
65
66
|
|
|
66
67
|
declare type LinkProps = LinkProps$1 & LinkProps$2 & {
|
|
67
68
|
component?: ElementType<any>;
|
|
69
|
+
noTrack?: boolean;
|
|
68
70
|
};
|
|
69
71
|
/**
|
|
70
72
|
* Thin wrapper on top of material-ui's Link component, which...
|
|
71
73
|
* - Makes the Link use react-router
|
|
72
74
|
* - Captures Link clicks as analytics events.
|
|
73
75
|
*/
|
|
74
|
-
declare const ActualLink: React__default.ForwardRefExoticComponent<Pick<LinkProps, "replace" | "type" | "key" | "id" | "media" | "state" | "color" | "display" | "translate" | "hidden" | "dir" | "slot" | "style" | "title" | "target" | "accessKey" | "draggable" | "lang" | "className" | "prefix" | "children" | "contentEditable" | "inputMode" | "tabIndex" | "underline" | "download" | "href" | "hrefLang" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "contextMenu" | "placeholder" | "spellCheck" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "to" | "rel" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "ping" | "referrerPolicy" | "align" | "variant" | "component" | "classes" | "innerRef" | "noWrap" | "gutterBottom" | "paragraph" | "variantMapping" | "TypographyClasses"> & React__default.RefAttributes<any>>;
|
|
76
|
+
declare const ActualLink: React__default.ForwardRefExoticComponent<Pick<LinkProps, "replace" | "type" | "key" | "id" | "media" | "state" | "color" | "display" | "translate" | "hidden" | "dir" | "slot" | "style" | "title" | "target" | "accessKey" | "draggable" | "lang" | "className" | "prefix" | "children" | "contentEditable" | "inputMode" | "tabIndex" | "underline" | "download" | "href" | "hrefLang" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "contextMenu" | "placeholder" | "spellCheck" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "to" | "rel" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "ping" | "referrerPolicy" | "align" | "variant" | "component" | "classes" | "innerRef" | "noWrap" | "gutterBottom" | "paragraph" | "variantMapping" | "noTrack" | "TypographyClasses"> & React__default.RefAttributes<any>>;
|
|
75
77
|
|
|
76
78
|
/**
|
|
77
79
|
* Properties for {@link Button}
|
|
@@ -669,6 +671,7 @@ declare type MarkdownContentClassKey = 'markdown';
|
|
|
669
671
|
declare type Props$b = {
|
|
670
672
|
content: string;
|
|
671
673
|
dialect?: 'gfm' | 'common-mark';
|
|
674
|
+
linkTarget?: Options['linkTarget'];
|
|
672
675
|
};
|
|
673
676
|
/**
|
|
674
677
|
* MarkdownContent
|
|
@@ -763,6 +766,7 @@ declare type Props$9 = {
|
|
|
763
766
|
children?: ReactNode;
|
|
764
767
|
headerStyle?: object;
|
|
765
768
|
headerProps?: CardHeaderProps;
|
|
769
|
+
icon?: ReactNode;
|
|
766
770
|
action?: ReactNode;
|
|
767
771
|
actionsClassName?: string;
|
|
768
772
|
actions?: ReactNode;
|
|
@@ -781,7 +785,7 @@ declare type Props$9 = {
|
|
|
781
785
|
declare function InfoCard(props: Props$9): JSX.Element;
|
|
782
786
|
|
|
783
787
|
/** @public */
|
|
784
|
-
declare type GaugeClassKey = 'root' | 'overlay' | 'circle' | 'colorUnknown';
|
|
788
|
+
declare type GaugeClassKey = 'root' | 'overlay' | 'description' | 'circle' | 'colorUnknown';
|
|
785
789
|
/** @public */
|
|
786
790
|
declare type GaugeProps = {
|
|
787
791
|
value: number;
|
|
@@ -789,6 +793,7 @@ declare type GaugeProps = {
|
|
|
789
793
|
inverse?: boolean;
|
|
790
794
|
unit?: string;
|
|
791
795
|
max?: number;
|
|
796
|
+
description?: ReactNode;
|
|
792
797
|
getColor?: GaugePropsGetColor;
|
|
793
798
|
};
|
|
794
799
|
/** @public */
|
|
@@ -814,6 +819,8 @@ declare type Props$8 = {
|
|
|
814
819
|
variant?: InfoCardVariants;
|
|
815
820
|
/** Progress in % specified as decimal, e.g. "0.23" */
|
|
816
821
|
progress: number;
|
|
822
|
+
description?: ReactNode;
|
|
823
|
+
icon?: ReactNode;
|
|
817
824
|
inverse?: boolean;
|
|
818
825
|
deepLink?: BottomLinkProps;
|
|
819
826
|
getColor?: GaugePropsGetColor;
|
|
@@ -1332,8 +1339,9 @@ declare function ItemCardHeader(props: ItemCardHeaderProps): JSX.Element;
|
|
|
1332
1339
|
declare type PageClassKey = 'root';
|
|
1333
1340
|
declare type Props$3 = {
|
|
1334
1341
|
themeId: string;
|
|
1342
|
+
children?: React__default.ReactNode;
|
|
1335
1343
|
};
|
|
1336
|
-
declare function Page(props:
|
|
1344
|
+
declare function Page(props: Props$3): JSX.Element;
|
|
1337
1345
|
|
|
1338
1346
|
declare type PageWithHeaderProps = ComponentProps<typeof Header> & {
|
|
1339
1347
|
themeId: string;
|
package/dist/index.esm.js
CHANGED
|
@@ -220,7 +220,7 @@ const getNodeText = (node) => {
|
|
|
220
220
|
}
|
|
221
221
|
return "";
|
|
222
222
|
};
|
|
223
|
-
const ActualLink = React.forwardRef(({ onClick, ...props }, ref) => {
|
|
223
|
+
const ActualLink = React.forwardRef(({ onClick, noTrack, ...props }, ref) => {
|
|
224
224
|
const analytics = useAnalytics();
|
|
225
225
|
const to = String(props.to);
|
|
226
226
|
const linkText = getNodeText(props.children) || to;
|
|
@@ -228,7 +228,9 @@ const ActualLink = React.forwardRef(({ onClick, ...props }, ref) => {
|
|
|
228
228
|
const newWindow = external && !!/^https?:/.exec(to);
|
|
229
229
|
const handleClick = (event) => {
|
|
230
230
|
onClick == null ? void 0 : onClick(event);
|
|
231
|
-
|
|
231
|
+
if (!noTrack) {
|
|
232
|
+
analytics.captureEvent("click", linkText, { attributes: { to } });
|
|
233
|
+
}
|
|
232
234
|
};
|
|
233
235
|
return external ? /* @__PURE__ */ React.createElement(Link, {
|
|
234
236
|
ref,
|
|
@@ -1673,13 +1675,14 @@ const components = {
|
|
|
1673
1675
|
}
|
|
1674
1676
|
};
|
|
1675
1677
|
function MarkdownContent(props) {
|
|
1676
|
-
const { content, dialect = "gfm" } = props;
|
|
1678
|
+
const { content, dialect = "gfm", linkTarget } = props;
|
|
1677
1679
|
const classes = useStyles$C();
|
|
1678
1680
|
return /* @__PURE__ */ React.createElement(ReactMarkdown, {
|
|
1679
1681
|
remarkPlugins: dialect === "gfm" ? [gfm] : [],
|
|
1680
1682
|
className: classes.markdown,
|
|
1681
1683
|
children: content,
|
|
1682
|
-
components
|
|
1684
|
+
components,
|
|
1685
|
+
linkTarget
|
|
1683
1686
|
});
|
|
1684
1687
|
}
|
|
1685
1688
|
|
|
@@ -1897,7 +1900,10 @@ const useStyles$y = makeStyles((theme) => ({
|
|
|
1897
1900
|
},
|
|
1898
1901
|
headerAvatar: {},
|
|
1899
1902
|
headerAction: {},
|
|
1900
|
-
headerContent: {}
|
|
1903
|
+
headerContent: {},
|
|
1904
|
+
subheader: {
|
|
1905
|
+
display: "flex"
|
|
1906
|
+
}
|
|
1901
1907
|
}), { name: "BackstageInfoCard" });
|
|
1902
1908
|
const CardActionsTopRight = withStyles((theme) => ({
|
|
1903
1909
|
root: {
|
|
@@ -1945,6 +1951,7 @@ function InfoCard(props) {
|
|
|
1945
1951
|
children,
|
|
1946
1952
|
headerStyle,
|
|
1947
1953
|
headerProps,
|
|
1954
|
+
icon,
|
|
1948
1955
|
action,
|
|
1949
1956
|
actionsClassName,
|
|
1950
1957
|
actions,
|
|
@@ -1970,6 +1977,13 @@ function InfoCard(props) {
|
|
|
1970
1977
|
};
|
|
1971
1978
|
});
|
|
1972
1979
|
}
|
|
1980
|
+
const cardSubTitle = () => {
|
|
1981
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
1982
|
+
className: classes.headerSubheader
|
|
1983
|
+
}, subheader && /* @__PURE__ */ React.createElement("div", {
|
|
1984
|
+
className: classes.subheader
|
|
1985
|
+
}, subheader), icon);
|
|
1986
|
+
};
|
|
1973
1987
|
const errProps = errorBoundaryProps || (slackChannel ? { slackChannel } : {});
|
|
1974
1988
|
return /* @__PURE__ */ React.createElement(Card, {
|
|
1975
1989
|
style: calculatedStyle,
|
|
@@ -1986,7 +2000,7 @@ function InfoCard(props) {
|
|
|
1986
2000
|
content: classes.headerContent
|
|
1987
2001
|
},
|
|
1988
2002
|
title,
|
|
1989
|
-
subheader,
|
|
2003
|
+
subheader: cardSubTitle(),
|
|
1990
2004
|
action,
|
|
1991
2005
|
style: { ...headerStyle },
|
|
1992
2006
|
titleTypographyProps,
|
|
@@ -2017,6 +2031,15 @@ const useStyles$x = makeStyles((theme) => ({
|
|
|
2017
2031
|
fontWeight: "bold",
|
|
2018
2032
|
color: theme.palette.textContrast
|
|
2019
2033
|
},
|
|
2034
|
+
description: {
|
|
2035
|
+
fontSize: "100%",
|
|
2036
|
+
top: "50%",
|
|
2037
|
+
left: "50%",
|
|
2038
|
+
transform: "translate(-50%, -50%)",
|
|
2039
|
+
position: "absolute",
|
|
2040
|
+
wordBreak: "break-all",
|
|
2041
|
+
display: "inline-block"
|
|
2042
|
+
},
|
|
2020
2043
|
circle: {
|
|
2021
2044
|
width: "80%",
|
|
2022
2045
|
transform: "translate(10%, 0)"
|
|
@@ -2048,16 +2071,35 @@ const getProgressColor = ({
|
|
|
2048
2071
|
return palette.status.ok;
|
|
2049
2072
|
};
|
|
2050
2073
|
function Gauge(props) {
|
|
2074
|
+
const [hoverRef, setHoverRef] = useState(null);
|
|
2051
2075
|
const { getColor = getProgressColor } = props;
|
|
2052
2076
|
const classes = useStyles$x(props);
|
|
2053
2077
|
const { palette } = useTheme();
|
|
2054
|
-
const { value, fractional, inverse, unit, max } = {
|
|
2078
|
+
const { value, fractional, inverse, unit, max, description } = {
|
|
2055
2079
|
...defaultGaugeProps,
|
|
2056
2080
|
...props
|
|
2057
2081
|
};
|
|
2058
2082
|
const asPercentage = fractional ? Math.round(value * max) : value;
|
|
2059
2083
|
const asActual = max !== 100 ? Math.round(value) : asPercentage;
|
|
2084
|
+
const [isHovering, setIsHovering] = useState(false);
|
|
2085
|
+
useEffect(() => {
|
|
2086
|
+
const node = hoverRef;
|
|
2087
|
+
const handleMouseOver = () => setIsHovering(true);
|
|
2088
|
+
const handleMouseOut = () => setIsHovering(false);
|
|
2089
|
+
if (node && description) {
|
|
2090
|
+
node.addEventListener("mouseenter", handleMouseOver);
|
|
2091
|
+
node.addEventListener("mouseleave", handleMouseOut);
|
|
2092
|
+
return () => {
|
|
2093
|
+
node.removeEventListener("mouseenter", handleMouseOver);
|
|
2094
|
+
node.removeEventListener("mouseleave", handleMouseOut);
|
|
2095
|
+
};
|
|
2096
|
+
}
|
|
2097
|
+
return () => {
|
|
2098
|
+
setIsHovering(false);
|
|
2099
|
+
};
|
|
2100
|
+
}, [description, hoverRef]);
|
|
2060
2101
|
return /* @__PURE__ */ React.createElement("div", {
|
|
2102
|
+
ref: setHoverRef,
|
|
2061
2103
|
className: classes.root
|
|
2062
2104
|
}, /* @__PURE__ */ React.createElement(Circle, {
|
|
2063
2105
|
strokeLinecap: "butt",
|
|
@@ -2066,7 +2108,9 @@ function Gauge(props) {
|
|
|
2066
2108
|
trailWidth: 12,
|
|
2067
2109
|
strokeColor: getColor({ palette, value: asActual, inverse, max }),
|
|
2068
2110
|
className: classes.circle
|
|
2069
|
-
}), /* @__PURE__ */ React.createElement("div", {
|
|
2111
|
+
}), description && isHovering ? /* @__PURE__ */ React.createElement("div", {
|
|
2112
|
+
className: classes.description
|
|
2113
|
+
}, description) : /* @__PURE__ */ React.createElement("div", {
|
|
2070
2114
|
className: classes.overlay
|
|
2071
2115
|
}, isNaN(value) ? "N/A" : `${asActual}${unit}`));
|
|
2072
2116
|
}
|
|
@@ -2079,9 +2123,20 @@ const useStyles$w = makeStyles({
|
|
|
2079
2123
|
}, { name: "BackstageGaugeCard" });
|
|
2080
2124
|
function GaugeCard(props) {
|
|
2081
2125
|
const classes = useStyles$w(props);
|
|
2082
|
-
const {
|
|
2126
|
+
const {
|
|
2127
|
+
title,
|
|
2128
|
+
subheader,
|
|
2129
|
+
progress,
|
|
2130
|
+
inverse,
|
|
2131
|
+
deepLink,
|
|
2132
|
+
description,
|
|
2133
|
+
icon,
|
|
2134
|
+
variant,
|
|
2135
|
+
getColor
|
|
2136
|
+
} = props;
|
|
2083
2137
|
const gaugeProps = {
|
|
2084
2138
|
inverse,
|
|
2139
|
+
description,
|
|
2085
2140
|
getColor,
|
|
2086
2141
|
value: progress
|
|
2087
2142
|
};
|
|
@@ -2091,7 +2146,8 @@ function GaugeCard(props) {
|
|
|
2091
2146
|
title,
|
|
2092
2147
|
subheader,
|
|
2093
2148
|
deepLink,
|
|
2094
|
-
variant
|
|
2149
|
+
variant,
|
|
2150
|
+
icon
|
|
2095
2151
|
}, /* @__PURE__ */ React.createElement(Gauge, {
|
|
2096
2152
|
...gaugeProps
|
|
2097
2153
|
})));
|
|
@@ -3115,9 +3171,13 @@ const useStyles$m = makeStyles((theme) => ({
|
|
|
3115
3171
|
},
|
|
3116
3172
|
overlayHeaderClose: {
|
|
3117
3173
|
color: theme.palette.bursts.fontColor
|
|
3174
|
+
},
|
|
3175
|
+
marginMobileSidebar: {
|
|
3176
|
+
marginBottom: `${sidebarConfig.mobileSidebarHeight}px`
|
|
3118
3177
|
}
|
|
3119
3178
|
}));
|
|
3120
3179
|
const sortSidebarGroupsForPriority = (children) => orderBy(children, ({ props: { priority } }) => Number.isInteger(priority) ? priority : -1, "desc");
|
|
3180
|
+
const sidebarGroupType = React.createElement(SidebarGroup).type;
|
|
3121
3181
|
const OverlayMenu = ({
|
|
3122
3182
|
children,
|
|
3123
3183
|
label = "Menu",
|
|
@@ -3129,7 +3189,13 @@ const OverlayMenu = ({
|
|
|
3129
3189
|
anchor: "bottom",
|
|
3130
3190
|
open,
|
|
3131
3191
|
onClose,
|
|
3132
|
-
|
|
3192
|
+
ModalProps: {
|
|
3193
|
+
BackdropProps: { classes: { root: classes.marginMobileSidebar } }
|
|
3194
|
+
},
|
|
3195
|
+
classes: {
|
|
3196
|
+
root: classes.marginMobileSidebar,
|
|
3197
|
+
paperAnchorBottom: classes.overlay
|
|
3198
|
+
}
|
|
3133
3199
|
}, /* @__PURE__ */ React.createElement(Box, {
|
|
3134
3200
|
className: classes.overlayHeader
|
|
3135
3201
|
}, /* @__PURE__ */ React.createElement(Typography, {
|
|
@@ -3152,7 +3218,7 @@ const MobileSidebar = (props) => {
|
|
|
3152
3218
|
useEffect(() => {
|
|
3153
3219
|
setSelectedMenuItemIndex(-1);
|
|
3154
3220
|
}, [location.pathname]);
|
|
3155
|
-
let sidebarGroups = useElementFilter(children, (elements) => elements.getElements().filter((child) => child.type ===
|
|
3221
|
+
let sidebarGroups = useElementFilter(children, (elements) => elements.getElements().filter((child) => child.type === sidebarGroupType));
|
|
3156
3222
|
if (!children) {
|
|
3157
3223
|
return null;
|
|
3158
3224
|
} else if (!sidebarGroups.length) {
|
|
@@ -3290,11 +3356,11 @@ const DesktopSidebar = (props) => {
|
|
|
3290
3356
|
onMouseEnter: disableExpandOnHover ? () => {
|
|
3291
3357
|
} : handleOpen,
|
|
3292
3358
|
onFocus: disableExpandOnHover ? () => {
|
|
3293
|
-
} :
|
|
3359
|
+
} : handleOpen,
|
|
3294
3360
|
onMouseLeave: disableExpandOnHover ? () => {
|
|
3295
3361
|
} : handleClose,
|
|
3296
3362
|
onBlur: disableExpandOnHover ? () => {
|
|
3297
|
-
} :
|
|
3363
|
+
} : handleClose
|
|
3298
3364
|
}, /* @__PURE__ */ React.createElement("div", {
|
|
3299
3365
|
className: classNames(classes.drawer, {
|
|
3300
3366
|
[classes.drawerOpen]: isOpen
|
|
@@ -3322,14 +3388,6 @@ function A11ySkipSidebar() {
|
|
|
3322
3388
|
className: classNames(classes.visuallyHidden)
|
|
3323
3389
|
}, "Skip to content");
|
|
3324
3390
|
}
|
|
3325
|
-
function ignoreChildEvent(handlerFn) {
|
|
3326
|
-
return (event) => {
|
|
3327
|
-
const currentTarget = event == null ? void 0 : event.currentTarget;
|
|
3328
|
-
if (!(currentTarget == null ? void 0 : currentTarget.contains(event.relatedTarget))) {
|
|
3329
|
-
handlerFn(event);
|
|
3330
|
-
}
|
|
3331
|
-
};
|
|
3332
|
-
}
|
|
3333
3391
|
|
|
3334
3392
|
function isLocationMatch(currentLocation, toLocation) {
|
|
3335
3393
|
const toDecodedSearch = new URLSearchParams(toLocation.search).toString();
|
|
@@ -3722,6 +3780,7 @@ const useLocationMatch = (submenu, location) => useElementFilter(submenu.props.c
|
|
|
3722
3780
|
function isButtonItem(props) {
|
|
3723
3781
|
return props.to === void 0;
|
|
3724
3782
|
}
|
|
3783
|
+
const sidebarSubmenuType = React.createElement(SidebarSubmenu).type;
|
|
3725
3784
|
const WorkaroundNavLink = React.forwardRef(function WorkaroundNavLinkWithRef({
|
|
3726
3785
|
to,
|
|
3727
3786
|
end,
|
|
@@ -3855,7 +3914,7 @@ const SidebarItemWithSubmenu = ({
|
|
|
3855
3914
|
}, arrowIcon()), isHoveredOn && children));
|
|
3856
3915
|
};
|
|
3857
3916
|
const SidebarItem = forwardRef((props, ref) => {
|
|
3858
|
-
const [submenu] = useElementFilter(props.children, (elements) => elements.getElements().filter((child) => child.type ===
|
|
3917
|
+
const [submenu] = useElementFilter(props.children, (elements) => elements.getElements().filter((child) => child.type === sidebarSubmenuType));
|
|
3859
3918
|
if (submenu) {
|
|
3860
3919
|
return /* @__PURE__ */ React.createElement(SidebarItemWithSubmenu, {
|
|
3861
3920
|
...props
|
|
@@ -5117,11 +5176,13 @@ const useStyles$5 = makeStyles((theme) => ({
|
|
|
5117
5176
|
zIndex: 100,
|
|
5118
5177
|
display: "flex",
|
|
5119
5178
|
flexDirection: "row",
|
|
5120
|
-
flexWrap: "wrap",
|
|
5121
5179
|
alignItems: "center",
|
|
5122
5180
|
backgroundImage: theme.page.backgroundImage,
|
|
5123
5181
|
backgroundPosition: "center",
|
|
5124
|
-
backgroundSize: "cover"
|
|
5182
|
+
backgroundSize: "cover",
|
|
5183
|
+
[theme.breakpoints.down("sm")]: {
|
|
5184
|
+
flexWrap: "wrap"
|
|
5185
|
+
}
|
|
5125
5186
|
},
|
|
5126
5187
|
leftItemsBox: {
|
|
5127
5188
|
maxWidth: "100%",
|
|
@@ -5137,10 +5198,11 @@ const useStyles$5 = makeStyles((theme) => ({
|
|
|
5137
5198
|
marginBottom: 0
|
|
5138
5199
|
},
|
|
5139
5200
|
subtitle: {
|
|
5140
|
-
color: theme.palette.
|
|
5201
|
+
color: theme.palette.bursts.fontColor,
|
|
5141
5202
|
opacity: 0.8,
|
|
5142
5203
|
display: "inline-block",
|
|
5143
|
-
marginTop: theme.spacing(1)
|
|
5204
|
+
marginTop: theme.spacing(1),
|
|
5205
|
+
maxWidth: "75ch"
|
|
5144
5206
|
},
|
|
5145
5207
|
type: {
|
|
5146
5208
|
textTransform: "uppercase",
|
|
@@ -5411,18 +5473,19 @@ function ItemCardGrid(props) {
|
|
|
5411
5473
|
}
|
|
5412
5474
|
|
|
5413
5475
|
const useStyles$1 = makeStyles(() => ({
|
|
5414
|
-
root: {
|
|
5476
|
+
root: ({ isMobile }) => ({
|
|
5415
5477
|
display: "grid",
|
|
5416
5478
|
gridTemplateAreas: "'pageHeader pageHeader pageHeader' 'pageSubheader pageSubheader pageSubheader' 'pageNav pageContent pageSidebar'",
|
|
5417
5479
|
gridTemplateRows: "max-content auto 1fr",
|
|
5418
5480
|
gridTemplateColumns: "auto 1fr auto",
|
|
5419
|
-
height: "100%",
|
|
5481
|
+
height: isMobile ? "100%" : "100vh",
|
|
5420
5482
|
overflowY: "auto"
|
|
5421
|
-
}
|
|
5483
|
+
})
|
|
5422
5484
|
}), { name: "BackstagePage" });
|
|
5423
5485
|
function Page(props) {
|
|
5424
5486
|
const { themeId, children } = props;
|
|
5425
|
-
const
|
|
5487
|
+
const { isMobile } = useContext(SidebarPinStateContext);
|
|
5488
|
+
const classes = useStyles$1({ isMobile });
|
|
5426
5489
|
return /* @__PURE__ */ React.createElement(ThemeProvider, {
|
|
5427
5490
|
theme: (baseTheme) => ({
|
|
5428
5491
|
...baseTheme,
|