@ember-eui/core 4.4.0 → 5.0.0-alpha.4

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 (639) hide show
  1. package/addon/components/common.ts +1 -0
  2. package/addon/components/eui-accordion/index.hbs +106 -85
  3. package/addon/components/eui-accordion/index.ts +58 -19
  4. package/addon/components/eui-auto-sizer/index.hbs +3 -0
  5. package/addon/components/eui-auto-sizer/index.ts +175 -0
  6. package/addon/components/eui-avatar/index.hbs +7 -3
  7. package/addon/components/eui-badge/index.hbs +9 -3
  8. package/addon/components/eui-beta-badge/index.hbs +171 -19
  9. package/addon/components/eui-bottom-bar/index.hbs +43 -12
  10. package/addon/components/eui-bottom-bar/index.ts +75 -32
  11. package/addon/components/eui-breadcrumbs/index.hbs +98 -0
  12. package/addon/components/eui-breadcrumbs/index.ts +194 -0
  13. package/addon/components/eui-button/index.hbs +4 -4
  14. package/addon/components/eui-button-content/index.hbs +6 -2
  15. package/addon/components/eui-button-empty/index.hbs +60 -52
  16. package/addon/components/eui-button-icon/index.hbs +17 -3
  17. package/addon/components/eui-call-out/index.hbs +1 -0
  18. package/addon/components/eui-card/index.hbs +61 -47
  19. package/addon/components/eui-card/index.ts +27 -0
  20. package/addon/components/{eui-card/eui-card-select → eui-card-select}/index.hbs +2 -5
  21. package/addon/components/eui-card-select/index.ts +35 -0
  22. package/addon/components/eui-checkable-card/index.hbs +17 -11
  23. package/addon/components/eui-checkbox/index.hbs +11 -5
  24. package/addon/components/eui-checkbox/index.ts +15 -0
  25. package/addon/components/eui-code/index.hbs +14 -8
  26. package/addon/components/eui-code/index.ts +73 -0
  27. package/addon/components/eui-code-block/controls/index.hbs +26 -0
  28. package/addon/components/eui-code-block/full-screen-display/index.hbs +12 -0
  29. package/addon/components/eui-code-block/index.hbs +144 -9
  30. package/addon/components/eui-code-block/index.ts +290 -0
  31. package/addon/components/eui-code-block/virtualized/index.hbs +30 -0
  32. package/addon/components/eui-code-block/virtualized/index.ts +22 -0
  33. package/addon/components/eui-collapsible-nav/index.hbs +35 -44
  34. package/addon/components/eui-collapsible-nav/index.ts +161 -0
  35. package/addon/components/eui-collapsible-nav-group/index.hbs +114 -66
  36. package/addon/components/eui-combo-box/group/index.hbs +3 -3
  37. package/addon/components/eui-combo-box/index.hbs +5 -2
  38. package/addon/components/eui-combo-box/index.ts +89 -4
  39. package/addon/components/eui-combo-box/options/index.hbs +14 -2
  40. package/addon/components/eui-combo-box/options/index.js +22 -9
  41. package/addon/components/eui-combo-box/trigger/index.hbs +3 -1
  42. package/addon/components/eui-confirm-modal/index.hbs +1 -1
  43. package/addon/components/eui-copy/index.hbs +1 -4
  44. package/addon/components/eui-described-form-group/index.hbs +3 -2
  45. package/addon/components/eui-description-list/index.hbs +23 -0
  46. package/addon/components/eui-description-list-description/index.hbs +3 -0
  47. package/addon/components/eui-description-list-title/index.hbs +3 -0
  48. package/addon/components/eui-dual-range/index.hbs +30 -18
  49. package/addon/components/eui-dual-range/index.ts +36 -10
  50. package/addon/components/eui-empty-prompt/index.hbs +83 -0
  51. package/addon/components/eui-field-number/index.hbs +3 -3
  52. package/addon/components/eui-field-number/types.ts +4 -1
  53. package/addon/components/eui-field-search/index.hbs +2 -1
  54. package/addon/components/eui-field-text/index.hbs +3 -1
  55. package/addon/components/eui-file-picker/index.hbs +15 -11
  56. package/addon/components/eui-file-picker/index.ts +26 -8
  57. package/addon/components/eui-flyout/index.hbs +130 -43
  58. package/addon/components/eui-flyout/index.ts +233 -0
  59. package/addon/components/eui-flyout-body/index.hbs +21 -7
  60. package/addon/components/eui-form-control-layout-custom-icon/types.ts +3 -1
  61. package/addon/components/eui-form-control-layout-icons/types.ts +4 -1
  62. package/addon/components/eui-form-label/index.hbs +1 -1
  63. package/addon/components/eui-form-row/index.hbs +13 -9
  64. package/addon/components/eui-global-toast-list/index.ts +5 -6
  65. package/addon/components/eui-header/index.hbs +18 -3
  66. package/addon/{modifiers/fixed-header.ts → components/eui-header/index.ts} +10 -1
  67. package/addon/components/eui-header-alert/index.hbs +25 -0
  68. package/addon/components/eui-header-breadcrumbs/index.hbs +7 -0
  69. package/addon/components/eui-header-links/index.hbs +41 -0
  70. package/addon/components/eui-header-links/index.ts +14 -0
  71. package/addon/components/eui-header-section-item-button/index.hbs +30 -12
  72. package/addon/components/eui-header-section-item-button/index.ts +131 -0
  73. package/addon/components/eui-health/index.hbs +15 -13
  74. package/addon/components/eui-hide-for/index.hbs +3 -0
  75. package/addon/components/eui-hide-for/index.ts +33 -0
  76. package/addon/components/eui-icon/index.hbs +6 -3
  77. package/addon/components/eui-icon/index.ts +4 -0
  78. package/addon/components/eui-image/index.hbs +63 -25
  79. package/addon/components/eui-image/index.ts +7 -2
  80. package/addon/components/eui-input-popover/index.ts +6 -4
  81. package/addon/components/eui-key-pad-menu/index.hbs +16 -0
  82. package/addon/components/eui-key-pad-menu/key/index.hbs +1 -0
  83. package/addon/components/eui-key-pad-menu-item/index.hbs +66 -0
  84. package/addon/components/eui-key-pad-menu-item/index.ts +11 -0
  85. package/addon/components/eui-link/index.hbs +50 -0
  86. package/addon/components/eui-list-group-item/index.hbs +10 -2
  87. package/addon/components/eui-loading-logo/index.hbs +14 -0
  88. package/addon/components/eui-markdown-editor/index.hbs +4 -1
  89. package/addon/components/eui-markdown-editor/index.ts +54 -0
  90. package/addon/components/eui-markdown-editor-footer/index.hbs +39 -40
  91. package/addon/components/eui-markdown-format/index.ts +1 -1
  92. package/addon/components/eui-markdown-format/markdown-code/index.hbs +2 -2
  93. package/addon/components/eui-markdown-format/markdown-code-block/index.hbs +1 -0
  94. package/addon/components/eui-modal/index.hbs +28 -24
  95. package/addon/components/eui-overlay-mask/index.hbs +4 -4
  96. package/addon/components/eui-overlay-mask/index.ts +14 -1
  97. package/addon/components/eui-page/index.hbs +3 -6
  98. package/addon/components/eui-page-body/index.hbs +47 -15
  99. package/addon/components/eui-page-content/index.hbs +6 -8
  100. package/addon/components/eui-page-content-body/index.hbs +13 -1
  101. package/addon/components/eui-page-content-header/index.hbs +6 -0
  102. package/addon/components/eui-page-header/index.hbs +31 -6
  103. package/addon/components/eui-page-header-content/index.hbs +219 -0
  104. package/addon/components/eui-page-header-content/index.ts +49 -0
  105. package/addon/components/eui-page-side-bar/index.hbs +8 -1
  106. package/addon/components/eui-page-template/index.hbs +417 -0
  107. package/addon/components/eui-page-template/index.ts +89 -0
  108. package/addon/components/eui-panel/index.hbs +58 -12
  109. package/addon/components/eui-popover/index.hbs +8 -4
  110. package/addon/components/eui-popover/index.ts +28 -12
  111. package/addon/components/eui-portal/index.ts +2 -1
  112. package/addon/components/eui-progress/index.hbs +16 -13
  113. package/addon/components/eui-radio/index.hbs +9 -3
  114. package/addon/components/eui-range/index.hbs +33 -11
  115. package/addon/components/eui-range/index.ts +7 -4
  116. package/addon/components/eui-range-input/index.hbs +37 -31
  117. package/addon/components/eui-range-input/types.ts +2 -1
  118. package/addon/components/eui-range-levels/index.hbs +3 -3
  119. package/addon/components/eui-range-levels/index.ts +14 -3
  120. package/addon/components/eui-range-ticks/index.hbs +2 -2
  121. package/addon/components/eui-range-track/index.hbs +10 -2
  122. package/addon/components/eui-range-track/index.ts +23 -6
  123. package/addon/components/eui-show-for/index.hbs +3 -0
  124. package/addon/components/eui-show-for/index.ts +79 -0
  125. package/addon/components/eui-side-nav/index.hbs +161 -36
  126. package/addon/components/eui-side-nav/index.ts +28 -0
  127. package/addon/components/eui-side-nav-item/button/index.hbs +26 -14
  128. package/addon/components/eui-side-nav-item/index.hbs +52 -25
  129. package/addon/components/eui-split-panel/inner/index.hbs +11 -0
  130. package/addon/components/eui-split-panel/outer/index.hbs +27 -0
  131. package/addon/components/eui-split-panel/outer/index.ts +37 -0
  132. package/addon/components/eui-step/eui-step-number/index.hbs +21 -4
  133. package/addon/components/eui-steps/index.hbs +7 -1
  134. package/addon/components/eui-tab/index.hbs +60 -46
  135. package/addon/components/eui-tab/index.ts +23 -0
  136. package/addon/components/eui-tabbed-content/index.hbs +14 -27
  137. package/addon/components/eui-tabbed-content/index.ts +134 -0
  138. package/addon/components/eui-tabs/index.hbs +6 -9
  139. package/addon/components/eui-tool-tip/index.hbs +6 -7
  140. package/addon/components/eui-tool-tip/index.ts +27 -11
  141. package/addon/helpers/arg-or-default.ts +4 -1
  142. package/addon/helpers/class-names.ts +2 -0
  143. package/addon/helpers/eui-palette.ts +4 -1
  144. package/addon/helpers/get-range-tick.ts +53 -8
  145. package/addon/helpers/hex-to-rgb.ts +4 -1
  146. package/addon/helpers/inline-styles.ts +10 -3
  147. package/addon/helpers/is-within-number.ts +4 -1
  148. package/addon/helpers/starts-with.ts +3 -1
  149. package/addon/helpers/unique-id.ts +4 -1
  150. package/addon/initializers/eui-config.ts +12 -0
  151. package/addon/modifiers/mutation-observer.ts +4 -1
  152. package/addon/modifiers/outside-click-detector.ts +4 -4
  153. package/addon/styles/ember-eui.css +2 -10
  154. package/addon/utils/accesibility/cascading-menu-keys.ts +8 -1
  155. package/addon/utils/breakpoint.ts +114 -0
  156. package/addon/utils/code/utils.ts +304 -0
  157. package/addon/utils/color/color_palette.ts +3 -3
  158. package/addon/utils/color/eui_palettes.ts +23 -6
  159. package/addon/utils/css-mappings/eui-avatar.ts +51 -9
  160. package/addon/utils/css-mappings/eui-badge.ts +6 -2
  161. package/addon/utils/css-mappings/eui-beta-badge.ts +22 -0
  162. package/addon/utils/css-mappings/eui-bottom-bar.ts +8 -1
  163. package/addon/utils/css-mappings/eui-button-empty.ts +4 -4
  164. package/addon/utils/css-mappings/eui-button-icon.ts +19 -6
  165. package/addon/utils/css-mappings/eui-button.ts +2 -1
  166. package/addon/utils/css-mappings/eui-card-select.ts +1 -11
  167. package/addon/utils/css-mappings/eui-card.ts +1 -18
  168. package/addon/utils/css-mappings/{eui-code-block-impl.ts → eui-code-block.ts} +0 -0
  169. package/addon/utils/css-mappings/eui-description-list.ts +29 -0
  170. package/addon/utils/css-mappings/eui-empty-prompt.ts +17 -0
  171. package/addon/utils/css-mappings/eui-flyout.ts +21 -1
  172. package/addon/utils/css-mappings/eui-header-links.ts +27 -0
  173. package/addon/utils/css-mappings/eui-health.ts +17 -0
  174. package/addon/utils/css-mappings/eui-icon.ts +93 -70
  175. package/addon/utils/css-mappings/eui-image.ts +17 -2
  176. package/addon/utils/css-mappings/eui-link.ts +21 -0
  177. package/addon/utils/css-mappings/eui-list-group.ts +5 -1
  178. package/addon/utils/css-mappings/eui-modal.ts +5 -1
  179. package/addon/utils/css-mappings/eui-page-body.ts +25 -0
  180. package/addon/utils/css-mappings/eui-page-content-body.ts +17 -0
  181. package/addon/utils/css-mappings/eui-page-content.ts +7 -1
  182. package/addon/utils/css-mappings/eui-page-header.ts +17 -0
  183. package/addon/utils/css-mappings/eui-page-side-bar.ts +17 -0
  184. package/addon/utils/css-mappings/eui-panel.ts +1 -0
  185. package/addon/utils/css-mappings/eui-progress-data.ts +0 -1
  186. package/addon/utils/css-mappings/eui-progress.ts +0 -2
  187. package/addon/utils/css-mappings/eui-range-levels.ts +22 -4
  188. package/addon/utils/css-mappings/eui-tabs.ts +3 -1
  189. package/addon/utils/css-mappings/eui-text-color.ts +3 -2
  190. package/addon/utils/css-mappings/index.ts +23 -3
  191. package/addon/utils/detect-element-resize.js +248 -0
  192. package/addon/utils/markdown/markdown-types.ts +10 -11
  193. package/addon/utils/markdown/plugins/markdown-add-components/index.ts +1 -0
  194. package/addon/utils/markdown/plugins/{markdown-add-components.ts → markdown-add-components/processor.ts} +14 -7
  195. package/addon/utils/markdown/plugins/markdown-checkbox/index.ts +9 -0
  196. package/addon/utils/markdown/plugins/{markdown-checkbox.ts → markdown-checkbox/parser.ts} +3 -5
  197. package/addon/utils/markdown/plugins/markdown-default-plugins/index.ts +12 -0
  198. package/addon/utils/markdown/plugins/{markdown-default-plugins.ts → markdown-default-plugins/parsing-plugins.ts} +13 -25
  199. package/addon/utils/markdown/plugins/markdown-default-plugins/plugins.ts +32 -0
  200. package/addon/utils/markdown/plugins/markdown-default-plugins/processing-plugins.ts +67 -0
  201. package/addon/utils/markdown/plugins/markdown-default-plugins/ui-plugins.ts +27 -0
  202. package/addon/utils/markdown/plugins/markdown-tooltip/index.ts +2 -0
  203. package/addon/utils/markdown/plugins/{markdown-tooltip.ts → markdown-tooltip/parser.ts} +3 -23
  204. package/addon/utils/markdown/plugins/markdown-tooltip/plugin.ts +17 -0
  205. package/addon/utils/markdown/plugins/to-dom.ts +3 -1
  206. package/addon/utils/markdown/remark/remark-prismjs.ts +41 -0
  207. package/addon/utils/popover/index.ts +87 -35
  208. package/addon/utils/range/index.ts +1 -0
  209. package/addon/utils/transition.ts +10 -3
  210. package/addon/version.ts +6 -0
  211. package/app/components/eui-auto-sizer/index.js +1 -0
  212. package/app/components/eui-avatar/index.js +1 -1
  213. package/app/components/eui-badge-group/badge-group-item/index.js +1 -1
  214. package/app/components/eui-badge-group/index.js +1 -1
  215. package/app/components/eui-breadcrumbs/index.js +1 -0
  216. package/app/components/eui-button-icon/index.js +1 -1
  217. package/app/components/eui-card-select/index.js +1 -0
  218. package/app/components/{eui-code-block-impl → eui-code-block/controls}/index.js +1 -1
  219. package/app/components/{eui-code-block-impl/code-block-controls → eui-code-block/full-screen-display}/index.js +1 -1
  220. package/app/components/eui-code-block/virtualized/index.js +1 -0
  221. package/app/components/eui-combo-box/create-option/index.js +1 -1
  222. package/app/components/eui-comment/eui-comment-timeline/index.js +1 -1
  223. package/app/components/eui-comment/index.js +1 -1
  224. package/app/components/eui-description-list/index.js +1 -0
  225. package/app/components/eui-description-list-description/index.js +1 -0
  226. package/app/components/eui-description-list-title/index.js +1 -0
  227. package/app/components/eui-dual-range/index.js +1 -1
  228. package/app/components/eui-empty-prompt/index.js +1 -0
  229. package/app/components/eui-field-number/index.js +1 -1
  230. package/app/components/eui-field-password/index.js +1 -1
  231. package/app/components/eui-field-search/index.js +1 -1
  232. package/app/components/eui-field-text/index.js +1 -1
  233. package/app/components/eui-file-picker/index.js +1 -1
  234. package/app/components/eui-form/index.js +1 -1
  235. package/app/components/eui-form-control-layout/index.js +1 -1
  236. package/app/components/eui-form-control-layout-clear-button/index.js +1 -1
  237. package/app/components/eui-form-control-layout-custom-icon/index.js +1 -1
  238. package/app/components/eui-form-control-layout-delimited/index.js +1 -1
  239. package/app/components/eui-form-control-layout-icons/index.js +1 -1
  240. package/app/components/eui-form-error-text/index.js +1 -1
  241. package/app/components/eui-form-fieldset/index.js +1 -1
  242. package/app/components/eui-form-help-text/index.js +1 -1
  243. package/app/components/eui-form-label/index.js +1 -1
  244. package/app/components/eui-form-legend/index.js +1 -1
  245. package/app/components/eui-form-row/index.js +1 -1
  246. package/app/components/eui-header-alert/index.js +1 -0
  247. package/app/components/eui-header-breadcrumbs/index.js +1 -0
  248. package/app/components/eui-header-links/index.js +1 -0
  249. package/app/components/eui-hide-for/index.js +1 -0
  250. package/app/components/eui-image.js +1 -1
  251. package/app/components/eui-key-pad-menu/index.js +1 -0
  252. package/app/components/eui-key-pad-menu/key/index.js +1 -0
  253. package/app/components/eui-key-pad-menu-item/index.js +1 -0
  254. package/app/components/eui-link/index.js +1 -0
  255. package/app/components/eui-list-group/index.js +1 -1
  256. package/app/components/eui-list-group-item/index.js +1 -1
  257. package/app/components/eui-loading-logo/index.js +1 -0
  258. package/app/components/eui-overlay-mask.js +1 -1
  259. package/app/components/eui-page/index.js +1 -1
  260. package/app/components/eui-page-body/index.js +1 -1
  261. package/app/components/eui-page-content/index.js +1 -1
  262. package/app/components/eui-page-content-body/index.js +1 -1
  263. package/app/components/eui-page-content-header/index.js +1 -1
  264. package/app/components/eui-page-content-header-section/index.js +1 -1
  265. package/app/components/eui-page-header/index.js +1 -1
  266. package/app/components/eui-page-header-content/index.js +1 -0
  267. package/app/components/eui-page-header-section/index.js +1 -1
  268. package/app/components/eui-page-template/index.js +1 -0
  269. package/app/components/eui-panel/index.js +1 -1
  270. package/app/components/eui-popover/index.js +1 -1
  271. package/app/components/eui-popover-footer/index.js +1 -1
  272. package/app/components/eui-popover-title/index.js +1 -1
  273. package/app/components/eui-portal/index.js +1 -1
  274. package/app/components/eui-progress/index.js +1 -1
  275. package/app/components/eui-radio/index.js +1 -1
  276. package/app/components/eui-radio-group/index.js +1 -1
  277. package/app/components/eui-range/index.js +1 -1
  278. package/app/components/eui-range-highlight/index.js +1 -1
  279. package/app/components/eui-range-input/index.js +1 -1
  280. package/app/components/eui-range-label/index.js +1 -1
  281. package/app/components/eui-range-levels/index.js +1 -1
  282. package/app/components/eui-range-slider/index.js +1 -1
  283. package/app/components/eui-range-thumb/index.js +1 -1
  284. package/app/components/eui-range-ticks/index.js +1 -1
  285. package/app/components/eui-range-tooltip/index.js +1 -1
  286. package/app/components/eui-range-track/index.js +1 -1
  287. package/app/components/eui-range-wrapper/index.js +1 -1
  288. package/app/components/eui-select/index.js +1 -1
  289. package/app/components/eui-show-for/index.js +1 -0
  290. package/app/components/eui-side-nav/index.js +1 -1
  291. package/app/components/eui-side-nav-item/button/index.js +1 -1
  292. package/app/components/eui-side-nav-item/index.js +1 -1
  293. package/app/components/eui-spacer/index.js +1 -1
  294. package/app/components/eui-split-panel/inner/index.js +1 -0
  295. package/app/components/eui-split-panel/outer/index.js +1 -0
  296. package/app/components/eui-switch/index.js +1 -1
  297. package/app/components/eui-tab/index.js +1 -1
  298. package/app/components/eui-tabs/index.js +1 -1
  299. package/app/components/eui-text/index.js +1 -1
  300. package/app/components/eui-text-align/index.js +1 -1
  301. package/app/components/eui-text-area/index.js +1 -1
  302. package/app/components/eui-text-color/index.js +1 -1
  303. package/app/components/eui-title/index.js +1 -1
  304. package/app/components/eui-tool-tip/index.js +1 -1
  305. package/app/components/eui-tool-tip-popover/index.js +1 -1
  306. package/app/helpers/eui-palette.js +1 -1
  307. package/app/helpers/hex-to-rgb.js +1 -1
  308. package/app/initializers/eui-config.js +1 -0
  309. package/app/utils/copy-to-clipboard.js +1 -0
  310. package/docs/display/avatar-demo/demo1.md +43 -49
  311. package/docs/display/avatar-demo/demo2.md +42 -0
  312. package/docs/display/avatar-demo/demo3.md +33 -0
  313. package/docs/display/avatar-demo/demo4.md +53 -0
  314. package/docs/display/avatar-demo/demo5.md +38 -0
  315. package/docs/display/avatar.md +1 -1
  316. package/docs/display/badge-demo/demo1.md +78 -137
  317. package/docs/display/badge-demo/demo2.md +32 -0
  318. package/docs/display/badge-demo/demo3.md +70 -0
  319. package/docs/display/badge-demo/demo4.md +27 -0
  320. package/docs/display/badge-demo/demo5.md +31 -0
  321. package/docs/display/badge-demo/demo6.md +59 -0
  322. package/docs/display/badge-demo/demo7.md +97 -0
  323. package/docs/display/badge-demo/demo8.md +19 -0
  324. package/docs/display/badge.md +1 -1
  325. package/docs/display/callout-demo/demo1.md +29 -81
  326. package/docs/display/callout-demo/demo2.md +28 -0
  327. package/docs/display/callout-demo/demo3.md +29 -0
  328. package/docs/display/callout-demo/demo4.md +26 -0
  329. package/docs/display/callout.md +9 -1
  330. package/docs/display/card/basic-card-demo/demo1.md +22 -316
  331. package/docs/display/card/basic-card.md +9 -1
  332. package/docs/display/card/beta-badge-demo/demo1.md +47 -0
  333. package/docs/display/card/beta-badge.md +9 -0
  334. package/docs/display/card/checkable-demo/demo1.md +20 -94
  335. package/docs/display/card/checkable-demo/demo2.md +63 -0
  336. package/docs/display/card/checkable.md +9 -1
  337. package/docs/display/card/custom-children-demo/demo1.md +93 -0
  338. package/docs/display/card/custom-children.md +9 -0
  339. package/docs/display/card/footer-demo/demo1.md +77 -0
  340. package/docs/display/card/footer.md +9 -0
  341. package/docs/display/card/images-demo/demo1.md +57 -0
  342. package/docs/display/card/images.md +9 -0
  343. package/docs/display/card/layout-demo/demo1.md +40 -0
  344. package/docs/display/card/layout.md +9 -0
  345. package/docs/display/card/selectable-demo/demo1.md +60 -53
  346. package/docs/display/card/selectable.md +9 -1
  347. package/docs/display/comment-list.md +1 -1
  348. package/docs/display/description-list-demo/demo1.md +53 -0
  349. package/docs/display/description-list-demo/demo2.md +43 -0
  350. package/docs/display/description-list-demo/demo3.md +58 -0
  351. package/docs/display/description-list-demo/demo4.md +42 -0
  352. package/docs/display/description-list-demo/demo5.md +62 -0
  353. package/docs/display/description-list-demo/demo6.md +46 -0
  354. package/docs/display/description-list.md +1 -0
  355. package/docs/display/empty-prompt-demo/demo1.md +25 -0
  356. package/docs/display/empty-prompt-demo/demo2.md +16 -0
  357. package/docs/display/empty-prompt-demo/demo3.md +67 -0
  358. package/docs/display/empty-prompt-demo/demo4.md +21 -0
  359. package/docs/display/empty-prompt-demo/demo5.md +33 -0
  360. package/docs/display/empty-prompt-demo/demo6.md +43 -0
  361. package/docs/display/empty-prompt-demo/demo7.md +162 -0
  362. package/docs/display/empty-prompt-demo/demo8.md +57 -0
  363. package/docs/display/empty-prompt.md +1 -0
  364. package/docs/display/health-demo/demo1.md +11 -8
  365. package/docs/display/health-demo/demo2.md +31 -0
  366. package/docs/display/health.md +9 -1
  367. package/docs/display/icons-demo/demo1.md +270 -57
  368. package/docs/display/icons-demo/demo2.md +76 -0
  369. package/docs/display/icons-demo/demo3.md +76 -0
  370. package/docs/display/icons-demo/demo4.md +104 -0
  371. package/docs/display/icons-demo/demo5.md +64 -0
  372. package/docs/display/icons-demo/demo6.md +63 -0
  373. package/docs/display/icons-demo/demo7.md +101 -0
  374. package/docs/display/icons-demo/demo8.md +47 -0
  375. package/docs/display/icons.md +1 -1
  376. package/docs/display/image-demo/demo1.md +15 -50
  377. package/docs/display/image-demo/demo2.md +35 -0
  378. package/docs/display/image-demo/demo3.md +75 -0
  379. package/docs/display/image-demo/demo4.md +80 -0
  380. package/docs/display/image.md +9 -1
  381. package/docs/display/list-group.md +1 -1
  382. package/docs/display/loading/logo-demo/demo1.md +15 -0
  383. package/docs/display/loading/logo.md +1 -0
  384. package/docs/display/progress-demo/demo1.md +10 -5
  385. package/docs/display/progress-demo/demo2.md +11 -26
  386. package/docs/display/progress-demo/demo3.md +27 -0
  387. package/docs/display/progress-demo/demo4.md +77 -0
  388. package/docs/display/progress.md +1 -1
  389. package/docs/display/stat-demo/demo1.md +0 -118
  390. package/docs/display/stat-demo/demo2.md +24 -22
  391. package/docs/display/stat-demo/demo3.md +39 -0
  392. package/docs/display/stat-demo/demo4.md +50 -0
  393. package/docs/display/stat-demo/demo5.md +25 -0
  394. package/docs/display/stat-demo/demo6.md +40 -0
  395. package/docs/display/stat-demo/demo7.md +84 -0
  396. package/docs/display/stat.md +8 -1
  397. package/docs/display/text-demo/demo1.md +79 -130
  398. package/docs/display/text-demo/demo2.md +71 -0
  399. package/docs/display/text-demo/demo3.md +39 -0
  400. package/docs/display/text.md +12 -1
  401. package/docs/display/title-demo/demo1.md +50 -26
  402. package/docs/display/title.md +1 -1
  403. package/docs/display/tool-tip-demo/demo1.md +26 -71
  404. package/docs/display/tool-tip-demo/demo2.md +33 -30
  405. package/docs/display/tool-tip-demo/demo3.md +50 -0
  406. package/docs/display/tool-tip-demo/demo4.md +74 -0
  407. package/docs/display/tool-tip.md +11 -1
  408. package/docs/editors/code/code-block-demo/demo1.md +21 -40
  409. package/docs/editors/code/code-block-demo/demo2.md +35 -0
  410. package/docs/editors/code/code-block-demo/demo3.md +43 -0
  411. package/docs/editors/code/code-block-demo/demo4.md +28 -0
  412. package/docs/editors/code/code-block-demo/demo5.md +42 -0
  413. package/docs/editors/code/code-block-demo/demo6.md +42 -0
  414. package/docs/editors/code/code-block-demo/demo7.md +853 -0
  415. package/docs/editors/code/code-block-demo/demo8.md +855 -0
  416. package/docs/editors/code/code-block.md +21 -1
  417. package/docs/editors/code/inline-demo/demo1.md +6 -3
  418. package/docs/editors/code/inline.md +1 -1
  419. package/docs/editors/markdown-editor/base-editor-demo/demo1.md +9 -28
  420. package/docs/editors/markdown-editor/base-editor.md +1 -1
  421. package/docs/forms/form-controls/checkbox/demo/demo1.md +49 -0
  422. package/docs/forms/form-controls/checkbox/index.md +26 -0
  423. package/docs/forms/form-controls/{checkbox-group-demo → checkbox-group/demo}/demo1.md +4 -13
  424. package/docs/forms/form-controls/checkbox-group/index.md +27 -0
  425. package/docs/forms/form-controls/{combo-box-demo → combo-box/demo}/demo1.md +8 -2
  426. package/docs/forms/form-controls/{combo-box-demo → combo-box/demo}/demo2.md +10 -8
  427. package/docs/forms/form-controls/combo-box/demo/demo3.md +60 -0
  428. package/docs/forms/form-controls/{combo-box-demo/demo3.md → combo-box/demo/demo4.md} +17 -14
  429. package/docs/forms/form-controls/combo-box/demo/demo5.md +151 -0
  430. package/docs/forms/form-controls/combo-box/index.md +6 -0
  431. package/docs/forms/form-controls/file-picker/demo/demo1.md +29 -0
  432. package/docs/forms/form-controls/file-picker/demo/demo2.md +44 -0
  433. package/docs/forms/form-controls/file-picker/demo/demo3.md +45 -0
  434. package/docs/forms/form-controls/file-picker/demo/demo4.md +63 -0
  435. package/docs/forms/form-controls/file-picker/index.md +22 -0
  436. package/docs/forms/form-controls/{form-control-layout-demo → form-control-layout/demo}/demo1.md +0 -0
  437. package/docs/forms/form-controls/form-control-layout/index.md +30 -0
  438. package/docs/forms/form-controls/{form-control-layout-delimited-demo → form-control-layout-delimited/demo}/demo1.md +41 -37
  439. package/docs/forms/form-controls/form-control-layout-delimited/index.md +24 -0
  440. package/docs/forms/form-controls/number-field/demo/demo1.md +20 -0
  441. package/docs/forms/form-controls/{number-field-demo/demo1.md → number-field/demo/demo2.md} +23 -11
  442. package/docs/forms/form-controls/number-field/index.md +12 -0
  443. package/docs/forms/form-controls/password-field/demo/demo1.md +19 -0
  444. package/docs/forms/form-controls/{password-field-demo/demo1.md → password-field/demo/demo2.md} +12 -8
  445. package/docs/forms/form-controls/password-field/index.md +19 -0
  446. package/docs/forms/form-controls/radio/demo/demo1.md +43 -0
  447. package/docs/forms/form-controls/radio/index.md +24 -0
  448. package/docs/forms/form-controls/radio-group/demo/demo1.md +50 -0
  449. package/docs/forms/form-controls/radio-group/index.md +18 -0
  450. package/docs/forms/form-controls/range/demo/demo1.md +96 -0
  451. package/docs/forms/form-controls/range/demo/demo2.md +62 -0
  452. package/docs/forms/form-controls/{range-demo → range/demo}/demo3.md +10 -12
  453. package/docs/forms/form-controls/{range-demo → range/demo}/demo4.md +16 -18
  454. package/docs/forms/form-controls/{range-demo → range/demo}/demo5.md +18 -20
  455. package/docs/forms/form-controls/range/demo/demo6.md +57 -0
  456. package/docs/forms/form-controls/range/demo/demo7.md +350 -0
  457. package/docs/forms/form-controls/range/index.md +18 -0
  458. package/docs/forms/form-controls/search-field/demo/demo1.md +29 -0
  459. package/docs/forms/form-controls/search-field/index.md +14 -0
  460. package/docs/forms/form-controls/select/demo/demo1.md +29 -0
  461. package/docs/forms/form-controls/select/demo/demo2.md +44 -0
  462. package/docs/forms/form-controls/{select-demo/demo1.md → select/demo/demo3.md} +20 -10
  463. package/docs/forms/form-controls/select/index.md +19 -0
  464. package/docs/forms/form-controls/{switch-demo → switch/demo}/demo1.md +10 -10
  465. package/docs/forms/form-controls/switch/index.md +13 -0
  466. package/docs/forms/form-controls/text-field/demo/demo1.md +35 -0
  467. package/docs/forms/form-controls/text-field/demo/demo2.md +40 -0
  468. package/docs/forms/form-controls/{text-field-demo/demo2.md → text-field/demo/demo3.md} +14 -17
  469. package/docs/forms/form-controls/{text-field-demo/demo1.md → text-field/demo/demo4.md} +18 -32
  470. package/docs/forms/form-controls/text-field/index.md +14 -0
  471. package/docs/forms/form-controls/textarea/demo/demo1.md +21 -0
  472. package/docs/forms/form-controls/textarea/demo/demo2.md +24 -0
  473. package/docs/forms/form-controls/textarea/index.md +13 -0
  474. package/docs/forms/form-layouts/described-form-groups-demo/demo1.md +13 -4
  475. package/docs/forms/form-layouts/described-form-groups.md +1 -1
  476. package/docs/layout/accordion-demo/demo1.md +21 -102
  477. package/docs/layout/accordion-demo/demo2.md +76 -0
  478. package/docs/layout/accordion-demo/demo3.md +25 -0
  479. package/docs/layout/accordion-demo/demo4.md +26 -0
  480. package/docs/layout/accordion-demo/demo5.md +65 -0
  481. package/docs/layout/accordion-demo/demo6.md +78 -0
  482. package/docs/layout/accordion-demo/demo7.md +66 -0
  483. package/docs/layout/accordion-demo/demo8.md +64 -0
  484. package/docs/layout/accordion-demo/demo9.md +114 -0
  485. package/docs/layout/accordion.md +39 -9
  486. package/docs/layout/bottom-bar-demo/demo1.md +32 -49
  487. package/docs/layout/bottom-bar-demo/demo2.md +54 -0
  488. package/docs/layout/bottom-bar-demo/demo3.md +81 -0
  489. package/docs/layout/bottom-bar.md +1 -1
  490. package/docs/layout/flex.md +1 -1
  491. package/docs/layout/flyout-demo/demo1.md +19 -11
  492. package/docs/layout/flyout-demo/demo2.md +43 -28
  493. package/docs/layout/flyout-demo/demo3.md +99 -0
  494. package/docs/layout/flyout-demo/demo4.md +115 -0
  495. package/docs/layout/flyout-demo/demo5.md +59 -0
  496. package/docs/layout/flyout-demo/demo6.md +57 -0
  497. package/docs/layout/flyout-demo/demo7.md +51 -0
  498. package/docs/layout/flyout.md +1 -1
  499. package/docs/layout/header-demo/demo1.md +284 -35
  500. package/docs/layout/header-demo/demo2.md +42 -0
  501. package/docs/layout/header-demo/demo3.md +48 -0
  502. package/docs/layout/header-demo/demo4.md +57 -0
  503. package/docs/layout/header-demo/demo5.md +232 -0
  504. package/docs/layout/header-demo/demo6.md +85 -0
  505. package/docs/layout/header-demo/demo7.md +94 -0
  506. package/docs/layout/header.md +1 -1
  507. package/docs/layout/horizontal-rule.md +1 -1
  508. package/docs/layout/modal-demo/demo1.md +64 -167
  509. package/docs/layout/modal-demo/demo2.md +126 -0
  510. package/docs/layout/modal-demo/demo3.md +55 -0
  511. package/docs/layout/modal-demo/demo4.md +65 -0
  512. package/docs/layout/modal-demo/demo5.md +96 -0
  513. package/docs/layout/modal.md +1 -1
  514. package/docs/layout/page-demo/demo1.md +96 -3
  515. package/docs/layout/page-demo/demo10.md +42 -0
  516. package/docs/layout/page-demo/demo2.md +46 -0
  517. package/docs/layout/page-demo/demo3.md +50 -0
  518. package/docs/layout/page-demo/demo4.md +38 -0
  519. package/docs/layout/page-demo/demo5.md +30 -0
  520. package/docs/layout/page-demo/demo6.md +51 -0
  521. package/docs/layout/page-demo/demo7.md +59 -0
  522. package/docs/layout/page-demo/demo8.md +19 -0
  523. package/docs/layout/page-demo/demo9.md +29 -0
  524. package/docs/layout/page.md +1 -1
  525. package/docs/layout/panel-demo/demo1.md +28 -19
  526. package/docs/layout/panel-demo/demo2.md +22 -0
  527. package/docs/layout/panel-demo/demo3.md +27 -0
  528. package/docs/layout/panel-demo/demo4.md +46 -0
  529. package/docs/layout/panel-demo/demo5.md +81 -0
  530. package/docs/layout/panel.md +7 -1
  531. package/docs/layout/popover-demo/demo1.md +42 -300
  532. package/docs/layout/popover-demo/demo10.md +72 -0
  533. package/docs/layout/popover-demo/demo2.md +306 -96
  534. package/docs/layout/popover-demo/demo3.md +20 -12
  535. package/docs/layout/popover-demo/demo4.md +118 -0
  536. package/docs/layout/popover-demo/demo5.md +252 -0
  537. package/docs/layout/popover-demo/demo6.md +44 -0
  538. package/docs/layout/popover-demo/demo7.md +44 -0
  539. package/docs/layout/popover-demo/demo8.md +50 -0
  540. package/docs/layout/popover-demo/demo9.md +80 -0
  541. package/docs/layout/popover.md +1 -1
  542. package/docs/navigation/breadcrumbs-demo/demo1.md +77 -0
  543. package/docs/navigation/breadcrumbs-demo/demo2.md +61 -0
  544. package/docs/navigation/breadcrumbs-demo/demo3.md +61 -0
  545. package/docs/navigation/breadcrumbs-demo/demo4.md +61 -0
  546. package/docs/navigation/breadcrumbs-demo/demo5.md +61 -0
  547. package/docs/navigation/breadcrumbs-demo/demo6.md +61 -0
  548. package/docs/navigation/breadcrumbs.md +1 -0
  549. package/docs/navigation/button-demo/demo1.md +210 -158
  550. package/docs/navigation/button.md +1 -1
  551. package/docs/navigation/collapsible-nav-demo/demo1.md +21 -44
  552. package/docs/navigation/collapsible-nav-demo/demo2.md +108 -0
  553. package/docs/navigation/collapsible-nav.md +1 -1
  554. package/docs/navigation/key-pad-menu-demo/demo1.md +77 -0
  555. package/docs/navigation/key-pad-menu-demo/demo2.md +102 -0
  556. package/docs/navigation/key-pad-menu-demo/demo3.md +54 -0
  557. package/docs/navigation/key-pad-menu-demo/demo4.md +71 -0
  558. package/docs/navigation/key-pad-menu-demo/demo5.md +65 -0
  559. package/docs/navigation/key-pad-menu.md +1 -0
  560. package/docs/navigation/link-demo/demo1.md +44 -0
  561. package/docs/navigation/link-demo/demo2.md +41 -0
  562. package/docs/navigation/link-demo/demo3.md +45 -0
  563. package/docs/navigation/link-demo/demo4.md +61 -0
  564. package/docs/navigation/link.md +1 -0
  565. package/docs/navigation/side-nav-demo/demo1.md +34 -18
  566. package/docs/navigation/side-nav.md +1 -1
  567. package/docs/navigation/steps-demo/demo1.md +16 -18
  568. package/docs/navigation/steps-demo/demo2.md +18 -21
  569. package/docs/navigation/steps-demo/demo3.md +12 -10
  570. package/docs/navigation/steps-demo/demo4.md +84 -0
  571. package/docs/navigation/steps-demo/demo5.md +29 -0
  572. package/docs/navigation/steps.md +1 -1
  573. package/docs/navigation/tabs-demo/demo1.md +50 -148
  574. package/docs/navigation/tabs-demo/demo2.md +73 -0
  575. package/docs/navigation/tabs-demo/demo3.md +109 -0
  576. package/docs/navigation/tabs-demo/demo4.md +81 -0
  577. package/docs/navigation/tabs-demo/demo5.md +86 -0
  578. package/docs/navigation/tabs.md +1 -1
  579. package/docs/utilities/auto-sizer-demo/demo1.md +34 -0
  580. package/docs/utilities/auto-sizer.md +1 -0
  581. package/docs/utilities/copy-demo/demo1.md +37 -0
  582. package/docs/utilities/copy-demo/demo2.md +70 -0
  583. package/docs/utilities/copy.md +1 -0
  584. package/docs/utilities/mutation-observer.md +1 -1
  585. package/docs/utilities/outside-click-detector.md +1 -1
  586. package/docs/utilities/overlay-mask.md +1 -1
  587. package/docs/utilities/portal.md +1 -1
  588. package/docs/utilities/resize-observer.md +1 -1
  589. package/docs/utilities/responsive-demo/demo1.md +108 -0
  590. package/docs/utilities/responsive.md +1 -0
  591. package/index.js +8 -3
  592. package/package.json +13 -7
  593. package/CHANGELOG.md +0 -1345
  594. package/addon/components/eui-code-block-impl/code-block-controls/index.hbs +0 -33
  595. package/addon/components/eui-code-block-impl/index.hbs +0 -111
  596. package/addon/components/eui-code-block-impl/index.ts +0 -121
  597. package/addon/components/eui-flyout-body/banner/index.hbs +0 -3
  598. package/addon/components/eui-flyout-body/content/index.hbs +0 -3
  599. package/addon/helpers/create-event.ts +0 -30
  600. package/addon/helpers/get-tab-id.ts +0 -17
  601. package/addon/modifiers/focus-tab.ts +0 -19
  602. package/addon/modifiers/get-cursor-node.ts +0 -54
  603. package/addon/modifiers/invalidate-indeterminate.ts +0 -10
  604. package/addon/modifiers/on-event-simulate-event.ts +0 -32
  605. package/app/components/eui-card/eui-card-select/index.js +0 -1
  606. package/app/components/eui-flyout-body/banner/index.js +0 -1
  607. package/app/components/eui-flyout-body/content/index.js +0 -1
  608. package/app/helpers/create-event.js +0 -1
  609. package/app/helpers/get-tab-id.js +0 -1
  610. package/app/modifiers/fixed-header.js +0 -1
  611. package/app/modifiers/focus-tab.js +0 -1
  612. package/app/modifiers/get-cursor-node.js +0 -1
  613. package/app/modifiers/invalidate-indeterminate.js +0 -1
  614. package/app/modifiers/on-event-simulate-event.js +0 -1
  615. package/docs/forms/form-controls/checkbox-demo/demo1.md +0 -40
  616. package/docs/forms/form-controls/checkbox-group.md +0 -1
  617. package/docs/forms/form-controls/checkbox.md +0 -1
  618. package/docs/forms/form-controls/combo-box.md +0 -1
  619. package/docs/forms/form-controls/file-picker-demo/demo1.md +0 -28
  620. package/docs/forms/form-controls/file-picker.md +0 -1
  621. package/docs/forms/form-controls/form-control-layout-delimited.md +0 -1
  622. package/docs/forms/form-controls/form-control-layout.md +0 -1
  623. package/docs/forms/form-controls/number-field.md +0 -1
  624. package/docs/forms/form-controls/password-field.md +0 -1
  625. package/docs/forms/form-controls/radio-demo/demo1.md +0 -39
  626. package/docs/forms/form-controls/radio-group-demo/demo1.md +0 -60
  627. package/docs/forms/form-controls/radio-group.md +0 -1
  628. package/docs/forms/form-controls/radio.md +0 -1
  629. package/docs/forms/form-controls/range-demo/demo1.md +0 -61
  630. package/docs/forms/form-controls/range-demo/demo2.md +0 -59
  631. package/docs/forms/form-controls/range-demo/demo6.md +0 -59
  632. package/docs/forms/form-controls/range.md +0 -1
  633. package/docs/forms/form-controls/search-field-demo/demo1.md +0 -31
  634. package/docs/forms/form-controls/search-field.md +0 -1
  635. package/docs/forms/form-controls/select.md +0 -1
  636. package/docs/forms/form-controls/switch.md +0 -1
  637. package/docs/forms/form-controls/text-field.md +0 -1
  638. package/docs/forms/form-controls/textarea-demo/demo1.md +0 -36
  639. package/docs/forms/form-controls/textarea.md +0 -1
@@ -12,6 +12,7 @@ export type OneOf<T, K extends keyof T> = Omit<T, K> &
12
12
  { [k in K]: Pick<Required<T>, k> & { [k1 in Exclude<K, k>]?: never } }[K];
13
13
 
14
14
  export interface CommonArgs {
15
+ className?: string;
15
16
  'aria-label'?: string;
16
17
  'data-test-subj'?: string;
17
18
  }
@@ -1,96 +1,117 @@
1
- <div
2
- class={{class-names
3
- (if this.isOpen "euiAccordion-isOpen")
4
- componentName="EuiAccordion"
5
- paddingSize=this.paddingSize
6
- }}
7
- ...attributes
8
- >
9
- <div class={{class-names "euiAccordion__triggerWrapper" @triggerClassName}}>
10
- <button
11
- id={{this.buttonId}}
12
- aria-controls={{@id}}
13
- aria-expanded={{this.isOpen}}
14
- class={{this.buttonClasses}}
15
- type="button"
16
- {{on "click" this.onToggle}}
17
- >
18
- {{#if this.hasArrowDisplay}}
19
- <span
20
- class={{concat
21
- "euiAccordion__iconWrapper "
22
- (if this.hasIconButton "euiAccordion__iconButton ")
1
+ {{#let
2
+ (element (arg-or-default @element "div"))
3
+ (element this.buttonElement)
4
+ as |Element ButtonElement|
5
+ }}
6
+ <Element
7
+ class={{class-names
8
+ (if this.isOpen "euiAccordion-isOpen")
9
+ componentName="EuiAccordion"
10
+ }}
11
+ ...attributes
12
+ >
13
+ <div class={{class-names "euiAccordion__triggerWrapper" @triggerClassName}}>
14
+ {{#if (eq this._arrowDisplay "left")}}
15
+ <EuiButtonIcon
16
+ @color="text"
17
+ @iconClasses={{class-names
18
+ "euiAccordion__iconButton"
19
+ (if this.isOpen "euiAccordion__iconButton-isOpen")
20
+ (if
21
+ (eq this._arrowDisplay "right") "euiAccordion__iconButton--right"
22
+ )
23
+ (if @arrowProps.className @arrowProps.className)
23
24
  }}
24
- >
25
- <EuiIcon
26
- @iconClasses={{class-names
27
- "euiAccordion__icon"
28
- (if this.isOpen "euiAccordion__icon-isOpen")
29
- }}
30
- @type="arrowRight"
31
- @size="m"
32
- />
33
- </span>
25
+ @iconType="arrowRight"
26
+ {{on "click" this.onToggle}}
27
+ aria-controls={{@id}}
28
+ aria-expanded={{this.isOpen}}
29
+ aria-labelledby={{this.buttonId}}
30
+ tabindex={{if this.buttonElementIsFocusable "-1" "0"}}
31
+ />
34
32
  {{/if}}
35
- <span class={{concat "euiIEFlexWrapFix " @buttonContentClassName}}>
36
- {{yield to="buttonContent"}}
37
- </span>
38
- </button>
39
- {{#if (and @extraAction (not this.isLoading))}}
40
- <div class="euiAccordion__optionalAction">
41
- {{@extraAction}}
42
- </div>
43
- {{else if this.isLoading}}
44
- <div class="euiAccordion__optionalAction">
45
- <EuiLoadingSpinner />
46
- </div>
47
- {{/if}}
48
- {{#if this.hasIconButton}}
49
- <button
33
+ <ButtonElement
34
+ type="button"
35
+ id={{arg-or-default this.buttonProps.id (unique-id)}}
36
+ class={{this.buttonClasses}}
50
37
  aria-controls={{@id}}
51
38
  aria-expanded={{this.isOpen}}
52
- aria-labelledby={{this.buttonId}}
53
- tabIndex={{-1}}
54
- class={{concat
55
- "euiAccordion__iconWrapper "
56
- (if this.hasIconButton "euiAccordion__iconButton ")
57
- }}
58
- type="button"
39
+ aria-labelledby={{arg-or-default this.buttonProps.id (unique-id)}}
59
40
  {{on "click" this.onToggle}}
60
41
  >
61
- <EuiIcon
62
- @iconClasses={{class-names
63
- "euiAccordion__icon"
64
- (if this.isOpen "euiAccordion__icon-isOpen")
42
+ <span class={{this.buttonContentClasses}}>
43
+ {{yield to="buttonContent"}}
44
+ </span>
45
+ </ButtonElement>
46
+ {{#if (and @extraAction (not this.isLoading))}}
47
+ <div class="euiAccordion__optionalAction">
48
+ {{yield to="extraAction"}}
49
+ </div>
50
+ {{else if this.isLoading}}
51
+ <div class="euiAccordion__optionalAction">
52
+ <EuiLoadingSpinner />
53
+ </div>
54
+ {{/if}}
55
+ {{#if (eq this._arrowDisplay "right")}}
56
+ <EuiButtonIcon
57
+ @color="text"
58
+ class={{class-names
59
+ "euiAccordion__iconButton"
60
+ (if this.isOpen "euiAccordion__iconButton-isOpen")
61
+ (if
62
+ (eq this._arrowDisplay "right") "euiAccordion__iconButton--right"
63
+ )
64
+ (if @arrowProps.className @arrowProps.className)
65
65
  }}
66
- @type="arrowRight"
67
- @size="m"
66
+ @iconType="arrowRight"
67
+ {{on "click" this.onToggle}}
68
+ aria-controls={{@id}}
69
+ aria-expanded={{this.isOpen}}
70
+ aria-labelledby={{this.buttonId}}
71
+ tabindex={{if this.buttonElementIsFocusable "-1" "0"}}
68
72
  />
69
- </button>
70
- {{/if}}
71
- </div>
72
- <div class="euiAccordion__childWrapper" style={{this.childContentStyle}} id={{@id}}>
73
+ {{/if}}
74
+ </div>
73
75
  <div
74
- class={{class-names
75
- (if this.isLoading " euiAccordion__children-isLoading")
76
- @childClassName
77
- paddingSize=this.paddingSize
78
- componentName="EuiAccordion"
79
- }}
76
+ class="euiAccordion__childWrapper"
77
+ style={{this.childContentStyle}}
78
+ id={{@id}}
79
+ {{did-insert (set this "childWrapper")}}
80
+ tabindex="-1"
81
+ role="region"
82
+ aria-labelledby={{this.buttonId}}
80
83
  >
81
- {{#if (and this.isLoading this.isLoadingMessage)}}
82
- <EuiLoadingSpinner class="euiAccordion__spinner" />
83
- <span>
84
- {{#if this.hasLoadingMessage}}
85
- {{this.isLoadingMessage}}
86
- {{else}}
87
- {{! <EuiI18n @token="euiAccordion.isLoading" @default="Loading" /> }}
88
- Loading...
89
- {{/if}}
90
- </span>
91
- {{else}}
92
- {{yield to="content"}}
93
- {{/if}}
84
+ <div
85
+ class={{class-names
86
+ (if this.isLoading "euiAccordion__children-isLoading")
87
+ @childClassName
88
+ }}
89
+ {{did-insert
90
+ (queue (set this "childContent") this.setChildContentHeight)
91
+ }}
92
+ {{resize-observer onResize=this.setChildContentHeight}}
93
+ >
94
+ {{#if (and this.isLoading this.isLoadingMessage)}}
95
+ <EuiLoadingSpinner class="euiAccordion__spinner" />
96
+ <span>
97
+ {{#if this.hasLoadingMessage}}
98
+ {{this.isLoadingMessage}}
99
+ {{else}}
100
+ {{! <EuiI18n @token="euiAccordion.isLoading" @default="Loading" /> }}
101
+ Loading...
102
+ {{/if}}
103
+ </span>
104
+ {{else}}
105
+ <div
106
+ class={{class-names
107
+ componentName="EuiAccordion"
108
+ paddingSize=this.paddingSize
109
+ }}
110
+ >
111
+ {{yield to="content"}}
112
+ </div>
113
+ {{/if}}
114
+ </div>
94
115
  </div>
95
- </div>
96
- </div>
116
+ </Element>
117
+ {{/let}}
@@ -1,19 +1,33 @@
1
1
  import Component from '@glimmer/component';
2
2
  import { action } from '@ember/object';
3
3
  import { tracked } from '@glimmer/tracking';
4
- import { uniqueId } from '../../helpers/unique-id';
5
4
  import { argOrDefaultDecorator as argOrDefault } from '../../helpers/arg-or-default';
6
5
  import { paddingMapping } from '../../utils/css-mappings/eui-accordion';
7
6
  import { htmlSafe } from '@ember/template';
7
+ import { CommonArgs } from '../common';
8
8
 
9
9
  type EuiAccordionPaddingSize = keyof typeof paddingMapping;
10
10
 
11
11
  type AccordionArgs = {
12
12
  id: string;
13
+
14
+ element?: 'div' | 'fieldset';
13
15
  /**
14
16
  * Class that will apply to the trigger for the accordion.
15
17
  */
16
18
  buttonClassName?: string;
19
+
20
+ buttonProps?: CommonArgs;
21
+
22
+ /**
23
+ * Applied to the main button receiving the `onToggle` event.
24
+ * Anything other than the default `button` does not support removing the arrow display (for accessibility of focus).
25
+ */
26
+ buttonElement?: 'div' | 'legend' | 'button';
27
+ /**
28
+ * Extra props to pass to the EuiButtonIcon containing the arrow.
29
+ */
30
+ arrowProps?: 'iconType' | 'onClick' | 'aria-labelledby';
17
31
  /**
18
32
  * Class that will apply to the trigger content for the accordion.
19
33
  */
@@ -54,6 +68,8 @@ type AccordionArgs = {
54
68
  * Choose whether the loading message replaces the content. Customize the message by passing a node
55
69
  */
56
70
  isLoadingMessage?: boolean | Component;
71
+
72
+ isOpen?: boolean;
57
73
  };
58
74
 
59
75
  export default class EuiAccordionAccordionComponent extends Component<AccordionArgs> {
@@ -65,8 +81,8 @@ export default class EuiAccordionAccordionComponent extends Component<AccordionA
65
81
  @argOrDefault('left') arrowDisplay!: AccordionArgs['arrowDisplay'];
66
82
 
67
83
  @tracked _opened;
68
-
69
- buttonId: string = uniqueId();
84
+ @tracked childWrapper: HTMLDivElement | null = null;
85
+ @tracked childContent: HTMLDivElement | null = null;
70
86
 
71
87
  constructor(owner: unknown, args: AccordionArgs) {
72
88
  super(owner, args);
@@ -76,22 +92,24 @@ export default class EuiAccordionAccordionComponent extends Component<AccordionA
76
92
  : this.args.initialIsOpen;
77
93
  }
78
94
 
79
- get isOpen(): boolean {
80
- return this.args.forceState
81
- ? this.args.forceState === 'open'
82
- : this._opened;
95
+ get buttonElement() {
96
+ return this.args.element === 'fieldset' ? 'legend' : 'button';
83
97
  }
84
98
 
85
- get hasIconButton(): boolean | undefined {
86
- return this.args.extraAction && this.arrowDisplay === 'right';
99
+ get buttonElementIsFocusable() {
100
+ return this.buttonElement === 'button';
87
101
  }
88
102
 
89
- get hasArrowDisplay(): boolean {
90
- return this.arrowDisplay !== 'none';
103
+ get _arrowDisplay() {
104
+ return this.arrowDisplay === 'none' && !this.buttonElementIsFocusable
105
+ ? 'left'
106
+ : this.arrowDisplay;
91
107
  }
92
108
 
93
- get buttonReverse(): boolean {
94
- return !this.args.extraAction && this.arrowDisplay === 'right';
109
+ get isOpen(): boolean {
110
+ return this.args.forceState
111
+ ? this.args.forceState === 'open'
112
+ : this._opened;
95
113
  }
96
114
 
97
115
  get hasLoadingMessage(): boolean {
@@ -101,23 +119,44 @@ export default class EuiAccordionAccordionComponent extends Component<AccordionA
101
119
  get buttonClasses(): string {
102
120
  return [
103
121
  'euiAccordion__button',
104
- this.buttonReverse ? 'euiAccordion__buttonReverse' : '',
105
- this.args.buttonClassName
122
+ this.args.buttonClassName,
123
+ this.args.buttonProps?.className
124
+ ].join(' ');
125
+ }
126
+
127
+ get buttonContentClasses(): string {
128
+ return [
129
+ 'euiAccordion__buttonContent',
130
+ this.args.buttonContentClassName
106
131
  ].join(' ');
107
132
  }
108
133
 
109
134
  get childContentStyle(): string | ReturnType<typeof htmlSafe> {
110
- return this.isOpen ? '' : htmlSafe(`height: 0px;`);
135
+ return this._opened ? '' : htmlSafe(`height: 0px;`);
111
136
  }
112
137
 
138
+ setChildContentHeight = () => {
139
+ const { forceState } = this.args;
140
+ requestAnimationFrame(() => {
141
+ const height =
142
+ this.childContent && (forceState ? forceState === 'open' : this._opened)
143
+ ? this.childContent.clientHeight
144
+ : 0;
145
+ this.childWrapper &&
146
+ this.childWrapper.setAttribute('style', `height: ${height}px`);
147
+ });
148
+ };
149
+
113
150
  @action
114
151
  onToggle(): void {
115
152
  if (this.args.forceState) {
116
- this.args.onToggle &&
117
- this.args.onToggle(this.args.forceState === 'open' ? false : true);
153
+ this.args.onToggle?.(this.args.forceState === 'open' ? false : true);
118
154
  } else {
119
155
  this._opened = !this._opened;
120
- this.args.onToggle && this.args.onToggle(this._opened);
156
+ if (this._opened && this.childWrapper) {
157
+ this.childWrapper.focus();
158
+ }
159
+ this.args.onToggle?.(this._opened);
121
160
  }
122
161
  }
123
162
  }
@@ -0,0 +1,3 @@
1
+ <div {{did-insert this.setRef}} {{style this.style.outerStyle}} ...attributes>
2
+ {{yield this.style.childStyle}}
3
+ </div>
@@ -0,0 +1,175 @@
1
+ import Component from '@glimmer/component';
2
+ import { tracked } from '@glimmer/tracking';
3
+ //@ts-ignore
4
+ import createDetectElementResize from '../../utils/detect-element-resize';
5
+
6
+ type Size = {
7
+ height: number;
8
+ width: number;
9
+ };
10
+
11
+ interface EuiAutoSizerComponentArgs {
12
+ /** Function responsible for rendering children.*/
13
+
14
+ /** Optional custom CSS class name to attach to root AutoSizer element. */
15
+ className?: string;
16
+
17
+ /** Default height to use for initial render; useful for SSR */
18
+ defaultHeight?: number;
19
+
20
+ /** Default width to use for initial render; useful for SSR */
21
+ defaultWidth?: number;
22
+
23
+ /** Disable dynamic :height property */
24
+ disableHeight: boolean;
25
+
26
+ /** Disable dynamic :width property */
27
+ disableWidth: boolean;
28
+
29
+ /** Nonce of the inlined stylesheet for Content Security Policy */
30
+ nonce?: string;
31
+
32
+ /** Callback to be invoked on-resize */
33
+ onResize: (size: Size) => void;
34
+
35
+ /** Optional inline style */
36
+ style?: Record<string, string>;
37
+ }
38
+
39
+ type ResizeHandler = (element: HTMLElement, onResize: () => void) => void;
40
+
41
+ type DetectElementResize = {
42
+ addResizeListener: ResizeHandler;
43
+ removeResizeListener: ResizeHandler;
44
+ };
45
+
46
+ type DynamicStyle = {
47
+ outerStyle: {
48
+ height?: number | string;
49
+ width?: number | string;
50
+ overflow?: string;
51
+ };
52
+ childStyle?: {
53
+ height?: number | string;
54
+ width?: number | string;
55
+ };
56
+ };
57
+ export default class EuiAutoSizerComponent extends Component<EuiAutoSizerComponentArgs> {
58
+ _autoSizer?: HTMLElement;
59
+ _parentNode?: HTMLElement;
60
+ _window?: any; // uses any instead of Window because Flow doesn't have window type
61
+ _detectElementResize?: DetectElementResize;
62
+
63
+ @tracked height: number | undefined;
64
+ @tracked width: number | undefined;
65
+
66
+ get disableHeight() {
67
+ return this.args.disableHeight ?? false;
68
+ }
69
+
70
+ get disableWidth() {
71
+ return this.args.disableWidth ?? false;
72
+ }
73
+
74
+ get style() {
75
+ let style: DynamicStyle = {
76
+ outerStyle: { overflow: 'visible' },
77
+ childStyle: {}
78
+ };
79
+ if (!this.disableHeight) {
80
+ style.outerStyle.height = `0px`;
81
+ if (style.childStyle) {
82
+ style.childStyle.height = `${this.height}px`;
83
+ }
84
+ }
85
+
86
+ if (!this.disableWidth) {
87
+ style.outerStyle.width = `0px`;
88
+ if (style.childStyle) {
89
+ style.childStyle.width = `${this.width}px`;
90
+ }
91
+ }
92
+
93
+ return style;
94
+ }
95
+
96
+ setup() {
97
+ const { nonce } = this.args;
98
+ if (
99
+ this._autoSizer &&
100
+ this._autoSizer.parentNode &&
101
+ this._autoSizer.parentNode.ownerDocument &&
102
+ this._autoSizer.parentNode.ownerDocument.defaultView &&
103
+ this._autoSizer.parentNode instanceof
104
+ this._autoSizer.parentNode.ownerDocument.defaultView.HTMLElement
105
+ ) {
106
+ // Delay access of parentNode until mount.
107
+ // This handles edge-cases where the component has already been unmounted before its ref has been set,
108
+ // As well as libraries like react-lite which have a slightly different lifecycle.
109
+ this._parentNode = this._autoSizer.parentNode;
110
+ this._window = this._autoSizer.parentNode.ownerDocument.defaultView;
111
+
112
+ // Defer requiring resize handler in order to support server-side rendering.
113
+ // See issue #41
114
+ this._detectElementResize = createDetectElementResize(
115
+ nonce,
116
+ this._window
117
+ );
118
+ //@ts-ignore
119
+ this._detectElementResize.addResizeListener(
120
+ this._parentNode,
121
+ this._onResize
122
+ );
123
+
124
+ this._onResize();
125
+ }
126
+ }
127
+
128
+ _onResize = () => {
129
+ const { disableHeight, disableWidth } = this;
130
+
131
+ if (this._parentNode) {
132
+ // Guard against AutoSizer component being removed from the DOM immediately after being added.
133
+ // This can result in invalid style values which can result in NaN values if we don't handle them.
134
+ // See issue #150 for more context.
135
+
136
+ const height = this._parentNode.offsetHeight || 0;
137
+ const width = this._parentNode.offsetWidth || 0;
138
+
139
+ const win = this._window || window;
140
+ const style = win.getComputedStyle(this._parentNode) || {};
141
+ const paddingLeft = parseInt(style.paddingLeft, 10) || 0;
142
+ const paddingRight = parseInt(style.paddingRight, 10) || 0;
143
+ const paddingTop = parseInt(style.paddingTop, 10) || 0;
144
+ const paddingBottom = parseInt(style.paddingBottom, 10) || 0;
145
+
146
+ const newHeight = height - paddingTop - paddingBottom;
147
+ const newWidth = width - paddingLeft - paddingRight;
148
+
149
+ if (
150
+ (!disableHeight && this.height !== newHeight) ||
151
+ (!disableWidth && this.width !== newWidth)
152
+ ) {
153
+ this.height = height - paddingTop - paddingBottom;
154
+ this.width = width - paddingLeft - paddingRight;
155
+
156
+ this.args.onResize?.({ height, width });
157
+ }
158
+ }
159
+ };
160
+
161
+ setRef = (ele: HTMLElement) => {
162
+ this._autoSizer = ele;
163
+ this.setup();
164
+ };
165
+
166
+ willDestroy(): void {
167
+ super.willDestroy();
168
+ if (this._detectElementResize && this._parentNode) {
169
+ this._detectElementResize.removeResizeListener(
170
+ this._parentNode,
171
+ this._onResize
172
+ );
173
+ }
174
+ }
175
+ }
@@ -7,9 +7,11 @@
7
7
  iconColor=@iconColor
8
8
  iconSize=@iconSize
9
9
  iconType=@iconType
10
+ imageUrl=@imageUrl
11
+ initials=@initials
10
12
  )
11
- background-image=(if @imageUrl @imageUrl "none")
12
- ) as |inlineStyles|
13
+ )
14
+ as |inlineStyles|
13
15
  }}
14
16
  <div
15
17
  class={{class-names
@@ -19,8 +21,9 @@
19
21
  size=(arg-or-default @size "m")
20
22
  type=(arg-or-default @type "user")
21
23
  }}
22
- aria-label={{@name}}
24
+ aria-label={{if @isDisabled undefined @name}}
23
25
  title={{@name}}
26
+ role={{if @isDisabled "presentation" "img"}}
24
27
  ...attributes
25
28
  {{simple-style inlineStyles}}
26
29
  >
@@ -34,6 +37,7 @@
34
37
  @size={{or @iconSize @size}}
35
38
  @type={{@iconType}}
36
39
  aria-label={{@name}}
40
+ role={{if @isDisabled "presentation" "img"}}
37
41
  @color={{or
38
42
  @iconColor
39
43
  (if (eq @iconColor null) @iconColor inlineStyles.color)
@@ -1,3 +1,4 @@
1
+
1
2
  {{#if (and (or @onClick @href) (not @iconType))}}
2
3
  {{#if @onClick}}
3
4
  <button
@@ -95,18 +96,23 @@
95
96
  disabled={{@isDisabled}}
96
97
  title={{@iconOnClickAriaLabel}}
97
98
  tabindex={{@closeButtonProps.tabIndex}}
99
+ data-selected-index={{@closeButtonProps.dataSelectedIconIndex}}
98
100
  {{on "click" (optional @iconOnClick)}}
99
101
  >
100
102
  <EuiIcon
101
- @iconClasses={{class-names "euiBadge__icon" @closeButtonProps.iconClasses}}
103
+ @color="inherit"
104
+ @iconClasses={{class-names
105
+ "euiBadge__icon"
106
+ @closeButtonProps.iconClasses
107
+ }}
102
108
  @type={{@iconType}}
103
- data-selected-index={{@closeButtonProps.dataSelectedIconIndex}}
104
109
  @size={{if (has-block) "s" "m"}}
105
110
  />
106
111
  </button>
107
112
  {{! tempalte-lint-enable}}
108
113
  {{else}}
109
114
  <EuiIcon
115
+ @color="inherit"
110
116
  @type={{@iconType}}
111
117
  @size={{if (has-block) "s" "m"}}
112
118
  @iconClasses="euiBadge__icon"
@@ -136,4 +142,4 @@
136
142
  </span>
137
143
  </span>
138
144
  </span>
139
- {{/if}}
145
+ {{/if}}