Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
4ad1377
Adding new component
elizabetdev Mar 17, 2022
cd601f7
WIP
elizabetdev Mar 17, 2022
28e5452
WIP
elizabetdev Mar 17, 2022
8ef5d79
WIP
elizabetdev Mar 18, 2022
3e8b794
WIP event props
elizabetdev Mar 18, 2022
42890a4
`isFigure`
elizabetdev Mar 21, 2022
b9a059e
Simplifying props structure to avoid objects
elizabetdev Mar 21, 2022
c3fd70e
Updated `textSize` in markdown editor example
elizabetdev Mar 21, 2022
74217da
Small fixes
elizabetdev Mar 21, 2022
f0a0927
`panelProps` as object
elizabetdev Mar 21, 2022
4133d83
Better text
elizabetdev Mar 22, 2022
6867384
Fixing rest props
elizabetdev Mar 22, 2022
d8347d1
Updating shade color to subdued in EuiAvatar
elizabetdev Mar 22, 2022
29982a1
No more `panelProps`
elizabetdev Mar 22, 2022
c666cd4
Adding `isCenterAligned` prop
elizabetdev Mar 22, 2022
a6a1fc3
Snippets
elizabetdev Mar 22, 2022
e1ebaef
Adding `verticalAlign` prop
elizabetdev Mar 23, 2022
19672ef
Adding tests
elizabetdev Mar 23, 2022
30a71c0
Merge remote-tracking branch 'upstream/main' into add-timeline-component
elizabetdev Mar 23, 2022
1f6efa7
Adding CL
elizabetdev Mar 23, 2022
30d412d
Updating avatar example to use color `"subdued"`
elizabetdev Mar 23, 2022
814eaee
Avatar names
elizabetdev Mar 23, 2022
91abc7c
Using `euiPaletteColorBlindBehindText` to ensure better contrast
elizabetdev Mar 28, 2022
1303ac0
Merge remote-tracking branch 'upstream/main' into add-timeline-component
elizabetdev Mar 28, 2022
00f8beb
refactor
thompsongl Mar 31, 2022
efc6686
clean up
thompsongl Mar 31, 2022
cb10c9a
Merge remote-tracking branch 'upstream/main' into add-timeline-component
elizabetdev Apr 1, 2022
e5f8633
Addressing PR review
elizabetdev Apr 1, 2022
4d0c823
Converting styles to emotion
elizabetdev Apr 1, 2022
d04d03d
Merge pull request #28 from thompsongl/add-timeline-component
elizabetdev Apr 1, 2022
f0d4c5c
Merge branch 'add-timeline-component' of https://github.com/miukimiu/…
elizabetdev Apr 1, 2022
2ccabed
Better complex example
elizabetdev Apr 1, 2022
83176c6
Adding playground
elizabetdev Apr 1, 2022
728b1bb
Linking `steps` and `comments` components
elizabetdev Apr 1, 2022
7b7fbb6
Updating tests
elizabetdev Apr 1, 2022
acb1d09
Adding design consideration text
elizabetdev Apr 5, 2022
9299b47
More design considerations
elizabetdev Apr 5, 2022
a128f3a
Merge remote-tracking branch 'upstream/main' into add-timeline-component
elizabetdev Apr 5, 2022
7c3644c
Merge remote-tracking branch 'upstream/main' into add-timeline-component
elizabetdev Apr 5, 2022
f6bf949
Better `::before` styles
elizabetdev Apr 5, 2022
d1b6acf
Emotion styles
elizabetdev Apr 6, 2022
b4fa0b9
Fixing prop description
elizabetdev Apr 6, 2022
049e8aa
Merge remote-tracking branch 'upstream/main' into add-timeline-component
elizabetdev Apr 6, 2022
c17cf4d
WIP
elizabetdev Apr 7, 2022
f9067ee
Tests
elizabetdev Apr 7, 2022
940b175
Fixing `min-height` issue
elizabetdev Apr 7, 2022
caf07dd
Update src-docs/src/views/timeline/timeline_item.tsx
elizabetdev Apr 7, 2022
06c9fcc
Update src-docs/src/views/timeline/timeline.tsx
elizabetdev Apr 7, 2022
d62ceab
Update src-docs/src/views/timeline/timeline.tsx
elizabetdev Apr 7, 2022
2de0a93
Update src-docs/src/views/timeline/timeline.tsx
elizabetdev Apr 7, 2022
b25ab3b
Update src-docs/src/views/timeline/timeline_example.js
elizabetdev Apr 7, 2022
3bb564f
Update src-docs/src/views/timeline/timeline_example.js
elizabetdev Apr 7, 2022
525b98d
Update src-docs/src/views/timeline/timeline_example.js
elizabetdev Apr 7, 2022
19aa16a
Update src-docs/src/views/timeline/timeline_example.js
elizabetdev Apr 7, 2022
7d472b6
Update src-docs/src/views/timeline/timeline_example.js
elizabetdev Apr 7, 2022
cf1dc53
Update src-docs/src/views/timeline/timeline_example.js
elizabetdev Apr 7, 2022
5f3eada
Update src-docs/src/views/timeline/timeline_example.js
elizabetdev Apr 7, 2022
a50eebf
Update src-docs/src/views/timeline/timeline_example.js
elizabetdev Apr 7, 2022
b75a931
Prettier 🤩
elizabetdev Apr 7, 2022
181da63
Adjusting the timeline icon line
elizabetdev Apr 7, 2022
391b5b5
Removing `verticalAlign="center"` from examples
elizabetdev Apr 7, 2022
8c91017
Fixing path to type
elizabetdev Apr 7, 2022
28496cb
Recommendation for icon size
elizabetdev Apr 7, 2022
2c9c667
Adding `iconAriaLabel` to EuiTimelineItem
elizabetdev Apr 12, 2022
16a506e
Fixing issue with center vertical alignment
elizabetdev Apr 12, 2022
9172994
Adding dot into prop description.
elizabetdev Apr 12, 2022
c25b3d4
Update src-docs/src/views/timeline/timeline_example.js
elizabetdev Apr 13, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions src-docs/src/routes.js
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,8 @@ import { TextDiffExample } from './views/text_diff/text_diff_example';

import { TextExample } from './views/text/text_example';

import { TimelineExample } from './views/timeline/timeline_example';

import { TitleExample } from './views/title/title_example';

import { ToastExample } from './views/toast/toast_example';
Expand Down Expand Up @@ -507,6 +509,7 @@ const navigation = [
ProgressExample,
StatExample,
TextExample,
TimelineExample,
TitleExample,
ToastExample,
ToolTipExample,
Expand Down
7 changes: 6 additions & 1 deletion src-docs/src/views/avatar/avatar_icon.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,12 @@ export default () => {
 
<EuiAvatar size="m" name="Medium size" iconType="managementApp" />
&emsp;
<EuiAvatar size="l" name="Large" iconType="managementApp" />
<EuiAvatar
size="l"
color="subdued"
name="Large"
iconType="managementApp"
/>
&emsp;
<EuiAvatar
size="xl"
Expand Down
56 changes: 56 additions & 0 deletions src-docs/src/views/timeline/playground.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
import { PropTypes } from 'react-view';
import {
EuiTimelineItem,
EuiText,
EuiAvatar,
} from '../../../../src/components/';
import {
propUtilityForPlayground,
createOptionalEnum,
} from '../../services/playground';

export default () => {
const docgenInfo = Array.isArray(EuiTimelineItem.__docgenInfo)
? EuiTimelineItem.__docgenInfo[0]
: EuiTimelineItem.__docgenInfo;
const propsToUse = propUtilityForPlayground(docgenInfo.props);

propsToUse.icon = {
...propsToUse.icon,
type: PropTypes.ReactNode,
value: 'email',
};

propsToUse.verticalAlign = {
...createOptionalEnum(propsToUse.verticalAlign),
value: 'center',
};

propsToUse.children = {
...propsToUse.children,
type: PropTypes.ReactNode,
value: `<EuiText size="s">
<p>
<strong>[email protected]</strong> was invited to the project
</p>
</EuiText>`,
hidden: false,
};

return {
config: {
componentName: 'EuiTimelineItem',
props: propsToUse,
scope: {
EuiTimelineItem,
EuiText,
EuiAvatar,
},
imports: {
'@elastic/eui': {
named: ['EuiTimelineItem', 'EuiText', 'EuiAvatar'],
},
},
},
};
};
42 changes: 42 additions & 0 deletions src-docs/src/views/timeline/timeline.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import React from 'react';
import {
EuiTimeline,
EuiTimelineProps,
EuiText,
} from '../../../../src/components';

const items: EuiTimelineProps['items'] = [
{
icon: 'email',
iconAriaLabel: 'Invitation',
children: (
<EuiText size="s">
<p>
<strong>[email protected]</strong> was invited to the project.
</p>
</EuiText>
),
},
{
icon: 'pencil',
iconAriaLabel: 'Edited',
children: (
<EuiText size="s">
<p>
The project was renamed to <strong>Revenue Dashboard</strong>.
</p>
</EuiText>
),
},
{
icon: 'folderClosed',
iconAriaLabel: 'Project closed',
children: (
<EuiText size="s">
<p>The project was archived.</p>
</EuiText>
),
},
];

export default () => <EuiTimeline items={items} />;
187 changes: 187 additions & 0 deletions src-docs/src/views/timeline/timeline_example.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,187 @@
import React from 'react';
import { Link } from 'react-router-dom';
import { GuideSectionTypes } from '../../components';

import {
EuiCode,
EuiTimeline,
EuiTimelineItem,
} from '../../../../src/components';
import timelineItemConfig from './playground';

import Timeline from './timeline';
const timelineSource = require('!!raw-loader!./timeline');
const timelineSnippet = `<EuiTimeline
items={[
{
icon: icon,
children: content,
},
]}
/>`;

import TimelineItem from './timeline_item';
const timelineItemSource = require('!!raw-loader!./timeline_item');
const timelineItemSnippet = `<EuiTimelineItem icon={icon}>
{content}
</EuiTimeline>`;

import TimelineItemEvent from './timeline_item_event';
const timelineItemEventSource = require('!!raw-loader!./timeline_item_event');
const timelineItemEventSnippet = `<EuiTimelineItem icon={icon}>
<EuiSplitPanel.Outer color="transparent" hasBorder grow>
<EuiSplitPanel.Inner color="subdued">
<!-- Top panel content -->
</EuiSplitPanel.Inner>
<EuiHorizontalRule margin="none" />
<EuiSplitPanel.Inner >
<!-- Bottom panel content -->
</EuiSplitPanel.Inner>
</EuiSplitPanel.Outer>
</EuiTimelineItem>
`;

export const TimelineExample = {
title: 'Timeline',
isBeta: true,
isNew: true,
sections: [
{
source: [
{
type: GuideSectionTypes.TSX,
code: timelineSource,
},
],
text: (
<>
<p>
The <strong>EuiTimeline</strong> component standardizes the way a
timeline thread is displayed. Pass an array of{' '}
<strong>EuiTimelineItem</strong> objects and{' '}
<strong>EuiTimeline</strong> will generate a timeline thread.
</p>
<p>
This component allows you to create any type of timeline, but for
more specific use cases you should consider:
</p>
<ul>
<li>
<Link to="/navigation/steps">
<strong>EuiSteps</strong>
</Link>
: a timeline that allows you to present instructional content that
must be conducted in a particular order and might contain progress
indications.
</li>
<li>
<Link to="/display/comment-list">
<strong>EuiCommentList</strong>
</Link>
: a timeline that allows you to display comments or logging
actions that either a user or a system has performed.
</li>
</ul>
</>
),
props: { EuiTimeline, EuiTimelineItem },
snippet: timelineSnippet,
demo: <Timeline />,
},
{
title: 'Timeline item',
source: [
{
type: GuideSectionTypes.TSX,
code: timelineItemSource,
},
],
text: (
<>
<p>
Each <strong>EuiTimelineItem</strong> has two parts: an icon on the
left side and an event on the right side. To create an item you need
the following props:
</p>
<ul>
<li>
<EuiCode>icon</EuiCode>: main icon that appears on the left side.
Can be passed as any <EuiCode>IconType</EuiCode> string or custom
node (e.g.{' '}
<Link to="/display/avatar">
<strong>EuiAvatar</strong>
</Link>
). It is recommended not to use an element larger than 40x40.
</li>
<li>
<EuiCode>children</EuiCode>: any node as the event content.
</li>
</ul>
</>
),
props: { EuiTimelineItem },
snippet: timelineItemSnippet,
demo: <TimelineItem />,
playground: timelineItemConfig,
},
{
title: 'A timeline thread with multiple items',
source: [
{
type: GuideSectionTypes.TSX,
code: timelineItemEventSource,
},
],
text: (
<>
<p>
You can create a timeline thread by rendering multiple{' '}
<strong>EuiTimelineItem</strong> components. Wrapping these with an{' '}
<strong>EuiTimeline</strong> is not required, but we recommend
having all the <strong>EuiTimelineItem</strong>s nested in the same
container. This way, we ensure that timeline styles are applied
correctly.
</p>
<p>
When passing an <EuiCode>icon</EuiCode> and{' '}
<EuiCode>children</EuiCode> prop to each item, there are some design
considerations to take into account:
</p>
<ul>
<li>
<EuiCode>icon</EuiCode>: use icons of the same size to create a
better visual consistency.
</li>
<li>
<EuiCode>children</EuiCode>: when your content is just one line of
text, the recommendation is to use a a{' '}
<Link to="/display/text">
<strong>EuiText</strong>
</Link>{' '}
as a wrapper. For multi-line content consider using a{' '}
<Link to="/layout/panel">
<strong>EuiPanel</strong>
</Link>{' '}
or a{' '}
<Link to="/layout/panel#split-panels">
<strong>EuiSplitPanel</strong>
</Link>{' '}
instead. For other types of components like editors, the
recommendation is to pass the children without any wrapper.
</li>
</ul>
<p>
The following example shows how to display multiple{' '}
<strong>EuiTimelineItem</strong>s and how you can use a{' '}
<strong>EuiSplitPanel</strong> as the content wrapper.
</p>
</>
),
props: {
EuiTimelineItem,
},
snippet: timelineItemEventSnippet,
demo: <TimelineItemEvent />,
},
],
};
13 changes: 13 additions & 0 deletions src-docs/src/views/timeline/timeline_item.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import React from 'react';
import { EuiTimelineItem, EuiText, EuiCode } from '../../../../src/components';

export default () => (
<EuiTimelineItem icon="dot" iconAriaLabel="Main icon">
<EuiText size="s">
<p>
I&apos;m the <EuiCode>children</EuiCode> and you can find the{' '}
<EuiCode>icon</EuiCode> on the left side.
</p>
</EuiText>
</EuiTimelineItem>
);
Loading