@backstage/core-components 0.15.1 → 0.16.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,38 @@
1
1
  # @backstage/core-components
2
2
 
3
+ ## 0.16.0-next.0
4
+
5
+ ### Minor Changes
6
+
7
+ - dc409c5: The SupportButton component will now be hidden if no support config is specified in app-config
8
+
9
+ ### Patch Changes
10
+
11
+ - af9097e: Adds the ability to mock a media query per break point and to change the active break point during a test. Usage example:
12
+
13
+ ```ts
14
+ const { set } = mockBreakpoint({
15
+ initialBreakpoint: 'md',
16
+ queryBreakpointMap: {
17
+ '(min-width:1500px)': 'xl',
18
+ '(min-width:1000px)': 'lg',
19
+ '(min-width:700px)': 'md',
20
+ '(min-width:400px)': 'sm',
21
+ '(min-width:0px)': 'xs',
22
+ },
23
+ });
24
+ // assertions for when the active break point is "md"
25
+ set('lg');
26
+ // assertions for when the active break point is "lg"
27
+ ```
28
+
29
+ - Updated dependencies
30
+ - @backstage/config@1.2.0
31
+ - @backstage/core-plugin-api@1.10.0
32
+ - @backstage/errors@1.2.4
33
+ - @backstage/theme@0.6.0
34
+ - @backstage/version-bridge@1.0.10
35
+
3
36
  ## 0.15.1
4
37
 
5
38
  ### Patch Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/core-components__alpha",
3
- "version": "0.15.1",
3
+ "version": "0.16.0-next.0",
4
4
  "main": "../dist/alpha.esm.js",
5
5
  "module": "../dist/alpha.esm.js",
6
6
  "types": "../dist/alpha.d.ts"
@@ -1,4 +1,4 @@
1
- import { useApp } from '@backstage/core-plugin-api';
1
+ import { useApi, configApiRef, useApp } from '@backstage/core-plugin-api';
2
2
  import Box from '@material-ui/core/Box';
3
3
  import Button from '@material-ui/core/Button';
4
4
  import DialogActions from '@material-ui/core/DialogActions';
@@ -63,6 +63,7 @@ function SupportButton(props) {
63
63
  const [popoverOpen, setPopoverOpen] = useState(false);
64
64
  const [anchorEl, setAnchorEl] = useState(null);
65
65
  const classes = useStyles();
66
+ const supportConfig = useApi(configApiRef).getOptionalConfig("app.support");
66
67
  const isSmallScreen = useMediaQuery(
67
68
  (theme) => theme.breakpoints.down("sm")
68
69
  );
@@ -73,6 +74,9 @@ function SupportButton(props) {
73
74
  const popoverCloseHandler = () => {
74
75
  setPopoverOpen(false);
75
76
  };
77
+ if (!supportConfig) {
78
+ return null;
79
+ }
76
80
  return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(Box, { display: "flex", ml: 1 }, isSmallScreen ? /* @__PURE__ */ React__default.createElement(
77
81
  IconButton,
78
82
  {
@@ -1 +1 @@
1
- {"version":3,"file":"SupportButton.esm.js","sources":["../../../src/components/SupportButton/SupportButton.tsx"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useApp } from '@backstage/core-plugin-api';\nimport Box from '@material-ui/core/Box';\nimport Button from '@material-ui/core/Button';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport IconButton from '@material-ui/core/IconButton';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport MenuList from '@material-ui/core/MenuList';\nimport Popover from '@material-ui/core/Popover';\nimport { Theme, makeStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport React, { MouseEventHandler, useState } from 'react';\nimport { SupportItem, SupportItemLink, useSupportConfig } from '../../hooks';\nimport { HelpIcon } from '../../icons';\nimport { Link } from '../Link';\nimport { coreComponentsTranslationRef } from '../../translation';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\ntype SupportButtonProps = {\n title?: string;\n items?: SupportItem[];\n children?: React.ReactNode;\n};\n\nexport type SupportButtonClassKey = 'popoverList';\n\nconst useStyles = makeStyles(\n {\n popoverList: {\n minWidth: 260,\n maxWidth: 400,\n },\n menuItem: {\n whiteSpace: 'normal',\n },\n },\n { name: 'BackstageSupportButton' },\n);\n\nconst SupportIcon = ({ icon }: { icon: string | undefined }) => {\n const app = useApp();\n const Icon = icon ? app.getSystemIcon(icon) ?? HelpIcon : HelpIcon;\n return <Icon />;\n};\n\nconst SupportLink = ({ link }: { link: SupportItemLink }) => (\n <Link to={link.url}>{link.title ?? link.url}</Link>\n);\n\nconst SupportListItem = ({ item }: { item: SupportItem }) => {\n return (\n <MenuItem button={false}>\n <ListItemIcon>\n <SupportIcon icon={item.icon} />\n </ListItemIcon>\n <ListItemText\n primary={item.title}\n secondary={item.links?.reduce<React.ReactNode[]>(\n (prev, link, idx) => [\n ...prev,\n idx > 0 && <br key={idx} />,\n <SupportLink link={link} key={link.url} />,\n ],\n [],\n )}\n />\n </MenuItem>\n );\n};\n\nexport function SupportButton(props: SupportButtonProps) {\n const { t } = useTranslationRef(coreComponentsTranslationRef);\n const { title, items, children } = props;\n const { items: configItems } = useSupportConfig();\n\n const [popoverOpen, setPopoverOpen] = useState(false);\n const [anchorEl, setAnchorEl] = useState<Element | null>(null);\n const classes = useStyles();\n const isSmallScreen = useMediaQuery<Theme>(theme =>\n theme.breakpoints.down('sm'),\n );\n\n const onClickHandler: MouseEventHandler = event => {\n setAnchorEl(event.currentTarget);\n setPopoverOpen(true);\n };\n\n const popoverCloseHandler = () => {\n setPopoverOpen(false);\n };\n\n return (\n <>\n <Box display=\"flex\" ml={1}>\n {isSmallScreen ? (\n <IconButton\n color=\"primary\"\n size=\"small\"\n onClick={onClickHandler}\n data-testid=\"support-button\"\n aria-label=\"Support\"\n >\n <HelpIcon />\n </IconButton>\n ) : (\n <Button\n data-testid=\"support-button\"\n aria-label=\"Support\"\n color=\"primary\"\n onClick={onClickHandler}\n startIcon={<HelpIcon />}\n >\n {t('supportButton.title')}\n </Button>\n )}\n </Box>\n <Popover\n data-testid=\"support-button-popover\"\n open={popoverOpen}\n anchorEl={anchorEl}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n onClose={popoverCloseHandler}\n >\n <MenuList\n className={classes.popoverList}\n autoFocusItem={Boolean(anchorEl)}\n >\n {title && (\n <MenuItem\n button={false}\n alignItems=\"flex-start\"\n className={classes.menuItem}\n >\n <Typography variant=\"subtitle1\">{title}</Typography>\n </MenuItem>\n )}\n {React.Children.map(children, (child, i) => (\n <MenuItem\n button={false}\n alignItems=\"flex-start\"\n key={`child-${i}`}\n className={classes.menuItem}\n >\n {child}\n </MenuItem>\n ))}\n {(items ?? configItems).map((item, i) => (\n <SupportListItem item={item} key={`item-${i}`} />\n ))}\n </MenuList>\n <DialogActions>\n <Button\n color=\"primary\"\n onClick={popoverCloseHandler}\n aria-label=\"Close\"\n >\n {t('supportButton.close')}\n </Button>\n </DialogActions>\n </Popover>\n </>\n );\n}\n"],"names":["React"],"mappings":"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"}
1
+ {"version":3,"file":"SupportButton.esm.js","sources":["../../../src/components/SupportButton/SupportButton.tsx"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { configApiRef, useApi, useApp } from '@backstage/core-plugin-api';\nimport Box from '@material-ui/core/Box';\nimport Button from '@material-ui/core/Button';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport IconButton from '@material-ui/core/IconButton';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport MenuList from '@material-ui/core/MenuList';\nimport Popover from '@material-ui/core/Popover';\nimport { Theme, makeStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport useMediaQuery from '@material-ui/core/useMediaQuery';\nimport React, { MouseEventHandler, useState } from 'react';\nimport { SupportItem, SupportItemLink, useSupportConfig } from '../../hooks';\nimport { HelpIcon } from '../../icons';\nimport { Link } from '../Link';\nimport { coreComponentsTranslationRef } from '../../translation';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\ntype SupportButtonProps = {\n title?: string;\n items?: SupportItem[];\n children?: React.ReactNode;\n};\n\nexport type SupportButtonClassKey = 'popoverList';\n\nconst useStyles = makeStyles(\n {\n popoverList: {\n minWidth: 260,\n maxWidth: 400,\n },\n menuItem: {\n whiteSpace: 'normal',\n },\n },\n { name: 'BackstageSupportButton' },\n);\n\nconst SupportIcon = ({ icon }: { icon: string | undefined }) => {\n const app = useApp();\n const Icon = icon ? app.getSystemIcon(icon) ?? HelpIcon : HelpIcon;\n return <Icon />;\n};\n\nconst SupportLink = ({ link }: { link: SupportItemLink }) => (\n <Link to={link.url}>{link.title ?? link.url}</Link>\n);\n\nconst SupportListItem = ({ item }: { item: SupportItem }) => {\n return (\n <MenuItem button={false}>\n <ListItemIcon>\n <SupportIcon icon={item.icon} />\n </ListItemIcon>\n <ListItemText\n primary={item.title}\n secondary={item.links?.reduce<React.ReactNode[]>(\n (prev, link, idx) => [\n ...prev,\n idx > 0 && <br key={idx} />,\n <SupportLink link={link} key={link.url} />,\n ],\n [],\n )}\n />\n </MenuItem>\n );\n};\n\nexport function SupportButton(props: SupportButtonProps) {\n const { t } = useTranslationRef(coreComponentsTranslationRef);\n const { title, items, children } = props;\n const { items: configItems } = useSupportConfig();\n\n const [popoverOpen, setPopoverOpen] = useState(false);\n const [anchorEl, setAnchorEl] = useState<Element | null>(null);\n const classes = useStyles();\n const supportConfig = useApi(configApiRef).getOptionalConfig('app.support');\n const isSmallScreen = useMediaQuery<Theme>(theme =>\n theme.breakpoints.down('sm'),\n );\n\n const onClickHandler: MouseEventHandler = event => {\n setAnchorEl(event.currentTarget);\n setPopoverOpen(true);\n };\n\n const popoverCloseHandler = () => {\n setPopoverOpen(false);\n };\n\n if (!supportConfig) {\n return null;\n }\n\n return (\n <>\n <Box display=\"flex\" ml={1}>\n {isSmallScreen ? (\n <IconButton\n color=\"primary\"\n size=\"small\"\n onClick={onClickHandler}\n data-testid=\"support-button\"\n aria-label=\"Support\"\n >\n <HelpIcon />\n </IconButton>\n ) : (\n <Button\n data-testid=\"support-button\"\n aria-label=\"Support\"\n color=\"primary\"\n onClick={onClickHandler}\n startIcon={<HelpIcon />}\n >\n {t('supportButton.title')}\n </Button>\n )}\n </Box>\n <Popover\n data-testid=\"support-button-popover\"\n open={popoverOpen}\n anchorEl={anchorEl}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n onClose={popoverCloseHandler}\n >\n <MenuList\n className={classes.popoverList}\n autoFocusItem={Boolean(anchorEl)}\n >\n {title && (\n <MenuItem\n button={false}\n alignItems=\"flex-start\"\n className={classes.menuItem}\n >\n <Typography variant=\"subtitle1\">{title}</Typography>\n </MenuItem>\n )}\n {React.Children.map(children, (child, i) => (\n <MenuItem\n button={false}\n alignItems=\"flex-start\"\n key={`child-${i}`}\n className={classes.menuItem}\n >\n {child}\n </MenuItem>\n ))}\n {(items ?? configItems).map((item, i) => (\n <SupportListItem item={item} key={`item-${i}`} />\n ))}\n </MenuList>\n <DialogActions>\n <Button\n color=\"primary\"\n onClick={popoverCloseHandler}\n aria-label=\"Close\"\n >\n {t('supportButton.close')}\n </Button>\n </DialogActions>\n </Popover>\n </>\n );\n}\n"],"names":["React"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA4CA,MAAM,SAAY,GAAA,UAAA;AAAA,EAChB;AAAA,IACE,WAAa,EAAA;AAAA,MACX,QAAU,EAAA,GAAA;AAAA,MACV,QAAU,EAAA,GAAA;AAAA,KACZ;AAAA,IACA,QAAU,EAAA;AAAA,MACR,UAAY,EAAA,QAAA;AAAA,KACd;AAAA,GACF;AAAA,EACA,EAAE,MAAM,wBAAyB,EAAA;AACnC,CAAA,CAAA;AAEA,MAAM,WAAc,GAAA,CAAC,EAAE,IAAA,EAAyC,KAAA;AAC9D,EAAA,MAAM,MAAM,MAAO,EAAA,CAAA;AACnB,EAAA,MAAM,OAAO,IAAO,GAAA,GAAA,CAAI,aAAc,CAAA,IAAI,KAAK,QAAW,GAAA,QAAA,CAAA;AAC1D,EAAA,oDAAQ,IAAK,EAAA,IAAA,CAAA,CAAA;AACf,CAAA,CAAA;AAEA,MAAM,WAAc,GAAA,CAAC,EAAE,IAAA,EACrB,qBAAAA,cAAA,CAAA,aAAA,CAAC,IAAK,EAAA,EAAA,EAAA,EAAI,IAAK,CAAA,GAAA,EAAA,EAAM,IAAK,CAAA,KAAA,IAAS,KAAK,GAAI,CAAA,CAAA;AAG9C,MAAM,eAAkB,GAAA,CAAC,EAAE,IAAA,EAAkC,KAAA;AAC3D,EAAA,uBACGA,cAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAS,MAAQ,EAAA,KAAA,EAAA,kBACfA,cAAA,CAAA,aAAA,CAAA,YAAA,EAAA,IAAA,kBACEA,cAAA,CAAA,aAAA,CAAA,WAAA,EAAA,EAAY,IAAM,EAAA,IAAA,CAAK,IAAM,EAAA,CAChC,CACA,kBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,SAAS,IAAK,CAAA,KAAA;AAAA,MACd,SAAA,EAAW,KAAK,KAAO,EAAA,MAAA;AAAA,QACrB,CAAC,IAAM,EAAA,IAAA,EAAM,GAAQ,KAAA;AAAA,UACnB,GAAG,IAAA;AAAA,UACH,GAAM,GAAA,CAAA,oBAAMA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAG,KAAK,GAAK,EAAA,CAAA;AAAA,0BACxBA,cAAA,CAAA,aAAA,CAAA,WAAA,EAAA,EAAY,IAAY,EAAA,GAAA,EAAK,KAAK,GAAK,EAAA,CAAA;AAAA,SAC1C;AAAA,QACA,EAAC;AAAA,OACH;AAAA,KAAA;AAAA,GAEJ,CAAA,CAAA;AAEJ,CAAA,CAAA;AAEO,SAAS,cAAc,KAA2B,EAAA;AACvD,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,4BAA4B,CAAA,CAAA;AAC5D,EAAA,MAAM,EAAE,KAAA,EAAO,KAAO,EAAA,QAAA,EAAa,GAAA,KAAA,CAAA;AACnC,EAAA,MAAM,EAAE,KAAA,EAAO,WAAY,EAAA,GAAI,gBAAiB,EAAA,CAAA;AAEhD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAS,KAAK,CAAA,CAAA;AACpD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAyB,IAAI,CAAA,CAAA;AAC7D,EAAA,MAAM,UAAU,SAAU,EAAA,CAAA;AAC1B,EAAA,MAAM,aAAgB,GAAA,MAAA,CAAO,YAAY,CAAA,CAAE,kBAAkB,aAAa,CAAA,CAAA;AAC1E,EAAA,MAAM,aAAgB,GAAA,aAAA;AAAA,IAAqB,CACzC,KAAA,KAAA,KAAA,CAAM,WAAY,CAAA,IAAA,CAAK,IAAI,CAAA;AAAA,GAC7B,CAAA;AAEA,EAAA,MAAM,iBAAoC,CAAS,KAAA,KAAA;AACjD,IAAA,WAAA,CAAY,MAAM,aAAa,CAAA,CAAA;AAC/B,IAAA,cAAA,CAAe,IAAI,CAAA,CAAA;AAAA,GACrB,CAAA;AAEA,EAAA,MAAM,sBAAsB,MAAM;AAChC,IAAA,cAAA,CAAe,KAAK,CAAA,CAAA;AAAA,GACtB,CAAA;AAEA,EAAA,IAAI,CAAC,aAAe,EAAA;AAClB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAA,mGAEKA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAI,SAAQ,MAAO,EAAA,EAAA,EAAI,KACrB,aACC,mBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,KAAM,EAAA,SAAA;AAAA,MACN,IAAK,EAAA,OAAA;AAAA,MACL,OAAS,EAAA,cAAA;AAAA,MACT,aAAY,EAAA,gBAAA;AAAA,MACZ,YAAW,EAAA,SAAA;AAAA,KAAA;AAAA,iDAEV,QAAS,EAAA,IAAA,CAAA;AAAA,GAGZ,mBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,aAAY,EAAA,gBAAA;AAAA,MACZ,YAAW,EAAA,SAAA;AAAA,MACX,KAAM,EAAA,SAAA;AAAA,MACN,OAAS,EAAA,cAAA;AAAA,MACT,SAAA,+CAAY,QAAS,EAAA,IAAA,CAAA;AAAA,KAAA;AAAA,IAEpB,EAAE,qBAAqB,CAAA;AAAA,GAG9B,CACA,kBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,aAAY,EAAA,wBAAA;AAAA,MACZ,IAAM,EAAA,WAAA;AAAA,MACN,QAAA;AAAA,MACA,YAAc,EAAA;AAAA,QACZ,QAAU,EAAA,QAAA;AAAA,QACV,UAAY,EAAA,OAAA;AAAA,OACd;AAAA,MACA,eAAiB,EAAA;AAAA,QACf,QAAU,EAAA,KAAA;AAAA,QACV,UAAY,EAAA,OAAA;AAAA,OACd;AAAA,MACA,OAAS,EAAA,mBAAA;AAAA,KAAA;AAAA,oBAETA,cAAA,CAAA,aAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,WAAW,OAAQ,CAAA,WAAA;AAAA,QACnB,aAAA,EAAe,QAAQ,QAAQ,CAAA;AAAA,OAAA;AAAA,MAE9B,KACC,oBAAAA,cAAA,CAAA,aAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,MAAQ,EAAA,KAAA;AAAA,UACR,UAAW,EAAA,YAAA;AAAA,UACX,WAAW,OAAQ,CAAA,QAAA;AAAA,SAAA;AAAA,wBAElBA,cAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,OAAQ,EAAA,WAAA,EAAA,EAAa,KAAM,CAAA;AAAA,OACzC;AAAA,MAEDA,eAAM,QAAS,CAAA,GAAA,CAAI,QAAU,EAAA,CAAC,OAAO,CACpC,qBAAAA,cAAA,CAAA,aAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,MAAQ,EAAA,KAAA;AAAA,UACR,UAAW,EAAA,YAAA;AAAA,UACX,GAAA,EAAK,SAAS,CAAC,CAAA,CAAA;AAAA,UACf,WAAW,OAAQ,CAAA,QAAA;AAAA,SAAA;AAAA,QAElB,KAAA;AAAA,OAEJ,CAAA;AAAA,MAAA,CACC,KAAS,IAAA,WAAA,EAAa,GAAI,CAAA,CAAC,IAAM,EAAA,CAAA,qBAChCA,cAAA,CAAA,aAAA,CAAA,eAAA,EAAA,EAAgB,IAAY,EAAA,GAAA,EAAK,CAAQ,KAAA,EAAA,CAAC,IAAI,CAChD,CAAA;AAAA,KACH;AAAA,iDACC,aACC,EAAA,IAAA,kBAAAA,cAAA,CAAA,aAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,KAAM,EAAA,SAAA;AAAA,QACN,OAAS,EAAA,mBAAA;AAAA,QACT,YAAW,EAAA,OAAA;AAAA,OAAA;AAAA,MAEV,EAAE,qBAAqB,CAAA;AAAA,KAE5B,CAAA;AAAA,GAEJ,CAAA,CAAA;AAEJ;;;;"}
package/dist/index.d.ts CHANGED
@@ -1144,7 +1144,7 @@ type SupportButtonProps = {
1144
1144
  children?: React__default.ReactNode;
1145
1145
  };
1146
1146
  type SupportButtonClassKey = 'popoverList';
1147
- declare function SupportButton(props: SupportButtonProps): React__default.JSX.Element;
1147
+ declare function SupportButton(props: SupportButtonProps): React__default.JSX.Element | null;
1148
1148
 
1149
1149
  type SubRoute$1 = {
1150
1150
  path: string;
@@ -1,3 +1,5 @@
1
+ import { Breakpoint } from '@material-ui/core/styles/createBreakpoints';
2
+
1
3
  /**
2
4
  * This is a mocking method suggested in the Jest docs, as it is not implemented in JSDOM yet.
3
5
  * It can be used to mock values for the Material UI `useMediaQuery` hook if it is used in a tested component.
@@ -9,9 +11,55 @@
9
11
  * https://mui.com/material-ui/react-use-media-query/#testing
10
12
  *
11
13
  * @public
14
+ *
15
+ * @example
16
+ * Match with any media query:
17
+ * ```ts
18
+ * mockBreakpoint({ matches: true });
19
+ * ```
12
20
  */
13
21
  declare function mockBreakpoint(options: {
14
22
  matches: boolean;
15
23
  }): void;
24
+ /**
25
+ * This is a mocking method suggested in the Jest docs, as it is not implemented in JSDOM yet.
26
+ * It can be used to mock values for the Material UI `useMediaQuery` hook if it is used in a tested component.
27
+ *
28
+ * For issues checkout the documentation:
29
+ * https://jestjs.io/docs/manual-mocks#mocking-methods-which-are-not-implemented-in-jsdom
30
+ *
31
+ * If there are any updates from Material UI React on testing `useMediaQuery` this mock should be replaced
32
+ * https://mui.com/material-ui/react-use-media-query/#testing
33
+ *
34
+ * @public
35
+ *
36
+ * @example
37
+ * Set the initial breakpoint:
38
+ * ```ts
39
+ * mockBreakpoint({ initialBreakpoint: 'md' });
40
+ * ```
41
+ *
42
+ * @example
43
+ * Map media queries to breakpoints:
44
+ * ```ts
45
+ * mockBreakpoint({ queryBreakpointMap: { '(min-width:1500px)': 'xl', '(min-width:1000px)': 'lg', '(min-width:700px)': 'md', '(min-width:400px)': 'sm', '(min-width:0px)': 'xs', } });
46
+ * ```
47
+ *
48
+ * @example
49
+ * Change the breakpoint during the test:
50
+ * ```ts
51
+ * const { set } = mockBreakpoint({ initialBreakpoint: 'md' });
52
+ * set('lg');
53
+ * ```
54
+ **/
55
+ declare function mockBreakpoint(options: {
56
+ /** Defaults to 'lg' */
57
+ initialBreakpoint?: Breakpoint;
58
+ /** Defaults to \{ '(min-width:1920px)': 'xl', '(min-width:1280px)': 'lg', '(min-width:960px)': 'md', '(min-width:600px)': 'sm', '(min-width:0px)': 'xs' \} */
59
+ queryBreakpointMap?: Record<string, Breakpoint>;
60
+ }): {
61
+ set(value: string): void;
62
+ remove(): void;
63
+ };
16
64
 
17
65
  export { mockBreakpoint };
@@ -1,19 +1,62 @@
1
+ import { act } from '@testing-library/react';
2
+
3
+ const originalMatchMedia = window.matchMedia;
1
4
  function mockBreakpoint(options) {
5
+ const mediaQueries = [];
6
+ let breakpoint = "lg";
7
+ if ("initialBreakpoint" in options && options.initialBreakpoint) {
8
+ breakpoint = options.initialBreakpoint;
9
+ }
10
+ const breakpoints = "queryBreakpointMap" in options && typeof options.queryBreakpointMap === "object" ? options.queryBreakpointMap : {
11
+ "(min-width:1920px)": "xl",
12
+ "(min-width:1280px)": "lg",
13
+ "(min-width:960px)": "md",
14
+ "(min-width:600px)": "sm",
15
+ "(min-width:0px)": "xs"
16
+ };
2
17
  Object.defineProperty(window, "matchMedia", {
3
18
  writable: true,
4
- value: jest.fn().mockImplementation((query) => ({
5
- matches: options.matches ?? false,
6
- media: query,
7
- onchange: null,
8
- addListener: jest.fn(),
9
- // deprecated
10
- removeListener: jest.fn(),
11
- // deprecated
12
- addEventListener: jest.fn(),
13
- removeEventListener: jest.fn(),
14
- dispatchEvent: jest.fn()
15
- }))
19
+ value: jest.fn().mockImplementation((mediaQueryString) => {
20
+ const mediaQueryListeners = /* @__PURE__ */ new Set();
21
+ const mediaQueryList = {
22
+ matches: "matches" in options ? options.matches : breakpoints[mediaQueryString] === breakpoint,
23
+ media: mediaQueryString,
24
+ onchange: null,
25
+ addListener: jest.fn((listener) => {
26
+ mediaQueryListeners.add(listener);
27
+ }),
28
+ removeListener: jest.fn((listener) => {
29
+ mediaQueryListeners.delete(listener);
30
+ }),
31
+ addEventListener: jest.fn(),
32
+ removeEventListener: jest.fn(),
33
+ dispatchEvent: jest.fn()
34
+ };
35
+ mediaQueries.push({
36
+ mediaQueryString,
37
+ mediaQueryList,
38
+ mediaQueryListeners
39
+ });
40
+ return mediaQueryList;
41
+ })
16
42
  });
43
+ return {
44
+ set(newBreakpoint) {
45
+ breakpoint = newBreakpoint;
46
+ mediaQueries.forEach(
47
+ ({ mediaQueryString, mediaQueryList, mediaQueryListeners }) => {
48
+ act(() => {
49
+ const matches = "matches" in options ? options.matches : breakpoints[mediaQueryString] === breakpoint;
50
+ mediaQueryList.matches = matches;
51
+ mediaQueryListeners.forEach((listener) => listener({ matches }));
52
+ });
53
+ }
54
+ );
55
+ },
56
+ remove() {
57
+ window.matchMedia = originalMatchMedia;
58
+ }
59
+ };
17
60
  }
18
61
 
19
62
  export { mockBreakpoint };
@@ -1 +1 @@
1
- {"version":3,"file":"testUtils.esm.js","sources":["../src/testUtils.ts"],"sourcesContent":["/*\n * Copyright 2023 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * This is a mocking method suggested in the Jest docs, as it is not implemented in JSDOM yet.\n * It can be used to mock values for the Material UI `useMediaQuery` hook if it is used in a tested component.\n *\n * For issues checkout the documentation:\n * https://jestjs.io/docs/manual-mocks#mocking-methods-which-are-not-implemented-in-jsdom\n *\n * If there are any updates from Material UI React on testing `useMediaQuery` this mock should be replaced\n * https://mui.com/material-ui/react-use-media-query/#testing\n *\n * @public\n */\nexport function mockBreakpoint(options: { matches: boolean }) {\n Object.defineProperty(window, 'matchMedia', {\n writable: true,\n value: jest.fn().mockImplementation(query => ({\n matches: options.matches ?? false,\n media: query,\n onchange: null,\n addListener: jest.fn(), // deprecated\n removeListener: jest.fn(), // deprecated\n addEventListener: jest.fn(),\n removeEventListener: jest.fn(),\n dispatchEvent: jest.fn(),\n })),\n });\n}\n"],"names":[],"mappings":"AA4BO,SAAS,eAAe,OAA+B,EAAA;AAC5D,EAAO,MAAA,CAAA,cAAA,CAAe,QAAQ,YAAc,EAAA;AAAA,IAC1C,QAAU,EAAA,IAAA;AAAA,IACV,KAAO,EAAA,IAAA,CAAK,EAAG,EAAA,CAAE,mBAAmB,CAAU,KAAA,MAAA;AAAA,MAC5C,OAAA,EAAS,QAAQ,OAAW,IAAA,KAAA;AAAA,MAC5B,KAAO,EAAA,KAAA;AAAA,MACP,QAAU,EAAA,IAAA;AAAA,MACV,WAAA,EAAa,KAAK,EAAG,EAAA;AAAA;AAAA,MACrB,cAAA,EAAgB,KAAK,EAAG,EAAA;AAAA;AAAA,MACxB,gBAAA,EAAkB,KAAK,EAAG,EAAA;AAAA,MAC1B,mBAAA,EAAqB,KAAK,EAAG,EAAA;AAAA,MAC7B,aAAA,EAAe,KAAK,EAAG,EAAA;AAAA,KACvB,CAAA,CAAA;AAAA,GACH,CAAA,CAAA;AACH;;;;"}
1
+ {"version":3,"file":"testUtils.esm.js","sources":["../src/testUtils.ts"],"sourcesContent":["/*\n * Copyright 2023 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Breakpoint } from '@material-ui/core/styles/createBreakpoints';\nimport { act } from '@testing-library/react';\n\nconst originalMatchMedia = window.matchMedia;\n\n/**\n * This is a mocking method suggested in the Jest docs, as it is not implemented in JSDOM yet.\n * It can be used to mock values for the Material UI `useMediaQuery` hook if it is used in a tested component.\n *\n * For issues checkout the documentation:\n * https://jestjs.io/docs/manual-mocks#mocking-methods-which-are-not-implemented-in-jsdom\n *\n * If there are any updates from Material UI React on testing `useMediaQuery` this mock should be replaced\n * https://mui.com/material-ui/react-use-media-query/#testing\n *\n * @public\n *\n * @example\n * Match with any media query:\n * ```ts\n * mockBreakpoint({ matches: true });\n * ```\n */\nexport function mockBreakpoint(options: { matches: boolean }): void;\n/**\n * This is a mocking method suggested in the Jest docs, as it is not implemented in JSDOM yet.\n * It can be used to mock values for the Material UI `useMediaQuery` hook if it is used in a tested component.\n *\n * For issues checkout the documentation:\n * https://jestjs.io/docs/manual-mocks#mocking-methods-which-are-not-implemented-in-jsdom\n *\n * If there are any updates from Material UI React on testing `useMediaQuery` this mock should be replaced\n * https://mui.com/material-ui/react-use-media-query/#testing\n *\n * @public\n *\n * @example\n * Set the initial breakpoint:\n * ```ts\n * mockBreakpoint({ initialBreakpoint: 'md' });\n * ```\n *\n * @example\n * Map media queries to breakpoints:\n * ```ts\n * mockBreakpoint({ queryBreakpointMap: { '(min-width:1500px)': 'xl', '(min-width:1000px)': 'lg', '(min-width:700px)': 'md', '(min-width:400px)': 'sm', '(min-width:0px)': 'xs', } });\n * ```\n *\n * @example\n * Change the breakpoint during the test:\n * ```ts\n * const { set } = mockBreakpoint({ initialBreakpoint: 'md' });\n * set('lg');\n * ```\n **/\nexport function mockBreakpoint(options: {\n /** Defaults to 'lg' */\n initialBreakpoint?: Breakpoint;\n /** Defaults to \\{ '(min-width:1920px)': 'xl', '(min-width:1280px)': 'lg', '(min-width:960px)': 'md', '(min-width:600px)': 'sm', '(min-width:0px)': 'xs' \\} */\n queryBreakpointMap?: Record<string, Breakpoint>;\n}): {\n set(value: string): void;\n remove(): void;\n};\nexport function mockBreakpoint(\n options:\n | {\n matches: boolean;\n }\n | {\n initialBreakpoint?: Breakpoint;\n queryBreakpointMap?: Record<string, Breakpoint>;\n },\n): {\n set(value: string): void;\n remove(): void;\n} {\n const mediaQueries: {\n mediaQueryString: string;\n mediaQueryList: { matches: boolean };\n mediaQueryListeners: Set<(event: { matches: boolean }) => void>;\n }[] = [];\n let breakpoint: Breakpoint = 'lg';\n if ('initialBreakpoint' in options && options.initialBreakpoint) {\n breakpoint = options.initialBreakpoint;\n }\n const breakpoints: Record<string, Breakpoint> =\n 'queryBreakpointMap' in options &&\n typeof options.queryBreakpointMap === 'object'\n ? options.queryBreakpointMap\n : {\n '(min-width:1920px)': 'xl',\n '(min-width:1280px)': 'lg',\n '(min-width:960px)': 'md',\n '(min-width:600px)': 'sm',\n '(min-width:0px)': 'xs',\n };\n Object.defineProperty(window, 'matchMedia', {\n writable: true,\n value: jest.fn().mockImplementation(mediaQueryString => {\n const mediaQueryListeners = new Set<\n (event: { matches: boolean }) => void\n >();\n const mediaQueryList = {\n matches:\n 'matches' in options\n ? options.matches\n : breakpoints[mediaQueryString] === breakpoint,\n media: mediaQueryString,\n onchange: null,\n addListener: jest.fn(listener => {\n mediaQueryListeners.add(listener);\n }),\n removeListener: jest.fn(listener => {\n mediaQueryListeners.delete(listener);\n }),\n addEventListener: jest.fn(),\n removeEventListener: jest.fn(),\n dispatchEvent: jest.fn(),\n };\n mediaQueries.push({\n mediaQueryString,\n mediaQueryList,\n mediaQueryListeners,\n });\n return mediaQueryList;\n }),\n });\n\n return {\n set(newBreakpoint: Breakpoint) {\n breakpoint = newBreakpoint;\n mediaQueries.forEach(\n ({ mediaQueryString, mediaQueryList, mediaQueryListeners }) => {\n act(() => {\n const matches =\n 'matches' in options\n ? options.matches\n : breakpoints[mediaQueryString] === breakpoint;\n mediaQueryList.matches = matches;\n mediaQueryListeners.forEach(listener => listener({ matches }));\n });\n },\n );\n },\n remove() {\n window.matchMedia = originalMatchMedia;\n },\n };\n}\n"],"names":[],"mappings":";;AAmBA,MAAM,qBAAqB,MAAO,CAAA,UAAA,CAAA;AA6D3B,SAAS,eACd,OAWA,EAAA;AACA,EAAA,MAAM,eAIA,EAAC,CAAA;AACP,EAAA,IAAI,UAAyB,GAAA,IAAA,CAAA;AAC7B,EAAI,IAAA,mBAAA,IAAuB,OAAW,IAAA,OAAA,CAAQ,iBAAmB,EAAA;AAC/D,IAAA,UAAA,GAAa,OAAQ,CAAA,iBAAA,CAAA;AAAA,GACvB;AACA,EAAM,MAAA,WAAA,GACJ,wBAAwB,OACxB,IAAA,OAAO,QAAQ,kBAAuB,KAAA,QAAA,GAClC,QAAQ,kBACR,GAAA;AAAA,IACE,oBAAsB,EAAA,IAAA;AAAA,IACtB,oBAAsB,EAAA,IAAA;AAAA,IACtB,mBAAqB,EAAA,IAAA;AAAA,IACrB,mBAAqB,EAAA,IAAA;AAAA,IACrB,iBAAmB,EAAA,IAAA;AAAA,GACrB,CAAA;AACN,EAAO,MAAA,CAAA,cAAA,CAAe,QAAQ,YAAc,EAAA;AAAA,IAC1C,QAAU,EAAA,IAAA;AAAA,IACV,KAAO,EAAA,IAAA,CAAK,EAAG,EAAA,CAAE,mBAAmB,CAAoB,gBAAA,KAAA;AACtD,MAAM,MAAA,mBAAA,uBAA0B,GAE9B,EAAA,CAAA;AACF,MAAA,MAAM,cAAiB,GAAA;AAAA,QACrB,SACE,SAAa,IAAA,OAAA,GACT,QAAQ,OACR,GAAA,WAAA,CAAY,gBAAgB,CAAM,KAAA,UAAA;AAAA,QACxC,KAAO,EAAA,gBAAA;AAAA,QACP,QAAU,EAAA,IAAA;AAAA,QACV,WAAA,EAAa,IAAK,CAAA,EAAA,CAAG,CAAY,QAAA,KAAA;AAC/B,UAAA,mBAAA,CAAoB,IAAI,QAAQ,CAAA,CAAA;AAAA,SACjC,CAAA;AAAA,QACD,cAAA,EAAgB,IAAK,CAAA,EAAA,CAAG,CAAY,QAAA,KAAA;AAClC,UAAA,mBAAA,CAAoB,OAAO,QAAQ,CAAA,CAAA;AAAA,SACpC,CAAA;AAAA,QACD,gBAAA,EAAkB,KAAK,EAAG,EAAA;AAAA,QAC1B,mBAAA,EAAqB,KAAK,EAAG,EAAA;AAAA,QAC7B,aAAA,EAAe,KAAK,EAAG,EAAA;AAAA,OACzB,CAAA;AACA,MAAA,YAAA,CAAa,IAAK,CAAA;AAAA,QAChB,gBAAA;AAAA,QACA,cAAA;AAAA,QACA,mBAAA;AAAA,OACD,CAAA,CAAA;AACD,MAAO,OAAA,cAAA,CAAA;AAAA,KACR,CAAA;AAAA,GACF,CAAA,CAAA;AAED,EAAO,OAAA;AAAA,IACL,IAAI,aAA2B,EAAA;AAC7B,MAAa,UAAA,GAAA,aAAA,CAAA;AACb,MAAa,YAAA,CAAA,OAAA;AAAA,QACX,CAAC,EAAE,gBAAkB,EAAA,cAAA,EAAgB,qBAA0B,KAAA;AAC7D,UAAA,GAAA,CAAI,MAAM;AACR,YAAA,MAAM,UACJ,SAAa,IAAA,OAAA,GACT,QAAQ,OACR,GAAA,WAAA,CAAY,gBAAgB,CAAM,KAAA,UAAA,CAAA;AACxC,YAAA,cAAA,CAAe,OAAU,GAAA,OAAA,CAAA;AACzB,YAAA,mBAAA,CAAoB,QAAQ,CAAY,QAAA,KAAA,QAAA,CAAS,EAAE,OAAA,EAAS,CAAC,CAAA,CAAA;AAAA,WAC9D,CAAA,CAAA;AAAA,SACH;AAAA,OACF,CAAA;AAAA,KACF;AAAA,IACA,MAAS,GAAA;AACP,MAAA,MAAA,CAAO,UAAa,GAAA,kBAAA,CAAA;AAAA,KACtB;AAAA,GACF,CAAA;AACF;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/core-components",
3
- "version": "0.15.1",
3
+ "version": "0.16.0-next.0",
4
4
  "description": "Core components used by Backstage plugins and apps",
5
5
  "backstage": {
6
6
  "role": "web-library"
@@ -55,17 +55,18 @@
55
55
  "test": "backstage-cli package test"
56
56
  },
57
57
  "dependencies": {
58
- "@backstage/config": "^1.2.0",
59
- "@backstage/core-plugin-api": "^1.10.0",
60
- "@backstage/errors": "^1.2.4",
61
- "@backstage/theme": "^0.6.0",
62
- "@backstage/version-bridge": "^1.0.10",
58
+ "@backstage/config": "1.2.0",
59
+ "@backstage/core-plugin-api": "1.10.0",
60
+ "@backstage/errors": "1.2.4",
61
+ "@backstage/theme": "0.6.0",
62
+ "@backstage/version-bridge": "1.0.10",
63
63
  "@date-io/core": "^1.3.13",
64
64
  "@material-table/core": "^3.1.0",
65
65
  "@material-ui/core": "^4.12.2",
66
66
  "@material-ui/icons": "^4.9.1",
67
67
  "@material-ui/lab": "4.0.0-alpha.61",
68
68
  "@react-hookz/web": "^24.0.0",
69
+ "@testing-library/react": "^16.0.0",
69
70
  "@types/react-sparklines": "^1.7.0",
70
71
  "ansi-regex": "^6.0.1",
71
72
  "classnames": "^2.2.6",
@@ -93,13 +94,12 @@
93
94
  "zod": "^3.22.4"
94
95
  },
95
96
  "devDependencies": {
96
- "@backstage/app-defaults": "^1.5.12",
97
- "@backstage/cli": "^0.28.0",
98
- "@backstage/core-app-api": "^1.15.1",
99
- "@backstage/test-utils": "^1.7.0",
97
+ "@backstage/app-defaults": "1.5.13-next.0",
98
+ "@backstage/cli": "0.29.0-next.0",
99
+ "@backstage/core-app-api": "1.15.1",
100
+ "@backstage/test-utils": "1.7.0",
100
101
  "@testing-library/dom": "^10.0.0",
101
102
  "@testing-library/jest-dom": "^6.0.0",
102
- "@testing-library/react": "^16.0.0",
103
103
  "@testing-library/user-event": "^14.0.0",
104
104
  "@types/ansi-regex": "^5.0.0",
105
105
  "@types/classnames": "^2.2.9",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/core-components__testutils",
3
- "version": "0.15.1",
3
+ "version": "0.16.0-next.0",
4
4
  "main": "../dist/testUtils.esm.js",
5
5
  "module": "../dist/testUtils.esm.js",
6
6
  "types": "../dist/testUtils.d.ts"