{"version":3,"file":"ListPublicDashboardPage.469a693c4011a5193fcd.js","mappings":"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","sources":["webpack://grafana/./public/app/features/manage-dashboards/components/PublicDashboardListTable/DeletePublicDashboardButton.tsx","webpack://grafana/./public/app/features/manage-dashboards/components/PublicDashboardListTable/PublicDashboardListTable.tsx","webpack://grafana/./public/app/features/manage-dashboards/PublicDashboardListPage.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Button, ModalsController, ButtonProps } from '@grafana/ui/src';\nimport { t } from 'app/core/internationalization';\nimport { useDeletePublicDashboardMutation } from 'app/features/dashboard/api/publicDashboardApi';\nimport { DashboardModel } from 'app/features/dashboard/state/DashboardModel';\n\nimport { DeletePublicDashboardModal } from './DeletePublicDashboardModal';\n\nexport interface PublicDashboardDeletion {\n uid: string;\n dashboardUid: string;\n title: string;\n}\n\nexport const DeletePublicDashboardButton = ({\n dashboard,\n publicDashboard,\n loader,\n children,\n onDismiss,\n ...rest\n}: {\n dashboard?: DashboardModel;\n publicDashboard: PublicDashboardDeletion;\n loader?: JSX.Element;\n children?: React.ReactNode;\n onDismiss?: () => void;\n} & ButtonProps) => {\n const [deletePublicDashboard, { isLoading }] = useDeletePublicDashboardMutation();\n\n const onDeletePublicDashboardClick = (pd: PublicDashboardDeletion, onDelete: () => void) => {\n deletePublicDashboard({\n dashboard,\n uid: pd.uid,\n dashboardUid: pd.dashboardUid,\n });\n onDelete();\n };\n\n return (\n \n {({ showModal, hideModal }) => {\n const translatedRevocationButtonText = t(\n 'public-dashboard-list.button.revoke-button-text',\n 'Revoke public URL'\n );\n return (\n \n showModal(DeletePublicDashboardModal, {\n dashboardTitle: publicDashboard.title,\n onConfirm: () => onDeletePublicDashboardClick(publicDashboard, hideModal),\n onDismiss: () => {\n onDismiss ? onDismiss() : hideModal();\n },\n })\n }\n {...rest}\n >\n {isLoading && loader ? loader : children}\n \n );\n }}\n \n );\n};\n","import { css } from '@emotion/css';\nimport React, { useMemo, useState } from 'react';\nimport { useMedia } from 'react-use';\n\nimport { GrafanaTheme2 } from '@grafana/data/src';\nimport { selectors as e2eSelectors } from '@grafana/e2e-selectors/src';\nimport { reportInteraction } from '@grafana/runtime';\nimport {\n LinkButton,\n useStyles2,\n Spinner,\n Card,\n useTheme2,\n Tooltip,\n Icon,\n Switch,\n Pagination,\n HorizontalGroup,\n} from '@grafana/ui/src';\nimport { Page } from 'app/core/components/Page/Page';\nimport { Trans, t } from 'app/core/internationalization';\nimport { contextSrv } from 'app/core/services/context_srv';\nimport {\n useListPublicDashboardsQuery,\n useUpdatePublicDashboardMutation,\n} from 'app/features/dashboard/api/publicDashboardApi';\nimport {\n generatePublicDashboardConfigUrl,\n generatePublicDashboardUrl,\n} from 'app/features/dashboard/components/ShareModal/SharePublicDashboard/SharePublicDashboardUtils';\nimport { AccessControlAction } from 'app/types';\n\nimport { PublicDashboardListResponse } from '../../types';\n\nimport { DeletePublicDashboardButton } from './DeletePublicDashboardButton';\n\nconst PublicDashboardCard = ({ pd }: { pd: PublicDashboardListResponse }) => {\n const styles = useStyles2(getStyles);\n const theme = useTheme2();\n const isMobile = useMedia(`(max-width: ${theme.breakpoints.values.sm}px)`);\n\n const [update, { isLoading: isUpdateLoading }] = useUpdatePublicDashboardMutation();\n\n const selectors = e2eSelectors.pages.PublicDashboards;\n const hasWritePermissions = contextSrv.hasPermission(AccessControlAction.DashboardsPublicWrite);\n const isOrphaned = !pd.dashboardUid;\n\n const onTogglePause = (pd: PublicDashboardListResponse, isPaused: boolean) => {\n const req = {\n dashboard: { uid: pd.dashboardUid },\n payload: {\n uid: pd.uid,\n isEnabled: !isPaused,\n },\n };\n\n update(req);\n };\n\n const CardActions = useMemo(() => (isMobile ? Card.Actions : Card.SecondaryActions), [isMobile]);\n const translatedPauseSharingText = t('public-dashboard-list.toggle.pause-sharing-toggle-text', 'Pause sharing');\n\n return (\n \n \n {!isOrphaned ? (\n {pd.title}\n ) : (\n \n
\n \n Orphaned public dashboard\n \n \n
\n \n )}\n
\n \n
\n {\n reportInteraction('grafana_dashboards_public_enable_clicked', {\n action: e.currentTarget.checked ? 'disable' : 'enable',\n });\n onTogglePause(pd, e.currentTarget.checked);\n }}\n data-testid={selectors.ListItem.pauseSwitch}\n />\n {translatedPauseSharingText}\n
\n \n \n {hasWritePermissions && (\n }\n data-testid={selectors.ListItem.trashcanButton}\n />\n )}\n
\n
\n );\n};\n\nexport const PublicDashboardListTable = () => {\n const [page, setPage] = useState(1);\n\n const styles = useStyles2(getStyles);\n const { data: paginatedPublicDashboards, isLoading, isFetching, isError } = useListPublicDashboardsQuery(page);\n\n return (\n }>\n \n {!isLoading && !isError && !!paginatedPublicDashboards && (\n
\n
    \n {paginatedPublicDashboards.publicDashboards.map((pd: PublicDashboardListResponse) => (\n
  • \n \n
  • \n ))}\n
\n \n \n \n
\n )}\n
\n
\n );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n list: css`\n list-style-type: none;\n margin-bottom: ${theme.spacing(2)};\n `,\n card: css`\n ${theme.breakpoints.up('sm')} {\n display: flex;\n }\n `,\n heading: css`\n display: flex;\n align-items: center;\n gap: ${theme.spacing(1)};\n flex: 1;\n `,\n orphanedTitle: css`\n display: flex;\n align-items: center;\n gap: ${theme.spacing(1)};\n `,\n actions: css`\n display: flex;\n align-items: center;\n position: relative;\n\n gap: ${theme.spacing(0.5)};\n ${theme.breakpoints.up('sm')} {\n gap: ${theme.spacing(1)};\n }\n `,\n pauseSwitch: css`\n display: flex;\n gap: ${theme.spacing(1)};\n align-items: center;\n font-size: ${theme.typography.bodySmall.fontSize};\n margin-bottom: 0;\n flex: 1;\n\n ${theme.breakpoints.up('sm')} {\n padding-right: ${theme.spacing(2)};\n }\n `,\n});\n","import React from 'react';\n\nimport { PublicDashboardListTable } from './components/PublicDashboardListTable/PublicDashboardListTable';\n\nexport const ListPublicDashboardPage = ({}) => {\n return ;\n};\n\nexport default ListPublicDashboardPage;\n"],"names":["DeletePublicDashboardButton","dashboard","publicDashboard","loader","children","onDismiss","rest","deletePublicDashboard","isLoading","onDeletePublicDashboardClick","pd","onDelete","showModal","hideModal","translatedRevocationButtonText","Button","DeletePublicDashboardModal","PublicDashboardCard","styles","getStyles","theme","isMobile","useMedia","update","isUpdateLoading","selectors","hasWritePermissions","isOrphaned","onTogglePause","isPaused","req","CardActions","Card","translatedPauseSharingText","Tooltip","Icon","Switch","e","Spinner","PublicDashboardListTable","page","setPage","paginatedPublicDashboards","isFetching","isError","Page","Pagination","ListPublicDashboardPage"],"sourceRoot":""}