@red-hat-developer-hub/backstage-plugin-adoption-insights 0.0.4 → 0.2.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 (65) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/components/ActiveUsers/ActiveUsers.esm.js +106 -89
  3. package/dist/components/ActiveUsers/ActiveUsers.esm.js.map +1 -1
  4. package/dist/components/ActiveUsers/CustomLegend.esm.js +40 -35
  5. package/dist/components/ActiveUsers/CustomLegend.esm.js.map +1 -1
  6. package/dist/components/ActiveUsers/CustomTooltip.esm.js +68 -57
  7. package/dist/components/ActiveUsers/CustomTooltip.esm.js.map +1 -1
  8. package/dist/components/ActiveUsers/ExportCSVButton.esm.js +26 -25
  9. package/dist/components/ActiveUsers/ExportCSVButton.esm.js.map +1 -1
  10. package/dist/components/AdoptionInsightsPage/AdoptionInsightsPage.esm.js +13 -2
  11. package/dist/components/AdoptionInsightsPage/AdoptionInsightsPage.esm.js.map +1 -1
  12. package/dist/components/CardFooter/TableFooterPagination.esm.js +42 -42
  13. package/dist/components/CardFooter/TableFooterPagination.esm.js.map +1 -1
  14. package/dist/components/CardWrapper/CardWrapper.esm.js +29 -24
  15. package/dist/components/CardWrapper/CardWrapper.esm.js.map +1 -1
  16. package/dist/components/CatalogEntities/CatalogEntities.esm.js +96 -92
  17. package/dist/components/CatalogEntities/CatalogEntities.esm.js.map +1 -1
  18. package/dist/components/CatalogEntities/FilterDropdown.esm.js +22 -17
  19. package/dist/components/CatalogEntities/FilterDropdown.esm.js.map +1 -1
  20. package/dist/components/Common/CustomCursor.esm.js +2 -2
  21. package/dist/components/Common/CustomCursor.esm.js.map +1 -1
  22. package/dist/components/Common/EmptyChartState.esm.js +2 -2
  23. package/dist/components/Common/EmptyChartState.esm.js.map +1 -1
  24. package/dist/components/Common/PermissionRequiredIcon.esm.js +2 -2
  25. package/dist/components/Common/PermissionRequiredIcon.esm.js.map +1 -1
  26. package/dist/components/Common/PermissionRequiredState.esm.js +29 -23
  27. package/dist/components/Common/PermissionRequiredState.esm.js.map +1 -1
  28. package/dist/components/Header/DateRangeContext.esm.js +7 -6
  29. package/dist/components/Header/DateRangeContext.esm.js.map +1 -1
  30. package/dist/components/Header/DateRangePicker.esm.js +67 -59
  31. package/dist/components/Header/DateRangePicker.esm.js.map +1 -1
  32. package/dist/components/Header/Header.esm.js +116 -106
  33. package/dist/components/Header/Header.esm.js.map +1 -1
  34. package/dist/components/Plugins/Plugins.esm.js +74 -64
  35. package/dist/components/Plugins/Plugins.esm.js.map +1 -1
  36. package/dist/components/Searches/CustomTooltip.esm.js +41 -36
  37. package/dist/components/Searches/CustomTooltip.esm.js.map +1 -1
  38. package/dist/components/Searches/Searches.esm.js +85 -74
  39. package/dist/components/Searches/Searches.esm.js.map +1 -1
  40. package/dist/components/Techdocs/Techdocs.esm.js +85 -81
  41. package/dist/components/Techdocs/Techdocs.esm.js.map +1 -1
  42. package/dist/components/Templates/Templates.esm.js +74 -70
  43. package/dist/components/Templates/Templates.esm.js.map +1 -1
  44. package/dist/components/Users/Info.esm.js +12 -12
  45. package/dist/components/Users/Info.esm.js.map +1 -1
  46. package/dist/components/Users/Tooltip.esm.js +27 -23
  47. package/dist/components/Users/Tooltip.esm.js.map +1 -1
  48. package/dist/components/Users/Users.esm.js +119 -95
  49. package/dist/components/Users/Users.esm.js.map +1 -1
  50. package/dist/hooks/useActiveUsers.esm.js +5 -5
  51. package/dist/hooks/useActiveUsers.esm.js.map +1 -1
  52. package/dist/hooks/useCatalogEntities.esm.js +5 -5
  53. package/dist/hooks/useCatalogEntities.esm.js.map +1 -1
  54. package/dist/hooks/usePlugins.esm.js +5 -5
  55. package/dist/hooks/usePlugins.esm.js.map +1 -1
  56. package/dist/hooks/useSearches.esm.js +5 -5
  57. package/dist/hooks/useSearches.esm.js.map +1 -1
  58. package/dist/hooks/useTechdocs.esm.js +5 -5
  59. package/dist/hooks/useTechdocs.esm.js.map +1 -1
  60. package/dist/hooks/useTemplates.esm.js +5 -5
  61. package/dist/hooks/useTemplates.esm.js.map +1 -1
  62. package/dist/hooks/useUsers.esm.js +5 -5
  63. package/dist/hooks/useUsers.esm.js.map +1 -1
  64. package/dist/index.d.ts +2 -3
  65. package/package.json +18 -17
@@ -1 +1 @@
1
- {"version":3,"file":"CatalogEntities.esm.js","sources":["../../../src/components/CatalogEntities/CatalogEntities.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 */\nimport React from 'react';\n\nimport { ResponseErrorPanel } from '@backstage/core-components';\nimport Box from '@mui/material/Box';\nimport { SelectChangeEvent } from '@mui/material/Select';\nimport Table from '@mui/material/Table';\nimport TableBody from '@mui/material/TableBody';\nimport TableCell from '@mui/material/TableCell';\nimport TableFooter from '@mui/material/TableFooter';\nimport TableHead from '@mui/material/TableHead';\nimport TableRow from '@mui/material/TableRow';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Link from '@mui/material/Link';\nimport { entityRouteRef } from '@backstage/plugin-catalog-react';\nimport { useRouteRef } from '@backstage/core-plugin-api';\n\nimport CardWrapper from '../CardWrapper';\nimport {\n CATALOG_ENTITIES_TABLE_HEADERS,\n CATALOG_ENTITIES_TITLE,\n} from '../../utils/constants';\nimport { useCatalogEntities } from '../../hooks/useCatalogEntities';\nimport TableFooterPagination from '../CardFooter';\nimport { getLastUsedDay, getUniqueCatalogEntityKinds } from '../../utils/utils';\nimport FilterDropdown from './FilterDropdown';\nimport EmptyChartState from '../Common/EmptyChartState';\n\nconst CatalogEntities = () => {\n const [page, setPage] = React.useState(0);\n const [limit] = React.useState(20);\n const [rowsPerPage, setRowsPerPage] = React.useState(3);\n const [selectedOption, setSelectedOption] = React.useState('');\n const [uniqueCatalogEntityKinds, setUniqueCatalogEntityKinds] =\n React.useState<string[]>([]);\n\n const entityLink = useRouteRef(entityRouteRef);\n\n const { catalogEntities, loading, error } = useCatalogEntities({\n limit,\n kind: selectedOption === 'All' ? '' : selectedOption.toLocaleLowerCase(),\n });\n\n React.useEffect(() => {\n if (\n catalogEntities?.data?.length > 0 &&\n uniqueCatalogEntityKinds?.length === 0\n ) {\n const uniqueKinds = getUniqueCatalogEntityKinds(catalogEntities.data);\n setUniqueCatalogEntityKinds(uniqueKinds);\n }\n }, [catalogEntities, uniqueCatalogEntityKinds]);\n\n const handleChangePage = React.useCallback(\n (_event: unknown, newPage: number) => {\n setPage(newPage);\n },\n [],\n );\n\n const handleChangeRowsPerPage = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n setRowsPerPage(+event.target.value);\n setPage(0);\n },\n [],\n );\n\n const handleChange = React.useCallback((event: SelectChangeEvent<string>) => {\n setSelectedOption(event.target.value);\n }, []);\n\n const visibleCatalogEntities = React.useMemo(() => {\n return catalogEntities.data\n ?.filter(entity => {\n if (selectedOption && selectedOption !== 'All') {\n return (\n entity.kind.toLocaleLowerCase() ===\n selectedOption.toLocaleLowerCase()\n );\n }\n return true;\n })\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage);\n }, [catalogEntities, page, rowsPerPage, selectedOption]);\n\n if (error) {\n return (\n <CardWrapper title={CATALOG_ENTITIES_TITLE}>\n <ResponseErrorPanel error={error} />\n </CardWrapper>\n );\n }\n\n if (\n (!visibleCatalogEntities || visibleCatalogEntities?.length === 0) &&\n !loading\n ) {\n return (\n <CardWrapper title={CATALOG_ENTITIES_TITLE}>\n <Box\n display=\"flex\"\n justifyContent=\"center\"\n alignItems=\"center\"\n height={200}\n >\n <EmptyChartState />\n </Box>\n </CardWrapper>\n );\n }\n\n return (\n <CardWrapper\n title={CATALOG_ENTITIES_TITLE}\n filter={\n <FilterDropdown\n selectedOption={selectedOption}\n handleChange={handleChange}\n uniqueCatalogEntityKinds={uniqueCatalogEntityKinds}\n />\n }\n >\n <Table aria-labelledby=\"Catalog entities\" sx={{ width: '100%' }}>\n <TableHead>\n <TableRow>\n {CATALOG_ENTITIES_TABLE_HEADERS.map(header => (\n <TableCell\n key={header.id}\n align=\"left\"\n sx={{\n borderBottom: theme => `1px solid ${theme.palette.grey[300]}`,\n width: '25%',\n }}\n >\n {header.title}\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {loading ? (\n <TableRow>\n <TableCell\n colSpan={CATALOG_ENTITIES_TABLE_HEADERS.length}\n align=\"center\"\n >\n <CircularProgress />\n </TableCell>\n </TableRow>\n ) : (\n visibleCatalogEntities?.map(entity => (\n <TableRow\n key={`${entity.kind}-${entity.name}`}\n sx={{\n '&:nth-of-type(odd)': { backgroundColor: 'inherit' },\n borderBottom: theme => `1px solid ${theme.palette.grey[300]}`,\n }}\n >\n <TableCell sx={{ width: '25%' }}>\n <Link\n component=\"a\"\n href={entityLink({\n kind: entity.kind,\n namespace: entity.namespace,\n name: entity.name,\n })}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n sx={{\n textDecoration: 'none',\n '&:hover': {\n textDecoration: 'none',\n },\n }}\n >\n {entity.name ?? '--'}\n </Link>\n </TableCell>\n <TableCell sx={{ width: '25%' }}>\n {entity.kind?.charAt(0).toLocaleUpperCase('en-US') +\n entity.kind?.slice(1) || '--'}\n </TableCell>\n <TableCell sx={{ width: '25%' }}>\n {getLastUsedDay(entity.last_used) ?? '--'}\n </TableCell>\n <TableCell sx={{ width: '25%' }}>\n {Number(entity.count).toLocaleString() ?? '--'}\n </TableCell>\n </TableRow>\n ))\n )}\n </TableBody>\n <TableFooter>\n <TableRow>\n <TableCell\n colSpan={CATALOG_ENTITIES_TABLE_HEADERS.length}\n sx={{ padding: 0 }}\n >\n <TableFooterPagination\n count={catalogEntities.data?.length}\n rowsPerPage={rowsPerPage}\n page={page}\n handleChangePage={handleChangePage}\n handleChangeRowsPerPage={handleChangeRowsPerPage}\n />\n </TableCell>\n </TableRow>\n </TableFooter>\n </Table>\n </CardWrapper>\n );\n};\n\nexport default CatalogEntities;\n"],"names":["React"],"mappings":"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"}
1
+ {"version":3,"file":"CatalogEntities.esm.js","sources":["../../../src/components/CatalogEntities/CatalogEntities.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 */\nimport { useState, useEffect, useMemo, useCallback } from 'react';\nimport type { ChangeEvent } from 'react';\n\nimport { ResponseErrorPanel } from '@backstage/core-components';\nimport Box from '@mui/material/Box';\nimport { SelectChangeEvent } from '@mui/material/Select';\nimport Table from '@mui/material/Table';\nimport TableBody from '@mui/material/TableBody';\nimport TableCell from '@mui/material/TableCell';\nimport TableFooter from '@mui/material/TableFooter';\nimport TableHead from '@mui/material/TableHead';\nimport TableRow from '@mui/material/TableRow';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Link from '@mui/material/Link';\nimport { entityRouteRef } from '@backstage/plugin-catalog-react';\nimport { useRouteRef } from '@backstage/core-plugin-api';\n\nimport CardWrapper from '../CardWrapper';\nimport {\n CATALOG_ENTITIES_TABLE_HEADERS,\n CATALOG_ENTITIES_TITLE,\n} from '../../utils/constants';\nimport { useCatalogEntities } from '../../hooks/useCatalogEntities';\nimport TableFooterPagination from '../CardFooter';\nimport { getLastUsedDay, getUniqueCatalogEntityKinds } from '../../utils/utils';\nimport FilterDropdown from './FilterDropdown';\nimport EmptyChartState from '../Common/EmptyChartState';\n\nconst CatalogEntities = () => {\n const [page, setPage] = useState(0);\n const [limit] = useState(20);\n const [rowsPerPage, setRowsPerPage] = useState(3);\n const [selectedOption, setSelectedOption] = useState('');\n const [uniqueCatalogEntityKinds, setUniqueCatalogEntityKinds] = useState<\n string[]\n >([]);\n\n const entityLink = useRouteRef(entityRouteRef);\n\n const { catalogEntities, loading, error } = useCatalogEntities({\n limit,\n kind: selectedOption === 'All' ? '' : selectedOption.toLocaleLowerCase(),\n });\n\n useEffect(() => {\n if (\n catalogEntities?.data?.length > 0 &&\n uniqueCatalogEntityKinds?.length === 0\n ) {\n const uniqueKinds = getUniqueCatalogEntityKinds(catalogEntities.data);\n setUniqueCatalogEntityKinds(uniqueKinds);\n }\n }, [catalogEntities, uniqueCatalogEntityKinds]);\n\n const handleChangePage = useCallback((_event: unknown, newPage: number) => {\n setPage(newPage);\n }, []);\n\n const handleChangeRowsPerPage = useCallback(\n (event: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n setRowsPerPage(+event.target.value);\n setPage(0);\n },\n [],\n );\n\n const handleChange = useCallback((event: SelectChangeEvent<string>) => {\n setSelectedOption(event.target.value);\n }, []);\n\n const visibleCatalogEntities = useMemo(() => {\n return catalogEntities.data\n ?.filter(entity => {\n if (selectedOption && selectedOption !== 'All') {\n return (\n entity.kind.toLocaleLowerCase() ===\n selectedOption.toLocaleLowerCase()\n );\n }\n return true;\n })\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage);\n }, [catalogEntities, page, rowsPerPage, selectedOption]);\n\n if (error) {\n return (\n <CardWrapper title={CATALOG_ENTITIES_TITLE}>\n <ResponseErrorPanel error={error} />\n </CardWrapper>\n );\n }\n\n if (\n (!visibleCatalogEntities || visibleCatalogEntities?.length === 0) &&\n !loading\n ) {\n return (\n <CardWrapper title={CATALOG_ENTITIES_TITLE}>\n <Box\n display=\"flex\"\n justifyContent=\"center\"\n alignItems=\"center\"\n height={200}\n >\n <EmptyChartState />\n </Box>\n </CardWrapper>\n );\n }\n\n return (\n <CardWrapper\n title={CATALOG_ENTITIES_TITLE}\n filter={\n <FilterDropdown\n selectedOption={selectedOption}\n handleChange={handleChange}\n uniqueCatalogEntityKinds={uniqueCatalogEntityKinds}\n />\n }\n >\n <Table aria-labelledby=\"Catalog entities\" sx={{ width: '100%' }}>\n <TableHead>\n <TableRow>\n {CATALOG_ENTITIES_TABLE_HEADERS.map(header => (\n <TableCell\n key={header.id}\n align=\"left\"\n sx={{\n borderBottom: theme => `1px solid ${theme.palette.grey[300]}`,\n width: '25%',\n }}\n >\n {header.title}\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {loading ? (\n <TableRow>\n <TableCell\n colSpan={CATALOG_ENTITIES_TABLE_HEADERS.length}\n align=\"center\"\n >\n <CircularProgress />\n </TableCell>\n </TableRow>\n ) : (\n visibleCatalogEntities?.map(entity => (\n <TableRow\n key={`${entity.kind}-${entity.name}`}\n sx={{\n '&:nth-of-type(odd)': { backgroundColor: 'inherit' },\n borderBottom: theme => `1px solid ${theme.palette.grey[300]}`,\n }}\n >\n <TableCell sx={{ width: '25%' }}>\n <Link\n component=\"a\"\n href={entityLink({\n kind: entity.kind,\n namespace: entity.namespace,\n name: entity.name,\n })}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n sx={{\n textDecoration: 'none',\n '&:hover': {\n textDecoration: 'none',\n },\n }}\n >\n {entity.name ?? '--'}\n </Link>\n </TableCell>\n <TableCell sx={{ width: '25%' }}>\n {entity.kind?.charAt(0).toLocaleUpperCase('en-US') +\n entity.kind?.slice(1) || '--'}\n </TableCell>\n <TableCell sx={{ width: '25%' }}>\n {getLastUsedDay(entity.last_used) ?? '--'}\n </TableCell>\n <TableCell sx={{ width: '25%' }}>\n {Number(entity.count).toLocaleString() ?? '--'}\n </TableCell>\n </TableRow>\n ))\n )}\n </TableBody>\n <TableFooter>\n <TableRow>\n <TableCell\n colSpan={CATALOG_ENTITIES_TABLE_HEADERS.length}\n sx={{ padding: 0 }}\n >\n <TableFooterPagination\n count={catalogEntities.data?.length}\n rowsPerPage={rowsPerPage}\n page={page}\n handleChangePage={handleChangePage}\n handleChangeRowsPerPage={handleChangeRowsPerPage}\n />\n </TableCell>\n </TableRow>\n </TableFooter>\n </Table>\n </CardWrapper>\n );\n};\n\nexport default CatalogEntities;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA2CA,MAAM,kBAAkB,MAAM;AAC5B,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAAS,CAAC,CAAA;AAClC,EAAA,MAAM,CAAC,KAAK,CAAI,GAAA,QAAA,CAAS,EAAE,CAAA;AAC3B,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAS,CAAC,CAAA;AAChD,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAI,SAAS,EAAE,CAAA;AACvD,EAAA,MAAM,CAAC,wBAA0B,EAAA,2BAA2B,CAAI,GAAA,QAAA,CAE9D,EAAE,CAAA;AAEJ,EAAM,MAAA,UAAA,GAAa,YAAY,cAAc,CAAA;AAE7C,EAAA,MAAM,EAAE,eAAA,EAAiB,OAAS,EAAA,KAAA,KAAU,kBAAmB,CAAA;AAAA,IAC7D,KAAA;AAAA,IACA,IAAM,EAAA,cAAA,KAAmB,KAAQ,GAAA,EAAA,GAAK,eAAe,iBAAkB;AAAA,GACxE,CAAA;AAED,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IACE,iBAAiB,IAAM,EAAA,MAAA,GAAS,CAChC,IAAA,wBAAA,EAA0B,WAAW,CACrC,EAAA;AACA,MAAM,MAAA,WAAA,GAAc,2BAA4B,CAAA,eAAA,CAAgB,IAAI,CAAA;AACpE,MAAA,2BAAA,CAA4B,WAAW,CAAA;AAAA;AACzC,GACC,EAAA,CAAC,eAAiB,EAAA,wBAAwB,CAAC,CAAA;AAE9C,EAAA,MAAM,gBAAmB,GAAA,WAAA,CAAY,CAAC,MAAA,EAAiB,OAAoB,KAAA;AACzE,IAAA,OAAA,CAAQ,OAAO,CAAA;AAAA,GACjB,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,uBAA0B,GAAA,WAAA;AAAA,IAC9B,CAAC,KAA+D,KAAA;AAC9D,MAAe,cAAA,CAAA,CAAC,KAAM,CAAA,MAAA,CAAO,KAAK,CAAA;AAClC,MAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,KACX;AAAA,IACA;AAAC,GACH;AAEA,EAAM,MAAA,YAAA,GAAe,WAAY,CAAA,CAAC,KAAqC,KAAA;AACrE,IAAkB,iBAAA,CAAA,KAAA,CAAM,OAAO,KAAK,CAAA;AAAA,GACtC,EAAG,EAAE,CAAA;AAEL,EAAM,MAAA,sBAAA,GAAyB,QAAQ,MAAM;AAC3C,IAAO,OAAA,eAAA,CAAgB,IACnB,EAAA,MAAA,CAAO,CAAU,MAAA,KAAA;AACjB,MAAI,IAAA,cAAA,IAAkB,mBAAmB,KAAO,EAAA;AAC9C,QAAA,OACE,MAAO,CAAA,IAAA,CAAK,iBAAkB,EAAA,KAC9B,eAAe,iBAAkB,EAAA;AAAA;AAGrC,MAAO,OAAA,IAAA;AAAA,KACR,CACA,CAAA,KAAA,CAAM,OAAO,WAAa,EAAA,IAAA,GAAO,cAAc,WAAW,CAAA;AAAA,KAC5D,CAAC,eAAA,EAAiB,IAAM,EAAA,WAAA,EAAa,cAAc,CAAC,CAAA;AAEvD,EAAA,IAAI,KAAO,EAAA;AACT,IAAA,2BACG,WAAY,EAAA,EAAA,KAAA,EAAO,wBAClB,QAAC,kBAAA,GAAA,CAAA,kBAAA,EAAA,EAAmB,OAAc,CACpC,EAAA,CAAA;AAAA;AAIJ,EAAA,IAAA,CACG,CAAC,sBAA0B,IAAA,sBAAA,EAAwB,MAAW,KAAA,CAAA,KAC/D,CAAC,OACD,EAAA;AACA,IACE,uBAAA,GAAA,CAAC,WAAY,EAAA,EAAA,KAAA,EAAO,sBAClB,EAAA,QAAA,kBAAA,GAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,OAAQ,EAAA,MAAA;AAAA,QACR,cAAe,EAAA,QAAA;AAAA,QACf,UAAW,EAAA,QAAA;AAAA,QACX,MAAQ,EAAA,GAAA;AAAA,QAER,8BAAC,eAAgB,EAAA,EAAA;AAAA;AAAA,KAErB,EAAA,CAAA;AAAA;AAIJ,EACE,uBAAA,GAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,KAAO,EAAA,sBAAA;AAAA,MACP,MACE,kBAAA,GAAA;AAAA,QAAC,cAAA;AAAA,QAAA;AAAA,UACC,cAAA;AAAA,UACA,YAAA;AAAA,UACA;AAAA;AAAA,OACF;AAAA,MAGF,QAAA,kBAAA,IAAA,CAAC,SAAM,iBAAgB,EAAA,kBAAA,EAAmB,IAAI,EAAE,KAAA,EAAO,QACrD,EAAA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,SACC,EAAA,EAAA,QAAA,kBAAA,GAAA,CAAC,QACE,EAAA,EAAA,QAAA,EAAA,8BAAA,CAA+B,IAAI,CAClC,MAAA,qBAAA,GAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YAEC,KAAM,EAAA,MAAA;AAAA,YACN,EAAI,EAAA;AAAA,cACF,cAAc,CAAS,KAAA,KAAA,CAAA,UAAA,EAAa,MAAM,OAAQ,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AAAA,cAC3D,KAAO,EAAA;AAAA,aACT;AAAA,YAEC,QAAO,EAAA,MAAA,CAAA;AAAA,WAAA;AAAA,UAPH,MAAO,CAAA;AAAA,SASf,GACH,CACF,EAAA,CAAA;AAAA,wBACC,GAAA,CAAA,SAAA,EAAA,EACE,QACC,EAAA,OAAA,mBAAA,GAAA,CAAC,QACC,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACC,SAAS,8BAA+B,CAAA,MAAA;AAAA,YACxC,KAAM,EAAA,QAAA;AAAA,YAEN,8BAAC,gBAAiB,EAAA,EAAA;AAAA;AAAA,SAEtB,EAAA,CAAA,GAEA,sBAAwB,EAAA,GAAA,CAAI,CAC1B,MAAA,qBAAA,IAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YAEC,EAAI,EAAA;AAAA,cACF,oBAAA,EAAsB,EAAE,eAAA,EAAiB,SAAU,EAAA;AAAA,cACnD,cAAc,CAAS,KAAA,KAAA,CAAA,UAAA,EAAa,MAAM,OAAQ,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA,aAC7D;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,SAAU,EAAA,EAAA,EAAA,EAAI,EAAE,KAAA,EAAO,OACtB,EAAA,QAAA,kBAAA,GAAA;AAAA,gBAAC,IAAA;AAAA,gBAAA;AAAA,kBACC,SAAU,EAAA,GAAA;AAAA,kBACV,MAAM,UAAW,CAAA;AAAA,oBACf,MAAM,MAAO,CAAA,IAAA;AAAA,oBACb,WAAW,MAAO,CAAA,SAAA;AAAA,oBAClB,MAAM,MAAO,CAAA;AAAA,mBACd,CAAA;AAAA,kBACD,MAAO,EAAA,QAAA;AAAA,kBACP,GAAI,EAAA,qBAAA;AAAA,kBACJ,EAAI,EAAA;AAAA,oBACF,cAAgB,EAAA,MAAA;AAAA,oBAChB,SAAW,EAAA;AAAA,sBACT,cAAgB,EAAA;AAAA;AAClB,mBACF;AAAA,kBAEC,iBAAO,IAAQ,IAAA;AAAA;AAAA,eAEpB,EAAA,CAAA;AAAA,8BACA,GAAA,CAAC,aAAU,EAAI,EAAA,EAAE,OAAO,KAAM,EAAA,EAC3B,iBAAO,IAAM,EAAA,MAAA,CAAO,CAAC,CAAE,CAAA,iBAAA,CAAkB,OAAO,CAC/C,GAAA,MAAA,CAAO,MAAM,KAAM,CAAA,CAAC,KAAK,IAC7B,EAAA,CAAA;AAAA,8BACA,GAAA,CAAC,SAAU,EAAA,EAAA,EAAA,EAAI,EAAE,KAAA,EAAO,KAAM,EAAA,EAC3B,QAAe,EAAA,cAAA,CAAA,MAAA,CAAO,SAAS,CAAA,IAAK,IACvC,EAAA,CAAA;AAAA,8BACC,GAAA,CAAA,SAAA,EAAA,EAAU,EAAI,EAAA,EAAE,KAAO,EAAA,KAAA,EACrB,EAAA,QAAA,EAAA,MAAA,CAAO,MAAO,CAAA,KAAK,CAAE,CAAA,cAAA,MAAoB,IAC5C,EAAA;AAAA;AAAA,WAAA;AAAA,UAnCK,CAAG,EAAA,MAAA,CAAO,IAAI,CAAA,CAAA,EAAI,OAAO,IAAI,CAAA;AAAA,SAqCrC,CAEL,EAAA,CAAA;AAAA,wBACA,GAAA,CAAC,WACC,EAAA,EAAA,QAAA,kBAAA,GAAA,CAAC,QACC,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACC,SAAS,8BAA+B,CAAA,MAAA;AAAA,YACxC,EAAA,EAAI,EAAE,OAAA,EAAS,CAAE,EAAA;AAAA,YAEjB,QAAA,kBAAA,GAAA;AAAA,cAAC,qBAAA;AAAA,cAAA;AAAA,gBACC,KAAA,EAAO,gBAAgB,IAAM,EAAA,MAAA;AAAA,gBAC7B,WAAA;AAAA,gBACA,IAAA;AAAA,gBACA,gBAAA;AAAA,gBACA;AAAA;AAAA;AACF;AAAA,WAEJ,CACF,EAAA;AAAA,OACF,EAAA;AAAA;AAAA,GACF;AAEJ;;;;"}
@@ -1,4 +1,4 @@
1
- import React__default from 'react';
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import Box from '@mui/material/Box';
3
3
  import FormControl from '@mui/material/FormControl';
4
4
  import InputLabel from '@mui/material/InputLabel';
@@ -10,23 +10,28 @@ const FilterDropdown = ({
10
10
  handleChange,
11
11
  uniqueCatalogEntityKinds
12
12
  }) => {
13
- return /* @__PURE__ */ React__default.createElement(Box, { sx: { m: 2, minWidth: 160 } }, /* @__PURE__ */ React__default.createElement(FormControl, { fullWidth: true }, /* @__PURE__ */ React__default.createElement(InputLabel, { id: "kind-select" }, "Select kind"), /* @__PURE__ */ React__default.createElement(
14
- Select,
15
- {
16
- labelId: "kind-select",
17
- renderValue: (selected) => selected.length === 0 ? "Select kind" : selected,
18
- value: selectedOption,
19
- onChange: handleChange,
20
- label: "Select kind",
21
- MenuProps: {
22
- MenuListProps: {
23
- autoFocusItem: false
24
- }
13
+ return /* @__PURE__ */ jsx(Box, { sx: { m: 2, minWidth: 160 }, children: /* @__PURE__ */ jsxs(FormControl, { fullWidth: true, children: [
14
+ /* @__PURE__ */ jsx(InputLabel, { id: "kind-select", children: "Select kind" }),
15
+ /* @__PURE__ */ jsxs(
16
+ Select,
17
+ {
18
+ labelId: "kind-select",
19
+ renderValue: (selected) => selected.length === 0 ? "Select kind" : selected,
20
+ value: selectedOption,
21
+ onChange: handleChange,
22
+ label: "Select kind",
23
+ MenuProps: {
24
+ MenuListProps: {
25
+ autoFocusItem: false
26
+ }
27
+ },
28
+ children: [
29
+ /* @__PURE__ */ jsx(MenuItem, { value: "All", children: "All" }, "All"),
30
+ uniqueCatalogEntityKinds?.map((kind) => /* @__PURE__ */ jsx(MenuItem, { value: kind, children: kind }, kind))
31
+ ]
25
32
  }
26
- },
27
- /* @__PURE__ */ React__default.createElement(MenuItem, { key: "All", value: "All" }, "All"),
28
- uniqueCatalogEntityKinds?.map((kind) => /* @__PURE__ */ React__default.createElement(MenuItem, { key: kind, value: kind }, kind))
29
- )));
33
+ )
34
+ ] }) });
30
35
  };
31
36
 
32
37
  export { FilterDropdown as default };
@@ -1 +1 @@
1
- {"version":3,"file":"FilterDropdown.esm.js","sources":["../../../src/components/CatalogEntities/FilterDropdown.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 */\nimport React from 'react';\n\nimport Box from '@mui/material/Box';\nimport FormControl from '@mui/material/FormControl';\nimport InputLabel from '@mui/material/InputLabel';\nimport MenuItem from '@mui/material/MenuItem';\nimport Select, { SelectChangeEvent } from '@mui/material/Select';\n\nconst FilterDropdown = ({\n selectedOption,\n handleChange,\n uniqueCatalogEntityKinds,\n}: {\n selectedOption: string;\n handleChange: (event: SelectChangeEvent<string>) => void;\n uniqueCatalogEntityKinds: string[];\n}) => {\n return (\n <Box sx={{ m: 2, minWidth: 160 }}>\n <FormControl fullWidth>\n <InputLabel id=\"kind-select\">Select kind</InputLabel>\n <Select\n labelId=\"kind-select\"\n renderValue={(selected: string) =>\n selected.length === 0 ? 'Select kind' : selected\n }\n value={selectedOption}\n onChange={handleChange}\n label=\"Select kind\"\n MenuProps={{\n MenuListProps: {\n autoFocusItem: false,\n },\n }}\n >\n <MenuItem key=\"All\" value=\"All\">\n All\n </MenuItem>\n {uniqueCatalogEntityKinds?.map(kind => (\n <MenuItem key={kind} value={kind}>\n {kind}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n </Box>\n );\n};\n\nexport default FilterDropdown;\n"],"names":["React"],"mappings":";;;;;;;AAuBA,MAAM,iBAAiB,CAAC;AAAA,EACtB,cAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAIM,KAAA;AACJ,EAAA,oDACG,GAAI,EAAA,EAAA,EAAA,EAAI,EAAE,CAAG,EAAA,CAAA,EAAG,UAAU,GAAI,EAAA,EAAA,kBAC5BA,cAAA,CAAA,aAAA,CAAA,WAAA,EAAA,EAAY,WAAS,IACpB,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,cAAW,EAAG,EAAA,aAAA,EAAA,EAAc,aAAW,CACxC,kBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,OAAQ,EAAA,aAAA;AAAA,MACR,aAAa,CAAC,QAAA,KACZ,QAAS,CAAA,MAAA,KAAW,IAAI,aAAgB,GAAA,QAAA;AAAA,MAE1C,KAAO,EAAA,cAAA;AAAA,MACP,QAAU,EAAA,YAAA;AAAA,MACV,KAAM,EAAA,aAAA;AAAA,MACN,SAAW,EAAA;AAAA,QACT,aAAe,EAAA;AAAA,UACb,aAAe,EAAA;AAAA;AACjB;AACF,KAAA;AAAA,iDAEC,QAAS,EAAA,EAAA,GAAA,EAAI,KAAM,EAAA,KAAA,EAAM,SAAM,KAEhC,CAAA;AAAA,IACC,wBAAA,EAA0B,GAAI,CAAA,CAAA,IAAA,qBAC5BA,cAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAS,KAAK,IAAM,EAAA,KAAA,EAAO,IACzB,EAAA,EAAA,IACH,CACD;AAAA,GAEL,CACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"FilterDropdown.esm.js","sources":["../../../src/components/CatalogEntities/FilterDropdown.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 */\nimport Box from '@mui/material/Box';\nimport FormControl from '@mui/material/FormControl';\nimport InputLabel from '@mui/material/InputLabel';\nimport MenuItem from '@mui/material/MenuItem';\nimport Select, { SelectChangeEvent } from '@mui/material/Select';\n\nconst FilterDropdown = ({\n selectedOption,\n handleChange,\n uniqueCatalogEntityKinds,\n}: {\n selectedOption: string;\n handleChange: (event: SelectChangeEvent<string>) => void;\n uniqueCatalogEntityKinds: string[];\n}) => {\n return (\n <Box sx={{ m: 2, minWidth: 160 }}>\n <FormControl fullWidth>\n <InputLabel id=\"kind-select\">Select kind</InputLabel>\n <Select\n labelId=\"kind-select\"\n renderValue={(selected: string) =>\n selected.length === 0 ? 'Select kind' : selected\n }\n value={selectedOption}\n onChange={handleChange}\n label=\"Select kind\"\n MenuProps={{\n MenuListProps: {\n autoFocusItem: false,\n },\n }}\n >\n <MenuItem key=\"All\" value=\"All\">\n All\n </MenuItem>\n {uniqueCatalogEntityKinds?.map(kind => (\n <MenuItem key={kind} value={kind}>\n {kind}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n </Box>\n );\n};\n\nexport default FilterDropdown;\n"],"names":[],"mappings":";;;;;;;AAqBA,MAAM,iBAAiB,CAAC;AAAA,EACtB,cAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAIM,KAAA;AACJ,EAAA,uBACG,GAAA,CAAA,GAAA,EAAA,EAAI,EAAI,EAAA,EAAE,CAAG,EAAA,CAAA,EAAG,QAAU,EAAA,GAAA,EACzB,EAAA,QAAA,kBAAA,IAAA,CAAC,WAAY,EAAA,EAAA,SAAA,EAAS,IACpB,EAAA,QAAA,EAAA;AAAA,oBAAC,GAAA,CAAA,UAAA,EAAA,EAAW,EAAG,EAAA,aAAA,EAAc,QAAW,EAAA,aAAA,EAAA,CAAA;AAAA,oBACxC,IAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,OAAQ,EAAA,aAAA;AAAA,QACR,aAAa,CAAC,QAAA,KACZ,QAAS,CAAA,MAAA,KAAW,IAAI,aAAgB,GAAA,QAAA;AAAA,QAE1C,KAAO,EAAA,cAAA;AAAA,QACP,QAAU,EAAA,YAAA;AAAA,QACV,KAAM,EAAA,aAAA;AAAA,QACN,SAAW,EAAA;AAAA,UACT,aAAe,EAAA;AAAA,YACb,aAAe,EAAA;AAAA;AACjB,SACF;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,QAAmB,EAAA,EAAA,KAAA,EAAM,KAAM,EAAA,QAAA,EAAA,KAAA,EAAA,EAAlB,KAEd,CAAA;AAAA,UACC,wBAAA,EAA0B,IAAI,CAC7B,IAAA,qBAAA,GAAA,CAAC,YAAoB,KAAO,EAAA,IAAA,EACzB,QADY,EAAA,IAAA,EAAA,EAAA,IAEf,CACD;AAAA;AAAA;AAAA;AACH,GAAA,EACF,CACF,EAAA,CAAA;AAEJ;;;;"}
@@ -1,9 +1,9 @@
1
- import React__default from 'react';
1
+ import { jsx } from 'react/jsx-runtime';
2
2
 
3
3
  const CustomCursor = (props) => {
4
4
  const { points, cursorHeight = 250 } = props;
5
5
  if (!points || points.length === 0) return null;
6
- return /* @__PURE__ */ React__default.createElement(
6
+ return /* @__PURE__ */ jsx(
7
7
  "line",
8
8
  {
9
9
  "data-testid": "custom-cursor-line",
@@ -1 +1 @@
1
- {"version":3,"file":"CustomCursor.esm.js","sources":["../../../src/components/Common/CustomCursor.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 */\nimport React from 'react';\n\nconst CustomCursor = (props: any) => {\n const { points, cursorHeight = 250 } = props;\n if (!points || points.length === 0) return null;\n\n return (\n <line\n data-testid=\"custom-cursor-line\"\n x1={points[0].x}\n y1={10}\n x2={points[0].x}\n y2={cursorHeight}\n stroke=\"gray\"\n strokeWidth={1}\n strokeDasharray=\"3 3\"\n />\n );\n};\n\nexport default CustomCursor;\n"],"names":["React"],"mappings":";;AAiBM,MAAA,YAAA,GAAe,CAAC,KAAe,KAAA;AACnC,EAAA,MAAM,EAAE,MAAA,EAAQ,YAAe,GAAA,GAAA,EAAQ,GAAA,KAAA;AACvC,EAAA,IAAI,CAAC,MAAA,IAAU,MAAO,CAAA,MAAA,KAAW,GAAU,OAAA,IAAA;AAE3C,EACE,uBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,aAAY,EAAA,oBAAA;AAAA,MACZ,EAAA,EAAI,MAAO,CAAA,CAAC,CAAE,CAAA,CAAA;AAAA,MACd,EAAI,EAAA,EAAA;AAAA,MACJ,EAAA,EAAI,MAAO,CAAA,CAAC,CAAE,CAAA,CAAA;AAAA,MACd,EAAI,EAAA,YAAA;AAAA,MACJ,MAAO,EAAA,MAAA;AAAA,MACP,WAAa,EAAA,CAAA;AAAA,MACb,eAAgB,EAAA;AAAA;AAAA,GAClB;AAEJ;;;;"}
1
+ {"version":3,"file":"CustomCursor.esm.js","sources":["../../../src/components/Common/CustomCursor.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 */\nconst CustomCursor = (props: any) => {\n const { points, cursorHeight = 250 } = props;\n if (!points || points.length === 0) return null;\n\n return (\n <line\n data-testid=\"custom-cursor-line\"\n x1={points[0].x}\n y1={10}\n x2={points[0].x}\n y2={cursorHeight}\n stroke=\"gray\"\n strokeWidth={1}\n strokeDasharray=\"3 3\"\n />\n );\n};\n\nexport default CustomCursor;\n"],"names":[],"mappings":";;AAeM,MAAA,YAAA,GAAe,CAAC,KAAe,KAAA;AACnC,EAAA,MAAM,EAAE,MAAA,EAAQ,YAAe,GAAA,GAAA,EAAQ,GAAA,KAAA;AACvC,EAAA,IAAI,CAAC,MAAA,IAAU,MAAO,CAAA,MAAA,KAAW,GAAU,OAAA,IAAA;AAE3C,EACE,uBAAA,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,aAAY,EAAA,oBAAA;AAAA,MACZ,EAAA,EAAI,MAAO,CAAA,CAAC,CAAE,CAAA,CAAA;AAAA,MACd,EAAI,EAAA,EAAA;AAAA,MACJ,EAAA,EAAI,MAAO,CAAA,CAAC,CAAE,CAAA,CAAA;AAAA,MACd,EAAI,EAAA,YAAA;AAAA,MACJ,MAAO,EAAA,MAAA;AAAA,MACP,WAAa,EAAA,CAAA;AAAA,MACb,eAAgB,EAAA;AAAA;AAAA,GAClB;AAEJ;;;;"}
@@ -1,8 +1,8 @@
1
- import React__default from 'react';
1
+ import { jsx } from 'react/jsx-runtime';
2
2
  import Typography from '@mui/material/Typography';
3
3
 
4
4
  const EmptyChartState = () => {
5
- return /* @__PURE__ */ React__default.createElement(Typography, null, "No results for this date range.");
5
+ return /* @__PURE__ */ jsx(Typography, { children: "No results for this date range." });
6
6
  };
7
7
 
8
8
  export { EmptyChartState as default };
@@ -1 +1 @@
1
- {"version":3,"file":"EmptyChartState.esm.js","sources":["../../../src/components/Common/EmptyChartState.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 */\nimport React from 'react';\nimport Typography from '@mui/material/Typography';\n\nconst EmptyChartState = () => {\n return <Typography>No results for this date range.</Typography>;\n};\n\nexport default EmptyChartState;\n"],"names":["React"],"mappings":";;;AAkBA,MAAM,kBAAkB,MAAM;AAC5B,EAAO,uBAAAA,cAAA,CAAA,aAAA,CAAC,kBAAW,iCAA+B,CAAA;AACpD;;;;"}
1
+ {"version":3,"file":"EmptyChartState.esm.js","sources":["../../../src/components/Common/EmptyChartState.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 */\nimport Typography from '@mui/material/Typography';\n\nconst EmptyChartState = () => {\n return <Typography>No results for this date range.</Typography>;\n};\n\nexport default EmptyChartState;\n"],"names":[],"mappings":";;;AAiBA,MAAM,kBAAkB,MAAM;AAC5B,EAAO,uBAAA,GAAA,CAAC,cAAW,QAA+B,EAAA,iCAAA,EAAA,CAAA;AACpD;;;;"}
@@ -1,8 +1,8 @@
1
- import * as React from 'react';
1
+ import { jsx } from 'react/jsx-runtime';
2
2
  import permissionRequired from '../../images/permission-required.svg';
3
3
 
4
4
  const PermissionRequiredIcon = () => {
5
- return /* @__PURE__ */ React.createElement("img", { src: permissionRequired, alt: "permission required icon" });
5
+ return /* @__PURE__ */ jsx("img", { src: permissionRequired, alt: "permission required icon" });
6
6
  };
7
7
 
8
8
  export { PermissionRequiredIcon };
@@ -1 +1 @@
1
- {"version":3,"file":"PermissionRequiredIcon.esm.js","sources":["../../../src/components/Common/PermissionRequiredIcon.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 */\nimport * as React from 'react';\n\nimport permissionRequired from '../../images/permission-required.svg';\n\nexport const PermissionRequiredIcon = () => {\n return <img src={permissionRequired as any} alt=\"permission required icon\" />;\n};\n"],"names":[],"mappings":";;;AAmBO,MAAM,yBAAyB,MAAM;AAC1C,EAAA,uBAAQ,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,GAAK,EAAA,kBAAA,EAA2B,KAAI,0BAA2B,EAAA,CAAA;AAC7E;;;;"}
1
+ {"version":3,"file":"PermissionRequiredIcon.esm.js","sources":["../../../src/components/Common/PermissionRequiredIcon.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 */\nimport permissionRequired from '../../images/permission-required.svg';\n\nexport const PermissionRequiredIcon = () => {\n return <img src={permissionRequired as any} alt=\"permission required icon\" />;\n};\n"],"names":[],"mappings":";;;AAiBO,MAAM,yBAAyB,MAAM;AAC1C,EAAA,uBAAQ,GAAA,CAAA,KAAA,EAAA,EAAI,GAAK,EAAA,kBAAA,EAA2B,KAAI,0BAA2B,EAAA,CAAA;AAC7E;;;;"}
@@ -1,4 +1,4 @@
1
- import React__default from 'react';
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { EmptyState } from '@backstage/core-components';
3
3
  import OpenInNewIcon from '@mui/icons-material/OpenInNew';
4
4
  import Box from '@mui/material/Box';
@@ -7,7 +7,7 @@ import Button from '@mui/material/Button';
7
7
  import { PermissionRequiredIcon } from './PermissionRequiredIcon.esm.js';
8
8
 
9
9
  const PermissionRequiredState = () => {
10
- return /* @__PURE__ */ React__default.createElement(
10
+ return /* @__PURE__ */ jsx(
11
11
  Box,
12
12
  {
13
13
  sx: {
@@ -15,27 +15,33 @@ const PermissionRequiredState = () => {
15
15
  height: "100%",
16
16
  alignItems: "center",
17
17
  padding: "100px"
18
- }
19
- },
20
- /* @__PURE__ */ React__default.createElement(
21
- EmptyState,
22
- {
23
- title: "Missing permissions",
24
- description: /* @__PURE__ */ React__default.createElement(Typography, { variant: "subtitle1", component: "span" }, "To view Adoption Insights plugin, contact your administrator to give the ", /* @__PURE__ */ React__default.createElement("b", null, "adoption-insights.events.read"), " permissions."),
25
- missing: { customImage: /* @__PURE__ */ React__default.createElement(PermissionRequiredIcon, null) },
26
- action: /* @__PURE__ */ React__default.createElement(
27
- Button,
28
- {
29
- variant: "outlined",
30
- color: "primary",
31
- target: "_blank",
32
- href: "https://github.com/redhat-developer/rhdh-plugins/blob/main/workspaces/adoption-insights/plugins/adoption-insights/README.md#permission-framework-support"
33
- },
34
- "Read more \xA0 ",
35
- /* @__PURE__ */ React__default.createElement(OpenInNewIcon, null)
36
- )
37
- }
38
- )
18
+ },
19
+ children: /* @__PURE__ */ jsx(
20
+ EmptyState,
21
+ {
22
+ title: "Missing permissions",
23
+ description: /* @__PURE__ */ jsxs(Typography, { variant: "subtitle1", component: "span", children: [
24
+ "To view Adoption Insights plugin, contact your administrator to give the ",
25
+ /* @__PURE__ */ jsx("b", { children: "adoption-insights.events.read" }),
26
+ " permissions."
27
+ ] }),
28
+ missing: { customImage: /* @__PURE__ */ jsx(PermissionRequiredIcon, {}) },
29
+ action: /* @__PURE__ */ jsxs(
30
+ Button,
31
+ {
32
+ variant: "outlined",
33
+ color: "primary",
34
+ target: "_blank",
35
+ href: "https://github.com/redhat-developer/rhdh-plugins/blob/main/workspaces/adoption-insights/plugins/adoption-insights/README.md#permission-framework-support",
36
+ children: [
37
+ "Read more \xA0 ",
38
+ /* @__PURE__ */ jsx(OpenInNewIcon, {})
39
+ ]
40
+ }
41
+ )
42
+ }
43
+ )
44
+ }
39
45
  );
40
46
  };
41
47
 
@@ -1 +1 @@
1
- {"version":3,"file":"PermissionRequiredState.esm.js","sources":["../../../src/components/Common/PermissionRequiredState.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 */\nimport React from 'react';\n\nimport { EmptyState } from '@backstage/core-components';\nimport OpenInNewIcon from '@mui/icons-material/OpenInNew';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport Button from '@mui/material/Button';\n\nimport { PermissionRequiredIcon } from './PermissionRequiredIcon';\n\nconst PermissionRequiredState = () => {\n return (\n <Box\n sx={{\n display: 'flex',\n height: '100%',\n alignItems: 'center',\n padding: '100px',\n }}\n >\n <EmptyState\n title=\"Missing permissions\"\n description={\n <Typography variant=\"subtitle1\" component=\"span\">\n To view Adoption Insights plugin, contact your administrator to give\n the <b>adoption-insights.events.read</b> permissions.\n </Typography>\n }\n missing={{ customImage: <PermissionRequiredIcon /> }}\n action={\n <Button\n variant=\"outlined\"\n color=\"primary\"\n target=\"_blank\"\n href=\"https://github.com/redhat-developer/rhdh-plugins/blob/main/workspaces/adoption-insights/plugins/adoption-insights/README.md#permission-framework-support\"\n >\n Read more &nbsp; <OpenInNewIcon />\n </Button>\n }\n />\n </Box>\n );\n};\n\nexport default PermissionRequiredState;\n"],"names":["React"],"mappings":";;;;;;;;AAyBA,MAAM,0BAA0B,MAAM;AACpC,EACE,uBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,EAAI,EAAA;AAAA,QACF,OAAS,EAAA,MAAA;AAAA,QACT,MAAQ,EAAA,MAAA;AAAA,QACR,UAAY,EAAA,QAAA;AAAA,QACZ,OAAS,EAAA;AAAA;AACX,KAAA;AAAA,oBAEAA,cAAA,CAAA,aAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,KAAM,EAAA,qBAAA;AAAA,QACN,WACE,kBAAAA,cAAA,CAAA,aAAA,CAAC,UAAW,EAAA,EAAA,OAAA,EAAQ,WAAY,EAAA,SAAA,EAAU,MAAO,EAAA,EAAA,2EAAA,kBAE1CA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA,EAAE,+BAA6B,CAAA,EAAI,eAC1C,CAAA;AAAA,QAEF,OAAS,EAAA,EAAE,WAAa,kBAAAA,cAAA,CAAA,aAAA,CAAC,4BAAuB,CAAG,EAAA;AAAA,QACnD,MACE,kBAAAA,cAAA,CAAA,aAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAQ,EAAA,UAAA;AAAA,YACR,KAAM,EAAA,SAAA;AAAA,YACN,MAAO,EAAA,QAAA;AAAA,YACP,IAAK,EAAA;AAAA,WAAA;AAAA,UACN,iBAAA;AAAA,uDACmB,aAAc,EAAA,IAAA;AAAA;AAClC;AAAA;AAEJ,GACF;AAEJ;;;;"}
1
+ {"version":3,"file":"PermissionRequiredState.esm.js","sources":["../../../src/components/Common/PermissionRequiredState.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 */\nimport { EmptyState } from '@backstage/core-components';\nimport OpenInNewIcon from '@mui/icons-material/OpenInNew';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport Button from '@mui/material/Button';\n\nimport { PermissionRequiredIcon } from './PermissionRequiredIcon';\n\nconst PermissionRequiredState = () => {\n return (\n <Box\n sx={{\n display: 'flex',\n height: '100%',\n alignItems: 'center',\n padding: '100px',\n }}\n >\n <EmptyState\n title=\"Missing permissions\"\n description={\n <Typography variant=\"subtitle1\" component=\"span\">\n To view Adoption Insights plugin, contact your administrator to give\n the <b>adoption-insights.events.read</b> permissions.\n </Typography>\n }\n missing={{ customImage: <PermissionRequiredIcon /> }}\n action={\n <Button\n variant=\"outlined\"\n color=\"primary\"\n target=\"_blank\"\n href=\"https://github.com/redhat-developer/rhdh-plugins/blob/main/workspaces/adoption-insights/plugins/adoption-insights/README.md#permission-framework-support\"\n >\n Read more &nbsp; <OpenInNewIcon />\n </Button>\n }\n />\n </Box>\n );\n};\n\nexport default PermissionRequiredState;\n"],"names":[],"mappings":";;;;;;;;AAuBA,MAAM,0BAA0B,MAAM;AACpC,EACE,uBAAA,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,EAAI,EAAA;AAAA,QACF,OAAS,EAAA,MAAA;AAAA,QACT,MAAQ,EAAA,MAAA;AAAA,QACR,UAAY,EAAA,QAAA;AAAA,QACZ,OAAS,EAAA;AAAA,OACX;AAAA,MAEA,QAAA,kBAAA,GAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,KAAM,EAAA,qBAAA;AAAA,UACN,6BACG,IAAA,CAAA,UAAA,EAAA,EAAW,OAAQ,EAAA,WAAA,EAAY,WAAU,MAAO,EAAA,QAAA,EAAA;AAAA,YAAA,2EAAA;AAAA,4BAE3C,GAAA,CAAC,OAAE,QAA6B,EAAA,+BAAA,EAAA,CAAA;AAAA,YAAI;AAAA,WAC1C,EAAA,CAAA;AAAA,UAEF,OAAS,EAAA,EAAE,WAAa,kBAAA,GAAA,CAAC,0BAAuB,CAAG,EAAA;AAAA,UACnD,MACE,kBAAA,IAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,OAAQ,EAAA,UAAA;AAAA,cACR,KAAM,EAAA,SAAA;AAAA,cACN,MAAO,EAAA,QAAA;AAAA,cACP,IAAK,EAAA,0JAAA;AAAA,cACN,QAAA,EAAA;AAAA,gBAAA,iBAAA;AAAA,oCACmB,aAAc,EAAA,EAAA;AAAA;AAAA;AAAA;AAClC;AAAA;AAEJ;AAAA,GACF;AAEJ;;;;"}
@@ -1,4 +1,5 @@
1
- import React__default, { createContext, useContext } from 'react';
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useState, useMemo, createContext, useContext } from 'react';
2
3
 
3
4
  const DateRangeContext = createContext(
4
5
  void 0
@@ -6,10 +7,10 @@ const DateRangeContext = createContext(
6
7
  const DateRangeProvider = ({
7
8
  children
8
9
  }) => {
9
- const [startDateRange, setStartDateRange] = React__default.useState(null);
10
- const [endDateRange, setEndDateRange] = React__default.useState(null);
11
- const [isDefaultDateRange, setIsDefaultDateRange] = React__default.useState(true);
12
- const value = React__default.useMemo(
10
+ const [startDateRange, setStartDateRange] = useState(null);
11
+ const [endDateRange, setEndDateRange] = useState(null);
12
+ const [isDefaultDateRange, setIsDefaultDateRange] = useState(true);
13
+ const value = useMemo(
13
14
  () => ({
14
15
  startDateRange,
15
16
  endDateRange,
@@ -20,7 +21,7 @@ const DateRangeProvider = ({
20
21
  }),
21
22
  [startDateRange, endDateRange, isDefaultDateRange]
22
23
  );
23
- return /* @__PURE__ */ React__default.createElement(DateRangeContext.Provider, { value }, children);
24
+ return /* @__PURE__ */ jsx(DateRangeContext.Provider, { value, children });
24
25
  };
25
26
  const useDateRange = () => {
26
27
  const context = useContext(DateRangeContext);
@@ -1 +1 @@
1
- {"version":3,"file":"DateRangeContext.esm.js","sources":["../../../src/components/Header/DateRangeContext.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 */\nimport React, { createContext, useContext } from 'react';\n\ninterface DateRange {\n startDateRange: Date | null;\n endDateRange: Date | null;\n setStartDateRange: (date: Date | null) => void;\n setEndDateRange: (date: Date | null) => void;\n isDefaultDateRange: boolean;\n setIsDefaultDateRange: (val: boolean) => void;\n}\n\nexport const DateRangeContext = createContext<DateRange | undefined>(\n undefined as any,\n);\n\nexport const DateRangeProvider: React.FC<{ children: React.ReactNode }> = ({\n children,\n}) => {\n const [startDateRange, setStartDateRange] = React.useState<Date | null>(null);\n const [endDateRange, setEndDateRange] = React.useState<Date | null>(null);\n const [isDefaultDateRange, setIsDefaultDateRange] =\n React.useState<boolean>(true);\n\n const value = React.useMemo(\n () => ({\n startDateRange,\n endDateRange,\n isDefaultDateRange,\n setStartDateRange,\n setEndDateRange,\n setIsDefaultDateRange,\n }),\n [startDateRange, endDateRange, isDefaultDateRange],\n );\n\n return (\n <DateRangeContext.Provider value={value}>\n {children}\n </DateRangeContext.Provider>\n );\n};\n\nexport const useDateRange = () => {\n const context = useContext(DateRangeContext);\n if (!context) {\n throw new Error('useDateRange must be used within a DateRangeProvider');\n }\n\n return context;\n};\n"],"names":["React"],"mappings":";;AA0BO,MAAM,gBAAmB,GAAA,aAAA;AAAA,EAC9B;AACF;AAEO,MAAM,oBAA6D,CAAC;AAAA,EACzE;AACF,CAAM,KAAA;AACJ,EAAA,MAAM,CAAC,cAAgB,EAAA,iBAAiB,CAAI,GAAAA,cAAA,CAAM,SAAsB,IAAI,CAAA;AAC5E,EAAA,MAAM,CAAC,YAAc,EAAA,eAAe,CAAI,GAAAA,cAAA,CAAM,SAAsB,IAAI,CAAA;AACxE,EAAA,MAAM,CAAC,kBAAoB,EAAA,qBAAqB,CAC9C,GAAAA,cAAA,CAAM,SAAkB,IAAI,CAAA;AAE9B,EAAA,MAAM,QAAQA,cAAM,CAAA,OAAA;AAAA,IAClB,OAAO;AAAA,MACL,cAAA;AAAA,MACA,YAAA;AAAA,MACA,kBAAA;AAAA,MACA,iBAAA;AAAA,MACA,eAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA,CAAC,cAAgB,EAAA,YAAA,EAAc,kBAAkB;AAAA,GACnD;AAEA,EAAA,uBACGA,cAAA,CAAA,aAAA,CAAA,gBAAA,CAAiB,QAAjB,EAAA,EAA0B,SACxB,QACH,CAAA;AAEJ;AAEO,MAAM,eAAe,MAAM;AAChC,EAAM,MAAA,OAAA,GAAU,WAAW,gBAAgB,CAAA;AAC3C,EAAA,IAAI,CAAC,OAAS,EAAA;AACZ,IAAM,MAAA,IAAI,MAAM,sDAAsD,CAAA;AAAA;AAGxE,EAAO,OAAA,OAAA;AACT;;;;"}
1
+ {"version":3,"file":"DateRangeContext.esm.js","sources":["../../../src/components/Header/DateRangeContext.tsx"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\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 */\nimport { useState, useMemo, createContext, useContext } from 'react';\nimport type { FC, ReactNode } from 'react';\n\ninterface DateRange {\n startDateRange: Date | null;\n endDateRange: Date | null;\n setStartDateRange: (date: Date | null) => void;\n setEndDateRange: (date: Date | null) => void;\n isDefaultDateRange: boolean;\n setIsDefaultDateRange: (val: boolean) => void;\n}\n\nexport const DateRangeContext = createContext<DateRange | undefined>(\n undefined as any,\n);\n\nexport const DateRangeProvider: FC<{ children: ReactNode }> = ({\n children,\n}) => {\n const [startDateRange, setStartDateRange] = useState<Date | null>(null);\n const [endDateRange, setEndDateRange] = useState<Date | null>(null);\n const [isDefaultDateRange, setIsDefaultDateRange] = useState<boolean>(true);\n\n const value = useMemo(\n () => ({\n startDateRange,\n endDateRange,\n isDefaultDateRange,\n setStartDateRange,\n setEndDateRange,\n setIsDefaultDateRange,\n }),\n [startDateRange, endDateRange, isDefaultDateRange],\n );\n\n return (\n <DateRangeContext.Provider value={value}>\n {children}\n </DateRangeContext.Provider>\n );\n};\n\nexport const useDateRange = () => {\n const context = useContext(DateRangeContext);\n if (!context) {\n throw new Error('useDateRange must be used within a DateRangeProvider');\n }\n\n return context;\n};\n"],"names":[],"mappings":";;;AA2BO,MAAM,gBAAmB,GAAA,aAAA;AAAA,EAC9B;AACF;AAEO,MAAM,oBAAiD,CAAC;AAAA,EAC7D;AACF,CAAM,KAAA;AACJ,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAI,SAAsB,IAAI,CAAA;AACtE,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAsB,IAAI,CAAA;AAClE,EAAA,MAAM,CAAC,kBAAA,EAAoB,qBAAqB,CAAA,GAAI,SAAkB,IAAI,CAAA;AAE1E,EAAA,MAAM,KAAQ,GAAA,OAAA;AAAA,IACZ,OAAO;AAAA,MACL,cAAA;AAAA,MACA,YAAA;AAAA,MACA,kBAAA;AAAA,MACA,iBAAA;AAAA,MACA,eAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA,CAAC,cAAgB,EAAA,YAAA,EAAc,kBAAkB;AAAA,GACnD;AAEA,EAAA,uBACG,GAAA,CAAA,gBAAA,CAAiB,QAAjB,EAAA,EAA0B,OACxB,QACH,EAAA,CAAA;AAEJ;AAEO,MAAM,eAAe,MAAM;AAChC,EAAM,MAAA,OAAA,GAAU,WAAW,gBAAgB,CAAA;AAC3C,EAAA,IAAI,CAAC,OAAS,EAAA;AACZ,IAAM,MAAA,IAAI,MAAM,sDAAsD,CAAA;AAAA;AAGxE,EAAO,OAAA,OAAA;AACT;;;;"}
@@ -1,4 +1,5 @@
1
- import React__default from 'react';
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { useCallback } from 'react';
2
3
  import Box from '@mui/material/Box';
3
4
  import Grid from '@mui/material/Grid';
4
5
  import TextField from '@mui/material/TextField';
@@ -17,7 +18,7 @@ const DateRangePicker = ({
17
18
  endDate,
18
19
  setEndDate
19
20
  }) => {
20
- const handleDateChange = React__default.useCallback(
21
+ const handleDateChange = useCallback(
21
22
  (date) => {
22
23
  if (!date) return;
23
24
  if (!startDate || startDate && endDate) {
@@ -31,7 +32,7 @@ const DateRangePicker = ({
31
32
  },
32
33
  [startDate, endDate, setStartDate, setEndDate]
33
34
  );
34
- const handleStartDateChange = React__default.useCallback(
35
+ const handleStartDateChange = useCallback(
35
36
  (date) => {
36
37
  if (!date) return;
37
38
  if (date) {
@@ -46,7 +47,7 @@ const DateRangePicker = ({
46
47
  },
47
48
  [endDate, setStartDate, setEndDate]
48
49
  );
49
- const handleEndDateChange = React__default.useCallback(
50
+ const handleEndDateChange = useCallback(
50
51
  (date) => {
51
52
  if (!date) return;
52
53
  if (date) {
@@ -62,12 +63,12 @@ const DateRangePicker = ({
62
63
  [startDate, setStartDate, setEndDate]
63
64
  );
64
65
  const renderDay = (day, _value, pickersDayProps) => {
65
- if (!startDate) return /* @__PURE__ */ React__default.createElement(PickersDay, { ...pickersDayProps, disableMargin: true });
66
+ if (!startDate) return /* @__PURE__ */ jsx(PickersDay, { ...pickersDayProps, disableMargin: true });
66
67
  const isStart = isSameDay(day, startDate);
67
68
  const isEnd = endDate && isSameDay(day, endDate);
68
69
  const inRange = startDate && endDate && isAfter(day, startDate) && isBefore(day, endDate);
69
70
  if (isStart || isEnd) {
70
- return /* @__PURE__ */ React__default.createElement(
71
+ return /* @__PURE__ */ jsx(
71
72
  PickersDay,
72
73
  {
73
74
  ...pickersDayProps,
@@ -84,7 +85,7 @@ const DateRangePicker = ({
84
85
  );
85
86
  }
86
87
  if (inRange) {
87
- return /* @__PURE__ */ React__default.createElement(
88
+ return /* @__PURE__ */ jsx(
88
89
  PickersDay,
89
90
  {
90
91
  ...pickersDayProps,
@@ -96,64 +97,71 @@ const DateRangePicker = ({
96
97
  }
97
98
  );
98
99
  }
99
- return /* @__PURE__ */ React__default.createElement(PickersDay, { ...pickersDayProps, disableMargin: true });
100
+ return /* @__PURE__ */ jsx(PickersDay, { ...pickersDayProps, disableMargin: true });
100
101
  };
101
- return /* @__PURE__ */ React__default.createElement(LocalizationProvider, { dateAdapter: AdapterDateFns }, /* @__PURE__ */ React__default.createElement(Box, null, /* @__PURE__ */ React__default.createElement(Typography, { variant: "h5", p: 2, pb: 0, fontWeight: "400" }, "Date range"), /* @__PURE__ */ React__default.createElement(Divider, { sx: { mt: 2 } }), /* @__PURE__ */ React__default.createElement(
102
- Grid,
103
- {
104
- container: true,
105
- justifyContent: "space-between",
106
- sx: { width: "100%", margin: "unset" }
107
- },
108
- /* @__PURE__ */ React__default.createElement(Grid, { item: true, xs: 6, sx: { padding: "16px 8px 16px 24px !important" } }, /* @__PURE__ */ React__default.createElement(
109
- DatePicker,
102
+ return /* @__PURE__ */ jsx(LocalizationProvider, { dateAdapter: AdapterDateFns, children: /* @__PURE__ */ jsxs(Box, { children: [
103
+ /* @__PURE__ */ jsx(Typography, { variant: "h5", p: 2, pb: 0, fontWeight: "400", children: "Date range" }),
104
+ /* @__PURE__ */ jsx(Divider, { sx: { mt: 2 } }),
105
+ /* @__PURE__ */ jsxs(
106
+ Grid,
110
107
  {
111
- label: "Start date",
112
- value: startDate,
113
- onChange: handleStartDateChange,
114
- renderInput: (params) => /* @__PURE__ */ React__default.createElement(
115
- TextField,
116
- {
117
- ...params,
118
- sx: { width: 172 },
119
- autoFocus: Boolean(!startDate)
120
- }
121
- ),
122
- maxDate: /* @__PURE__ */ new Date(),
123
- views: ["day"]
108
+ container: true,
109
+ justifyContent: "space-between",
110
+ sx: { width: "100%", margin: "unset" },
111
+ children: [
112
+ /* @__PURE__ */ jsx(Grid, { item: true, xs: 6, sx: { padding: "16px 8px 16px 24px !important" }, children: /* @__PURE__ */ jsx(
113
+ DatePicker,
114
+ {
115
+ label: "Start date",
116
+ value: startDate,
117
+ onChange: handleStartDateChange,
118
+ renderInput: (params) => /* @__PURE__ */ jsx(
119
+ TextField,
120
+ {
121
+ ...params,
122
+ sx: { width: 172 },
123
+ autoFocus: Boolean(!startDate)
124
+ }
125
+ ),
126
+ maxDate: /* @__PURE__ */ new Date(),
127
+ views: ["day"]
128
+ }
129
+ ) }),
130
+ /* @__PURE__ */ jsx(Grid, { item: true, xs: 6, sx: { padding: "16px 24px 16px 8px !important" }, children: /* @__PURE__ */ jsx(
131
+ DatePicker,
132
+ {
133
+ label: "End date",
134
+ value: endDate,
135
+ onChange: handleEndDateChange,
136
+ renderInput: (params) => /* @__PURE__ */ jsx(
137
+ TextField,
138
+ {
139
+ ...params,
140
+ sx: { width: 172 },
141
+ focused: Boolean(startDate && !endDate)
142
+ }
143
+ ),
144
+ maxDate: /* @__PURE__ */ new Date(),
145
+ views: ["day"]
146
+ }
147
+ ) })
148
+ ]
124
149
  }
125
- )),
126
- /* @__PURE__ */ React__default.createElement(Grid, { item: true, xs: 6, sx: { padding: "16px 24px 16px 8px !important" } }, /* @__PURE__ */ React__default.createElement(
127
- DatePicker,
150
+ ),
151
+ /* @__PURE__ */ jsx(
152
+ StaticDatePicker,
128
153
  {
129
- label: "End date",
130
- value: endDate,
131
- onChange: handleEndDateChange,
132
- renderInput: (params) => /* @__PURE__ */ React__default.createElement(
133
- TextField,
134
- {
135
- ...params,
136
- sx: { width: 172 },
137
- focused: Boolean(startDate && !endDate)
138
- }
139
- ),
154
+ displayStaticWrapperAs: "desktop",
155
+ showDaysOutsideCurrentMonth: true,
140
156
  maxDate: /* @__PURE__ */ new Date(),
141
- views: ["day"]
157
+ views: ["day"],
158
+ renderInput: (params) => /* @__PURE__ */ jsx(TextField, { ...params }),
159
+ onChange: handleDateChange,
160
+ value: null,
161
+ renderDay
142
162
  }
143
- ))
144
- ), /* @__PURE__ */ React__default.createElement(
145
- StaticDatePicker,
146
- {
147
- displayStaticWrapperAs: "desktop",
148
- showDaysOutsideCurrentMonth: true,
149
- maxDate: /* @__PURE__ */ new Date(),
150
- views: ["day"],
151
- renderInput: (params) => /* @__PURE__ */ React__default.createElement(TextField, { ...params }),
152
- onChange: handleDateChange,
153
- value: null,
154
- renderDay
155
- }
156
- )));
163
+ )
164
+ ] }) });
157
165
  };
158
166
 
159
167
  export { DateRangePicker as default };
@@ -1 +1 @@
1
- {"version":3,"file":"DateRangePicker.esm.js","sources":["../../../src/components/Header/DateRangePicker.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/no-autofocus */\n/*\n * Copyright Red Hat, Inc.\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 */\nimport React from 'react';\n\nimport Box from '@mui/material/Box';\nimport Grid from '@mui/material/Grid';\nimport TextField from '@mui/material/TextField';\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\nimport { StaticDatePicker } from '@mui/x-date-pickers/StaticDatePicker';\nimport { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';\nimport { PickersDay, PickersDayProps } from '@mui/x-date-pickers/PickersDay';\nimport { isAfter, isBefore, isSameDay } from 'date-fns';\nimport { DatePicker } from '@mui/x-date-pickers';\nimport Divider from '@mui/material/Divider';\nimport Typography from '@mui/material/Typography';\n\ninterface DateRangePickerProps {\n startDate: Date | null;\n setStartDate: React.Dispatch<React.SetStateAction<Date | null>>;\n endDate: Date | null;\n setEndDate: React.Dispatch<React.SetStateAction<Date | null>>;\n}\n\nconst DateRangePicker: React.FC<DateRangePickerProps> = ({\n startDate,\n setStartDate,\n endDate,\n setEndDate,\n}) => {\n const handleDateChange = React.useCallback(\n (date: Date | null) => {\n if (!date) return;\n\n if (!startDate || (startDate && endDate)) {\n setStartDate(date);\n setEndDate(null);\n } else if (isBefore(date, startDate)) {\n setStartDate(date);\n } else {\n setEndDate(date);\n }\n },\n [startDate, endDate, setStartDate, setEndDate],\n );\n\n const handleStartDateChange = React.useCallback(\n (date: Date | null) => {\n if (!date) return;\n\n if (date) {\n const year = date.getFullYear();\n if (year >= 1900 && year <= 2100) {\n if (endDate && isAfter(date, endDate)) {\n setEndDate(null);\n }\n setStartDate(date);\n }\n }\n },\n [endDate, setStartDate, setEndDate],\n );\n\n const handleEndDateChange = React.useCallback(\n (date: Date | null) => {\n if (!date) return;\n\n if (date) {\n const year = date.getFullYear();\n if (year >= 1900 && year <= 2100) {\n if (startDate && isBefore(date, startDate)) {\n setStartDate(null);\n }\n setEndDate(date);\n }\n }\n },\n [startDate, setStartDate, setEndDate],\n );\n\n const renderDay = (\n day: Date,\n _value: Date[],\n pickersDayProps: PickersDayProps<Date>,\n ) => {\n if (!startDate) return <PickersDay {...pickersDayProps} disableMargin />;\n\n const isStart = isSameDay(day, startDate);\n const isEnd = endDate && isSameDay(day, endDate);\n const inRange =\n startDate && endDate && isAfter(day, startDate) && isBefore(day, endDate);\n\n if (isStart || isEnd) {\n return (\n <PickersDay\n {...pickersDayProps}\n sx={{\n backgroundColor: theme => theme.palette.primary.main,\n color: theme => theme.palette.primary.contrastText,\n borderRadius: '50%',\n margin: 0,\n '&:focus': {\n backgroundColor: theme => theme.palette.primary.dark,\n },\n }}\n />\n );\n }\n\n if (inRange) {\n return (\n <PickersDay\n {...pickersDayProps}\n sx={{\n backgroundColor: theme => theme.palette.action.hover,\n borderRadius: 0,\n margin: 0,\n }}\n />\n );\n }\n\n return <PickersDay {...pickersDayProps} disableMargin />;\n };\n\n return (\n <LocalizationProvider dateAdapter={AdapterDateFns}>\n <Box>\n <Typography variant=\"h5\" p={2} pb={0} fontWeight=\"400\">\n Date range\n </Typography>\n <Divider sx={{ mt: 2 }} />\n <Grid\n container\n justifyContent=\"space-between\"\n sx={{ width: '100%', margin: 'unset' }}\n >\n <Grid item xs={6} sx={{ padding: '16px 8px 16px 24px !important' }}>\n <DatePicker\n label=\"Start date\"\n value={startDate}\n onChange={handleStartDateChange}\n renderInput={params => (\n <TextField\n {...params}\n sx={{ width: 172 }}\n autoFocus={Boolean(!startDate)}\n />\n )}\n maxDate={new Date()}\n views={['day']}\n />\n </Grid>\n\n <Grid item xs={6} sx={{ padding: '16px 24px 16px 8px !important' }}>\n <DatePicker\n label=\"End date\"\n value={endDate}\n onChange={handleEndDateChange}\n renderInput={params => (\n <TextField\n {...params}\n sx={{ width: 172 }}\n focused={Boolean(startDate && !endDate)}\n />\n )}\n maxDate={new Date()}\n views={['day']}\n />\n </Grid>\n </Grid>\n\n <StaticDatePicker\n displayStaticWrapperAs=\"desktop\"\n showDaysOutsideCurrentMonth\n maxDate={new Date()}\n views={['day']}\n renderInput={params => <TextField {...params} />}\n onChange={handleDateChange}\n value={null}\n renderDay={renderDay}\n />\n </Box>\n </LocalizationProvider>\n );\n};\n\nexport default DateRangePicker;\n"],"names":["React"],"mappings":"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"}
1
+ {"version":3,"file":"DateRangePicker.esm.js","sources":["../../../src/components/Header/DateRangePicker.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/no-autofocus */\n/*\n * Copyright Red Hat, Inc.\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 */\nimport { useCallback } from 'react';\nimport type { FC, Dispatch, SetStateAction } from 'react';\n\nimport Box from '@mui/material/Box';\nimport Grid from '@mui/material/Grid';\nimport TextField from '@mui/material/TextField';\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\nimport { StaticDatePicker } from '@mui/x-date-pickers/StaticDatePicker';\nimport { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';\nimport { PickersDay, PickersDayProps } from '@mui/x-date-pickers/PickersDay';\nimport { isAfter, isBefore, isSameDay } from 'date-fns';\nimport { DatePicker } from '@mui/x-date-pickers';\nimport Divider from '@mui/material/Divider';\nimport Typography from '@mui/material/Typography';\n\ninterface DateRangePickerProps {\n startDate: Date | null;\n setStartDate: Dispatch<SetStateAction<Date | null>>;\n endDate: Date | null;\n setEndDate: Dispatch<SetStateAction<Date | null>>;\n}\n\nconst DateRangePicker: FC<DateRangePickerProps> = ({\n startDate,\n setStartDate,\n endDate,\n setEndDate,\n}) => {\n const handleDateChange = useCallback(\n (date: Date | null) => {\n if (!date) return;\n\n if (!startDate || (startDate && endDate)) {\n setStartDate(date);\n setEndDate(null);\n } else if (isBefore(date, startDate)) {\n setStartDate(date);\n } else {\n setEndDate(date);\n }\n },\n [startDate, endDate, setStartDate, setEndDate],\n );\n\n const handleStartDateChange = useCallback(\n (date: Date | null) => {\n if (!date) return;\n\n if (date) {\n const year = date.getFullYear();\n if (year >= 1900 && year <= 2100) {\n if (endDate && isAfter(date, endDate)) {\n setEndDate(null);\n }\n setStartDate(date);\n }\n }\n },\n [endDate, setStartDate, setEndDate],\n );\n\n const handleEndDateChange = useCallback(\n (date: Date | null) => {\n if (!date) return;\n\n if (date) {\n const year = date.getFullYear();\n if (year >= 1900 && year <= 2100) {\n if (startDate && isBefore(date, startDate)) {\n setStartDate(null);\n }\n setEndDate(date);\n }\n }\n },\n [startDate, setStartDate, setEndDate],\n );\n\n const renderDay = (\n day: Date,\n _value: Date[],\n pickersDayProps: PickersDayProps<Date>,\n ) => {\n if (!startDate) return <PickersDay {...pickersDayProps} disableMargin />;\n\n const isStart = isSameDay(day, startDate);\n const isEnd = endDate && isSameDay(day, endDate);\n const inRange =\n startDate && endDate && isAfter(day, startDate) && isBefore(day, endDate);\n\n if (isStart || isEnd) {\n return (\n <PickersDay\n {...pickersDayProps}\n sx={{\n backgroundColor: theme => theme.palette.primary.main,\n color: theme => theme.palette.primary.contrastText,\n borderRadius: '50%',\n margin: 0,\n '&:focus': {\n backgroundColor: theme => theme.palette.primary.dark,\n },\n }}\n />\n );\n }\n\n if (inRange) {\n return (\n <PickersDay\n {...pickersDayProps}\n sx={{\n backgroundColor: theme => theme.palette.action.hover,\n borderRadius: 0,\n margin: 0,\n }}\n />\n );\n }\n\n return <PickersDay {...pickersDayProps} disableMargin />;\n };\n\n return (\n <LocalizationProvider dateAdapter={AdapterDateFns}>\n <Box>\n <Typography variant=\"h5\" p={2} pb={0} fontWeight=\"400\">\n Date range\n </Typography>\n <Divider sx={{ mt: 2 }} />\n <Grid\n container\n justifyContent=\"space-between\"\n sx={{ width: '100%', margin: 'unset' }}\n >\n <Grid item xs={6} sx={{ padding: '16px 8px 16px 24px !important' }}>\n <DatePicker\n label=\"Start date\"\n value={startDate}\n onChange={handleStartDateChange}\n renderInput={params => (\n <TextField\n {...params}\n sx={{ width: 172 }}\n autoFocus={Boolean(!startDate)}\n />\n )}\n maxDate={new Date()}\n views={['day']}\n />\n </Grid>\n\n <Grid item xs={6} sx={{ padding: '16px 24px 16px 8px !important' }}>\n <DatePicker\n label=\"End date\"\n value={endDate}\n onChange={handleEndDateChange}\n renderInput={params => (\n <TextField\n {...params}\n sx={{ width: 172 }}\n focused={Boolean(startDate && !endDate)}\n />\n )}\n maxDate={new Date()}\n views={['day']}\n />\n </Grid>\n </Grid>\n\n <StaticDatePicker\n displayStaticWrapperAs=\"desktop\"\n showDaysOutsideCurrentMonth\n maxDate={new Date()}\n views={['day']}\n renderInput={params => <TextField {...params} />}\n onChange={handleDateChange}\n value={null}\n renderDay={renderDay}\n />\n </Box>\n </LocalizationProvider>\n );\n};\n\nexport default DateRangePicker;\n"],"names":[],"mappings":"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"}