{"version":3,"file":"AdminListOrgsPage.f01c8496fd635e20124b.js","mappings":"mRAeA,MAAMA,EAAiB,IACrB,gBAAC,aACC,gBAAC,UACC,gBAAC,UAAG,IAAE,EACN,gBAAC,UAAG,MAAI,EACR,gBAAC,MAAG,MAAO,CAAE,MAAO,IAAK,EAAG,CAC9B,CACF,EAGF,SAASC,EAAwB,CAAE,KAAAC,EAAM,SAAAC,CAAS,EAAU,CAC1D,MAAMC,EAAgB,KAAW,cAAc,sBAAoB,UAAU,EAEvE,CAACC,EAAWC,CAAY,KAAI,YAAuB,EACzD,OACE,gBAAC,SAAM,UAAU,gDACdN,EAAe,EAChB,gBAAC,aACEE,EAAK,IAAKK,GACT,gBAAC,MAAG,IAAK,GAAGA,EAAI,MAAMA,EAAI,QACxB,gBAAC,MAAG,UAAU,WACZ,gBAAC,KAAE,KAAM,mBAAmBA,EAAI,MAAOA,EAAI,EAAG,CAChD,EACA,gBAAC,MAAG,UAAU,WACZ,gBAAC,KAAE,KAAM,mBAAmBA,EAAI,MAAOA,EAAI,IAAK,CAClD,EACA,gBAAC,MAAG,UAAU,cACZ,gBAACC,EAAA,IACC,QAAQ,cACR,KAAK,KACL,KAAK,QACL,QAAS,IAAMF,EAAaC,CAAG,EAC/B,aAAW,aACX,SAAU,CAACH,CAAA,CACb,CACF,CACF,CACD,CACH,EACCC,GACC,gBAACI,EAAA,GACC,OAAM,GACN,KAAK,YACL,MAAM,SACN,KACE,gBAAC,WAAI,oCACoCJ,EAAU,KAAK,KACtD,gBAAC,SAAG,EAAE,IAAC,gBAAC,aAAM,uDAAqD,CACrE,EAEF,YAAY,SACZ,UAAW,IAAMC,EAAa,MAAS,EACvC,UAAW,IAAM,CACfH,EAASE,EAAU,EAAE,EACrBC,EAAa,MAAS,CACxB,EACF,CAEJ,CAEJ,CAEA,MAAMI,EAA4C,CAAC,CAAE,UAAAC,CAAU,IAAM,CACnE,MAAMC,KAAS,MAAWC,CAAiB,EAC3C,OACE,gBAAC,SAAM,UAAU,eAAgB,GAAGF,CAAA,EACjCX,EAAe,EAChB,gBAAC,aACE,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI,EAAE,IAAI,CAACc,EAAGC,IAC/B,gBAAC,MAAG,IAAKA,CAAA,EACP,gBAAC,UACC,gBAAC,IAAQ,CAAC,MAAO,GAAI,CACvB,EACA,gBAAC,UACC,gBAAC,IAAQ,CAAC,MAAO,IAAK,CACxB,EACA,gBAAC,UACC,gBAAC,IAAQ,CAAC,mBAAoBH,EAAO,aAAc,MAAO,GAAI,OAAQ,GAAI,CAC5E,CACF,CACD,CACH,CACF,CAEJ,EAEaI,KAAiB,KAAef,EAAyBS,CAAsB,EAEtFG,EAAqBI,IAA0B,CACnD,gBAAc,OAAI,CAChB,WAAY,SACZ,QAAS,OACT,OAAQ,GACR,WAAY,CACd,CAAC,CACH,GCnGMZ,EAAY,MAAOa,GAChB,QAAM,MAAc,EAAE,OAAO,aAAeA,CAAK,EAGpDC,EAAU,SACP,QAAM,MAAc,EAAE,IAAoB,WAAW,EAGxDC,EAAmBC,MAChB,MAAaA,CAAK,EAAIA,GAAO,MAAM,QAAU,gCAGvC,SAASC,GAAqB,CAC3C,KAAM,CAACC,EAAOC,CAAS,KAAIC,EAAA,SAAW,SAAY,MAAMN,EAAQ,EAAG,CAAC,CAAC,EAC/DO,EAAe,KAAW,cAAc,sBAAoB,UAAU,EAE5E,sBAAU,IAAM,CACdF,EAAU,CACZ,EAAG,CAACA,CAAS,CAAC,EAGZ,gBAACG,EAAA,GACC,MAAM,cACN,QACE,gBAAC,KAAU,CAAC,KAAK,OAAO,KAAK,UAAU,SAAU,CAACD,CAAA,EAAc,SAEhE,GAGF,gBAACC,EAAA,EAAK,SAAL,KACEJ,EAAM,OAASH,EAAgBG,EAAM,KAAK,EAC1CA,EAAM,SAAW,gBAACP,EAAe,SAAf,IAAwB,EAC1CO,EAAM,OACL,gBAACP,EAAA,CACC,KAAMO,EAAM,MACZ,SAAWL,GAAU,CACnBb,EAAUa,CAAK,EAAE,KAAK,IAAMM,EAAU,CAAC,CACzC,EACF,CAEJ,CACF,CAEJ,C","sources":["webpack://grafana/./public/app/features/admin/AdminOrgsTable.tsx","webpack://grafana/./public/app/features/admin/AdminListOrgsPage.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport React, { useState } from 'react';\nimport Skeleton from 'react-loading-skeleton';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { Button, ConfirmModal, useStyles2 } from '@grafana/ui';\nimport { SkeletonComponent, attachSkeleton } from '@grafana/ui/src/unstable';\nimport { contextSrv } from 'app/core/core';\nimport { AccessControlAction, Organization } from 'app/types';\n\ninterface Props {\n orgs: Organization[];\n onDelete: (orgId: number) => void;\n}\n\nconst getTableHeader = () => (\n \n \n ID\n Name\n \n \n \n);\n\nfunction AdminOrgsTableComponent({ orgs, onDelete }: Props) {\n const canDeleteOrgs = contextSrv.hasPermission(AccessControlAction.OrgsDelete);\n\n const [deleteOrg, setDeleteOrg] = useState();\n return (\n \n {getTableHeader()}\n \n {orgs.map((org) => (\n \n \n \n \n \n ))}\n \n {deleteOrg && (\n \n Are you sure you want to delete '{deleteOrg.name}'?\n
All dashboards for this organization will be removed!\n \n }\n confirmText=\"Delete\"\n onDismiss={() => setDeleteOrg(undefined)}\n onConfirm={() => {\n onDelete(deleteOrg.id);\n setDeleteOrg(undefined);\n }}\n />\n )}\n
\n {org.id}\n \n {org.name}\n \n setDeleteOrg(org)}\n aria-label=\"Delete org\"\n disabled={!canDeleteOrgs}\n />\n
\n );\n}\n\nconst AdminOrgsTableSkeleton: SkeletonComponent = ({ rootProps }) => {\n const styles = useStyles2(getSkeletonStyles);\n return (\n \n {getTableHeader()}\n \n {new Array(3).fill(null).map((_, index) => (\n \n \n \n \n \n ))}\n \n
\n \n \n \n \n \n
\n );\n};\n\nexport const AdminOrgsTable = attachSkeleton(AdminOrgsTableComponent, AdminOrgsTableSkeleton);\n\nconst getSkeletonStyles = (theme: GrafanaTheme2) => ({\n deleteButton: css({\n alignItems: 'center',\n display: 'flex',\n height: 30,\n lineHeight: 1,\n }),\n});\n","import React, { useEffect } from 'react';\nimport useAsyncFn from 'react-use/lib/useAsyncFn';\n\nimport { getBackendSrv, isFetchError } from '@grafana/runtime';\nimport { LinkButton } from '@grafana/ui';\nimport { Page } from 'app/core/components/Page/Page';\nimport { contextSrv } from 'app/core/services/context_srv';\nimport { AccessControlAction, Organization } from 'app/types';\n\nimport { AdminOrgsTable } from './AdminOrgsTable';\n\nconst deleteOrg = async (orgId: number) => {\n return await getBackendSrv().delete('/api/orgs/' + orgId);\n};\n\nconst getOrgs = async () => {\n return await getBackendSrv().get('/api/orgs');\n};\n\nconst getErrorMessage = (error: Error) => {\n return isFetchError(error) ? error?.data?.message : 'An unexpected error happened.';\n};\n\nexport default function AdminListOrgsPages() {\n const [state, fetchOrgs] = useAsyncFn(async () => await getOrgs(), []);\n const canCreateOrg = contextSrv.hasPermission(AccessControlAction.OrgsCreate);\n\n useEffect(() => {\n fetchOrgs();\n }, [fetchOrgs]);\n\n return (\n \n New org\n \n }\n >\n \n {state.error && getErrorMessage(state.error)}\n {state.loading && }\n {state.value && (\n {\n deleteOrg(orgId).then(() => fetchOrgs());\n }}\n />\n )}\n \n \n );\n}\n"],"names":["getTableHeader","AdminOrgsTableComponent","orgs","onDelete","canDeleteOrgs","deleteOrg","setDeleteOrg","org","Button","ConfirmModal","AdminOrgsTableSkeleton","rootProps","styles","getSkeletonStyles","_","index","AdminOrgsTable","theme","orgId","getOrgs","getErrorMessage","error","AdminListOrgsPages","state","fetchOrgs","useAsyncFn","canCreateOrg","Page"],"sourceRoot":""}