@ember-eui/core 2.0.0 → 3.1.0

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 (40) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +6 -6
  3. package/addon/components/eui-badge/index.hbs +3 -3
  4. package/addon/components/eui-button/index.hbs +2 -0
  5. package/addon/components/eui-button-content/index.hbs +1 -0
  6. package/addon/components/eui-button-empty/index.hbs +2 -0
  7. package/addon/components/eui-button-icon/index.hbs +2 -0
  8. package/addon/components/eui-card/eui-card-select/index.hbs +1 -1
  9. package/addon/components/eui-card/index.hbs +1 -1
  10. package/addon/components/eui-combo-box/create-option/index.ts +1 -1
  11. package/addon/components/eui-combo-box/index.hbs +1 -5
  12. package/addon/components/eui-combo-box/options/index.hbs +10 -5
  13. package/addon/components/eui-combo-box/trigger/index.hbs +2 -2
  14. package/addon/components/eui-icon/index.hbs +19 -2
  15. package/addon/components/eui-icon/index.ts +1 -2
  16. package/addon/components/eui-image/index.ts +1 -1
  17. package/addon/components/eui-list-group-item/index.hbs +1 -1
  18. package/addon/components/eui-markdown-editor/index.ts +14 -2
  19. package/addon/components/eui-markdown-editor-footer/icons/markdown-logo/index.d.ts +4 -0
  20. package/addon/components/eui-markdown-editor-footer/icons/markdown-logo/index.hbs +16 -0
  21. package/addon/components/eui-markdown-editor-footer/index.hbs +3 -1
  22. package/addon/components/eui-markdown-editor-footer/index.ts +0 -11
  23. package/addon/components/eui-markdown-editor-toolbar/icons/markdown-checkmark/index.d.ts +4 -0
  24. package/addon/components/eui-markdown-editor-toolbar/icons/markdown-checkmark/index.hbs +16 -0
  25. package/addon/components/eui-markdown-editor-toolbar/index.hbs +6 -1
  26. package/addon/components/eui-markdown-editor-toolbar/index.ts +5 -8
  27. package/addon/components/eui-markdown-format/index.hbs +13 -3
  28. package/addon/components/eui-tabbed-content/index.hbs +19 -13
  29. package/addon/helpers/class-names.ts +3 -1
  30. package/app/components/eui-markdown-editor-footer/icons/markdown-logo/index.js +1 -0
  31. package/app/components/eui-markdown-editor-toolbar/icons/markdown-checkmark/index.js +1 -0
  32. package/config/environment.js +2 -2
  33. package/docs/display/icons-demo/demo1.md +0 -10
  34. package/index.js +6 -56
  35. package/package.json +69 -50
  36. package/.prettierignore +0 -20
  37. package/app/components/eui-text-field/index.js +0 -1
  38. package/lib/elastic-eui-scss-filter.js +0 -16
  39. package/public/markdown-checkmark.svg +0 -3
  40. package/public/markdown-logo.svg +0 -3
package/CHANGELOG.md CHANGED
@@ -2,6 +2,43 @@
2
2
 
3
3
  ### Master
4
4
 
5
+ ### 3.1.0
6
+ 🚀 Enhancements
7
+ `@ember-eui/*`
8
+ - Embroider ready, in order to use staticComponents you need to have `@embroider` > 1.2.0
9
+
10
+ 🐛 Bug / Fixes
11
+ `@ember-eui/core`
12
+ - `<EuiMarkdownFormat />` and `<EuiMarkdownEditor />` styling bugs and double render issues fixed
13
+
14
+ ### 3.0.2
15
+ `@ember-eui/core`
16
+ 🐛 Bug / Fixes
17
+ - Fix `<EuiMarkdownEditor />` icons compatibility with ember-source < 3.27
18
+
19
+ ### 3.0.1
20
+ `@ember-eui/core`
21
+ 🚀 Enhancements
22
+ - No longer need to add icons from public icons in ember-eui/core
23
+
24
+ ### 3.0.0
25
+ 💥 Breaking change
26
+ `@ember-eui/*`
27
+ - Drops support for ember-source < v3.20.0
28
+ - Drops support for node 10
29
+ - Drops support for importing sass, elastic eui is migrating to emotion, so its better we just focus on that instead of sass, so we no longer dynamically import template only components for now, this could possibly be achieved later post embroider
30
+
31
+ 🏠 Internal
32
+ `@ember-eui/*`
33
+ - `ember-cli-update --to=3.28.0` on all packages
34
+ - Update ember-cli-typescript
35
+ - Remove some deprecations like new imports paths and helpers usage and `#with` helper
36
+
37
+ ### 2.0.0
38
+ 💥 Breaking change
39
+ `@ember-eui/core`
40
+ - Deprecate `ember-svg-jar` `hbs` strategy for now, just use stock `ember-svg-jar`
41
+
5
42
  ### 1.6.3
6
43
  🐛 Bug / Fixes
7
44
  `@ember-eui/core`
package/README.md CHANGED
@@ -1,7 +1,6 @@
1
1
  # ember-eui
2
2
 
3
3
  This project aims to provide ember components implementing the css layer of https://elastic.github.io/eui
4
-
5
4
  ### Icons
6
5
 
7
6
  For icons to work you will need to:
@@ -16,7 +15,6 @@ var app = new EmberApp(defaults, {
16
15
  svgJar: {
17
16
  sourceDirs: [
18
17
  'public/assets',
19
- '../node_modules/@ember-eui/core/public',
20
18
  'node_modules/@elastic/eui/lib/components/icon',
21
19
  ],
22
20
  },
@@ -27,11 +25,13 @@ var app = new EmberApp(defaults, {
27
25
 
28
26
  ## Compatibility
29
27
 
30
- - Ember.js v3.12 or above
31
- - Ember CLI v2.13 or above
32
- - Node.js v10 or above
28
+ * Ember.js v3.20 or above
29
+ * Ember CLI v3.20 or above
30
+ * Node.js v12 or above
31
+
33
32
 
34
- ## Installation
33
+ Installation
34
+ ------------------------------------------------------------------------------
35
35
 
36
36
  ```
37
37
  ember install @ember-eui/core
@@ -67,7 +67,7 @@
67
67
  }}
68
68
  >
69
69
  <span class="euiBadge__content">
70
- {{#if hasBlock}}
70
+ {{#if (has-block)}}
71
71
  {{#if @onClick}}
72
72
  <button
73
73
  class="euiBadge__childButton"
@@ -101,14 +101,14 @@
101
101
  class={{class-names "euiBadge__icon" @closeButtonProps.iconClasses}}
102
102
  @type={{@iconType}}
103
103
  data-selected-index={{@closeButtonProps.dataSelectedIconIndex}}
104
- @size={{if hasBlock "s" "m"}}
104
+ @size={{if (has-block) "s" "m"}}
105
105
  />
106
106
  </button>
107
107
  {{! tempalte-lint-enable}}
108
108
  {{else}}
109
109
  <EuiIcon
110
110
  @type={{@iconType}}
111
- @size={{if hasBlock "s" "m"}}
111
+ @size={{if (has-block) "s" "m"}}
112
112
  class="euiBadge__icon"
113
113
  />
114
114
  {{/if}}
@@ -21,6 +21,7 @@
21
21
  @iconSide={{@iconSide}}
22
22
  @iconClasses={{@iconClasses}}
23
23
  @useSvg={{@useSvg}}
24
+ @useComponent={{@useComponent}}
24
25
  @textClasses={{class-names "euiButton__text" @textClasses}}
25
26
  >
26
27
  {{yield}}
@@ -48,6 +49,7 @@
48
49
  @iconSide={{@iconSide}}
49
50
  @iconClasses={{@iconClasses}}
50
51
  @useSvg={{@useSvg}}
52
+ @useComponent={{@useComponent}}
51
53
  @textClasses={{class-names "euiButton__text" @textClasses}}
52
54
  >
53
55
  {{yield}}
@@ -13,6 +13,7 @@
13
13
  @type={{@iconType}}
14
14
  @size="m"
15
15
  @useSvg={{@useSvg}}
16
+ @useComponent={{@useComponent}}
16
17
  />
17
18
  {{/if}}
18
19
  <span class={{@textClasses}}>
@@ -18,6 +18,7 @@
18
18
  @iconSide={{@iconSide}}
19
19
  @iconClasses={{@iconClasses}}
20
20
  @useSvg={{@useSvg}}
21
+ @useComponent={{@useComponent}}
21
22
  @textClasses={{class-names "euiButtonEmpty__text" @textClasses}}
22
23
  >
23
24
  {{yield}}
@@ -44,6 +45,7 @@
44
45
  @iconSide={{@iconSide}}
45
46
  @iconClasses={{@iconClasses}}
46
47
  @useSvg={{@useSvg}}
48
+ @useComponent={{@useComponent}}
47
49
  @textClasses={{class-names "euiButtonEmpty__text" @textClasses}}
48
50
  >
49
51
  {{yield}}
@@ -11,6 +11,7 @@
11
11
  @type={{@iconType}}
12
12
  @size={{arg-or-default @iconSize "m"}}
13
13
  @useSvg={{@useSvg}}
14
+ @useComponent={{@useComponent}}
14
15
  aria-hidden="true"
15
16
  />
16
17
  {{/if}}
@@ -29,6 +30,7 @@
29
30
  @type={{@iconType}}
30
31
  @size={{@iconSize}}
31
32
  @useSvg={{@useSvg}}
33
+ @useComponent={{@useComponent}}
32
34
  aria-hidden="true"
33
35
  />
34
36
  {{/if}}
@@ -17,7 +17,7 @@
17
17
  aria-checked={{@isSelected}}
18
18
  ...attributes
19
19
  >
20
- {{#if hasBlock}}
20
+ {{#if (has-block)}}
21
21
  {{yield}}
22
22
  {{else if @isSelected}}
23
23
  Selected
@@ -9,7 +9,7 @@
9
9
  (if (eq @layout "horizontal") "euiCard--horizontal")
10
10
  (if (and (eq @display "plain") (not @selectable)) "euiCard--plain")
11
11
  (if @isDisabled "euiCard-isDisabled")
12
- (if hasBlock "euiCard--hasChildren")
12
+ (if (has-block) "euiCard--hasChildren")
13
13
  (if @icon "euiCard--hasIcon" (if has-block "icon" "euiCard--hasIcon"))
14
14
  (if @betaBadgeLabel "euiCard--hasBetaBadge")
15
15
  (if
@@ -1,5 +1,5 @@
1
1
  import Component from '@glimmer/component';
2
- import { isHTMLSafe, htmlSafe } from '@ember/string';
2
+ import { isHTMLSafe, htmlSafe } from '@ember/template';
3
3
  import { get } from '@ember/object';
4
4
 
5
5
  type EuiComboBoxCreateOptionArgs = {
@@ -54,11 +54,7 @@
54
54
  @allowClear={{@isClearable}}
55
55
  @loadingMessage={{@loadingMessage}}
56
56
  @selectedItemComponent={{@selectedItemComponent}}
57
- @beforeOptionsComponent={{if
58
- @beforeOptionsComponent
59
- @beforeOptionsComponent
60
- null
61
- }}
57
+ @beforeOptionsComponent={{@beforeOptionsComponent}}
62
58
  @placeholder={{@placeholder}}
63
59
  @searchPlaceholder={{@searchPlaceholder}}
64
60
  @optionsComponent={{component "eui-combo-box/options" rowHeight=@rowHeight}}
@@ -1,4 +1,4 @@
1
- {{#let (component @groupComponent) as |Group|}}
1
+ {{#let (component (ensure-safe-component @groupComponent)) as |Group|}}
2
2
  {{#if @select.loading}}
3
3
  <EuiText @size="xs" class="euiComboBoxOptionsList__empty">
4
4
  <EuiFlexGroup @gutterSize="s" @justifyContent="center">
@@ -23,7 +23,8 @@
23
23
  aria-controls="ember-power-select-trigger-{{@select.uniqueId}}"
24
24
  ...attributes
25
25
  {{did-insert this.addHandlers}}
26
- {{will-destroy this.removeHandlers}} as |opt index|
26
+ {{will-destroy this.removeHandlers}}
27
+ as |opt index|
27
28
  >
28
29
  {{! template-lint-enable }}
29
30
  {{#if (ember-power-select-is-group opt)}}
@@ -31,10 +32,14 @@
31
32
  {{else}}
32
33
  <li
33
34
  class="euiFilterSelectItem
34
- {{if (eq opt @select.highlighted) " euiFilterSelectItem-isFocused"
35
- }}"
36
- aria-selected="{{ember-power-select-is-selected opt @select.selected
35
+ {{if
36
+ (eq opt @select.highlighted)
37
+ ' euiFilterSelectItem-isFocused'
37
38
  }}"
39
+ aria-selected="{{ember-power-select-is-selected
40
+ opt
41
+ @select.selected
42
+ }}"
38
43
  aria-disabled={{if opt.disabled "true"}}
39
44
  aria-current="{{eq opt @select.highlighted}}"
40
45
  data-option-index="{{index}}"
@@ -38,7 +38,7 @@
38
38
  {{#each @select.selected as |opt idx|}}
39
39
  {{#if @selectedItemComponent}}
40
40
  {{component
41
- @selectedItemComponent
41
+ (ensure-safe-component @selectedItemComponent)
42
42
  extra=@extra
43
43
  option=opt
44
44
  select=@select
@@ -48,7 +48,7 @@
48
48
  class="ember-power-select-multiple-option
49
49
  {{if
50
50
  opt.disabled
51
- "ember-power-select-multiple-option--disabled"
51
+ 'ember-power-select-multiple-option--disabled'
52
52
  }}"
53
53
  @option={{opt}}
54
54
  @onClose={{if
@@ -1,6 +1,23 @@
1
- {{#if this.icon.inner}}
1
+ {{#if @useComponent}}
2
2
  {{! has the shape of a curried component }}
3
- {{component this.icon}}
3
+ {{#let (component (ensure-safe-component this.icon)) as |IconComponent|}}
4
+ {{!template-lint-disable}}
5
+ <IconComponent
6
+ class={{class-names
7
+ this.optionalColorClass
8
+ (if this.isAppIcon "euiIcon--app")
9
+ componentName="EuiIcon"
10
+ size=this.size
11
+ }}
12
+ role="image"
13
+ aria-hidden={{if this.isAriaHidden "true"}}
14
+ aria-label={{if @aria-label @aria-label this.titleId}}
15
+ aria-labelledby={{if @aria-labelledby @aria-labelledby this.titleId}}
16
+ tabindex={{this.tabIndex}}
17
+ style={{this.optionalCustomStyles}}
18
+ ...attributes
19
+ />
20
+ {{/let}}
4
21
  {{else}}
5
22
  {{#if this.useImage}}
6
23
  <img
@@ -29,8 +29,6 @@ type IconColor = string | NamedColor;
29
29
 
30
30
  export type IconSize = keyof typeof sizeToClassNameMap;
31
31
 
32
- // const SVG_PREI : string | undefined = config['ember-eui'].svgPath || 'svg/assets';
33
-
34
32
  export type EuiIconArgs = CommonArgs & {
35
33
  /**
36
34
  * `Enum` is any of the named icons listed in the docs, `string` is usually a URL to an SVG file, and `elementType` is any Ember Icon SVG component
@@ -90,6 +88,7 @@ export default class EuiIcon extends Component<EuiIconArgs> {
90
88
  }
91
89
 
92
90
  get useSvg(): boolean {
91
+ //@ts-ignore
93
92
  const config = getOwner(this).resolveRegistration('config:environment');
94
93
  return (
95
94
  this.args.useSvg ??
@@ -1,6 +1,6 @@
1
1
  import GlimmerComponent from '@glimmer/component';
2
2
  import { tracked } from '@glimmer/tracking';
3
- import { htmlSafe } from '@ember/string';
3
+ import { htmlSafe } from '@ember/template';
4
4
  import { action } from '@ember/object';
5
5
  import { argOrDefaultDecorator as argOrDefault } from '../../helpers/arg-or-default';
6
6
  import { sizeMapping } from '../../utils/css-mappings/eui-image';
@@ -62,6 +62,6 @@
62
62
  </span>
63
63
  {{/if}}
64
64
  {{#if @extraAction}}
65
- {{component @extraAction}}
65
+ {{component (ensure-safe-component @extraAction)}}
66
66
  {{/if}}
67
67
  </li>
@@ -20,6 +20,7 @@ import {
20
20
  EuiMarkdownAstNode
21
21
  } from '../../utils/markdown/markdown-types';
22
22
  import { Processor } from 'unified';
23
+ import { scheduleOnce } from '@ember/runloop';
23
24
 
24
25
  export interface EuiMarkdownEditorArgs {
25
26
  initialViewMode?: string;
@@ -119,7 +120,11 @@ export default class EuiMarkdownEditorComponent extends Component<EuiMarkdownEdi
119
120
  const resizedTextareaHeight =
120
121
  this.textareaRef.offsetHeight + this.editorFooterHeight;
121
122
 
122
- this.currentHeight = resizedTextareaHeight;
123
+ const update = () => {
124
+ this.currentHeight = resizedTextareaHeight;
125
+ };
126
+
127
+ scheduleOnce('afterRender', this, update);
123
128
  }
124
129
  }
125
130
 
@@ -144,7 +149,13 @@ export default class EuiMarkdownEditorComponent extends Component<EuiMarkdownEdi
144
149
  // then add an extra pixel for safety and because the scrollHeight value is rounded
145
150
  const extraHeight = borderWidth + marginWidth + 1;
146
151
 
147
- this.currentHeight = previewRef.scrollHeight + extraHeight;
152
+ const update = () => {
153
+ if (previewRef) {
154
+ this.currentHeight = previewRef.scrollHeight + extraHeight;
155
+ }
156
+ };
157
+
158
+ scheduleOnce('afterRender', this, update);
148
159
  }
149
160
  }
150
161
  }
@@ -188,6 +199,7 @@ export default class EuiMarkdownEditorComponent extends Component<EuiMarkdownEdi
188
199
  };
189
200
 
190
201
  function identityCompiler(this: Processor) {
202
+ //eslint-disable-next-line
191
203
  this.Compiler = Compiler;
192
204
  }
193
205
  return unified().use(this.parsingPluginList).use(identityCompiler);
@@ -0,0 +1,4 @@
1
+ import templateOnlyComponent from '@ember/component/template-only';
2
+
3
+ export type EuiMarkdownEditorToolbarIconsMarkdownLogo =
4
+ typeof templateOnlyComponent;
@@ -0,0 +1,16 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="26"
4
+ height="16"
5
+ fill="none"
6
+ viewBox="0 0 26 16"
7
+ aria-labelledby={{@titleId}}
8
+ ...attributes
9
+ >
10
+ {{#if @title}}
11
+ <title id={{@titleId}}>{{@title}}</title>
12
+ {{/if}}
13
+ <path
14
+ d="M1.25 1.875c0-.345.28-.625.625-.625h22.25c.345 0 .625.28.625.625v12.25c0 .345-.28.625-.625.625H1.875a.625.625 0 01-.625-.625V1.875zM1.875 0C.839 0 0 .84 0 1.875v12.25C0 15.161.84 16 1.875 16h22.25C25.16 16 26 15.16 26 14.125V1.875C26 .839 25.16 0 24.125 0H1.875zM3.75 3.75v8.5h2.5V7.375l2.5 3.125 2.5-3.125v4.875h2.5v-8.5h-2.5l-2.5 3.125-2.5-3.125h-2.5zm11.875 4.375l3.75 4.125 3.75-4.125h-2.5V3.75h-2.5v4.375h-2.5z"
15
+ ></path>
16
+ </svg>
@@ -5,6 +5,7 @@
5
5
  {{! pending implementation}}
6
6
  <EuiButtonIcon
7
7
  @iconType={{component "eui-loading-spinner"}}
8
+ @useComponent={{true}}
8
9
  {{! aria-label={ariaLabels.uploadingFiles} }}
9
10
  />
10
11
  {{/if}}
@@ -29,7 +30,8 @@
29
30
  </div>
30
31
  <EuiButtonIcon
31
32
  class="euiMarkdownEditorFooter__help"
32
- @iconType={{this.markdownLogo}}
33
+ @iconType={{component "eui-markdown-editor-footer/icons/markdown-logo"}}
34
+ @useComponent={{true}}
33
35
  @color="text"
34
36
  @useSvg={{true}}
35
37
  {{! aria-label={ariaLabels.showMarkdownHelp} }}
@@ -1,20 +1,9 @@
1
1
  import Component from '@glimmer/component';
2
2
  import { tracked } from '@glimmer/tracking';
3
- import { getOwner } from '@ember/application';
4
3
 
5
4
  export interface EuiMarkdownEditorFooterArgs {}
6
5
 
7
6
  export default class EuiMarkdownEditorFooterComponent extends Component<EuiMarkdownEditorFooterArgs> {
8
7
  @tracked isPopoverOpen = false;
9
8
  @tracked isShowingHelp = false;
10
-
11
- get svgPath() {
12
- const config = getOwner(this).resolveRegistration('config:environment');
13
- const svgPath = config?.['@ember-eui/core']?.svgPath || 'svg/';
14
- return svgPath;
15
- }
16
-
17
- get markdownLogo() {
18
- return `${this.svgPath}markdown-logo`;
19
- }
20
9
  }
@@ -0,0 +1,4 @@
1
+ import templateOnlyComponent from '@ember/component/template-only';
2
+
3
+ export type EuiMarkdownEditorToolbarIconsMarkdownCheckmark =
4
+ typeof templateOnlyComponent;
@@ -0,0 +1,16 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="16"
4
+ height="16"
5
+ fill="none"
6
+ viewBox="0 0 16 16"
7
+ aria-labelledby={{@titleId}}
8
+ ...attributes
9
+ >
10
+ {{#if @title}}
11
+ <title id={{@titleId}}>{{@title}}</title>
12
+ {{/if}}
13
+ <path
14
+ d="M11.828 13H4.172A1.173 1.173 0 013 11.828V4.172C3 3.526 3.526 3 4.172 3h7.656C12.474 3 13 3.526 13 4.172v7.656c0 .646-.526 1.172-1.172 1.172zM4.172 3.781a.391.391 0 00-.39.39v7.657c0 .216.175.39.39.39h7.656a.39.39 0 00.39-.39V4.172a.391.391 0 00-.39-.39H4.172zm7.244 2.175l-.582-.521L7.22 9.469 5.125 7.476l-.539.566 2.68 2.548 4.15-4.634z"
15
+ ></path>
16
+ </svg>
@@ -18,7 +18,12 @@
18
18
  <EuiButtonIcon
19
19
  @color="text"
20
20
  {{on "click" (fn this.handleMdButtonClick item.id)}}
21
- @iconType={{item.iconType}}
21
+ @iconType={{if
22
+ item.iconType.component
23
+ (component (ensure-safe-component item.iconType.component))
24
+ item.iconType
25
+ }}
26
+ @useComponent={{item.iconType.component}}
22
27
  aria-label={{item.label}}
23
28
  @useSvg={{item.useSvg}}
24
29
  @isDisabled={{this.isPreviewing}}
@@ -3,7 +3,7 @@ import { action } from '@ember/object';
3
3
  import type MarkdownActions from '../../utils/markdown/markdown-actions';
4
4
  import { MODE_VIEWING } from '../../utils/markdown/markdown-modes';
5
5
  import { cached } from '@glimmer/tracking';
6
- import { getOwner } from '@ember/application';
6
+
7
7
  import { Plugin } from 'unified';
8
8
 
9
9
  export interface EuiMarkdownEditorToolbarArgs {
@@ -29,12 +29,6 @@ export default class EuiMarkdownEditorToolbarComponent extends Component<EuiMark
29
29
  }
30
30
  ];
31
31
 
32
- get svgPath() {
33
- const config = getOwner(this).resolveRegistration('config:environment');
34
- const svgPath = config?.['@ember-eui/core']?.svgPath || 'svg/';
35
- return svgPath;
36
- }
37
-
38
32
  @cached
39
33
  get listButtons() {
40
34
  return [
@@ -55,7 +49,10 @@ export default class EuiMarkdownEditorToolbarComponent extends Component<EuiMark
55
49
  label: 'Task list',
56
50
  name: 'tl',
57
51
  useSvg: true,
58
- iconType: `${this.svgPath}markdown-checkmark`
52
+ iconType: {
53
+ // this should't be needed when we drop support for 3.24.0
54
+ component: 'eui-markdown-editor-toolbar/icons/markdown-checkmark'
55
+ }
59
56
  }
60
57
  ];
61
58
  }
@@ -1,9 +1,19 @@
1
1
  {{! This hbs was inspired by https://github.com/ampatspell/ember-cli-remark-static/blob/v3.0.5/addon/components/remark.hbs }}
2
- <div class="euiMarkdownFormat">
2
+ <EuiText
3
+ class="euiMarkdownFormat"
4
+ @color={{@color}}
5
+ @grow={{@grow}}
6
+ @size={{@textSize}}
7
+ @textAlign={{@textAlign}}
8
+ ...attributes
9
+ >
3
10
  {{this.result.element}}
4
11
  {{#each this.result.components as |CompNode|}}
5
12
  {{#in-element CompNode.element}}
6
- {{#let (component CompNode.componentName) as |DynamicComponent|}}
13
+ {{#let
14
+ (component (ensure-safe-component CompNode.componentName))
15
+ as |DynamicComponent|
16
+ }}
7
17
  <DynamicComponent
8
18
  @replaceNode={{optional @replaceNode}}
9
19
  @node={{CompNode}}
@@ -11,4 +21,4 @@
11
21
  {{/let}}
12
22
  {{/in-element}}
13
23
  {{/each}}
14
- </div>
24
+ </EuiText>
@@ -1,17 +1,21 @@
1
1
  {{#let
2
2
  (unique-id)
3
3
  (optional @onTabClick)
4
- (arg-or-default @autoFocus "initial")
4
+ (arg-or-default @autoFocus 'initial')
5
5
  (use-state
6
- (get-tab-id (arg-or-default (or @selectedTab @initialSelectedTab) (object-at 0 @tabs)))
7
- ) as |id onTabClick autoFocus selectedTab|
6
+ (get-tab-id
7
+ (arg-or-default (or @selectedTab @initialSelectedTab) (object-at 0 @tabs))
8
+ )
9
+ )
10
+ as |id onTabClick autoFocus selectedTab|
8
11
  }}
9
12
  <div class={{@className}} ...attributes>
10
13
  <EuiTabs
11
14
  @selectedTab={{selectedTab.value}}
12
15
  @expand={{@expand}}
13
16
  @display={{@display}}
14
- @size={{@size}} as |EuiTab|
17
+ @size={{@size}}
18
+ as |EuiTab|
15
19
  >
16
20
  {{#each @tabs as |tab|}}
17
21
  <EuiTab
@@ -26,14 +30,16 @@
26
30
  </EuiTab>
27
31
  {{/each}}
28
32
  </EuiTabs>
29
- {{#with (find-by "id" selectedTab.value @tabs) as |currentTab|}}
30
- <div role="tabpanel" id={{id}} aria-labelledby={{currentTab.id}}>
31
- {{#if (has-block "selectedTabContent")}}
32
- {{yield currentTab to="selectedTabContent"}}
33
- {{else}}
34
- {{currentTab.content}}
35
- {{/if}}
36
- </div>
37
- {{/with}}
33
+ {{#let (find-by "id" selectedTab.value @tabs) as |currentTab|}}
34
+ {{#if currentTab}}
35
+ <div role="tabpanel" id={{id}} aria-labelledby={{currentTab.id}}>
36
+ {{#if (has-block "selectedTabContent")}}
37
+ {{yield currentTab to="selectedTabContent"}}
38
+ {{else}}
39
+ {{currentTab.content}}
40
+ {{/if}}
41
+ </div>
42
+ {{/if}}
43
+ {{/let}}
38
44
  </div>
39
45
  {{/let}}
@@ -66,4 +66,6 @@ export function classNames(
66
66
  return str;
67
67
  }
68
68
 
69
- export default helper(classNames);
69
+ export default helper<string[], Options & { addBase: boolean }, string>(
70
+ classNames
71
+ );
@@ -0,0 +1 @@
1
+ export { default } from '@ember-eui/core/components/eui-markdown-editor-footer/icons/markdown-logo';
@@ -0,0 +1 @@
1
+ export { default } from '@ember-eui/core/components/eui-markdown-editor-toolbar/icons/markdown-checkmark';
@@ -1,5 +1,5 @@
1
1
  'use strict';
2
2
 
3
- module.exports = function(/* environment, appConfig */) {
4
- return { };
3
+ module.exports = function (/* environment, appConfig */) {
4
+ return {};
5
5
  };
@@ -1,16 +1,6 @@
1
1
  # Demo
2
2
 
3
3
  ```hbs template
4
- <EuiText style='cursor: pointer;' {{on 'mousemove' this.update}}>
5
- You can hover on the icon below, open the network tab, all svgs are loaded on
6
- demand!
7
- <EuiIcon @type={{this.icon}} />
8
- <EuiIcon @type={{this.icon}} @size='m' />
9
- <EuiIcon @type={{this.icon}} @size='l' />
10
- <EuiIcon @type={{this.icon}} @size='xl' />
11
- <EuiIcon @type={{this.icon}} @size='xxl' />
12
- </EuiText>
13
- <br />
14
4
  <EuiIcon @type='logoGolang' />
15
5
  <EuiIcon @type='logoGolang' @size='m' />
16
6
  <EuiIcon @type='logoGolang' @size='l' />
package/index.js CHANGED
@@ -1,10 +1,4 @@
1
1
  'use strict';
2
- const path = require('path');
3
- const resolve = require('resolve');
4
- const BroccoliMergeTrees = require('broccoli-merge-trees');
5
- const writeFile = require('broccoli-file-creator');
6
- const Funnel = require('broccoli-funnel');
7
- const EuiScssFilter = require('./lib/elastic-eui-scss-filter');
8
2
 
9
3
  module.exports = {
10
4
  name: require('./package').name,
@@ -53,14 +47,12 @@ module.exports = {
53
47
  ? this.emberEuiOptions.theme
54
48
  : 'light';
55
49
 
56
- if (this.emberEuiOptions.useCompiledCss !== false) {
57
- if (this.emberEuiOptions.theme) {
58
- app.import(
59
- `node_modules/@elastic/eui/dist/eui_theme_${this.emberEuiOptions.theme}.min.css`
60
- );
61
- } else {
62
- app.import('node_modules/@elastic/eui/dist/eui_theme_light.min.css');
63
- }
50
+ if (this.emberEuiOptions.theme) {
51
+ app.import(
52
+ `node_modules/@elastic/eui/dist/eui_theme_${this.emberEuiOptions.theme}.min.css`
53
+ );
54
+ } else {
55
+ app.import('node_modules/@elastic/eui/dist/eui_theme_light.min.css');
64
56
  }
65
57
 
66
58
  this._super.included.apply(this, arguments);
@@ -71,47 +63,5 @@ module.exports = {
71
63
  (a) => a.name === 'ember-power-select'
72
64
  );
73
65
  return emberPowerSelect.contentFor(type, config);
74
- },
75
-
76
- // TODO: Currently the performance of recompiling sass on every change are serious, find a way to improve them.
77
- treeForStyles(tree) {
78
- let trees = [];
79
- let euiScssFiles;
80
-
81
- if (this.emberEuiOptions.useCompiledCss === false) {
82
- euiScssFiles = new Funnel(this.pathBase('@elastic/eui'), {
83
- srcDir: '/src',
84
- include: ['**/*.scss'],
85
- destDir: 'elastic-eui',
86
- annotation: 'ElasticEUIScssFunnel'
87
- });
88
-
89
- euiScssFiles = new EuiScssFilter(euiScssFiles);
90
-
91
- trees.push(euiScssFiles);
92
- }
93
-
94
- let selectedTheme = this.emberEuiOptions.theme;
95
-
96
- let importer = writeFile(
97
- 'ember-eui-components.scss',
98
- euiScssFiles ? `@import './elastic-eui/theme_${selectedTheme}.scss';` : ''
99
- );
100
-
101
- trees.push(importer);
102
-
103
- trees.push(tree);
104
-
105
- let output = new BroccoliMergeTrees(trees, {
106
- overwrite: true
107
- });
108
-
109
- return this._super.treeForStyles(output);
110
- },
111
-
112
- pathBase(packageName) {
113
- return path.dirname(
114
- resolve.sync(`${packageName}/package.json`, { basedir: __dirname })
115
- );
116
66
  }
117
67
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ember-eui/core",
3
- "version": "2.0.0",
3
+ "version": "3.1.0",
4
4
  "description": "Ember Components for Elastic UI",
5
5
  "keywords": [
6
6
  "ember-addon",
@@ -26,11 +26,14 @@
26
26
  },
27
27
  "scripts": {
28
28
  "build": "ember build --environment=production",
29
- "lint": "npm-run-all --aggregate-output --continue-on-error --parallel lint:*",
29
+ "lint": "npm-run-all --aggregate-output --continue-on-error --parallel \"lint:!(fix)\"",
30
+ "lint:fix": "npm-run-all --aggregate-output --continue-on-error --parallel lint:*:fix",
30
31
  "lint:hbs": "ember-template-lint .",
31
- "lint:js": "eslint .",
32
+ "lint:hbs:fix": "ember-template-lint . --fix",
33
+ "lint:js": "eslint . --cache",
34
+ "lint:js:fix": "eslint . --fix",
32
35
  "start": "ember serve",
33
- "test": "npm-run-all lint:* test:*",
36
+ "test": "npm-run-all lint test:*",
34
37
  "test:ember": "ember test",
35
38
  "test:ember-compatibility": "ember try:each",
36
39
  "prepack": "ember ts:precompile",
@@ -49,34 +52,30 @@
49
52
  },
50
53
  "dependencies": {
51
54
  "@elastic/eui": "31.0.0",
52
- "@ember/render-modifiers": "^1.0.2",
53
- "@html-next/vertical-collection": "^2.0.0",
55
+ "@ember/render-modifiers": "^2.0.4",
56
+ "@html-next/vertical-collection": "^2.1.0",
54
57
  "@types/lodash-es": "^4.17.4",
55
- "broccoli-file-creator": "^2.1.1",
56
- "broccoli-filter": "^1.3.0",
57
- "broccoli-funnel": "^2.0.1",
58
- "broccoli-merge-trees": "^4.2.0",
59
58
  "chroma-js": "^2.1.0",
60
- "ember-auto-import": "^1.6.0",
59
+ "ember-auto-import": "^1.11.3",
61
60
  "ember-cached-decorator-polyfill": "^0.1.1",
62
- "ember-cli-babel": "^7.21.0",
63
- "ember-cli-htmlbars": "^5.3.2",
64
- "ember-cli-typescript": "^4.1.0",
61
+ "ember-cli-babel": "^7.26.6",
62
+ "ember-cli-htmlbars": "^5.7.1",
63
+ "ember-cli-typescript": "4.2.1",
65
64
  "ember-composable-helpers": "^4.4.1",
66
- "ember-element-helper": "^0.5.0",
67
- "ember-focus-trap": "^0.4.0",
65
+ "ember-element-helper": "^0.5.5",
66
+ "ember-focus-trap": "^0.7.0",
68
67
  "ember-href-to": "^4.1.0",
69
68
  "ember-in-element-polyfill": "^1.0.0",
70
69
  "ember-keyboard": "^6.0.2",
71
70
  "ember-math-helpers": "^2.15.0",
72
- "ember-modifier": "^2.1.1",
71
+ "ember-modifier": "^2.1.2",
73
72
  "ember-named-blocks-polyfill": "^0.2.3",
74
73
  "ember-power-select": "^5.0.2",
75
74
  "ember-set-body-class": "^1.0.2",
76
- "ember-set-helper": "^2.0.0",
75
+ "ember-set-helper": "^2.0.1",
77
76
  "ember-style-modifier": "^0.6.0",
78
77
  "ember-svg-jar": "^2.3.4",
79
- "ember-truth-helpers": "^2.1.0",
78
+ "ember-truth-helpers": "^3.0.0",
80
79
  "highlight.js": "^9.18.5",
81
80
  "lodash-es": "^4.17.21",
82
81
  "mdast-util-to-hast": "^10.0.0",
@@ -93,57 +92,77 @@
93
92
  "vfile": "^4.2.0"
94
93
  },
95
94
  "devDependencies": {
96
- "@ember/optional-features": "^1.3.0",
97
- "@glimmer/component": "^1.0.1",
98
- "@glimmer/tracking": "^1.0.0",
95
+ "@ember/optional-features": "^2.0.0",
96
+ "@ember/test-helpers": "^2.6.0",
97
+ "@embroider/test-setup": "^1.0.0",
98
+ "@embroider/util": "^1.2.0",
99
+ "@glimmer/component": "^1.0.4",
100
+ "@glimmer/tracking": "^1.0.4",
99
101
  "@types/ember": "^3.16.0",
100
- "@types/ember-qunit": "^3.4.9",
101
- "@types/ember-resolver": "^5.0.9",
102
- "@types/ember__test-helpers": "^1.7.2",
103
- "@types/qunit": "^2.9.1",
102
+ "@types/ember-qunit": "^5.0.0",
103
+ "@types/ember-resolver": "^5.0.11",
104
+ "@types/ember__application": "^4.0.0",
105
+ "@types/ember__array": "^4.0.1",
106
+ "@types/ember__component": "^4.0.4",
107
+ "@types/ember__controller": "^4.0.0",
108
+ "@types/ember__debug": "^4.0.0",
109
+ "@types/ember__engine": "^4.0.0",
110
+ "@types/ember__error": "^4.0.0",
111
+ "@types/ember__object": "^4.0.0",
112
+ "@types/ember__polyfills": "^4.0.0",
113
+ "@types/ember__routing": "^4.0.3",
114
+ "@types/ember__runloop": "^4.0.0",
115
+ "@types/ember__service": "^4.0.0",
116
+ "@types/ember__string": "^3.0.9",
117
+ "@types/ember__template": "^4.0.0",
118
+ "@types/ember__test": "^4.0.0",
119
+ "@types/ember__test-helpers": "^2.6.1",
120
+ "@types/ember__utils": "^4.0.0",
121
+ "@types/htmlbars-inline-precompile": "^3.0.0",
122
+ "@types/qunit": "^2.11.3",
123
+ "@types/rsvp": "^4.0.4",
104
124
  "babel-eslint": "^10.1.0",
105
125
  "broccoli-asset-rev": "^3.0.0",
106
- "ember-cli": "~3.20.0",
126
+ "ember-cli": "~3.28.0",
107
127
  "ember-cli-dependency-checker": "^3.2.0",
108
- "ember-cli-inject-live-reload": "^2.0.2",
128
+ "ember-cli-inject-live-reload": "^2.1.0",
109
129
  "ember-cli-netlify": "^0.4.1",
110
- "ember-cli-postcss": "^7.0.0",
111
- "ember-cli-resolve-asset": "^0.3.0",
112
130
  "ember-cli-sri": "^2.1.1",
113
- "ember-cli-string-helpers": "^5.0.0",
131
+ "ember-cli-string-helpers": "^6.1.0",
132
+ "ember-cli-terser": "^4.0.2",
114
133
  "ember-cli-typescript-blueprints": "^3.0.0",
115
- "ember-cli-uglify": "^3.0.0",
116
134
  "ember-disable-prototype-extensions": "^1.1.3",
117
- "ember-element-helper": "^0.3.1",
118
135
  "ember-export-application-global": "^2.0.1",
119
- "ember-get-config": "^0.3.0",
120
- "ember-load-initializers": "^2.1.1",
136
+ "ember-get-config": "~1.0.2",
137
+ "ember-load-initializers": "^2.1.2",
121
138
  "ember-maybe-import-regenerator": "^0.1.6",
122
- "ember-modifier": "^2.1.1",
123
- "ember-qunit": "^4.6.0",
124
- "ember-resolver": "^8.0.0",
125
- "ember-source": "~3.20.2",
126
- "ember-source-channel-url": "^2.0.1",
127
- "ember-string-helpers": "^1.0.2",
128
- "ember-template-lint": "^2.9.1",
139
+ "ember-page-title": "^6.2.2",
140
+ "ember-qunit": "^5.1.4",
141
+ "ember-resolver": "^8.0.2",
142
+ "ember-source": "~3.28.0",
143
+ "ember-source-channel-url": "^3.0.0",
144
+ "ember-template-lint": "^3.6.0",
129
145
  "ember-try": "^1.4.0",
130
- "eslint": "^7.5.0",
131
- "eslint-plugin-ember": "^8.9.1",
146
+ "eslint": "^7.32.0",
147
+ "eslint-config-prettier": "^8.3.0",
148
+ "eslint-plugin-ember": "^10.5.4",
132
149
  "eslint-plugin-node": "^11.1.0",
133
- "eslint-plugin-prettier": "^3.3.1",
150
+ "eslint-plugin-prettier": "^3.4.1",
151
+ "eslint-plugin-qunit": "^6.2.0",
134
152
  "loader.js": "^4.7.0",
135
153
  "lodash-es": "^4.17.21",
136
154
  "mdast-util-to-hast": "^10.0.0",
137
155
  "npm-run-all": "^4.1.5",
138
- "prettier": "^2.2.1",
139
- "qunit-dom": "^1.2.0",
140
- "typescript": "^4.0.3"
156
+ "prettier": "^2.3.2",
157
+ "qunit": "^2.16.0",
158
+ "qunit-dom": "^1.6.0",
159
+ "typescript": "^4.5.5"
141
160
  },
142
161
  "publishConfig": {
143
162
  "access": "public"
144
163
  },
145
164
  "engines": {
146
- "node": ">= 12"
165
+ "node": "12.* || 14.* || >= 16"
147
166
  },
148
167
  "ember": {
149
168
  "edition": "octane"
@@ -154,5 +173,5 @@
154
173
  "volta": {
155
174
  "node": "12.22.1"
156
175
  },
157
- "gitHead": "a225f53d9f2212e3eb5ab0c28daeabc5624031ab"
176
+ "gitHead": "f8ceacd6404b806669edf7bbd1eb2d79aac1f4bf"
158
177
  }
package/.prettierignore DELETED
@@ -1,20 +0,0 @@
1
- # unconventional js
2
- vendor/
3
- public/
4
-
5
- # compiled output
6
- dist/
7
- tmp/
8
-
9
- # dependencies
10
- node_modules/
11
-
12
- # ember-try
13
- .node_modules.ember-try/
14
- bower.json.ember-try
15
- package.json.ember-try
16
-
17
- package.json
18
-
19
- *.html
20
- *.js
@@ -1 +0,0 @@
1
- export { default } from '@ember-eui/core/components/eui-text-field';
@@ -1,16 +0,0 @@
1
- 'use strict';
2
-
3
- const Filter = require('broccoli-filter');
4
-
5
- module.exports = class EuiScssFilter extends Filter {
6
- constructor(inputNode) {
7
- super(inputNode, { annotation: 'EuiScssFilter' });
8
-
9
- this.extensions = ['scss'];
10
- this.targetExtension = 'scss';
11
- }
12
-
13
- processString(content) {
14
- return content.replace("@import '../packages/index';", '');
15
- }
16
- };
@@ -1,3 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16">
2
- <path d="M11.828 13H4.172A1.173 1.173 0 013 11.828V4.172C3 3.526 3.526 3 4.172 3h7.656C12.474 3 13 3.526 13 4.172v7.656c0 .646-.526 1.172-1.172 1.172zM4.172 3.781a.391.391 0 00-.39.39v7.657c0 .216.175.39.39.39h7.656a.39.39 0 00.39-.39V4.172a.391.391 0 00-.39-.39H4.172zm7.244 2.175l-.582-.521L7.22 9.469 5.125 7.476l-.539.566 2.68 2.548 4.15-4.634z" />
3
- </svg>
@@ -1,3 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="26" height="16" fill="none" viewBox="0 0 26 16">
2
- <path d="M1.25 1.875c0-.345.28-.625.625-.625h22.25c.345 0 .625.28.625.625v12.25c0 .345-.28.625-.625.625H1.875a.625.625 0 01-.625-.625V1.875zM1.875 0C.839 0 0 .84 0 1.875v12.25C0 15.161.84 16 1.875 16h22.25C25.16 16 26 15.16 26 14.125V1.875C26 .839 25.16 0 24.125 0H1.875zM3.75 3.75v8.5h2.5V7.375l2.5 3.125 2.5-3.125v4.875h2.5v-8.5h-2.5l-2.5 3.125-2.5-3.125h-2.5zm11.875 4.375l3.75 4.125 3.75-4.125h-2.5V3.75h-2.5v4.375h-2.5z" />
3
- </svg>