@ember-eui/core 4.3.0 → 5.0.0-alpha.3

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 (635) 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 +8 -5
  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-tabs/index.hbs +6 -9
  137. package/addon/components/eui-tool-tip/index.hbs +6 -7
  138. package/addon/components/eui-tool-tip/index.ts +27 -11
  139. package/addon/helpers/arg-or-default.ts +4 -1
  140. package/addon/helpers/class-names.ts +2 -0
  141. package/addon/helpers/eui-palette.ts +4 -1
  142. package/addon/helpers/get-range-tick.ts +53 -8
  143. package/addon/helpers/get-tab-id.ts +8 -2
  144. package/addon/helpers/hex-to-rgb.ts +4 -1
  145. package/addon/helpers/inline-styles.ts +10 -3
  146. package/addon/helpers/is-within-number.ts +4 -1
  147. package/addon/helpers/starts-with.ts +3 -1
  148. package/addon/helpers/unique-id.ts +4 -1
  149. package/addon/initializers/eui-config.ts +12 -0
  150. package/addon/modifiers/mutation-observer.ts +4 -1
  151. package/addon/modifiers/outside-click-detector.ts +4 -4
  152. package/addon/styles/ember-eui.css +2 -10
  153. package/addon/utils/accesibility/cascading-menu-keys.ts +8 -1
  154. package/addon/utils/breakpoint.ts +114 -0
  155. package/addon/utils/code/utils.ts +304 -0
  156. package/addon/utils/color/color_palette.ts +3 -3
  157. package/addon/utils/color/eui_palettes.ts +23 -6
  158. package/addon/utils/css-mappings/eui-avatar.ts +51 -9
  159. package/addon/utils/css-mappings/eui-badge.ts +6 -2
  160. package/addon/utils/css-mappings/eui-beta-badge.ts +22 -0
  161. package/addon/utils/css-mappings/eui-bottom-bar.ts +8 -1
  162. package/addon/utils/css-mappings/eui-button-empty.ts +4 -4
  163. package/addon/utils/css-mappings/eui-button-icon.ts +19 -6
  164. package/addon/utils/css-mappings/eui-button.ts +2 -1
  165. package/addon/utils/css-mappings/eui-card-select.ts +1 -11
  166. package/addon/utils/css-mappings/eui-card.ts +1 -18
  167. package/addon/utils/css-mappings/{eui-code-block-impl.ts → eui-code-block.ts} +0 -0
  168. package/addon/utils/css-mappings/eui-description-list.ts +29 -0
  169. package/addon/utils/css-mappings/eui-empty-prompt.ts +17 -0
  170. package/addon/utils/css-mappings/eui-flyout.ts +21 -1
  171. package/addon/utils/css-mappings/eui-header-links.ts +27 -0
  172. package/addon/utils/css-mappings/eui-health.ts +17 -0
  173. package/addon/utils/css-mappings/eui-icon.ts +93 -70
  174. package/addon/utils/css-mappings/eui-image.ts +17 -2
  175. package/addon/utils/css-mappings/eui-link.ts +21 -0
  176. package/addon/utils/css-mappings/eui-list-group.ts +5 -1
  177. package/addon/utils/css-mappings/eui-modal.ts +5 -1
  178. package/addon/utils/css-mappings/eui-page-body.ts +25 -0
  179. package/addon/utils/css-mappings/eui-page-content-body.ts +17 -0
  180. package/addon/utils/css-mappings/eui-page-content.ts +7 -1
  181. package/addon/utils/css-mappings/eui-page-header.ts +17 -0
  182. package/addon/utils/css-mappings/eui-page-side-bar.ts +17 -0
  183. package/addon/utils/css-mappings/eui-panel.ts +1 -0
  184. package/addon/utils/css-mappings/eui-progress-data.ts +0 -1
  185. package/addon/utils/css-mappings/eui-progress.ts +0 -2
  186. package/addon/utils/css-mappings/eui-range-levels.ts +22 -4
  187. package/addon/utils/css-mappings/eui-tabs.ts +3 -1
  188. package/addon/utils/css-mappings/eui-text-color.ts +3 -2
  189. package/addon/utils/css-mappings/index.ts +23 -3
  190. package/addon/utils/detect-element-resize.js +248 -0
  191. package/addon/utils/markdown/markdown-types.ts +10 -11
  192. package/addon/utils/markdown/plugins/markdown-add-components/index.ts +1 -0
  193. package/addon/utils/markdown/plugins/{markdown-add-components.ts → markdown-add-components/processor.ts} +14 -7
  194. package/addon/utils/markdown/plugins/markdown-checkbox/index.ts +9 -0
  195. package/addon/utils/markdown/plugins/{markdown-checkbox.ts → markdown-checkbox/parser.ts} +3 -5
  196. package/addon/utils/markdown/plugins/markdown-default-plugins/index.ts +12 -0
  197. package/addon/utils/markdown/plugins/{markdown-default-plugins.ts → markdown-default-plugins/parsing-plugins.ts} +13 -25
  198. package/addon/utils/markdown/plugins/markdown-default-plugins/plugins.ts +32 -0
  199. package/addon/utils/markdown/plugins/markdown-default-plugins/processing-plugins.ts +67 -0
  200. package/addon/utils/markdown/plugins/markdown-default-plugins/ui-plugins.ts +27 -0
  201. package/addon/utils/markdown/plugins/markdown-tooltip/index.ts +2 -0
  202. package/addon/utils/markdown/plugins/{markdown-tooltip.ts → markdown-tooltip/parser.ts} +3 -23
  203. package/addon/utils/markdown/plugins/markdown-tooltip/plugin.ts +17 -0
  204. package/addon/utils/markdown/plugins/to-dom.ts +3 -1
  205. package/addon/utils/markdown/remark/remark-prismjs.ts +41 -0
  206. package/addon/utils/popover/index.ts +87 -35
  207. package/addon/utils/range/index.ts +1 -0
  208. package/addon/utils/transition.ts +10 -3
  209. package/addon/version.ts +6 -0
  210. package/app/components/eui-auto-sizer/index.js +1 -0
  211. package/app/components/eui-avatar/index.js +1 -1
  212. package/app/components/eui-badge-group/badge-group-item/index.js +1 -1
  213. package/app/components/eui-badge-group/index.js +1 -1
  214. package/app/components/eui-breadcrumbs/index.js +1 -0
  215. package/app/components/eui-button-icon/index.js +1 -1
  216. package/app/components/eui-card-select/index.js +1 -0
  217. package/app/components/{eui-code-block-impl → eui-code-block/controls}/index.js +1 -1
  218. package/app/components/{eui-code-block-impl/code-block-controls → eui-code-block/full-screen-display}/index.js +1 -1
  219. package/app/components/eui-code-block/virtualized/index.js +1 -0
  220. package/app/components/eui-combo-box/create-option/index.js +1 -1
  221. package/app/components/eui-comment/eui-comment-timeline/index.js +1 -1
  222. package/app/components/eui-comment/index.js +1 -1
  223. package/app/components/eui-description-list/index.js +1 -0
  224. package/app/components/eui-description-list-description/index.js +1 -0
  225. package/app/components/eui-description-list-title/index.js +1 -0
  226. package/app/components/eui-dual-range/index.js +1 -1
  227. package/app/components/eui-empty-prompt/index.js +1 -0
  228. package/app/components/eui-field-number/index.js +1 -1
  229. package/app/components/eui-field-password/index.js +1 -1
  230. package/app/components/eui-field-search/index.js +1 -1
  231. package/app/components/eui-field-text/index.js +1 -1
  232. package/app/components/eui-file-picker/index.js +1 -1
  233. package/app/components/eui-form/index.js +1 -1
  234. package/app/components/eui-form-control-layout/index.js +1 -1
  235. package/app/components/eui-form-control-layout-clear-button/index.js +1 -1
  236. package/app/components/eui-form-control-layout-custom-icon/index.js +1 -1
  237. package/app/components/eui-form-control-layout-delimited/index.js +1 -1
  238. package/app/components/eui-form-control-layout-icons/index.js +1 -1
  239. package/app/components/eui-form-error-text/index.js +1 -1
  240. package/app/components/eui-form-fieldset/index.js +1 -1
  241. package/app/components/eui-form-help-text/index.js +1 -1
  242. package/app/components/eui-form-label/index.js +1 -1
  243. package/app/components/eui-form-legend/index.js +1 -1
  244. package/app/components/eui-form-row/index.js +1 -1
  245. package/app/components/eui-header-alert/index.js +1 -0
  246. package/app/components/eui-header-breadcrumbs/index.js +1 -0
  247. package/app/components/eui-header-links/index.js +1 -0
  248. package/app/components/eui-hide-for/index.js +1 -0
  249. package/app/components/eui-image.js +1 -1
  250. package/app/components/eui-key-pad-menu/index.js +1 -0
  251. package/app/components/eui-key-pad-menu/key/index.js +1 -0
  252. package/app/components/eui-key-pad-menu-item/index.js +1 -0
  253. package/app/components/eui-link/index.js +1 -0
  254. package/app/components/eui-list-group/index.js +1 -1
  255. package/app/components/eui-list-group-item/index.js +1 -1
  256. package/app/components/eui-loading-logo/index.js +1 -0
  257. package/app/components/eui-overlay-mask.js +1 -1
  258. package/app/components/eui-page/index.js +1 -1
  259. package/app/components/eui-page-body/index.js +1 -1
  260. package/app/components/eui-page-content/index.js +1 -1
  261. package/app/components/eui-page-content-body/index.js +1 -1
  262. package/app/components/eui-page-content-header/index.js +1 -1
  263. package/app/components/eui-page-content-header-section/index.js +1 -1
  264. package/app/components/eui-page-header/index.js +1 -1
  265. package/app/components/eui-page-header-content/index.js +1 -0
  266. package/app/components/eui-page-header-section/index.js +1 -1
  267. package/app/components/eui-page-template/index.js +1 -0
  268. package/app/components/eui-panel/index.js +1 -1
  269. package/app/components/eui-popover/index.js +1 -1
  270. package/app/components/eui-popover-footer/index.js +1 -1
  271. package/app/components/eui-popover-title/index.js +1 -1
  272. package/app/components/eui-portal/index.js +1 -1
  273. package/app/components/eui-progress/index.js +1 -1
  274. package/app/components/eui-radio/index.js +1 -1
  275. package/app/components/eui-radio-group/index.js +1 -1
  276. package/app/components/eui-range/index.js +1 -1
  277. package/app/components/eui-range-highlight/index.js +1 -1
  278. package/app/components/eui-range-input/index.js +1 -1
  279. package/app/components/eui-range-label/index.js +1 -1
  280. package/app/components/eui-range-levels/index.js +1 -1
  281. package/app/components/eui-range-slider/index.js +1 -1
  282. package/app/components/eui-range-thumb/index.js +1 -1
  283. package/app/components/eui-range-ticks/index.js +1 -1
  284. package/app/components/eui-range-tooltip/index.js +1 -1
  285. package/app/components/eui-range-track/index.js +1 -1
  286. package/app/components/eui-range-wrapper/index.js +1 -1
  287. package/app/components/eui-select/index.js +1 -1
  288. package/app/components/eui-show-for/index.js +1 -0
  289. package/app/components/eui-side-nav/index.js +1 -1
  290. package/app/components/eui-side-nav-item/button/index.js +1 -1
  291. package/app/components/eui-side-nav-item/index.js +1 -1
  292. package/app/components/eui-spacer/index.js +1 -1
  293. package/app/components/eui-split-panel/inner/index.js +1 -0
  294. package/app/components/eui-split-panel/outer/index.js +1 -0
  295. package/app/components/eui-switch/index.js +1 -1
  296. package/app/components/eui-tab/index.js +1 -1
  297. package/app/components/eui-tabs/index.js +1 -1
  298. package/app/components/eui-text/index.js +1 -1
  299. package/app/components/eui-text-align/index.js +1 -1
  300. package/app/components/eui-text-area/index.js +1 -1
  301. package/app/components/eui-text-color/index.js +1 -1
  302. package/app/components/eui-title/index.js +1 -1
  303. package/app/components/eui-tool-tip/index.js +1 -1
  304. package/app/components/eui-tool-tip-popover/index.js +1 -1
  305. package/app/helpers/eui-palette.js +1 -1
  306. package/app/helpers/hex-to-rgb.js +1 -1
  307. package/app/initializers/eui-config.js +1 -0
  308. package/app/utils/copy-to-clipboard.js +1 -0
  309. package/docs/display/avatar-demo/demo1.md +43 -49
  310. package/docs/display/avatar-demo/demo2.md +42 -0
  311. package/docs/display/avatar-demo/demo3.md +33 -0
  312. package/docs/display/avatar-demo/demo4.md +53 -0
  313. package/docs/display/avatar-demo/demo5.md +38 -0
  314. package/docs/display/avatar.md +1 -1
  315. package/docs/display/badge-demo/demo1.md +78 -137
  316. package/docs/display/badge-demo/demo2.md +32 -0
  317. package/docs/display/badge-demo/demo3.md +70 -0
  318. package/docs/display/badge-demo/demo4.md +27 -0
  319. package/docs/display/badge-demo/demo5.md +31 -0
  320. package/docs/display/badge-demo/demo6.md +59 -0
  321. package/docs/display/badge-demo/demo7.md +97 -0
  322. package/docs/display/badge-demo/demo8.md +19 -0
  323. package/docs/display/badge.md +1 -1
  324. package/docs/display/callout-demo/demo1.md +29 -81
  325. package/docs/display/callout-demo/demo2.md +28 -0
  326. package/docs/display/callout-demo/demo3.md +29 -0
  327. package/docs/display/callout-demo/demo4.md +26 -0
  328. package/docs/display/callout.md +9 -1
  329. package/docs/display/card/basic-card-demo/demo1.md +22 -316
  330. package/docs/display/card/basic-card.md +9 -1
  331. package/docs/display/card/beta-badge-demo/demo1.md +47 -0
  332. package/docs/display/card/beta-badge.md +9 -0
  333. package/docs/display/card/checkable-demo/demo1.md +20 -94
  334. package/docs/display/card/checkable-demo/demo2.md +63 -0
  335. package/docs/display/card/checkable.md +9 -1
  336. package/docs/display/card/custom-children-demo/demo1.md +93 -0
  337. package/docs/display/card/custom-children.md +9 -0
  338. package/docs/display/card/footer-demo/demo1.md +77 -0
  339. package/docs/display/card/footer.md +9 -0
  340. package/docs/display/card/images-demo/demo1.md +57 -0
  341. package/docs/display/card/images.md +9 -0
  342. package/docs/display/card/layout-demo/demo1.md +40 -0
  343. package/docs/display/card/layout.md +9 -0
  344. package/docs/display/card/selectable-demo/demo1.md +60 -53
  345. package/docs/display/card/selectable.md +9 -1
  346. package/docs/display/comment-list.md +1 -1
  347. package/docs/display/description-list-demo/demo1.md +53 -0
  348. package/docs/display/description-list-demo/demo2.md +43 -0
  349. package/docs/display/description-list-demo/demo3.md +58 -0
  350. package/docs/display/description-list-demo/demo4.md +42 -0
  351. package/docs/display/description-list-demo/demo5.md +62 -0
  352. package/docs/display/description-list-demo/demo6.md +46 -0
  353. package/docs/display/description-list.md +1 -0
  354. package/docs/display/empty-prompt-demo/demo1.md +25 -0
  355. package/docs/display/empty-prompt-demo/demo2.md +16 -0
  356. package/docs/display/empty-prompt-demo/demo3.md +67 -0
  357. package/docs/display/empty-prompt-demo/demo4.md +21 -0
  358. package/docs/display/empty-prompt-demo/demo5.md +33 -0
  359. package/docs/display/empty-prompt-demo/demo6.md +43 -0
  360. package/docs/display/empty-prompt-demo/demo7.md +162 -0
  361. package/docs/display/empty-prompt-demo/demo8.md +57 -0
  362. package/docs/display/empty-prompt.md +1 -0
  363. package/docs/display/health-demo/demo1.md +11 -8
  364. package/docs/display/health-demo/demo2.md +31 -0
  365. package/docs/display/health.md +9 -1
  366. package/docs/display/icons-demo/demo1.md +270 -57
  367. package/docs/display/icons-demo/demo2.md +76 -0
  368. package/docs/display/icons-demo/demo3.md +76 -0
  369. package/docs/display/icons-demo/demo4.md +104 -0
  370. package/docs/display/icons-demo/demo5.md +64 -0
  371. package/docs/display/icons-demo/demo6.md +63 -0
  372. package/docs/display/icons-demo/demo7.md +101 -0
  373. package/docs/display/icons-demo/demo8.md +47 -0
  374. package/docs/display/icons.md +1 -1
  375. package/docs/display/image-demo/demo1.md +15 -50
  376. package/docs/display/image-demo/demo2.md +35 -0
  377. package/docs/display/image-demo/demo3.md +75 -0
  378. package/docs/display/image-demo/demo4.md +80 -0
  379. package/docs/display/image.md +9 -1
  380. package/docs/display/list-group.md +1 -1
  381. package/docs/display/loading/logo-demo/demo1.md +15 -0
  382. package/docs/display/loading/logo.md +1 -0
  383. package/docs/display/progress-demo/demo1.md +10 -5
  384. package/docs/display/progress-demo/demo2.md +11 -26
  385. package/docs/display/progress-demo/demo3.md +27 -0
  386. package/docs/display/progress-demo/demo4.md +77 -0
  387. package/docs/display/progress.md +1 -1
  388. package/docs/display/stat-demo/demo1.md +0 -118
  389. package/docs/display/stat-demo/demo2.md +24 -22
  390. package/docs/display/stat-demo/demo3.md +39 -0
  391. package/docs/display/stat-demo/demo4.md +50 -0
  392. package/docs/display/stat-demo/demo5.md +25 -0
  393. package/docs/display/stat-demo/demo6.md +40 -0
  394. package/docs/display/stat-demo/demo7.md +84 -0
  395. package/docs/display/stat.md +8 -1
  396. package/docs/display/text-demo/demo1.md +79 -130
  397. package/docs/display/text-demo/demo2.md +71 -0
  398. package/docs/display/text-demo/demo3.md +39 -0
  399. package/docs/display/text.md +12 -1
  400. package/docs/display/title-demo/demo1.md +50 -26
  401. package/docs/display/title.md +1 -1
  402. package/docs/display/tool-tip-demo/demo1.md +26 -71
  403. package/docs/display/tool-tip-demo/demo2.md +33 -30
  404. package/docs/display/tool-tip-demo/demo3.md +50 -0
  405. package/docs/display/tool-tip-demo/demo4.md +74 -0
  406. package/docs/display/tool-tip.md +11 -1
  407. package/docs/editors/code/code-block-demo/demo1.md +21 -40
  408. package/docs/editors/code/code-block-demo/demo2.md +35 -0
  409. package/docs/editors/code/code-block-demo/demo3.md +43 -0
  410. package/docs/editors/code/code-block-demo/demo4.md +28 -0
  411. package/docs/editors/code/code-block-demo/demo5.md +42 -0
  412. package/docs/editors/code/code-block-demo/demo6.md +42 -0
  413. package/docs/editors/code/code-block-demo/demo7.md +853 -0
  414. package/docs/editors/code/code-block-demo/demo8.md +855 -0
  415. package/docs/editors/code/code-block.md +21 -1
  416. package/docs/editors/code/inline-demo/demo1.md +6 -3
  417. package/docs/editors/code/inline.md +1 -1
  418. package/docs/editors/markdown-editor/base-editor-demo/demo1.md +9 -28
  419. package/docs/editors/markdown-editor/base-editor.md +1 -1
  420. package/docs/forms/form-controls/checkbox/demo/demo1.md +49 -0
  421. package/docs/forms/form-controls/checkbox/index.md +26 -0
  422. package/docs/forms/form-controls/{checkbox-group-demo → checkbox-group/demo}/demo1.md +4 -13
  423. package/docs/forms/form-controls/checkbox-group/index.md +27 -0
  424. package/docs/forms/form-controls/{combo-box-demo → combo-box/demo}/demo1.md +8 -2
  425. package/docs/forms/form-controls/{combo-box-demo → combo-box/demo}/demo2.md +10 -8
  426. package/docs/forms/form-controls/combo-box/demo/demo3.md +60 -0
  427. package/docs/forms/form-controls/{combo-box-demo/demo3.md → combo-box/demo/demo4.md} +17 -14
  428. package/docs/forms/form-controls/combo-box/demo/demo5.md +151 -0
  429. package/docs/forms/form-controls/combo-box/index.md +6 -0
  430. package/docs/forms/form-controls/file-picker/demo/demo1.md +29 -0
  431. package/docs/forms/form-controls/file-picker/demo/demo2.md +44 -0
  432. package/docs/forms/form-controls/file-picker/demo/demo3.md +45 -0
  433. package/docs/forms/form-controls/file-picker/demo/demo4.md +63 -0
  434. package/docs/forms/form-controls/file-picker/index.md +22 -0
  435. package/docs/forms/form-controls/{form-control-layout-demo → form-control-layout/demo}/demo1.md +0 -0
  436. package/docs/forms/form-controls/form-control-layout/index.md +30 -0
  437. package/docs/forms/form-controls/{form-control-layout-delimited-demo → form-control-layout-delimited/demo}/demo1.md +41 -37
  438. package/docs/forms/form-controls/form-control-layout-delimited/index.md +24 -0
  439. package/docs/forms/form-controls/number-field/demo/demo1.md +20 -0
  440. package/docs/forms/form-controls/{number-field-demo/demo1.md → number-field/demo/demo2.md} +23 -11
  441. package/docs/forms/form-controls/number-field/index.md +12 -0
  442. package/docs/forms/form-controls/password-field/demo/demo1.md +19 -0
  443. package/docs/forms/form-controls/{password-field-demo/demo1.md → password-field/demo/demo2.md} +12 -8
  444. package/docs/forms/form-controls/password-field/index.md +19 -0
  445. package/docs/forms/form-controls/radio/demo/demo1.md +43 -0
  446. package/docs/forms/form-controls/radio/index.md +24 -0
  447. package/docs/forms/form-controls/radio-group/demo/demo1.md +50 -0
  448. package/docs/forms/form-controls/radio-group/index.md +18 -0
  449. package/docs/forms/form-controls/range/demo/demo1.md +96 -0
  450. package/docs/forms/form-controls/range/demo/demo2.md +62 -0
  451. package/docs/forms/form-controls/{range-demo → range/demo}/demo3.md +10 -12
  452. package/docs/forms/form-controls/{range-demo → range/demo}/demo4.md +16 -18
  453. package/docs/forms/form-controls/{range-demo → range/demo}/demo5.md +18 -20
  454. package/docs/forms/form-controls/range/demo/demo6.md +57 -0
  455. package/docs/forms/form-controls/range/demo/demo7.md +350 -0
  456. package/docs/forms/form-controls/range/index.md +18 -0
  457. package/docs/forms/form-controls/search-field/demo/demo1.md +29 -0
  458. package/docs/forms/form-controls/search-field/index.md +14 -0
  459. package/docs/forms/form-controls/select/demo/demo1.md +29 -0
  460. package/docs/forms/form-controls/select/demo/demo2.md +44 -0
  461. package/docs/forms/form-controls/{select-demo/demo1.md → select/demo/demo3.md} +20 -10
  462. package/docs/forms/form-controls/select/index.md +19 -0
  463. package/docs/forms/form-controls/{switch-demo → switch/demo}/demo1.md +10 -10
  464. package/docs/forms/form-controls/switch/index.md +13 -0
  465. package/docs/forms/form-controls/text-field/demo/demo1.md +35 -0
  466. package/docs/forms/form-controls/text-field/demo/demo2.md +40 -0
  467. package/docs/forms/form-controls/{text-field-demo/demo2.md → text-field/demo/demo3.md} +14 -17
  468. package/docs/forms/form-controls/{text-field-demo/demo1.md → text-field/demo/demo4.md} +18 -32
  469. package/docs/forms/form-controls/text-field/index.md +14 -0
  470. package/docs/forms/form-controls/textarea/demo/demo1.md +21 -0
  471. package/docs/forms/form-controls/textarea/demo/demo2.md +24 -0
  472. package/docs/forms/form-controls/textarea/index.md +13 -0
  473. package/docs/forms/form-layouts/described-form-groups-demo/demo1.md +13 -4
  474. package/docs/forms/form-layouts/described-form-groups.md +1 -1
  475. package/docs/layout/accordion-demo/demo1.md +21 -102
  476. package/docs/layout/accordion-demo/demo2.md +76 -0
  477. package/docs/layout/accordion-demo/demo3.md +25 -0
  478. package/docs/layout/accordion-demo/demo4.md +26 -0
  479. package/docs/layout/accordion-demo/demo5.md +65 -0
  480. package/docs/layout/accordion-demo/demo6.md +78 -0
  481. package/docs/layout/accordion-demo/demo7.md +66 -0
  482. package/docs/layout/accordion-demo/demo8.md +64 -0
  483. package/docs/layout/accordion-demo/demo9.md +114 -0
  484. package/docs/layout/accordion.md +39 -9
  485. package/docs/layout/bottom-bar-demo/demo1.md +32 -49
  486. package/docs/layout/bottom-bar-demo/demo2.md +54 -0
  487. package/docs/layout/bottom-bar-demo/demo3.md +81 -0
  488. package/docs/layout/bottom-bar.md +1 -1
  489. package/docs/layout/flex.md +1 -1
  490. package/docs/layout/flyout-demo/demo1.md +19 -11
  491. package/docs/layout/flyout-demo/demo2.md +43 -28
  492. package/docs/layout/flyout-demo/demo3.md +99 -0
  493. package/docs/layout/flyout-demo/demo4.md +115 -0
  494. package/docs/layout/flyout-demo/demo5.md +59 -0
  495. package/docs/layout/flyout-demo/demo6.md +57 -0
  496. package/docs/layout/flyout-demo/demo7.md +51 -0
  497. package/docs/layout/flyout.md +1 -1
  498. package/docs/layout/header-demo/demo1.md +284 -35
  499. package/docs/layout/header-demo/demo2.md +42 -0
  500. package/docs/layout/header-demo/demo3.md +48 -0
  501. package/docs/layout/header-demo/demo4.md +57 -0
  502. package/docs/layout/header-demo/demo5.md +232 -0
  503. package/docs/layout/header-demo/demo6.md +85 -0
  504. package/docs/layout/header-demo/demo7.md +94 -0
  505. package/docs/layout/header.md +1 -1
  506. package/docs/layout/horizontal-rule.md +1 -1
  507. package/docs/layout/modal-demo/demo1.md +64 -167
  508. package/docs/layout/modal-demo/demo2.md +126 -0
  509. package/docs/layout/modal-demo/demo3.md +55 -0
  510. package/docs/layout/modal-demo/demo4.md +65 -0
  511. package/docs/layout/modal-demo/demo5.md +96 -0
  512. package/docs/layout/modal.md +1 -1
  513. package/docs/layout/page-demo/demo1.md +96 -3
  514. package/docs/layout/page-demo/demo10.md +42 -0
  515. package/docs/layout/page-demo/demo2.md +46 -0
  516. package/docs/layout/page-demo/demo3.md +50 -0
  517. package/docs/layout/page-demo/demo4.md +38 -0
  518. package/docs/layout/page-demo/demo5.md +30 -0
  519. package/docs/layout/page-demo/demo6.md +51 -0
  520. package/docs/layout/page-demo/demo7.md +59 -0
  521. package/docs/layout/page-demo/demo8.md +19 -0
  522. package/docs/layout/page-demo/demo9.md +29 -0
  523. package/docs/layout/page.md +1 -1
  524. package/docs/layout/panel-demo/demo1.md +28 -19
  525. package/docs/layout/panel-demo/demo2.md +22 -0
  526. package/docs/layout/panel-demo/demo3.md +27 -0
  527. package/docs/layout/panel-demo/demo4.md +46 -0
  528. package/docs/layout/panel-demo/demo5.md +81 -0
  529. package/docs/layout/panel.md +7 -1
  530. package/docs/layout/popover-demo/demo1.md +42 -300
  531. package/docs/layout/popover-demo/demo10.md +72 -0
  532. package/docs/layout/popover-demo/demo2.md +306 -96
  533. package/docs/layout/popover-demo/demo3.md +20 -12
  534. package/docs/layout/popover-demo/demo4.md +118 -0
  535. package/docs/layout/popover-demo/demo5.md +252 -0
  536. package/docs/layout/popover-demo/demo6.md +44 -0
  537. package/docs/layout/popover-demo/demo7.md +44 -0
  538. package/docs/layout/popover-demo/demo8.md +50 -0
  539. package/docs/layout/popover-demo/demo9.md +80 -0
  540. package/docs/layout/popover.md +1 -1
  541. package/docs/navigation/breadcrumbs-demo/demo1.md +77 -0
  542. package/docs/navigation/breadcrumbs-demo/demo2.md +61 -0
  543. package/docs/navigation/breadcrumbs-demo/demo3.md +61 -0
  544. package/docs/navigation/breadcrumbs-demo/demo4.md +61 -0
  545. package/docs/navigation/breadcrumbs-demo/demo5.md +61 -0
  546. package/docs/navigation/breadcrumbs-demo/demo6.md +61 -0
  547. package/docs/navigation/breadcrumbs.md +1 -0
  548. package/docs/navigation/button-demo/demo1.md +210 -158
  549. package/docs/navigation/button.md +1 -1
  550. package/docs/navigation/collapsible-nav-demo/demo1.md +21 -44
  551. package/docs/navigation/collapsible-nav-demo/demo2.md +108 -0
  552. package/docs/navigation/collapsible-nav.md +1 -1
  553. package/docs/navigation/key-pad-menu-demo/demo1.md +77 -0
  554. package/docs/navigation/key-pad-menu-demo/demo2.md +102 -0
  555. package/docs/navigation/key-pad-menu-demo/demo3.md +54 -0
  556. package/docs/navigation/key-pad-menu-demo/demo4.md +71 -0
  557. package/docs/navigation/key-pad-menu-demo/demo5.md +65 -0
  558. package/docs/navigation/key-pad-menu.md +1 -0
  559. package/docs/navigation/link-demo/demo1.md +44 -0
  560. package/docs/navigation/link-demo/demo2.md +41 -0
  561. package/docs/navigation/link-demo/demo3.md +45 -0
  562. package/docs/navigation/link-demo/demo4.md +61 -0
  563. package/docs/navigation/link.md +1 -0
  564. package/docs/navigation/side-nav-demo/demo1.md +34 -18
  565. package/docs/navigation/side-nav.md +1 -1
  566. package/docs/navigation/steps-demo/demo1.md +16 -18
  567. package/docs/navigation/steps-demo/demo2.md +18 -21
  568. package/docs/navigation/steps-demo/demo3.md +12 -10
  569. package/docs/navigation/steps-demo/demo4.md +84 -0
  570. package/docs/navigation/steps-demo/demo5.md +29 -0
  571. package/docs/navigation/steps.md +1 -1
  572. package/docs/navigation/tabs-demo/demo1.md +38 -111
  573. package/docs/navigation/tabs-demo/demo2.md +56 -0
  574. package/docs/navigation/tabs-demo/demo3.md +79 -0
  575. package/docs/navigation/tabs-demo/demo4.md +102 -0
  576. package/docs/navigation/tabs.md +1 -1
  577. package/docs/utilities/auto-sizer-demo/demo1.md +34 -0
  578. package/docs/utilities/auto-sizer.md +1 -0
  579. package/docs/utilities/copy-demo/demo1.md +37 -0
  580. package/docs/utilities/copy-demo/demo2.md +70 -0
  581. package/docs/utilities/copy.md +1 -0
  582. package/docs/utilities/mutation-observer.md +1 -1
  583. package/docs/utilities/outside-click-detector.md +1 -1
  584. package/docs/utilities/overlay-mask.md +1 -1
  585. package/docs/utilities/portal.md +1 -1
  586. package/docs/utilities/resize-observer.md +1 -1
  587. package/docs/utilities/responsive-demo/demo1.md +108 -0
  588. package/docs/utilities/responsive.md +1 -0
  589. package/index.js +8 -3
  590. package/package.json +13 -7
  591. package/CHANGELOG.md +0 -1340
  592. package/addon/components/eui-code-block-impl/code-block-controls/index.hbs +0 -33
  593. package/addon/components/eui-code-block-impl/index.hbs +0 -111
  594. package/addon/components/eui-code-block-impl/index.ts +0 -121
  595. package/addon/components/eui-flyout-body/banner/index.hbs +0 -3
  596. package/addon/components/eui-flyout-body/content/index.hbs +0 -3
  597. package/addon/helpers/create-event.ts +0 -30
  598. package/addon/modifiers/focus-tab.ts +0 -19
  599. package/addon/modifiers/get-cursor-node.ts +0 -54
  600. package/addon/modifiers/invalidate-indeterminate.ts +0 -10
  601. package/addon/modifiers/on-event-simulate-event.ts +0 -32
  602. package/app/components/eui-card/eui-card-select/index.js +0 -1
  603. package/app/components/eui-flyout-body/banner/index.js +0 -1
  604. package/app/components/eui-flyout-body/content/index.js +0 -1
  605. package/app/helpers/create-event.js +0 -1
  606. package/app/modifiers/fixed-header.js +0 -1
  607. package/app/modifiers/focus-tab.js +0 -1
  608. package/app/modifiers/get-cursor-node.js +0 -1
  609. package/app/modifiers/invalidate-indeterminate.js +0 -1
  610. package/app/modifiers/on-event-simulate-event.js +0 -1
  611. package/docs/forms/form-controls/checkbox-demo/demo1.md +0 -40
  612. package/docs/forms/form-controls/checkbox-group.md +0 -1
  613. package/docs/forms/form-controls/checkbox.md +0 -1
  614. package/docs/forms/form-controls/combo-box.md +0 -1
  615. package/docs/forms/form-controls/file-picker-demo/demo1.md +0 -28
  616. package/docs/forms/form-controls/file-picker.md +0 -1
  617. package/docs/forms/form-controls/form-control-layout-delimited.md +0 -1
  618. package/docs/forms/form-controls/form-control-layout.md +0 -1
  619. package/docs/forms/form-controls/number-field.md +0 -1
  620. package/docs/forms/form-controls/password-field.md +0 -1
  621. package/docs/forms/form-controls/radio-demo/demo1.md +0 -39
  622. package/docs/forms/form-controls/radio-group-demo/demo1.md +0 -60
  623. package/docs/forms/form-controls/radio-group.md +0 -1
  624. package/docs/forms/form-controls/radio.md +0 -1
  625. package/docs/forms/form-controls/range-demo/demo1.md +0 -61
  626. package/docs/forms/form-controls/range-demo/demo2.md +0 -59
  627. package/docs/forms/form-controls/range-demo/demo6.md +0 -59
  628. package/docs/forms/form-controls/range.md +0 -1
  629. package/docs/forms/form-controls/search-field-demo/demo1.md +0 -31
  630. package/docs/forms/form-controls/search-field.md +0 -1
  631. package/docs/forms/form-controls/select.md +0 -1
  632. package/docs/forms/form-controls/switch.md +0 -1
  633. package/docs/forms/form-controls/text-field.md +0 -1
  634. package/docs/forms/form-controls/textarea-demo/demo1.md +0 -36
  635. package/docs/forms/form-controls/textarea.md +0 -1
@@ -0,0 +1,73 @@
1
+ import Component from '@glimmer/component';
2
+ import {
3
+ EuiCodeSharedProps,
4
+ getHtmlContent,
5
+ checkSupportedLanguage
6
+ } from '../../utils/code/utils';
7
+ import { action } from '@ember/object';
8
+ import { highlight, RefractorNode } from 'refractor';
9
+ import { tracked } from '@glimmer/tracking';
10
+ import { scheduleOnce } from '@ember/runloop';
11
+
12
+ type EuiCodeArgs = EuiCodeSharedProps & {
13
+ //comments
14
+ };
15
+
16
+ export default class EuiCodeComponent extends Component<EuiCodeArgs> {
17
+ @tracked codeTarget: undefined | HTMLElement;
18
+ @tracked code: undefined | HTMLElement;
19
+ observer: MutationObserver | null = null;
20
+
21
+ constructor(owner: unknown, args: EuiCodeArgs) {
22
+ super(owner, args);
23
+ this.codeTarget = document.createElement('div');
24
+ this.setupObserver();
25
+ }
26
+
27
+ get language() {
28
+ return checkSupportedLanguage(this.args.language || '');
29
+ }
30
+
31
+ setupObserver() {
32
+ this.observer?.disconnect();
33
+ this.observer = new MutationObserver((mutationsList) => {
34
+ if (mutationsList.length) this.update();
35
+ });
36
+ if (this.codeTarget) {
37
+ this.update();
38
+ this.observer.observe(this.codeTarget, {
39
+ characterData: true,
40
+ subtree: true,
41
+ childList: true
42
+ });
43
+ }
44
+ }
45
+
46
+ @action
47
+ update() {
48
+ const render = () => {
49
+ const html = (
50
+ this.codeTarget?.textContent ? this.codeTarget.textContent : ''
51
+ ).trim();
52
+
53
+ let data: RefractorNode[];
54
+ if (typeof html !== 'string') {
55
+ data = [];
56
+ } else {
57
+ data = highlight(html, this.language);
58
+ }
59
+
60
+ const code = this.code;
61
+
62
+ if (code) {
63
+ code.innerHTML = getHtmlContent(data).element.innerHTML;
64
+ }
65
+ };
66
+ scheduleOnce('afterRender', this, render);
67
+ }
68
+
69
+ willDestroy(): void {
70
+ super.willDestroy();
71
+ this.observer?.disconnect();
72
+ }
73
+ }
@@ -0,0 +1,26 @@
1
+ {{#if (or @showCopyButton @showFullScreenButton)}}
2
+ <div class="euiCodeBlock__controls">
3
+ {{#if @showFullScreenButton}}
4
+ <EuiButtonIcon
5
+ class="euiCodeBlock__fullScreenButton"
6
+ @iconType={{if @isFullScreen "fullScreenExit" "fullScreen"}}
7
+ @color="text"
8
+ aria-label={{if @isFullScreen "Collapse" "Expand"}}
9
+ {{on "click" @toggleFullScreen}}
10
+ />
11
+ {{/if}}
12
+
13
+ {{#if @showCopyButton}}
14
+ <div className="euiCodeBlock__copyButton">
15
+ <EuiCopy @textToCopy={{@textToCopy}} @afterMessage="Copied" as |copy|>
16
+ <EuiButtonIcon
17
+ {{on "click" copy}}
18
+ @iconType="copyClipboard"
19
+ @color="text"
20
+ aria-label="Copy"
21
+ />
22
+ </EuiCopy>
23
+ </div>
24
+ {{/if}}
25
+ </div>
26
+ {{/if}}
@@ -0,0 +1,12 @@
1
+ <EuiOverlayMask>
2
+ <div
3
+ class="euiCodeBlock--fontLarge euiCodeBlock--paddingLarge euiCodeBlock-isFullScreen"
4
+ {{focus-trap
5
+ isActive=true
6
+ focusTrapOptions=(hash clickOutsideDeactivates=true)
7
+ }}
8
+ ...attributes
9
+ >
10
+ {{yield}}
11
+ </div>
12
+ </EuiOverlayMask>
@@ -1,10 +1,145 @@
1
- <EuiCodeBlockImpl
2
- @inline={{false}}
3
- @language={{@language}}
4
- @transparentBackground={{@transparentBackground}}
5
- @isCopyable={{@isCopyable}}
6
- @overflowHeight={{@overflowHeight}}
7
- ...attributes
8
- >
1
+ {{!-- DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY --}}
2
+ {{!-- DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY --}}
3
+ {{!-- DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY --}}
4
+ {{!-- DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY --}}
5
+ {{!-- DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY --}}
6
+ {{!-- DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY --}}
7
+ {{!-- DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY --}}
8
+ {{!-- DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY --}}
9
+ {{!-- DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY --}}
10
+ {{#in-element this.codeTarget}}
9
11
  {{yield}}
10
- </EuiCodeBlockImpl>
12
+ {{/in-element}}
13
+ <EuiInnerText as |setInnerTextRef innerText|>
14
+ {{#let
15
+ (class-names
16
+ "euiCodeBlock"
17
+ (if
18
+ (or this.showCopyButton this.showFullScreenButton)
19
+ "euiCodeBlock--hasControl"
20
+ )
21
+ (if
22
+ (and this.showCopyButton this.showFullScreenButton)
23
+ "euiCodeBlock--hasBothControls"
24
+ )
25
+ (if this.lineNumbersConfig.show "euiCodeBlock--hasLineNumbers")
26
+ )
27
+ (class-names
28
+ "euiCodeBlock__pre"
29
+ (if
30
+ (or (eq this.whiteSpace "pre") this.isVirtualized)
31
+ "euiCodeBlock__pre--whiteSpacePre"
32
+ )
33
+ (if
34
+ (and (eq this.whiteSpace "pre-wrap") (not this.isVirtualized))
35
+ "euiCodeBlock__pre--whiteSpacePreWrap"
36
+ )
37
+ (if this.isVirtualized "euiCodeBlock__pre--isVirtualized")
38
+ )
39
+ (component "eui-code-block/virtualized")
40
+ (component "eui-code-block/controls")
41
+ (component "eui-code-block/full-screen-display")
42
+ as |wrapperClasses preClasses VirtualizedCodeBlock Controls FullScreenDisplay|
43
+ }}
44
+ <div
45
+ class={{class-names
46
+ wrapperClasses
47
+ (if this.transparentBackground "euiCodeBlock--transparentBackground")
48
+ componentName="EuiCodeBlock"
49
+ fontSize=this.fontSize
50
+ paddingSize=this.paddingSize
51
+ }}
52
+ {{style this.optionalStyles}}
53
+ {{this.highlightTargetModifier
54
+ element=this.codeTarget
55
+ language=this.language
56
+ lineNumbersConfig=this.lineNumbersConfig
57
+ onChange=this.updateCode
58
+ codeElement=this.code
59
+ codeFullScreenElement=this.codeFullScreen
60
+ }}
61
+ >
62
+ {{#if this.isVirtualized}}
63
+ {{!virtualized}}
64
+ <VirtualizedCodeBlock
65
+ class={{preClasses}}
66
+ tabindex="0"
67
+ {{on-key "Escape" this.closeFullScreen}}
68
+ @language={{this.language}}
69
+ @data={{this.data.data}}
70
+ @rowHeight={{this.rowHeight}}
71
+ @overflowHeight={{@overflowHeight}}
72
+ />
73
+ {{else}}
74
+ {{!template-lint-disable}}
75
+ <pre
76
+ class={{preClasses}}
77
+ {{style this.optionalStyles}}
78
+ tabindex={{this.tabIndex}}
79
+ {{did-insert (set this "wrapperRef")}}
80
+ {{resize-observer onResize=this.doesOverflow}}
81
+ {{mutation-observer
82
+ onMutation=this.doesOverflow
83
+ observerOptions=(hash subtree=true childList=true)
84
+ }}
85
+ {{did-insert setInnerTextRef}}
86
+ ><code
87
+ class="euiCodeBlock__code"
88
+ data-code-language={{this.language}}
89
+ {{did-insert (set this "code")}}
90
+ ...attributes
91
+ ></code></pre>
92
+
93
+ {{/if}}
94
+
95
+ <Controls
96
+ @isFullScreen={{this.isFullScreen}}
97
+ @showFullScreenButton={{this.showFullScreenButton}}
98
+ @toggleFullScreen={{this.toggleFullScreen}}
99
+ @showCopyButton={{this.showCopyButton}}
100
+ @textToCopy={{this.textToCopyHelper
101
+ isVirtualized=this.isVirtualized
102
+ innerText=(this.cleanTextHelper innerText)
103
+ element=this.data.element
104
+ }}
105
+ />
106
+
107
+ {{#if this.isFullScreen}}
108
+ <FullScreenDisplay class={{wrapperClasses}}>
109
+ {{#if this.isVirtualized}}
110
+ <VirtualizedCodeBlock
111
+ class={{preClasses}}
112
+ tabindex="0"
113
+ {{on-key "Escape" this.closeFullScreen}}
114
+ @language={{this.language}}
115
+ @data={{this.data.data}}
116
+ @rowHeight={{this.fontSizeToRowHeightMap.l}}
117
+ @overflowHeight={{@overflowHeight}}
118
+ />
119
+ {{else}}
120
+ <pre
121
+ class={{preClasses}}
122
+ tabindex="0"
123
+ {{on-key "Escape" this.closeFullScreen}}
124
+ ><code
125
+ class="euiCodeBlock__code"
126
+ data-code-language={{this.language}}
127
+ {{did-insert (set this "codeFullScreen")}}
128
+ ></code></pre>
129
+ {{/if}}
130
+ <Controls
131
+ @isFullScreen={{this.isFullScreen}}
132
+ @showFullScreenButton={{this.showFullScreenButton}}
133
+ @showCopyButton={{this.showCopyButton}}
134
+ @toggleFullScreen={{this.toggleFullScreen}}
135
+ @textToCopy={{this.textToCopyHelper
136
+ isVirtualized=this.isVirtualized
137
+ innerText=(this.cleanTextHelper innerText)
138
+ element=this.data.element
139
+ }}
140
+ />
141
+ </FullScreenDisplay>
142
+ {{/if}}
143
+ </div>
144
+ {{/let}}
145
+ </EuiInnerText>
@@ -0,0 +1,290 @@
1
+ import Component from '@glimmer/component';
2
+ import {
3
+ EuiCodeSharedProps,
4
+ getHtmlContent,
5
+ checkSupportedLanguage,
6
+ highlightByLine
7
+ } from '../../utils/code/utils';
8
+ import { action } from '@ember/object';
9
+ import { RefractorNode } from 'refractor';
10
+ import { tracked } from '@glimmer/tracking';
11
+ import { scheduleOnce } from '@ember/runloop';
12
+ import { modifier } from 'ember-modifier';
13
+ import { helper } from '@ember/component/helper';
14
+
15
+ interface LineNumbersConfig {
16
+ start?: number;
17
+ highlight?: string;
18
+ show?: boolean;
19
+ }
20
+
21
+ type PaddingSize = 'none' | 's' | 'm' | 'l';
22
+ type FontSize = 's' | 'm' | 'l';
23
+
24
+ const fontSizeToRowHeightMap = {
25
+ s: 18,
26
+ m: 21,
27
+ l: 24
28
+ };
29
+
30
+ type EuiCodeBlockArgs = EuiCodeSharedProps & {
31
+ paddingSize?: PaddingSize;
32
+ fontSize?: FontSize;
33
+
34
+ /**
35
+ * Specify how `white-space` inside the element is handled.
36
+ * `pre` respects line breaks/white space but doesn't force them to wrap the line
37
+ * `pre-wrap` respects line breaks/white space but does force them to wrap the line when necessary.
38
+ */
39
+ whiteSpace?: 'pre' | 'pre-wrap';
40
+
41
+ /**
42
+ * Displays an icon button to copy the code snippet to the clipboard.
43
+ */
44
+ isCopyable?: boolean;
45
+
46
+ /**
47
+ * Displays line numbers.
48
+ * Optionally accepts a configuration object for setting the starting number and visual highlighting ranges:
49
+ * `{ start: 100, highlight: '1, 5-10, 20-30, 40' }`
50
+ */
51
+ lineNumbers?: boolean | LineNumbersConfig;
52
+
53
+ /**
54
+ * Sets the maximum container height.
55
+ * Accepts a pixel value (`300`) or a percentage (`'100%'`)
56
+ * Ensure the container has calcuable height when using a percentage
57
+ */
58
+ overflowHeight?: number | string;
59
+
60
+ /**
61
+ * Renders code block lines virtually.
62
+ * Useful for improving load times of large code blocks.
63
+ *
64
+ * When using this configuration, `overflowHeight` is required and
65
+ * `whiteSpace` can only be `pre`.
66
+ */
67
+ isVirtualized?: boolean;
68
+ };
69
+
70
+ interface LineNumbersFinal {
71
+ start: number;
72
+ show: boolean;
73
+ highlight?: string;
74
+ }
75
+
76
+ const highlightModifier = modifier(
77
+ (
78
+ _e,
79
+ _pos: unknown[],
80
+ {
81
+ element: targetEle,
82
+ language = 'text',
83
+ lineNumbersConfig = { start: 1, show: false },
84
+ onChange
85
+ }: {
86
+ element: Element | undefined;
87
+ language: EuiCodeSharedProps['language'];
88
+ lineNumbersConfig: LineNumbersFinal;
89
+ onChange: ({
90
+ data,
91
+ element
92
+ }: {
93
+ data: RefractorNode[];
94
+ element: HTMLElement;
95
+ }) => void;
96
+ }
97
+ ) => {
98
+ let observer: undefined | MutationObserver;
99
+
100
+ const getHighlighedHtml = () => {
101
+ const html = (targetEle?.textContent ? targetEle.textContent : '').trim();
102
+
103
+ let data: RefractorNode[];
104
+ if (typeof html !== 'string') {
105
+ data = [];
106
+ } else {
107
+ data = highlightByLine(html, language, lineNumbersConfig);
108
+ }
109
+
110
+ return {
111
+ data,
112
+ element: getHtmlContent(data).element
113
+ };
114
+ };
115
+
116
+ const setupObserver = () => {
117
+ const newObserver = new MutationObserver((mutationsList) => {
118
+ if (mutationsList.length) {
119
+ onChange(getHighlighedHtml());
120
+ }
121
+ });
122
+ if (targetEle) {
123
+ onChange(getHighlighedHtml());
124
+ newObserver.observe(targetEle, {
125
+ characterData: true,
126
+ subtree: true,
127
+ childList: true
128
+ });
129
+ }
130
+
131
+ return newObserver;
132
+ };
133
+
134
+ if (targetEle) {
135
+ observer = setupObserver();
136
+ }
137
+
138
+ return () => {
139
+ observer?.disconnect();
140
+ };
141
+ }
142
+ );
143
+
144
+ const cleanTextHelper = helper(function ([text]: [string]) {
145
+ return text?.replace(/[\r\n?]{2}|\n\n/g, '\n') || '';
146
+ });
147
+
148
+ const textToCopyHelper = helper(function (
149
+ _pos,
150
+ {
151
+ isVirtualized,
152
+ element,
153
+ innerText
154
+ }: { isVirtualized: boolean; element: HTMLElement; innerText: string }
155
+ ) {
156
+ return isVirtualized ? element.textContent : innerText;
157
+ });
158
+
159
+ export default class EuiCodeBlockComponent extends Component<EuiCodeBlockArgs> {
160
+ highlightTargetModifier = highlightModifier;
161
+ cleanTextHelper = cleanTextHelper;
162
+ textToCopyHelper = textToCopyHelper;
163
+ fontSizeToRowHeightMap = fontSizeToRowHeightMap;
164
+
165
+ //fake element where yield writes to, so we can observe and clone a highlighted version to code and codeFullSceen
166
+ @tracked codeTarget: undefined | HTMLElement;
167
+ //<code> Element for non fullscreen
168
+ @tracked code: undefined | HTMLElement;
169
+ //<code> Element for fullscreen modal
170
+ @tracked codeFullScreen: undefined | HTMLElement;
171
+ @tracked wrapperRef: undefined | HTMLElement;
172
+ @tracked tabIndex = 1;
173
+ @tracked isFullScreen = false;
174
+ @tracked data: undefined | { data: RefractorNode[]; element: HTMLElement };
175
+
176
+ get language() {
177
+ return checkSupportedLanguage(this.args.language || '');
178
+ }
179
+
180
+ get transparentBackground() {
181
+ return this.args.transparentBackground ?? false;
182
+ }
183
+
184
+ get paddingSize() {
185
+ return this.args.paddingSize ?? 'l';
186
+ }
187
+
188
+ get fontSize() {
189
+ return this.args.fontSize ?? 's';
190
+ }
191
+
192
+ get isCopyable() {
193
+ return this.args.isCopyable ?? false;
194
+ }
195
+
196
+ get whiteSpace() {
197
+ return this.args.whiteSpace ?? 'pre-wrap';
198
+ }
199
+
200
+ get isVirtualized() {
201
+ return !!(this.args.isVirtualized && Array.isArray(this.data?.data));
202
+ }
203
+
204
+ get lineNumbers() {
205
+ return this.args.lineNumbers ?? false;
206
+ }
207
+
208
+ get lineNumbersConfig() {
209
+ const { lineNumbers } = this;
210
+ const config = typeof lineNumbers === 'object' ? lineNumbers : {};
211
+ return lineNumbers
212
+ ? { start: 1, show: true, ...config }
213
+ : { start: 1, show: false };
214
+ }
215
+
216
+ get optionalStyles() {
217
+ const overflowHeight = this.args.overflowHeight;
218
+ if (overflowHeight) {
219
+ const property =
220
+ typeof overflowHeight === 'string' ? 'height' : 'maxHeight';
221
+
222
+ return {
223
+ [property]:
224
+ typeof overflowHeight === 'string'
225
+ ? overflowHeight
226
+ : `${overflowHeight}px`
227
+ };
228
+ }
229
+ return {};
230
+ }
231
+
232
+ get showCopyButton() {
233
+ return this.isCopyable && true;
234
+ }
235
+
236
+ get rowHeight() {
237
+ return fontSizeToRowHeightMap[this.fontSize];
238
+ }
239
+
240
+ get showFullScreenButton() {
241
+ return !!this.args.overflowHeight;
242
+ }
243
+
244
+ constructor(owner: unknown, args: EuiCodeBlockArgs) {
245
+ super(owner, args);
246
+ this.codeTarget = document.createElement('div');
247
+ }
248
+
249
+ @action
250
+ toggleFullScreen() {
251
+ this.isFullScreen = !this.isFullScreen;
252
+ }
253
+
254
+ @action
255
+ closeFullScreen(e: KeyboardEvent) {
256
+ e.preventDefault();
257
+ e.stopPropagation();
258
+ this.isFullScreen = false;
259
+ }
260
+
261
+ @action
262
+ doesOverflow() {
263
+ if (!this.wrapperRef) return;
264
+ const { clientWidth, clientHeight, scrollWidth, scrollHeight } =
265
+ this.wrapperRef;
266
+ const doesOverflow =
267
+ scrollHeight > clientHeight || scrollWidth > clientWidth;
268
+
269
+ this.tabIndex = doesOverflow ? 0 : -1;
270
+ }
271
+
272
+ @action
273
+ updateCode(resp: { data: RefractorNode[]; element: HTMLElement }) {
274
+ const render = () => {
275
+ const code = this.code;
276
+ const codeFullScreen = this.codeFullScreen;
277
+
278
+ if (code && !this.isFullScreen) {
279
+ this.data = resp;
280
+ code.innerHTML = resp.element.innerHTML;
281
+ }
282
+
283
+ if (codeFullScreen && this.isFullScreen) {
284
+ this.data = resp;
285
+ codeFullScreen.innerHTML = resp.element.innerHTML;
286
+ }
287
+ };
288
+ scheduleOnce('afterRender', this, render);
289
+ }
290
+ }
@@ -0,0 +1,30 @@
1
+ {{!-- DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY --}}
2
+ {{!-- DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY --}}
3
+ {{!-- DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY --}}
4
+ {{!-- DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY --}}
5
+ {{!-- DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY --}}
6
+ {{!-- DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY --}}
7
+ {{!-- DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY --}}
8
+ {{!-- DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY --}}
9
+ {{!-- DO NOT FORMAT AT ALL, PRE TAGS RESPECT WHITESPACE LITERALLY --}}
10
+ {{#let (unique-id) as |theID|}}
11
+ <EuiAutoSizer as |styles|>
12
+ <pre
13
+ {{style styles}}
14
+ {{!template-lint-disable}}
15
+ style="position: relative; overflow: auto;"
16
+ id={{theID}}
17
+ ...attributes
18
+ ><VerticalCollection
19
+ @items={{@data}}
20
+ @tagName="code"
21
+ class="euiCodeBlock__code"
22
+ data-code-language={{@language}}
23
+ @estimateHeight={{@rowHeight}}
24
+ @bufferSize={{40}}
25
+ @staticHeight={{true}}
26
+ @containerSelector={{concat "#" theID}}
27
+ as |opt index|
28
+ >{{this.getHtmlContent opt index @rowHeight}}</VerticalCollection></pre>
29
+ </EuiAutoSizer>
30
+ {{/let}}
@@ -0,0 +1,22 @@
1
+ import { helper } from '@ember/component/helper';
2
+ import { RefractorNode } from 'refractor';
3
+ import Component from '@glimmer/component';
4
+ import { getHtmlContent } from '../../../utils/code/utils';
5
+
6
+ export default class EuiCodeBlockVirtualizedComponent extends Component {
7
+ getHtmlContent = helper(function ([node, index, rowHeight]: [
8
+ RefractorNode,
9
+ number,
10
+ number
11
+ ]) {
12
+ const content = getHtmlContent([node]);
13
+ const span = content.element.firstChild as HTMLElement;
14
+ if (span) {
15
+ span.style.position = 'absolute';
16
+ span.style.height = `${rowHeight}px`;
17
+ span.style.left = '0';
18
+ span.style.top = `${index * rowHeight}px`;
19
+ }
20
+ return span;
21
+ });
22
+ }
@@ -1,47 +1,38 @@
1
- {{!
2
- Trigger button itself
3
- By using a named block you can place any button as the trigger:
4
- eg. HeaderSectionItem, EuiButton, EuiButtonIcon, or any custom button
5
- }}
6
- {{#if (not (and @navIsDocked (not @showButtonIfDocked)))}}
7
- {{yield to="button"}}
8
- {{/if}}
9
- {{!
10
- The side navigation panel, acts the same way as a flyout
11
- }}
12
- {{#if @isOpen}}
13
- {{#let (unique-id) as |flyoutId|}}
14
- {{#unless @navIsDocked}}
15
- <EuiOverlayMask
16
- @headerZindexLocation="below"
17
- {{on "click" (unless @navIsDocked @onClose (noop))}}
18
- />
19
- {{/unless}}
20
- <nav
21
- id={{flyoutId}}
22
- class={{class-names "euiCollapsibleNav" (if @navIsDocked "euiCollapsibleNav--isDocked")}}
1
+ <span
2
+ {{this.onWindowResize
3
+ isDocked=this.isDocked
4
+ functionToCallOnWindowResize=this.functionToCallOnWindowResize
5
+ }}
6
+ ></span>
7
+ {{#let (arg-or-default @id (unique-id)) as |flyoutID|}}
8
+
9
+ {{#if (not (and this.navIsDocked (not this.showButtonIfDocked)))}}
10
+ {{yield
11
+ (modifier this.triggerHandlers isOpen=@isOpen flyoutID=flyoutID)
12
+ to="button"
13
+ }}
14
+ {{/if}}
15
+
16
+ {{#if (or @isOpen this.navIsDocked)}}
17
+ <EuiFlyout
18
+ id={{flyoutID}}
19
+ class="euiCollapsibleNav"
20
+ @as={{this.as}}
21
+ @size={{this.size}}
22
+ @side={{this.side}}
23
+ @role={{this.role}}
24
+ @ownFocus={{this.ownFocus}}
25
+ @outsideClickCloses={{this.outsideClickCloses}}
26
+ @closeButtonPosition={{this.closeButtonPosition}}
27
+ @paddingSize={{this.paddingSize}}
28
+ @type={{if this.navIsDocked "push" "overlay"}}
29
+ @hideCloseButton={{this.navIsDocked}}
30
+ @pushMinBreakpoint={{this.dockedBreakpoint}}
31
+ @onClose={{@onClose}}
32
+ {{this.windowResize}}
23
33
  ...attributes
24
- {{open-collapsible-nav @navIsDocked}}
25
- {{on-key "Escape" (unless @navIsDocked @onClose)}}
26
- {{focus-trap isActive=(not @navIsDocked) focusTrapOptions=(hash allowOutsideClick=true)}}
27
34
  >
28
35
  {{yield to="content"}}
29
- {{!
30
- Close button is for accessibility purposes only
31
- To close, use ESC key, or click outside the Nav.
32
- Commented for the time being
33
- }}
34
- {{!-- {{#if @showCloseButton}}
35
- <EuiButtonEmpty
36
- @onClick={{unless @navIsDocked @onClose}}
37
- @size="xs"
38
- @textClasses="euiCollapsibleNav__closeButtonText"
39
- @iconType="cross"
40
- class="euiCollapsibleNav__closeButton"
41
- >
42
- {{@closeButtonLabel}}
43
- </EuiButtonEmpty>
44
- {{/if}} --}}
45
- </nav>
46
- {{/let}}
47
- {{/if}}
36
+ </EuiFlyout>
37
+ {{/if}}
38
+ {{/let}}