Skip to content

Commit

Permalink
Added an EuiEmptyState to Credentials
Browse files Browse the repository at this point in the history
  • Loading branch information
JasonStoltz committed Oct 8, 2020
1 parent 473c1d2 commit 964a488
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import React from 'react';
import { shallow } from 'enzyme';

import { CredentialsList } from './credentials_list';
import { EuiBasicTable, EuiCopy } from '@elastic/eui';
import { EuiBasicTable, EuiCopy, EuiEmptyPrompt } from '@elastic/eui';
import { IApiToken } from '../types';
import { ApiTokenTypes } from '../constants';

Expand All @@ -26,7 +26,7 @@ describe('Credentials', () => {

// Kea mocks
const values = {
apiTokens: [],
apiTokens: [apiToken],
meta: {
page: {
current: 1,
Expand Down Expand Up @@ -78,6 +78,19 @@ describe('Credentials', () => {
});
});

describe('empty state', () => {
it('renders an EuiEmptyState when no credentials are available', () => {
setMockValues({
...values,
apiTokens: [],
});

const wrapper = shallow(<CredentialsList />);
expect(wrapper.exists(EuiEmptyPrompt)).toBe(true);
expect(wrapper.exists(EuiBasicTable)).toBe(false);
});
});

describe('pagination', () => {
it('derives pagination from meta object', () => {
setMockValues({
Expand All @@ -103,6 +116,7 @@ describe('Credentials', () => {

it('will default pagination values if `page` is not available', () => {
setMockValues({ ...values, meta: {} });

const wrapper = shallow(<CredentialsList />);
const { pagination } = wrapper.find(EuiBasicTable).props();
expect(pagination).toEqual({
Expand All @@ -117,7 +131,7 @@ describe('Credentials', () => {
describe('columns', () => {
let columns: any[];

beforeAll(() => {
beforeEach(() => {
const wrapper = shallow(<CredentialsList />);
columns = wrapper.find(EuiBasicTable).props().columns;
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,13 @@
*/

import React, { useMemo } from 'react';
import { EuiBasicTable, EuiBasicTableColumn, EuiButtonIcon, EuiCopy } from '@elastic/eui';
import {
EuiBasicTable,
EuiBasicTableColumn,
EuiButtonIcon,
EuiCopy,
EuiEmptyPrompt,
} from '@elastic/eui';
import { CriteriaWithPagination } from '@elastic/eui/src/components/basic_table/basic_table';
import { useActions, useValues } from 'kea';

Expand Down Expand Up @@ -113,6 +119,28 @@ export const CredentialsList: React.FC = () => {
hidePerPageOptions: true,
};

if (items.length < 1) {
return (
<EuiEmptyPrompt
iconType="editorStrike"
title={
<h2>
{i18n.translate('xpack.enterpriseSearch.appSearch.credentials.empty.title', {
defaultMessage: 'No API Keys have been created yet.',
})}
</h2>
}
body={
<p>
{i18n.translate('xpack.enterpriseSearch.appSearch.credentials.empty.body', {
defaultMessage: 'Click Create a key to make your first one.',
})}
</p>
}
/>
);
}

const onTableChange = ({ page }: CriteriaWithPagination<IApiToken>) => {
const { index: current } = page;
fetchCredentials(current + 1);
Expand Down

0 comments on commit 964a488

Please sign in to comment.