{"version":3,"file":"DataSourcesListPage.7315de5f2dd21cfa5fae.js","mappings":"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","sources":["webpack://grafana/./public/app/core/components/PageActionBar/PageActionBar.tsx","webpack://grafana/./public/app/features/datasources/DataSourcesList.tsx","webpack://grafana/./public/app/features/datasources/DataSourcesListPage.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\n\nimport { LinkButton, FilterInput } from '@grafana/ui';\n\nexport interface Props {\n searchQuery: string;\n setSearchQuery: (value: string) => void;\n linkButton?: { href: string; title: string; disabled?: boolean };\n target?: string;\n placeholder?: string;\n}\n\nexport default class PageActionBar extends PureComponent {\n render() {\n const { searchQuery, linkButton, setSearchQuery, target, placeholder = 'Search by name or type' } = this.props;\n const linkProps: typeof LinkButton.defaultProps = { href: linkButton?.href, disabled: linkButton?.disabled };\n\n if (target) {\n linkProps.target = target;\n }\n\n return (\n
\n
\n \n
\n {linkButton && {linkButton.title}}\n
\n );\n }\n}\n","// Libraries\nimport { css } from '@emotion/css';\nimport React, { FC } from 'react';\n\n// Types\nimport { DataSourceSettings, LayoutMode } from '@grafana/data';\nimport { Card, Tag, useStyles } from '@grafana/ui';\n\nexport interface Props {\n dataSources: DataSourceSettings[];\n layoutMode: LayoutMode;\n}\n\nexport const DataSourcesList: FC = ({ dataSources, layoutMode }) => {\n const styles = useStyles(getStyles);\n\n return (\n \n );\n};\n\nexport default DataSourcesList;\n\nconst getStyles = () => {\n return {\n list: css({\n listStyle: 'none',\n display: 'grid',\n // gap: '8px', Add back when legacy support for old Card interface is dropped\n }),\n logo: css({\n objectFit: 'contain',\n }),\n };\n};\n","import React, { PureComponent } from 'react';\nimport { connect, ConnectedProps } from 'react-redux';\n\nimport { IconName } from '@grafana/ui';\nimport EmptyListCTA from 'app/core/components/EmptyListCTA/EmptyListCTA';\nimport Page from 'app/core/components/Page/Page';\nimport PageActionBar from 'app/core/components/PageActionBar/PageActionBar';\nimport { contextSrv } from 'app/core/core';\nimport { getNavModel } from 'app/core/selectors/navModel';\nimport { StoreState, AccessControlAction } from 'app/types';\n\nimport DataSourcesList from './DataSourcesList';\nimport { loadDataSources } from './state/actions';\nimport { setDataSourcesLayoutMode, setDataSourcesSearchQuery } from './state/reducers';\nimport {\n getDataSources,\n getDataSourcesCount,\n getDataSourcesLayoutMode,\n getDataSourcesSearchQuery,\n} from './state/selectors';\n\nfunction mapStateToProps(state: StoreState) {\n return {\n navModel: getNavModel(state.navIndex, 'datasources'),\n dataSources: getDataSources(state.dataSources),\n layoutMode: getDataSourcesLayoutMode(state.dataSources),\n dataSourcesCount: getDataSourcesCount(state.dataSources),\n searchQuery: getDataSourcesSearchQuery(state.dataSources),\n hasFetched: state.dataSources.hasFetched,\n };\n}\n\nconst mapDispatchToProps = {\n loadDataSources,\n setDataSourcesSearchQuery,\n setDataSourcesLayoutMode,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport type Props = ConnectedProps;\n\nconst emptyListModel = {\n title: 'No data sources defined',\n buttonIcon: 'database' as IconName,\n buttonLink: 'datasources/new',\n buttonTitle: 'Add data source',\n proTip: 'You can also define data sources through configuration files.',\n proTipLink: 'http://docs.grafana.org/administration/provisioning/#datasources?utm_source=grafana_ds_list',\n proTipLinkTitle: 'Learn more',\n proTipTarget: '_blank',\n};\n\nexport class DataSourcesListPage extends PureComponent {\n componentDidMount() {\n this.props.loadDataSources();\n }\n\n render() {\n const { dataSources, dataSourcesCount, navModel, layoutMode, searchQuery, setDataSourcesSearchQuery, hasFetched } =\n this.props;\n\n const canCreateDataSource = contextSrv.hasPermission(AccessControlAction.DataSourcesCreate);\n\n const linkButton = {\n href: 'datasources/new',\n title: 'Add data source',\n disabled: !canCreateDataSource,\n };\n\n const emptyList = {\n ...emptyListModel,\n buttonDisabled: !canCreateDataSource,\n };\n\n return (\n \n \n <>\n {hasFetched && dataSourcesCount === 0 && }\n {hasFetched &&\n dataSourcesCount > 0 && [\n setDataSourcesSearchQuery(query)}\n linkButton={linkButton}\n key=\"action-bar\"\n />,\n ,\n ]}\n \n \n \n );\n }\n}\n\nexport default connector(DataSourcesListPage);\n"],"names":["PageActionBar","PureComponent","render","searchQuery","linkButton","setSearchQuery","target","placeholder","this","props","linkProps","href","disabled","className","FilterInput","value","onChange","LinkButton","title","dataSources","layoutMode","styles","useStyles","getStyles","list","map","dataSource","Card","uid","name","src","typeLogoUrl","alt","height","width","logo","typeName","url","isDefault","Tag","colorIndex","id","css","listStyle","display","objectFit","mapDispatchToProps","loadDataSources","setDataSourcesSearchQuery","setDataSourcesLayoutMode","connector","connect","state","navModel","getNavModel","navIndex","getDataSources","getDataSourcesLayoutMode","dataSourcesCount","getDataSourcesCount","getDataSourcesSearchQuery","hasFetched","emptyListModel","buttonIcon","buttonLink","buttonTitle","proTip","proTipLink","proTipLinkTitle","proTipTarget","DataSourcesListPage","componentDidMount","canCreateDataSource","contextSrv","AccessControlAction","emptyList","buttonDisabled","Page","isLoading","EmptyListCTA","query"],"sourceRoot":""}