emoji-mart-lazyload/stories/index.js

90 lines
3.0 KiB
JavaScript
Raw Normal View History

2017-09-27 20:32:48 +00:00
import React from 'react';
import { storiesOf } from '@storybook/react';
import { action } from '@storybook/addon-actions';
2017-09-28 00:58:02 +00:00
import { withKnobs, text, boolean, number, select, color } from '@storybook/addon-knobs';
2017-09-27 20:32:48 +00:00
2017-09-29 18:32:57 +00:00
import { Picker, Emoji, emojiIndex } from '../dist';
2017-09-27 20:32:48 +00:00
import '../css/emoji-mart.css';
2017-09-28 00:58:02 +00:00
const SETS = ['apple', 'google', 'twitter', 'emojione', 'messenger', 'facebook']
2017-09-28 02:02:47 +00:00
const CUSTOM_EMOJIS = [
{
name: 'Octocat',
short_names: ['octocat'],
keywords: ['github'],
imageUrl: 'https://assets-cdn.github.com/images/icons/emoji/octocat.png?v7'
},
{
name: 'Squirrel',
short_names: ['shipit', 'squirrel'],
keywords: ['github'],
imageUrl: 'https://assets-cdn.github.com/images/icons/emoji/shipit.png?v7'
}
]
2017-09-28 00:58:02 +00:00
2017-09-27 20:32:48 +00:00
storiesOf('Picker', module)
.addDecorator(withKnobs)
.add('default', () => (
<Picker
onClick={action('clicked')}
2018-03-15 19:36:07 +00:00
onSelect={action('selected')}
onSkinChange={action('skin changed')}
2017-09-28 00:58:02 +00:00
native={boolean('Unicode', true)}
set={select('Emoji pack', SETS, SETS[0])}
2017-09-27 20:32:48 +00:00
emojiSize={number('Emoji size', 24)}
perLine={number('Per line', 9)}
title={text('Idle text', 'Your Title Here')}
emoji={text('Idle emoji', 'department_store')}
2018-07-30 21:06:23 +00:00
notFoundEmoji={text('Not found emoji', 'sleuth_or_spy')}
defaultSkin={number('Default skin tone', 1)}
2017-09-28 00:58:02 +00:00
color={color('Highlight color', '#ae65c5')}
showPreview={boolean('Show preview', true)}
showSkinTones={boolean('Show skin tones', true)}
2017-09-28 02:02:47 +00:00
custom={CUSTOM_EMOJIS}
/>))
.add('with a custom not found image', () => (
<Picker
notFound={
() => <img src='https://assets-cdn.github.com/images/icons/emoji/octocat.png?v7' />
}
/>))
.add('with a custom not found SVG', () => (
<Picker
notFound={
() => <svg aria-labelledby="simpleicons-jira-icon" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title id="simpleicons-jira-icon">Jira icon</title><path d="M23.323 11.33L13.001 1 12 0 4.225 7.775.67 11.33a.96.96 0 0 0 0 1.347l7.103 7.103L12 24l7.771-7.771.121-.121 3.431-3.431a.945.945 0 0 0 0-1.347zM12 15.551L8.449 12 12 8.453 15.548 12 12 15.551z"/></svg>
}
/>
2017-09-27 20:32:48 +00:00
));
storiesOf('Emoji', module)
.addDecorator(withKnobs)
.add('default', () => (
<Emoji
2017-09-28 00:58:02 +00:00
native={boolean('Unicode', true)}
set={select('Emoji pack', SETS, SETS[0])}
2017-09-27 20:32:48 +00:00
emoji={text('Emoji', '+1')}
size={number('Emoji size', 64)}
skin={number('Skin tone', 1)}
html={boolean('HTML', false)}
fallback={(emoji) => {
return `:${emoji.short_names[0]}:`
}}
2017-09-27 20:32:48 +00:00
/>
));
2017-09-28 02:20:56 +00:00
storiesOf('Headless Search', module)
.addDecorator(withKnobs)
.add('default', () => {
let results = emojiIndex.search(text('Search', 'christmas'), { custom: CUSTOM_EMOJIS })
if (!results) { return null }
return <div>
{results.map((emoji) => {
return <span key={emoji.id} style={{ marginLeft: '1.4em' }}>
<Emoji native={true} emoji={emoji} size={48} />
</span>
2017-09-28 02:20:56 +00:00
})}
</div>
});