diff --git a/ts/components/conversation/MessageBody.md b/ts/components/conversation/MessageBody.md deleted file mode 100644 index 428f9a673e..0000000000 --- a/ts/components/conversation/MessageBody.md +++ /dev/null @@ -1,73 +0,0 @@ -### All components: emoji, links, newline - -```jsx - -``` - -### Jumbo emoji - -```jsx - -``` - -```jsx - -``` - -```jsx - -``` - -```jsx - -``` - -```jsx - -``` - -```jsx - -``` - -### Jumbomoji disabled - -```jsx - -``` - -### Links disabled - -```jsx - -``` - -### Emoji in link - -```jsx - -``` - -### Text pending - -```jsx - -``` - -### Text pending, disable links - -```jsx - -``` diff --git a/ts/components/conversation/MessageBody.stories.tsx b/ts/components/conversation/MessageBody.stories.tsx new file mode 100644 index 0000000000..e79da34917 --- /dev/null +++ b/ts/components/conversation/MessageBody.stories.tsx @@ -0,0 +1,94 @@ +import * as React from 'react'; + +import { boolean, text } from '@storybook/addon-knobs'; +import { storiesOf } from '@storybook/react'; + +import { MessageBody, Props } from './MessageBody'; + +// @ts-ignore +import { setup as setupI18n } from '../../../js/modules/i18n'; +// @ts-ignore +import enMessages from '../../../_locales/en/messages.json'; +const i18n = setupI18n('en', enMessages); + +const story = storiesOf('Components/Conversation/MessageBody', module); + +const createProps = (overrideProps: Partial = {}): Props => ({ + disableJumbomoji: boolean( + 'disableJumbomoji', + overrideProps.disableJumbomoji || false + ), + disableLinks: boolean('disableLinks', overrideProps.disableLinks || false), + i18n, + text: text('text', overrideProps.text || ''), + textPending: boolean('textPending', overrideProps.textPending || false), +}); + +story.add('Links Enabled', () => { + const props = createProps({ + text: 'Check out https://www.signal.org', + }); + + return ; +}); + +story.add('Links Disabled', () => { + const props = createProps({ + disableLinks: true, + text: 'Check out https://www.signal.org', + }); + + return ; +}); + +story.add('Emoji Size Based On Count', () => { + const props = createProps(); + + return ( + <> + +
+ +
+ +
+ +
+ + + ); +}); + +story.add('Jumbomoji Enabled', () => { + const props = createProps({ + text: '😹', + }); + + return ; +}); + +story.add('Jumbomoji Disabled', () => { + const props = createProps({ + disableJumbomoji: true, + text: '😹', + }); + + return ; +}); + +story.add('Jumbomoji Disabled by Text', () => { + const props = createProps({ + text: 'not a jumbo kitty 😹', + }); + + return ; +}); + +story.add('Text Pending', () => { + const props = createProps({ + text: 'Check out https://www.signal.org', + textPending: true, + }); + + return ; +}); diff --git a/ts/components/conversation/MessageBody.tsx b/ts/components/conversation/MessageBody.tsx index c4b7ce2496..9a537f2a43 100644 --- a/ts/components/conversation/MessageBody.tsx +++ b/ts/components/conversation/MessageBody.tsx @@ -7,7 +7,7 @@ import { Linkify } from './Linkify'; import { LocalizerType, RenderTextCallbackType } from '../../types/Util'; -interface Props { +export interface Props { text: string; textPending?: boolean; /** If set, all emoji will be the same size. Otherwise, just one emoji will be large. */