@ember-eui/core 5.0.0-alpha.5 → 5.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/addon/components/eui-notification-event/index.hbs +25 -9
  2. package/addon/components/eui-notification-event-meta/index.hbs +82 -74
  3. package/addon/components/eui-notification-event-read-icon/index.hbs +1 -1
  4. package/addon/components/eui-page/index.hbs +13 -18
  5. package/addon/components/eui-page-body/index.hbs +19 -36
  6. package/addon/components/eui-page-content/index.hbs +20 -17
  7. package/addon/components/eui-page-content-body/index.hbs +16 -15
  8. package/addon/components/eui-page-content-header/index.hbs +1 -13
  9. package/addon/components/eui-page-header/index.hbs +91 -33
  10. package/addon/components/eui-page-header-content/index.hbs +247 -182
  11. package/addon/components/eui-page-template/index.hbs +723 -395
  12. package/addon/components/eui-page-template/index.ts +44 -16
  13. package/addon/components/eui-split-panel/outer/index.hbs +5 -4
  14. package/addon/helpers/eui-page-restrict-width.ts +37 -0
  15. package/addon/{components/eui-split-panel/outer/index.ts → modifiers/use-is-within-breakpoints.ts} +2 -11
  16. package/addon/styles/ember-eui.css +4 -0
  17. package/addon/utils/css-mappings/eui-page.ts +19 -1
  18. package/addon/utils/css-mappings/eui-tabs.ts +1 -1
  19. package/app/helpers/eui-page-restrict-width.js +4 -0
  20. package/app/modifiers/use-is-within-breakpoints.js +1 -0
  21. package/docs/layout/page-header/demo/demo1.md +23 -0
  22. package/docs/layout/page-header/demo/demo2.md +23 -0
  23. package/docs/layout/page-header/demo/demo3.md +14 -0
  24. package/docs/layout/page-header/demo/demo4.md +52 -0
  25. package/docs/layout/page-header/demo/demo5.md +64 -0
  26. package/docs/layout/page-header/demo/demo6.md +21 -0
  27. package/docs/layout/page-header/index.md +11 -0
  28. package/docs/layout/{page-demo → page-template/demo}/demo1.md +36 -14
  29. package/docs/layout/page-template/demo/demo10.md +58 -0
  30. package/docs/layout/{page-demo → page-template/demo}/demo2.md +14 -4
  31. package/docs/layout/{page-demo → page-template/demo}/demo3.md +19 -8
  32. package/docs/layout/page-template/demo/demo4.md +43 -0
  33. package/docs/layout/page-template/demo/demo5.md +54 -0
  34. package/docs/layout/{page-demo → page-template/demo}/demo6.md +10 -2
  35. package/docs/layout/{page-demo → page-template/demo}/demo7.md +0 -0
  36. package/docs/layout/page-template/demo/demo8.md +46 -0
  37. package/docs/layout/page-template/demo/demo9.md +43 -0
  38. package/docs/layout/page-template/index.md +11 -0
  39. package/package.json +2 -2
  40. package/docs/layout/page-demo/demo10.md +0 -42
  41. package/docs/layout/page-demo/demo4.md +0 -38
  42. package/docs/layout/page-demo/demo5.md +0 -30
  43. package/docs/layout/page-demo/demo8.md +0 -19
  44. package/docs/layout/page-demo/demo9.md +0 -29
  45. package/docs/layout/page.md +0 -1
@@ -1,5 +1,6 @@
1
1
  import Component from '@glimmer/component';
2
2
  import { EuiButtomBarArgs } from '../eui-bottom-bar';
3
+ import { tracked } from '@glimmer/tracking';
3
4
  // import { action } from '@ember/object';
4
5
  // import { tracked } from '@glimmer/tracking';
5
6
  // import {
@@ -28,8 +29,16 @@ export const TEMPLATES = [
28
29
  'empty'
29
30
  ] as const;
30
31
 
32
+ interface NormalProps {
33
+ className?: string;
34
+ }
35
+
31
36
  export type EuiPageTemplateProps = {
32
37
  template?: typeof TEMPLATES[number];
38
+
39
+ pageBodyProps: NormalProps;
40
+ pageContentProps: NormalProps;
41
+ pageContentBodyProps: NormalProps;
33
42
  /**
34
43
  // * Gets passed along to the #EuiBottomBar component if `bottomBar` has contents
35
44
  // */
@@ -44,17 +53,39 @@ export type EuiPageTemplateProps = {
44
53
  * Minimum height in which to enforce scrolling
45
54
  */
46
55
  minHeight?: number;
56
+
57
+ restrictWidth?: boolean | number | string;
47
58
  };
48
59
 
49
60
  export default class EuiPageTemplate extends Component<EuiPageTemplateProps> {
50
61
  // Defaults
51
- @argOrDefault(460) minHeight!: number;
52
62
  @argOrDefault(false) fullHeight!: boolean;
53
- @argOrDefault('l') paddingSize!: string;
54
63
  @argOrDefault('default') template!: typeof TEMPLATES[number];
55
64
 
65
+ @tracked isWithinBreakpoints = false;
66
+
67
+ setIsWithinBreakpoints = (value: boolean) => {
68
+ this.isWithinBreakpoints = value;
69
+ };
70
+
71
+ get minHeight() {
72
+ const minHeight = this.args.minHeight ?? 460;
73
+ if (typeof this.args.minHeight === 'number') {
74
+ return `${minHeight}px`;
75
+ }
76
+ return minHeight;
77
+ }
78
+
79
+ get restrictWidth() {
80
+ const width = this.args.restrictWidth ?? true;
81
+ if (typeof this.args.restrictWidth === 'number') {
82
+ return `${width}px`;
83
+ }
84
+ return width;
85
+ }
86
+
56
87
  get classes() {
57
- return 'euiPageTemplate '.concat(this.fullHeightClass);
88
+ return `euiPageTemplate ${this.fullHeightClass}`;
58
89
  }
59
90
 
60
91
  get fullHeightClass() {
@@ -66,24 +97,21 @@ export default class EuiPageTemplate extends Component<EuiPageTemplateProps> {
66
97
  }
67
98
 
68
99
  get canFullHeight() {
69
- return this.template === 'default' || this.template === 'empty';
100
+ return (
101
+ this.isWithinBreakpoints &&
102
+ (this.template === 'default' || this.template === 'empty')
103
+ );
70
104
  }
71
105
 
72
- get pageBodyProps() {
73
- return this.fullHeightClass;
74
- // ...pageBodyProps,
75
- // className: classNames(fullHeightClass, pageBodyProps?.className),
106
+ get pageBodyPropsClass() {
107
+ return `${this.fullHeightClass} ${this.args.pageBodyProps?.className}`;
76
108
  }
77
109
 
78
- get pageContentProps() {
79
- return this.yScrollClass;
80
- // ...pageContentProps,
81
- // className: classNames(yScrollClass, pageContentProps?.className),
110
+ get pageContentPropsClass() {
111
+ return `${this.yScrollClass} ${this.args.pageContentProps?.className}`;
82
112
  }
83
113
 
84
- get pageContentBodyProps() {
85
- return this.fullHeightClass;
86
- // ...pageContentBodyProps,
87
- //className: classNames(fullHeightClass, pageContentBodyProps?.className),
114
+ get pageContentBodyPropsClass() {
115
+ return `${this.fullHeightClass} ${this.args.pageContentBodyProps?.className}`;
88
116
  }
89
117
  }
@@ -1,13 +1,14 @@
1
1
  {{#let
2
2
  (arg-or-default @direction "column")
3
3
  (arg-or-default @responsive (array "xs" "s"))
4
- as |direction responsive|
4
+ (use-state false)
5
+ as |direction responsive isResponsive|
5
6
  }}
6
7
  <EuiPanel
7
8
  class={{class-names
8
9
  "euiSplitPanel"
9
10
  (if (eq direction "row") "euiSplitPanel--row")
10
- (if this.isResponsive "euiSplitPanel-isResponsive")
11
+ (if isResponsive.value "euiSplitPanel-isResponsive")
11
12
  }}
12
13
  @grow={{arg-or-default @grow false}}
13
14
  @paddingSize={{arg-or-default @paddingSize "none"}}
@@ -15,10 +16,10 @@
15
16
  @color={{@color}}
16
17
  @borderRadius={{@borderRadius}}
17
18
  @hasBorder={{@hasBorder}}
18
- {{this.isWithinBreakpointsModifier
19
+ {{use-is-within-breakpoints
19
20
  sizes=responsive
20
21
  isActive=(not (not responsive))
21
- setIsWithinBreakpointsValue=(set this "isResponsive")
22
+ setIsWithinBreakpointsValue=isResponsive.setState
22
23
  }}
23
24
  ...attributes
24
25
  >
@@ -0,0 +1,37 @@
1
+ import { helper } from '@ember/component/helper';
2
+ export type _EuiPageRestrictWidth = {
3
+ /**
4
+ * Sets the max-width of the page,
5
+ * set to `true` to use the default size of `1000px (1200 for Amsterdam)`,
6
+ * set to `false` to not restrict the width,
7
+ * set to a number for a custom width in px,
8
+ * set to a string for a custom width in custom measurement.
9
+ */
10
+ restrictWidth?: boolean | number | string;
11
+ };
12
+
13
+ export function restrictWidth(
14
+ restrictWidth: _EuiPageRestrictWidth['restrictWidth'],
15
+ style?: Record<string, unknown>
16
+ ) {
17
+ let widthClassName;
18
+ let newStyle = {
19
+ ...(style || {})
20
+ };
21
+
22
+ if (restrictWidth === true) {
23
+ widthClassName = 'restrictWidth-default';
24
+ } else if (restrictWidth !== false) {
25
+ widthClassName = 'restrictWidth-custom';
26
+ newStyle = { ...newStyle, maxWidth: restrictWidth };
27
+ }
28
+
29
+ return { widthClassName, newStyle };
30
+ }
31
+
32
+ export default helper(function ([restrict, style]: [
33
+ _EuiPageRestrictWidth['restrictWidth'],
34
+ Record<string, unknown> | undefined
35
+ ]) {
36
+ return restrictWidth(restrict, style);
37
+ });
@@ -1,12 +1,7 @@
1
- import Component from '@glimmer/component';
2
- import {
3
- EuiBreakpointSize,
4
- isWithinBreakpoints
5
- } from '../../../utils/breakpoint';
1
+ import { EuiBreakpointSize, isWithinBreakpoints } from '../utils/breakpoint';
6
2
  import { modifier } from 'ember-modifier';
7
- import { tracked } from '@glimmer/tracking';
8
3
 
9
- const isWithinBreakpointsModifier = modifier(function (
4
+ export default modifier(function (
10
5
  _element: Element,
11
6
  _pos: unknown[],
12
7
  {
@@ -31,7 +26,3 @@ const isWithinBreakpointsModifier = modifier(function (
31
26
 
32
27
  return () => window.removeEventListener('resize', handleResize);
33
28
  });
34
- export default class EuiSplitPanelOuterComponent extends Component {
35
- isWithinBreakpointsModifier = isWithinBreakpointsModifier;
36
- @tracked isResponsive = false;
37
- }
@@ -21,3 +21,7 @@
21
21
  .ember-basic-dropdown-content {
22
22
  z-index: 99999
23
23
  }
24
+
25
+ .euiBadge__iconButton svg {
26
+ pointer-events: none;
27
+ }
@@ -1,5 +1,17 @@
1
1
  export const baseClass = 'euiPage';
2
2
 
3
+ export const sizeMapping = {
4
+ s: `${baseClass}--s`,
5
+ m: `${baseClass}--m`,
6
+ l: `${baseClass}--l`,
7
+ xl: `${baseClass}--xl`
8
+ };
9
+
10
+ export const typeMapping = {
11
+ space: `${baseClass}--space`,
12
+ user: `${baseClass}--user`
13
+ };
14
+
3
15
  export const paddingSizeMapping = {
4
16
  none: '',
5
17
  s: `${baseClass}--paddingSmall`,
@@ -7,10 +19,16 @@ export const paddingSizeMapping = {
7
19
  l: `${baseClass}--paddingLarge`
8
20
  };
9
21
 
22
+ export const directionMapping = {
23
+ row: '',
24
+ column: `${baseClass}--column`
25
+ };
26
+
10
27
  const mapping: ComponentMapping = {
11
28
  base: baseClass,
12
29
  properties: {
13
- paddingSize: paddingSizeMapping
30
+ paddingSize: paddingSizeMapping,
31
+ direction: directionMapping
14
32
  }
15
33
  };
16
34
 
@@ -9,7 +9,7 @@ export const sizeMapping = {
9
9
  s: `${baseClass}--small`,
10
10
  m: '',
11
11
  l: `${baseClass}--large`,
12
- xl: `${baseClass}--xLarge`
12
+ xl: `${baseClass}--xlarge`
13
13
  };
14
14
 
15
15
  const mapping: ComponentMapping = {
@@ -0,0 +1,4 @@
1
+ export {
2
+ default,
3
+ restrictWidth
4
+ } from '@ember-eui/core/helpers/eui-page-restrict-width';
@@ -0,0 +1 @@
1
+ export { default } from '@ember-eui/core/modifiers/use-is-within-breakpoints';
@@ -0,0 +1,23 @@
1
+ ---
2
+ order: 1
3
+ ---
4
+
5
+ # Basic
6
+
7
+ ```hbs template
8
+ <EuiPageHeader
9
+ @bottomBorder={{true}}
10
+ @pageTitle="Page Title"
11
+ @iconType='logoKibana'
12
+ @description='This description should be describing the current page as depicted by the page title. It will never extend beneath the right side content.'
13
+ >
14
+ <:rightSideItems>
15
+ <EuiFlexItem>
16
+ <EuiButton @fill={{true}}>Add something</EuiButton>
17
+ </EuiFlexItem>
18
+ <EuiFlexItem>
19
+ <EuiButton>Do something</EuiButton>
20
+ </EuiFlexItem>
21
+ </:rightSideItems>
22
+ </EuiPageHeader>
23
+ ```
@@ -0,0 +1,23 @@
1
+ ---
2
+ order: 2
3
+ ---
4
+
5
+ # Tabs
6
+
7
+ ```hbs template
8
+ <EuiPageHeader
9
+ @bottomBorder={{true}}
10
+ @pageTitle="Page title"
11
+ @description='This description should be describing the current page as depicted by the page title. It will never extend beneath the right side content.'
12
+ @tabs={{array (hash label="Tab 1" isSelected=true) (hash label="Tab 2")}}
13
+ >
14
+ <:rightSideItems>
15
+ <EuiFlexItem>
16
+ <EuiButton @fill={{true}}>Add something</EuiButton>
17
+ </EuiFlexItem>
18
+ <EuiFlexItem>
19
+ <EuiButton>Do something</EuiButton>
20
+ </EuiFlexItem>
21
+ </:rightSideItems>
22
+ </EuiPageHeader>
23
+ ```
@@ -0,0 +1,14 @@
1
+ ---
2
+ order: 3
3
+ ---
4
+
5
+ # Tabs
6
+
7
+ ```hbs template
8
+ <EuiPageHeader
9
+ @bottomBorder={{true}}
10
+ @description='This description should be describing the current page as depicted by the page title. It will never extend beneath the right side content.'
11
+ @dumb={{true}}
12
+ @tabs={{array (hash label="Tab 1" isSelected=true) (hash label="Tab 2")}}
13
+ />
14
+ ```
@@ -0,0 +1,52 @@
1
+ ---
2
+ order: 4
3
+ ---
4
+
5
+ # Breadcrumbs in the page header
6
+
7
+ <EuiText>
8
+ <a href="#">Breadcrumbs</a> are useful for tracking in-page flows that <strong>are not part of the entire application architecture</strong>. To make this easy <strong>EuiPageHeader</strong> provides a <EuiCode>breadcrumbs</EuiCode> prop that accepts the same configuration as <EuiCode>EuiBreadrumbs.breadcrumbs</EuiCode>.
9
+ </EuiText>
10
+
11
+ ```hbs template
12
+ <EuiPageHeader
13
+ @bottomBorder={{true}}
14
+ @pageTitle='Page title'
15
+ @description='Example of a description.'
16
+ @breadcrumbs={{this.breadcrumbs}}
17
+ >
18
+ <:rightSideItems>
19
+ <EuiFlexItem>
20
+ <EuiButton @fill={{true}}>Add something</EuiButton>
21
+ </EuiFlexItem>
22
+ <EuiFlexItem>
23
+ <EuiButton>Do something</EuiButton>
24
+ </EuiFlexItem>
25
+ </:rightSideItems>
26
+ </EuiPageHeader>
27
+ ```
28
+
29
+ ```js component
30
+ import Component from '@glimmer/component';
31
+ import { tracked } from '@glimmer/tracking';
32
+
33
+ export default class AccordionDemo1Component extends Component {
34
+ breadcrumbs = [
35
+ {
36
+ text: 'Breadcrumb 1',
37
+ href: '#',
38
+ onClick: (e) => e.preventDefault()
39
+ },
40
+ {
41
+ text: 'Breadcrumb 2',
42
+ href: '#',
43
+ onClick: (e) => e.preventDefault()
44
+ },
45
+ {
46
+ text: 'Current',
47
+ href: '#',
48
+ onClick: (e) => e.preventDefault()
49
+ }
50
+ ];
51
+ }
52
+ ```
@@ -0,0 +1,64 @@
1
+ ---
2
+ order: 5
3
+ ---
4
+
5
+ # Common pattern
6
+
7
+ <EuiText>
8
+ A common pattern is to use a single breadcrumb to return the user to a listing page from which the current page was navigated to
9
+ </EuiText>
10
+
11
+ ```hbs template
12
+ <EuiPageHeader
13
+ @bottomBorder={{true}}
14
+ @pageTitle='Page title'
15
+ @description='Example of a description.'
16
+ @breadcrumbs={{array
17
+ (hash
18
+ text=(component
19
+ 'eui-button-title'
20
+ title='Return'
21
+ iconType='arrowLeft'
22
+ color='primary'
23
+ size='s'
24
+ buttonEmpty=true
25
+ )
26
+ href='http://www.elastic.co'
27
+ )
28
+ }}
29
+ >
30
+ <:rightSideItems>
31
+ <EuiFlexItem>
32
+ <EuiButton @fill={{true}}>Add something</EuiButton>
33
+ </EuiFlexItem>
34
+ <EuiFlexItem>
35
+ <EuiButton>Do something</EuiButton>
36
+ </EuiFlexItem>
37
+ </:rightSideItems>
38
+ </EuiPageHeader>
39
+ ```
40
+
41
+ ```js component
42
+ import Component from '@glimmer/component';
43
+ import { tracked } from '@glimmer/tracking';
44
+
45
+ export default class AccordionDemo1Component extends Component {
46
+ breadcrumbs = [
47
+ {
48
+ text: 'Breadcrumb 1',
49
+ href: '#',
50
+ onClick: (e) => e.preventDefault()
51
+ },
52
+ {
53
+ text: 'Breadcrumb 2',
54
+ href: '#',
55
+ onClick: (e) => e.preventDefault()
56
+ },
57
+ {
58
+ text: 'Current',
59
+ href: '#',
60
+ onClick: (e) => e.preventDefault()
61
+ }
62
+ ];
63
+ }
64
+ ```
@@ -0,0 +1,21 @@
1
+ ---
2
+ order: 6
3
+ ---
4
+
5
+ # Customizing the page header
6
+
7
+ <EuiText>
8
+ The page header content props are helpful props to push content into established Elastic page layout patterns. They are completely optional and by design, inflexible. If you need a layout that does not match these patterns you can pass in your own <EuiCode>{{"<:default>"}}</EuiCode> block utilizing the <strong>EuiPageHeaderSection</strong> components.
9
+
10
+ </EuiText>
11
+
12
+ ```hbs template
13
+ <EuiPageHeader @alignItems='center' @bottomBorder={{true}}>
14
+ <EuiPageHeaderSection>
15
+ <EuiTitle @size='l'>
16
+ Page title
17
+ </EuiTitle>
18
+ </EuiPageHeaderSection>
19
+ <EuiPageHeaderSection>Page abilities</EuiPageHeaderSection>
20
+ </EuiPageHeader>
21
+ ```
@@ -0,0 +1,11 @@
1
+ ---
2
+ order: 1
3
+ title: Page Header
4
+ ---
5
+
6
+ <EuiPageHeader @pageTitle="Page Header" @bottomBorder={{true}}>
7
+ <:description>
8
+ <EuiText>While the <strong>EuiPageHeader</strong> component can be placed anywhere within your page layout, we recommend using it within the <a href="#"><strong>EuiPageTemplate</strong></a> component by passing the configuration props as its <EuiCode>pageHeader</EuiCode>.</EuiText>
9
+ </:description>
10
+
11
+ </EuiPageHeader>
@@ -66,33 +66,55 @@ order: 1
66
66
  @pageHeader={{hash
67
67
  iconType='logoElastic'
68
68
  pageTitle='Page Title'
69
- rightSideItems=(array (component 'eui-button-title' title='Go full screen'))
70
69
  tabs=this.tabs
71
70
  }}
72
- @pageSideBar={{component 'eui-loading-content' lines=8}}
71
+ @hasBottomBarBlock={{this.showing}}
73
72
  >
74
- <EuiLoadingContent @lines={{16}} />
73
+ <:pageSideBar>
74
+ <EuiLoadingContent @lines={{8}} />
75
+ </:pageSideBar>
76
+ <:pageHeaderRightSideItems as |Item|>
77
+ <Item>
78
+ <EuiButton>
79
+ Go Full Screen
80
+ </EuiButton>
81
+ </Item>
82
+ </:pageHeaderRightSideItems>
83
+ <:default>
84
+ <EuiLoadingContent @lines={{16}} />
85
+ </:default>
86
+ <:bottomBar>
87
+ Bottom bar
88
+ </:bottomBar>
75
89
  </EuiPageTemplate>
76
90
  ```
77
91
 
78
92
  ```js component
79
93
  import Component from '@glimmer/component';
80
94
  import { tracked } from '@glimmer/tracking';
81
- import { action } from '@ember/object';
82
95
 
83
96
  export default class DemoIconComponent extends Component {
84
- tabs = [
85
- { label: 'Tab 1', isSelected: true },
86
- {
87
- label: 'Tab 2',
88
- onClick: this.setShowBottomBar
89
- }
90
- ];
97
+ @tracked selectedTab = true;
91
98
  @tracked showing = false;
92
99
 
93
- @action
94
- setSHowBottomBar() {
95
- this.showing = !this.showing;
100
+ get tabs() {
101
+ return [
102
+ {
103
+ label: 'Tab 1',
104
+ isSelected: this.selectedTab,
105
+ onClick: this.setShowBottomBar.bind(this, true)
106
+ },
107
+ {
108
+ label: 'Tab 2',
109
+ isSelected: !this.selectedTab,
110
+ onClick: this.setShowBottomBar.bind(this, false)
111
+ }
112
+ ];
96
113
  }
114
+
115
+ setShowBottomBar = (val) => {
116
+ this.selectedTab = val;
117
+ this.showing = !val;
118
+ };
97
119
  }
98
120
  ```
@@ -0,0 +1,58 @@
1
+ ---
2
+ order: 10
3
+ ---
4
+
5
+ # A simple page layout with custom content
6
+
7
+ <EuiText>
8
+ You can replace the inner parts of <strong>EuiPageBody</strong> with your own content, with or without a page header. This allows you to create dashboard style layouts with lots of panels. It is not recommended, however, to use this setup when you also have side bar.
9
+ </EuiText>
10
+ <EuiSpacer />
11
+ <EuiCallOut>
12
+ <:body>
13
+ This layout can be achieved in <strong>EuiPageTemplate</strong> by setting <EuiCode>template="empty"</EuiCode>.
14
+ </:body>
15
+ </EuiCallOut>
16
+
17
+ ```hbs template
18
+ <EuiPageTemplate
19
+ @grow={{true}}
20
+ @restrictWidth={{false}}
21
+ @template='empty'
22
+ @pageHeader={{hash
23
+ iconType='logoElastic'
24
+ pageTitle='Page Title'
25
+ bottomBorder=true
26
+ }}
27
+ >
28
+ <:pageHeaderRightSideItems as |Item|>
29
+ <Item>
30
+ <EuiButton @color='warning'>
31
+ Go to full screen
32
+ </EuiButton>
33
+ </Item>
34
+ <Item>
35
+ <EuiButton>
36
+ Do something
37
+ </EuiButton>
38
+ </Item>
39
+ </:pageHeaderRightSideItems>
40
+ <:default>
41
+ <EuiFlexGrid @columns={{2}}>
42
+ <EuiFlexItem>
43
+ <EuiPanel style='height: 200px' />
44
+ </EuiFlexItem>
45
+ <EuiFlexItem>
46
+ <EuiPanel style='height: 200px' />
47
+ </EuiFlexItem>
48
+ <EuiFlexItem>
49
+ <EuiPanel style='height: 200px' />
50
+ </EuiFlexItem>
51
+ <EuiFlexItem>
52
+ <EuiPanel style='height: 200px' />
53
+ </EuiFlexItem>
54
+ </EuiFlexGrid>
55
+ </:default>
56
+
57
+ </EuiPageTemplate>
58
+ ```
@@ -35,12 +35,22 @@ order: 2
35
35
  @pageHeader={{hash
36
36
  iconType='logoElastic'
37
37
  pageTitle='Page Title'
38
- rightSideItems=(array (component 'eui-button-title' title='Go full screen'))
39
38
  tabs=this.tabs
40
- description= 'Restricting the width to 75%.'
39
+ description='Restricting the width to 75%.'
41
40
  }}
42
- @pageSideBar={{component 'eui-loading-content' lines=8}}
43
41
  >
44
- <EuiLoadingContent @lines={{16}} />
42
+ <:pageSideBar>
43
+ <EuiLoadingContent @lines={{8}} />
44
+ </:pageSideBar>
45
+ <:pageHeaderRightSideItems as |Item|>
46
+ <Item>
47
+ <EuiButton>
48
+ Go to full screen
49
+ </EuiButton>
50
+ </Item>
51
+ </:pageHeaderRightSideItems>
52
+ <:default>
53
+ <EuiLoadingContent @lines={{16}} />
54
+ </:default>
45
55
  </EuiPageTemplate>
46
56
  ```
@@ -37,14 +37,25 @@ order: 3
37
37
  ```hbs template
38
38
  <EuiPageTemplate
39
39
  @grow={{true}}
40
- @pageHeader={{hash
41
- iconType='logoElastic'
42
- pageTitle='Page Title'
43
- rightSideItems=(array (component 'eui-button-title' title='Go full screen'))
44
- }}
45
- @pageSideBar={{component 'eui-loading-content' lines=8}}
46
- @bottomBar={{component "eui-button-title" title="Save"}}
40
+ @pageHeader={{hash iconType='logoElastic' pageTitle='Page Title'}}
47
41
  >
48
- <EuiLoadingContent @lines={{16}} />
42
+ <:pageSideBar>
43
+ <EuiLoadingContent @lines={{8}} />
44
+ </:pageSideBar>
45
+ <:pageHeaderRightSideItems as |Item|>
46
+ <Item>
47
+ <EuiButton>
48
+ Go to full screen
49
+ </EuiButton>
50
+ </Item>
51
+ </:pageHeaderRightSideItems>
52
+ <:default>
53
+ <EuiLoadingContent @lines={{16}} />
54
+ </:default>
55
+ <:bottomBar>
56
+ <EuiButton>
57
+ Save
58
+ </EuiButton>
59
+ </:bottomBar>
49
60
  </EuiPageTemplate>
50
61
  ```