signal-desktop/ts/components/ContactPills.stories.tsx

90 lines
2.5 KiB
TypeScript
Raw Normal View History

2021-03-03 20:09:58 +00:00
// Copyright 2021 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import React from 'react';
import { times } from 'lodash';
import { storiesOf } from '@storybook/react';
import { action } from '@storybook/addon-actions';
2021-09-18 00:30:08 +00:00
import { setupI18n } from '../util/setupI18n';
2021-03-03 20:09:58 +00:00
import enMessages from '../../_locales/en/messages.json';
import { ContactPills } from './ContactPills';
import type { PropsType as ContactPillPropsType } from './ContactPill';
import { ContactPill } from './ContactPill';
2021-03-03 20:09:58 +00:00
import { gifUrl } from '../storybook/Fixtures';
2021-05-07 22:21:10 +00:00
import { getDefaultConversation } from '../test-both/helpers/getDefaultConversation';
2021-03-03 20:09:58 +00:00
const i18n = setupI18n('en', enMessages);
const story = storiesOf('Components/Contact Pills', module);
type ContactType = Omit<ContactPillPropsType, 'i18n' | 'onClickRemove'>;
2021-05-07 22:21:10 +00:00
const contacts: Array<ContactType> = times(50, index =>
getDefaultConversation({
id: `contact-${index}`,
name: `Contact ${index}`,
phoneNumber: '(202) 555-0001',
profileName: `C${index}`,
title: `Contact ${index}`,
})
);
2021-03-03 20:09:58 +00:00
const contactPillProps = (
overrideProps?: ContactType
): ContactPillPropsType => ({
2021-09-03 21:39:46 +00:00
...(overrideProps ??
2021-05-07 22:21:10 +00:00
getDefaultConversation({
avatarPath: gifUrl,
firstName: 'John',
id: 'abc123',
isMe: false,
name: 'John Bon Bon Jovi',
phoneNumber: '(202) 555-0001',
profileName: 'JohnB',
title: 'John Bon Bon Jovi',
})),
2021-03-03 20:09:58 +00:00
i18n,
onClickRemove: action('onClickRemove'),
});
story.add('Empty list', () => <ContactPills />);
story.add('One contact', () => (
<ContactPills>
<ContactPill {...contactPillProps()} />
</ContactPills>
));
story.add('Three contacts', () => (
<ContactPills>
<ContactPill {...contactPillProps(contacts[0])} />
<ContactPill {...contactPillProps(contacts[1])} />
<ContactPill {...contactPillProps(contacts[2])} />
</ContactPills>
));
story.add('Four contacts, one with a long name', () => (
<ContactPills>
<ContactPill {...contactPillProps(contacts[0])} />
<ContactPill
{...contactPillProps({
...contacts[1],
title:
'Pablo Diego José Francisco de Paula Juan Nepomuceno María de los Remedios Cipriano de la Santísima Trinidad Ruiz y Picasso',
})}
/>
<ContactPill {...contactPillProps(contacts[2])} />
<ContactPill {...contactPillProps(contacts[3])} />
</ContactPills>
));
story.add('Fifty contacts', () => (
<ContactPills>
{contacts.map(contact => (
<ContactPill key={contact.id} {...contactPillProps(contact)} />
))}
</ContactPills>
));