@elastic/eui 95.10.1 → 95.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (371) hide show
  1. package/README.md +1 -69
  2. package/dist/eui_theme_dark.css +0 -924
  3. package/dist/eui_theme_dark.min.css +1 -1
  4. package/dist/eui_theme_light.css +0 -924
  5. package/dist/eui_theme_light.min.css +1 -1
  6. package/es/components/basic_table/basic_table.js +43 -35
  7. package/es/components/basic_table/collapsed_item_actions.js +24 -31
  8. package/es/components/datagrid/body/cell/data_grid_cell.js +212 -94
  9. package/es/components/datagrid/body/cell/data_grid_cell.styles.js +110 -0
  10. package/es/components/datagrid/body/cell/data_grid_cell_actions.js +13 -3
  11. package/es/components/datagrid/body/cell/data_grid_cell_actions.styles.js +33 -0
  12. package/es/components/datagrid/body/cell/data_grid_cell_popover.js +21 -12
  13. package/es/components/datagrid/body/cell/data_grid_cell_popover.styles.js +19 -0
  14. package/es/components/datagrid/body/cell/focus_utils.js +18 -20
  15. package/es/components/datagrid/body/data_grid_body.js +20 -4
  16. package/es/components/datagrid/body/data_grid_body.styles.js +26 -0
  17. package/es/components/datagrid/body/data_grid_body_custom.js +23 -8
  18. package/es/components/datagrid/body/data_grid_body_virtualized.js +23 -8
  19. package/es/components/datagrid/body/footer/data_grid_footer.styles.js +24 -0
  20. package/es/components/datagrid/body/footer/data_grid_footer_row.js +24 -11
  21. package/es/components/datagrid/body/header/column_actions.js +16 -4
  22. package/es/components/datagrid/body/header/data_grid_column_resizer.js +14 -7
  23. package/es/components/datagrid/body/header/data_grid_column_resizer.styles.js +36 -0
  24. package/es/components/datagrid/body/header/data_grid_control_header_cell.js +6 -5
  25. package/es/components/datagrid/body/header/data_grid_header_cell.js +42 -66
  26. package/es/components/datagrid/body/header/data_grid_header_cell.styles.js +27 -0
  27. package/es/components/datagrid/body/header/data_grid_header_cell_wrapper.js +9 -3
  28. package/es/components/datagrid/body/header/data_grid_header_cell_wrapper.styles.js +27 -0
  29. package/es/components/datagrid/body/header/data_grid_header_row.js +12 -2
  30. package/es/components/datagrid/body/header/data_grid_header_row.styles.js +21 -0
  31. package/es/components/datagrid/controls/column_selector.js +17 -8
  32. package/es/components/datagrid/controls/column_selector.styles.js +22 -0
  33. package/es/components/datagrid/controls/column_sorting.js +7 -2
  34. package/es/components/datagrid/controls/column_sorting.styles.js +35 -0
  35. package/es/components/datagrid/controls/column_sorting_draggable.js +19 -14
  36. package/es/components/datagrid/controls/data_grid_toolbar.js +8 -1
  37. package/es/components/datagrid/controls/data_grid_toolbar.styles.js +18 -0
  38. package/es/components/datagrid/controls/data_grid_toolbar_control.js +27 -27
  39. package/es/components/datagrid/controls/display_selector.js +14 -3
  40. package/es/components/datagrid/controls/fullscreen_selector.js +8 -5
  41. package/es/components/datagrid/controls/fullscreen_selector.styles.js +20 -0
  42. package/es/components/datagrid/controls/keyboard_shortcuts.js +7 -3
  43. package/es/components/datagrid/controls/keyboard_shortcuts.styles.js +18 -0
  44. package/es/components/datagrid/data_grid.a11y.js +1 -0
  45. package/es/components/datagrid/data_grid.js +17 -9
  46. package/es/components/datagrid/data_grid.stories.utils.js +1422 -0
  47. package/es/components/datagrid/data_grid.styles.js +88 -0
  48. package/es/components/datagrid/{utils → pagination}/data_grid_pagination.js +30 -30
  49. package/es/components/datagrid/pagination/data_grid_pagination.styles.js +16 -0
  50. package/es/components/datagrid/pagination/index.js +9 -0
  51. package/es/components/datagrid/utils/row_heights.js +10 -36
  52. package/es/components/datagrid/utils/scrolling.js +14 -7
  53. package/es/components/datagrid/utils/scrolling.styles.js +30 -0
  54. package/es/components/date_picker/date_picker.js +1 -1
  55. package/es/components/flyout/flyout_resizable.js +6 -2
  56. package/es/components/flyout/flyout_resizable.styles.js +34 -5
  57. package/es/components/popover/popover.js +1 -1
  58. package/es/components/provider/provider.js +16 -13
  59. package/es/components/provider/system_color_mode/index.js +9 -0
  60. package/es/components/provider/system_color_mode/system_color_mode_provider.js +49 -0
  61. package/es/components/resizable_container/resizable_button.js +9 -2
  62. package/es/components/resizable_container/resizable_button.styles.js +19 -6
  63. package/es/components/table/table_header_cell.js +10 -3
  64. package/es/components/table/table_header_cell_checkbox.js +5 -3
  65. package/es/components/table/table_row_cell.js +10 -3
  66. package/es/components/table/table_row_cell_checkbox.js +5 -3
  67. package/es/components/text/text.js +25 -9
  68. package/es/components/text/text_align.js +19 -6
  69. package/es/components/text/text_color.js +14 -11
  70. package/es/components/text/types.js +1 -0
  71. package/es/services/copy/index.js +10 -0
  72. package/es/services/copy/tabular_copy.js +103 -0
  73. package/es/services/index.js +1 -1
  74. package/eui.d.ts +692 -124
  75. package/i18ntokens.json +432 -396
  76. package/lib/components/basic_table/basic_table.js +42 -34
  77. package/lib/components/basic_table/collapsed_item_actions.js +23 -30
  78. package/lib/components/datagrid/body/cell/data_grid_cell.js +209 -91
  79. package/lib/components/datagrid/body/cell/data_grid_cell.styles.js +114 -0
  80. package/lib/components/datagrid/body/cell/data_grid_cell_actions.js +13 -3
  81. package/lib/components/datagrid/body/cell/data_grid_cell_actions.styles.js +38 -0
  82. package/lib/components/datagrid/body/cell/data_grid_cell_popover.js +20 -11
  83. package/lib/components/datagrid/body/cell/data_grid_cell_popover.styles.js +24 -0
  84. package/lib/components/datagrid/body/cell/focus_utils.js +17 -19
  85. package/lib/components/datagrid/body/data_grid_body.js +20 -4
  86. package/lib/components/datagrid/body/data_grid_body.styles.js +30 -0
  87. package/lib/components/datagrid/body/data_grid_body_custom.js +23 -8
  88. package/lib/components/datagrid/body/data_grid_body_virtualized.js +23 -8
  89. package/lib/components/datagrid/body/footer/data_grid_footer.styles.js +30 -0
  90. package/lib/components/datagrid/body/footer/data_grid_footer_row.js +23 -10
  91. package/lib/components/datagrid/body/header/column_actions.js +16 -4
  92. package/lib/components/datagrid/body/header/data_grid_column_resizer.js +14 -7
  93. package/lib/components/datagrid/body/header/data_grid_column_resizer.styles.js +39 -0
  94. package/lib/components/datagrid/body/header/data_grid_control_header_cell.js +6 -5
  95. package/lib/components/datagrid/body/header/data_grid_header_cell.js +49 -74
  96. package/lib/components/datagrid/body/header/data_grid_header_cell.styles.js +32 -0
  97. package/lib/components/datagrid/body/header/data_grid_header_cell_wrapper.js +8 -2
  98. package/lib/components/datagrid/body/header/data_grid_header_cell_wrapper.styles.js +32 -0
  99. package/lib/components/datagrid/body/header/data_grid_header_row.js +12 -2
  100. package/lib/components/datagrid/body/header/data_grid_header_row.styles.js +27 -0
  101. package/lib/components/datagrid/controls/column_selector.js +17 -8
  102. package/lib/components/datagrid/controls/column_selector.styles.js +28 -0
  103. package/lib/components/datagrid/controls/column_sorting.js +7 -2
  104. package/lib/components/datagrid/controls/column_sorting.styles.js +41 -0
  105. package/lib/components/datagrid/controls/column_sorting_draggable.js +19 -14
  106. package/lib/components/datagrid/controls/data_grid_toolbar.js +8 -1
  107. package/lib/components/datagrid/controls/data_grid_toolbar.styles.js +24 -0
  108. package/lib/components/datagrid/controls/data_grid_toolbar_control.js +27 -27
  109. package/lib/components/datagrid/controls/display_selector.js +13 -2
  110. package/lib/components/datagrid/controls/fullscreen_selector.js +7 -4
  111. package/lib/components/datagrid/controls/fullscreen_selector.styles.js +26 -0
  112. package/lib/components/datagrid/controls/keyboard_shortcuts.js +6 -2
  113. package/lib/components/datagrid/controls/keyboard_shortcuts.styles.js +24 -0
  114. package/lib/components/datagrid/data_grid.a11y.js +1 -0
  115. package/lib/components/datagrid/data_grid.js +16 -8
  116. package/lib/components/datagrid/data_grid.stories.utils.js +1426 -0
  117. package/lib/components/datagrid/data_grid.styles.js +94 -0
  118. package/lib/components/datagrid/{utils → pagination}/data_grid_pagination.js +30 -30
  119. package/lib/components/datagrid/pagination/data_grid_pagination.styles.js +22 -0
  120. package/lib/components/datagrid/pagination/index.js +18 -0
  121. package/lib/components/datagrid/utils/row_heights.js +11 -36
  122. package/lib/components/datagrid/utils/scrolling.js +14 -7
  123. package/lib/components/datagrid/utils/scrolling.styles.js +36 -0
  124. package/lib/components/date_picker/date_picker.js +1 -1
  125. package/lib/components/flyout/flyout_resizable.js +6 -2
  126. package/lib/components/flyout/flyout_resizable.styles.js +34 -5
  127. package/lib/components/popover/popover.js +1 -1
  128. package/lib/components/provider/provider.js +16 -13
  129. package/lib/components/provider/system_color_mode/index.js +12 -0
  130. package/lib/components/provider/system_color_mode/system_color_mode_provider.js +54 -0
  131. package/lib/components/resizable_container/resizable_button.js +9 -2
  132. package/lib/components/resizable_container/resizable_button.styles.js +19 -6
  133. package/lib/components/table/table_header_cell.js +10 -3
  134. package/lib/components/table/table_header_cell_checkbox.js +5 -3
  135. package/lib/components/table/table_row_cell.js +10 -3
  136. package/lib/components/table/table_row_cell_checkbox.js +5 -3
  137. package/lib/components/text/text.js +25 -9
  138. package/lib/components/text/text_align.js +19 -6
  139. package/lib/components/text/text_color.js +14 -11
  140. package/lib/components/text/types.js +5 -0
  141. package/lib/services/copy/index.js +25 -0
  142. package/lib/services/copy/tabular_copy.js +111 -0
  143. package/lib/services/index.js +12 -8
  144. package/optimize/es/components/basic_table/basic_table.js +43 -35
  145. package/optimize/es/components/basic_table/collapsed_item_actions.js +24 -31
  146. package/optimize/es/components/datagrid/body/cell/data_grid_cell.js +98 -88
  147. package/optimize/es/components/datagrid/body/cell/data_grid_cell.styles.js +110 -0
  148. package/optimize/es/components/datagrid/body/cell/data_grid_cell_actions.js +13 -3
  149. package/optimize/es/components/datagrid/body/cell/data_grid_cell_actions.styles.js +33 -0
  150. package/optimize/es/components/datagrid/body/cell/data_grid_cell_popover.js +21 -12
  151. package/optimize/es/components/datagrid/body/cell/data_grid_cell_popover.styles.js +19 -0
  152. package/optimize/es/components/datagrid/body/cell/focus_utils.js +18 -20
  153. package/optimize/es/components/datagrid/body/data_grid_body.js +9 -2
  154. package/optimize/es/components/datagrid/body/data_grid_body.styles.js +26 -0
  155. package/optimize/es/components/datagrid/body/data_grid_body_custom.js +12 -6
  156. package/optimize/es/components/datagrid/body/data_grid_body_virtualized.js +12 -6
  157. package/optimize/es/components/datagrid/body/footer/data_grid_footer.styles.js +24 -0
  158. package/optimize/es/components/datagrid/body/footer/data_grid_footer_row.js +24 -11
  159. package/optimize/es/components/datagrid/body/header/column_actions.js +16 -4
  160. package/optimize/es/components/datagrid/body/header/data_grid_column_resizer.js +14 -7
  161. package/optimize/es/components/datagrid/body/header/data_grid_column_resizer.styles.js +36 -0
  162. package/optimize/es/components/datagrid/body/header/data_grid_control_header_cell.js +5 -5
  163. package/optimize/es/components/datagrid/body/header/data_grid_header_cell.js +42 -61
  164. package/optimize/es/components/datagrid/body/header/data_grid_header_cell.styles.js +27 -0
  165. package/optimize/es/components/datagrid/body/header/data_grid_header_cell_wrapper.js +8 -3
  166. package/optimize/es/components/datagrid/body/header/data_grid_header_cell_wrapper.styles.js +27 -0
  167. package/optimize/es/components/datagrid/body/header/data_grid_header_row.js +12 -2
  168. package/optimize/es/components/datagrid/body/header/data_grid_header_row.styles.js +21 -0
  169. package/optimize/es/components/datagrid/controls/column_selector.js +17 -8
  170. package/optimize/es/components/datagrid/controls/column_selector.styles.js +22 -0
  171. package/optimize/es/components/datagrid/controls/column_sorting.js +7 -2
  172. package/optimize/es/components/datagrid/controls/column_sorting.styles.js +35 -0
  173. package/optimize/es/components/datagrid/controls/column_sorting_draggable.js +19 -14
  174. package/optimize/es/components/datagrid/controls/data_grid_toolbar.js +8 -1
  175. package/optimize/es/components/datagrid/controls/data_grid_toolbar.styles.js +18 -0
  176. package/optimize/es/components/datagrid/controls/data_grid_toolbar_control.js +27 -27
  177. package/optimize/es/components/datagrid/controls/display_selector.js +14 -3
  178. package/optimize/es/components/datagrid/controls/fullscreen_selector.js +8 -5
  179. package/optimize/es/components/datagrid/controls/fullscreen_selector.styles.js +20 -0
  180. package/optimize/es/components/datagrid/controls/keyboard_shortcuts.js +7 -3
  181. package/optimize/es/components/datagrid/controls/keyboard_shortcuts.styles.js +18 -0
  182. package/optimize/es/components/datagrid/data_grid.a11y.js +1 -0
  183. package/optimize/es/components/datagrid/data_grid.js +17 -9
  184. package/optimize/es/components/datagrid/data_grid.stories.utils.js +369 -0
  185. package/optimize/es/components/datagrid/data_grid.styles.js +88 -0
  186. package/optimize/es/components/datagrid/{utils → pagination}/data_grid_pagination.js +30 -30
  187. package/optimize/es/components/datagrid/pagination/data_grid_pagination.styles.js +16 -0
  188. package/optimize/es/components/datagrid/pagination/index.js +9 -0
  189. package/optimize/es/components/datagrid/utils/row_heights.js +10 -36
  190. package/optimize/es/components/datagrid/utils/scrolling.js +14 -7
  191. package/optimize/es/components/datagrid/utils/scrolling.styles.js +30 -0
  192. package/optimize/es/components/date_picker/date_picker.js +1 -1
  193. package/optimize/es/components/flyout/flyout_resizable.js +6 -2
  194. package/optimize/es/components/flyout/flyout_resizable.styles.js +34 -5
  195. package/optimize/es/components/popover/popover.js +1 -1
  196. package/optimize/es/components/provider/provider.js +16 -13
  197. package/optimize/es/components/provider/system_color_mode/index.js +9 -0
  198. package/optimize/es/components/provider/system_color_mode/system_color_mode_provider.js +40 -0
  199. package/optimize/es/components/resizable_container/resizable_button.js +3 -2
  200. package/optimize/es/components/resizable_container/resizable_button.styles.js +19 -6
  201. package/optimize/es/components/table/table_header_cell.js +3 -2
  202. package/optimize/es/components/table/table_header_cell_checkbox.js +3 -2
  203. package/optimize/es/components/table/table_row_cell.js +4 -3
  204. package/optimize/es/components/table/table_row_cell_checkbox.js +3 -2
  205. package/optimize/es/components/text/text.js +9 -4
  206. package/optimize/es/components/text/text_align.js +4 -2
  207. package/optimize/es/components/text/text_color.js +1 -2
  208. package/optimize/es/components/text/types.js +1 -0
  209. package/optimize/es/services/copy/index.js +10 -0
  210. package/optimize/es/services/copy/tabular_copy.js +103 -0
  211. package/optimize/es/services/index.js +1 -1
  212. package/optimize/lib/components/basic_table/basic_table.js +42 -34
  213. package/optimize/lib/components/basic_table/collapsed_item_actions.js +23 -30
  214. package/optimize/lib/components/datagrid/body/cell/data_grid_cell.js +95 -85
  215. package/optimize/lib/components/datagrid/body/cell/data_grid_cell.styles.js +114 -0
  216. package/optimize/lib/components/datagrid/body/cell/data_grid_cell_actions.js +13 -3
  217. package/optimize/lib/components/datagrid/body/cell/data_grid_cell_actions.styles.js +39 -0
  218. package/optimize/lib/components/datagrid/body/cell/data_grid_cell_popover.js +20 -11
  219. package/optimize/lib/components/datagrid/body/cell/data_grid_cell_popover.styles.js +25 -0
  220. package/optimize/lib/components/datagrid/body/cell/focus_utils.js +17 -19
  221. package/optimize/lib/components/datagrid/body/data_grid_body.js +9 -2
  222. package/optimize/lib/components/datagrid/body/data_grid_body.styles.js +30 -0
  223. package/optimize/lib/components/datagrid/body/data_grid_body_custom.js +12 -6
  224. package/optimize/lib/components/datagrid/body/data_grid_body_virtualized.js +12 -6
  225. package/optimize/lib/components/datagrid/body/footer/data_grid_footer.styles.js +30 -0
  226. package/optimize/lib/components/datagrid/body/footer/data_grid_footer_row.js +22 -9
  227. package/optimize/lib/components/datagrid/body/header/column_actions.js +16 -4
  228. package/optimize/lib/components/datagrid/body/header/data_grid_column_resizer.js +14 -7
  229. package/optimize/lib/components/datagrid/body/header/data_grid_column_resizer.styles.js +39 -0
  230. package/optimize/lib/components/datagrid/body/header/data_grid_control_header_cell.js +5 -5
  231. package/optimize/lib/components/datagrid/body/header/data_grid_header_cell.js +45 -63
  232. package/optimize/lib/components/datagrid/body/header/data_grid_header_cell.styles.js +32 -0
  233. package/optimize/lib/components/datagrid/body/header/data_grid_header_cell_wrapper.js +7 -2
  234. package/optimize/lib/components/datagrid/body/header/data_grid_header_cell_wrapper.styles.js +32 -0
  235. package/optimize/lib/components/datagrid/body/header/data_grid_header_row.js +12 -2
  236. package/optimize/lib/components/datagrid/body/header/data_grid_header_row.styles.js +27 -0
  237. package/optimize/lib/components/datagrid/controls/column_selector.js +17 -8
  238. package/optimize/lib/components/datagrid/controls/column_selector.styles.js +28 -0
  239. package/optimize/lib/components/datagrid/controls/column_sorting.js +7 -2
  240. package/optimize/lib/components/datagrid/controls/column_sorting.styles.js +41 -0
  241. package/optimize/lib/components/datagrid/controls/column_sorting_draggable.js +19 -14
  242. package/optimize/lib/components/datagrid/controls/data_grid_toolbar.js +8 -1
  243. package/optimize/lib/components/datagrid/controls/data_grid_toolbar.styles.js +24 -0
  244. package/optimize/lib/components/datagrid/controls/data_grid_toolbar_control.js +27 -27
  245. package/optimize/lib/components/datagrid/controls/display_selector.js +13 -2
  246. package/optimize/lib/components/datagrid/controls/fullscreen_selector.js +7 -4
  247. package/optimize/lib/components/datagrid/controls/fullscreen_selector.styles.js +26 -0
  248. package/optimize/lib/components/datagrid/controls/keyboard_shortcuts.js +6 -2
  249. package/optimize/lib/components/datagrid/controls/keyboard_shortcuts.styles.js +24 -0
  250. package/optimize/lib/components/datagrid/data_grid.a11y.js +1 -0
  251. package/optimize/lib/components/datagrid/data_grid.js +16 -8
  252. package/optimize/lib/components/datagrid/data_grid.stories.utils.js +374 -0
  253. package/optimize/lib/components/datagrid/data_grid.styles.js +94 -0
  254. package/{test-env/components/datagrid/utils → optimize/lib/components/datagrid/pagination}/data_grid_pagination.js +29 -31
  255. package/optimize/lib/components/datagrid/pagination/data_grid_pagination.styles.js +22 -0
  256. package/optimize/lib/components/datagrid/pagination/index.js +18 -0
  257. package/optimize/lib/components/datagrid/utils/row_heights.js +11 -36
  258. package/optimize/lib/components/datagrid/utils/scrolling.js +14 -7
  259. package/optimize/lib/components/datagrid/utils/scrolling.styles.js +36 -0
  260. package/optimize/lib/components/date_picker/date_picker.js +1 -1
  261. package/optimize/lib/components/flyout/flyout_resizable.js +6 -2
  262. package/optimize/lib/components/flyout/flyout_resizable.styles.js +34 -5
  263. package/optimize/lib/components/popover/popover.js +1 -1
  264. package/optimize/lib/components/provider/provider.js +16 -13
  265. package/optimize/lib/components/provider/system_color_mode/index.js +12 -0
  266. package/optimize/lib/components/provider/system_color_mode/system_color_mode_provider.js +47 -0
  267. package/optimize/lib/components/resizable_container/resizable_button.js +3 -2
  268. package/optimize/lib/components/resizable_container/resizable_button.styles.js +19 -6
  269. package/optimize/lib/components/table/table_header_cell.js +3 -2
  270. package/optimize/lib/components/table/table_header_cell_checkbox.js +3 -2
  271. package/optimize/lib/components/table/table_row_cell.js +4 -3
  272. package/optimize/lib/components/table/table_row_cell_checkbox.js +3 -2
  273. package/optimize/lib/components/text/text.js +9 -4
  274. package/optimize/lib/components/text/text_align.js +4 -2
  275. package/optimize/lib/components/text/text_color.js +1 -2
  276. package/optimize/lib/components/text/types.js +5 -0
  277. package/optimize/lib/services/copy/index.js +25 -0
  278. package/optimize/lib/services/copy/tabular_copy.js +111 -0
  279. package/optimize/lib/services/index.js +12 -8
  280. package/package.json +3 -3
  281. package/src/themes/amsterdam/theme_dark.scss +0 -7
  282. package/src/themes/amsterdam/theme_light.scss +0 -7
  283. package/test-env/components/basic_table/basic_table.js +42 -34
  284. package/test-env/components/basic_table/collapsed_item_actions.js +23 -30
  285. package/test-env/components/datagrid/body/cell/data_grid_cell.js +204 -91
  286. package/test-env/components/datagrid/body/cell/data_grid_cell.styles.js +114 -0
  287. package/test-env/components/datagrid/body/cell/data_grid_cell_actions.js +13 -3
  288. package/test-env/components/datagrid/body/cell/data_grid_cell_actions.styles.js +39 -0
  289. package/test-env/components/datagrid/body/cell/data_grid_cell_popover.js +20 -11
  290. package/test-env/components/datagrid/body/cell/data_grid_cell_popover.styles.js +25 -0
  291. package/test-env/components/datagrid/body/cell/focus_utils.js +17 -19
  292. package/test-env/components/datagrid/body/data_grid_body.js +20 -4
  293. package/test-env/components/datagrid/body/data_grid_body.styles.js +30 -0
  294. package/test-env/components/datagrid/body/data_grid_body_custom.js +23 -8
  295. package/test-env/components/datagrid/body/data_grid_body_virtualized.js +23 -8
  296. package/test-env/components/datagrid/body/footer/data_grid_footer.styles.js +30 -0
  297. package/test-env/components/datagrid/body/footer/data_grid_footer_row.js +22 -9
  298. package/test-env/components/datagrid/body/header/column_actions.js +16 -4
  299. package/test-env/components/datagrid/body/header/data_grid_column_resizer.js +14 -7
  300. package/test-env/components/datagrid/body/header/data_grid_column_resizer.styles.js +39 -0
  301. package/test-env/components/datagrid/body/header/data_grid_control_header_cell.js +6 -5
  302. package/test-env/components/datagrid/body/header/data_grid_header_cell.js +45 -67
  303. package/test-env/components/datagrid/body/header/data_grid_header_cell.styles.js +32 -0
  304. package/test-env/components/datagrid/body/header/data_grid_header_cell_wrapper.js +8 -2
  305. package/test-env/components/datagrid/body/header/data_grid_header_cell_wrapper.styles.js +32 -0
  306. package/test-env/components/datagrid/body/header/data_grid_header_row.js +12 -2
  307. package/test-env/components/datagrid/body/header/data_grid_header_row.styles.js +27 -0
  308. package/test-env/components/datagrid/controls/column_selector.js +17 -8
  309. package/test-env/components/datagrid/controls/column_selector.styles.js +28 -0
  310. package/test-env/components/datagrid/controls/column_sorting.js +7 -2
  311. package/test-env/components/datagrid/controls/column_sorting.styles.js +41 -0
  312. package/test-env/components/datagrid/controls/column_sorting_draggable.js +19 -14
  313. package/test-env/components/datagrid/controls/data_grid_toolbar.js +8 -1
  314. package/test-env/components/datagrid/controls/data_grid_toolbar.styles.js +24 -0
  315. package/test-env/components/datagrid/controls/data_grid_toolbar_control.js +27 -27
  316. package/test-env/components/datagrid/controls/display_selector.js +13 -2
  317. package/test-env/components/datagrid/controls/fullscreen_selector.js +7 -4
  318. package/test-env/components/datagrid/controls/fullscreen_selector.styles.js +26 -0
  319. package/test-env/components/datagrid/controls/keyboard_shortcuts.js +6 -2
  320. package/test-env/components/datagrid/controls/keyboard_shortcuts.styles.js +24 -0
  321. package/test-env/components/datagrid/data_grid.a11y.js +1 -0
  322. package/test-env/components/datagrid/data_grid.js +16 -8
  323. package/test-env/components/datagrid/data_grid.stories.utils.js +1419 -0
  324. package/test-env/components/datagrid/data_grid.styles.js +94 -0
  325. package/{optimize/lib/components/datagrid/utils → test-env/components/datagrid/pagination}/data_grid_pagination.js +29 -31
  326. package/test-env/components/datagrid/pagination/data_grid_pagination.styles.js +22 -0
  327. package/test-env/components/datagrid/pagination/index.js +18 -0
  328. package/test-env/components/datagrid/utils/row_heights.js +11 -36
  329. package/test-env/components/datagrid/utils/scrolling.js +14 -7
  330. package/test-env/components/datagrid/utils/scrolling.styles.js +36 -0
  331. package/test-env/components/date_picker/date_picker.js +1 -1
  332. package/test-env/components/flyout/flyout_resizable.js +6 -2
  333. package/test-env/components/flyout/flyout_resizable.styles.js +34 -5
  334. package/test-env/components/popover/popover.js +1 -1
  335. package/test-env/components/provider/provider.js +16 -13
  336. package/test-env/components/provider/system_color_mode/index.js +12 -0
  337. package/test-env/components/provider/system_color_mode/system_color_mode_provider.js +51 -0
  338. package/test-env/components/resizable_container/resizable_button.js +9 -2
  339. package/test-env/components/resizable_container/resizable_button.styles.js +19 -6
  340. package/test-env/components/table/table_header_cell.js +10 -3
  341. package/test-env/components/table/table_header_cell_checkbox.js +5 -3
  342. package/test-env/components/table/table_row_cell.js +10 -3
  343. package/test-env/components/table/table_row_cell_checkbox.js +5 -3
  344. package/test-env/components/text/text.js +25 -9
  345. package/test-env/components/text/text_align.js +19 -6
  346. package/test-env/components/text/text_color.js +14 -11
  347. package/test-env/components/text/types.js +5 -0
  348. package/test-env/services/copy/index.js +25 -0
  349. package/test-env/services/copy/tabular_copy.js +30 -0
  350. package/test-env/services/index.js +12 -8
  351. package/src/components/datagrid/_data_grid.scss +0 -121
  352. package/src/components/datagrid/_data_grid_data_row.scss +0 -303
  353. package/src/components/datagrid/_index.scss +0 -12
  354. package/src/components/datagrid/_mixins.scss +0 -84
  355. package/src/components/datagrid/_variables.scss +0 -11
  356. package/src/components/datagrid/body/footer/_data_grid_footer_row.scss +0 -47
  357. package/src/components/datagrid/body/header/_data_grid_column_resizer.scss +0 -48
  358. package/src/components/datagrid/body/header/_data_grid_header_row.scss +0 -221
  359. package/src/components/datagrid/controls/_data_grid_column_selector.scss +0 -19
  360. package/src/components/datagrid/controls/_data_grid_column_sorting.scss +0 -43
  361. package/src/components/datagrid/controls/_data_grid_display.scss +0 -3
  362. package/src/components/datagrid/controls/_data_grid_keyboard_shortcuts.scss +0 -11
  363. package/src/components/datagrid/controls/_data_grid_toolbar.scss +0 -55
  364. package/src/components/index.scss +0 -3
  365. package/src/themes/amsterdam/overrides/_data_grid.scss +0 -5
  366. package/src/themes/amsterdam/overrides/_index.scss +0 -1
  367. /package/es/services/{copy_to_clipboard.js → copy/copy_to_clipboard.js} +0 -0
  368. /package/lib/services/{copy_to_clipboard.js → copy/copy_to_clipboard.js} +0 -0
  369. /package/optimize/es/services/{copy_to_clipboard.js → copy/copy_to_clipboard.js} +0 -0
  370. /package/optimize/lib/services/{copy_to_clipboard.js → copy/copy_to_clipboard.js} +0 -0
  371. /package/test-env/services/{copy_to_clipboard.js → copy/copy_to_clipboard.js} +0 -0
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.EuiSystemColorModeProvider = exports.COLOR_MODE_MEDIA_QUERY = void 0;
7
+ var _react = require("react");
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
11
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
12
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
13
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
14
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
15
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } /*
16
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
17
+ * or more contributor license agreements. Licensed under the Elastic License
18
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
19
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
20
+ * Side Public License, v 1.
21
+ */
22
+ var COLOR_MODE_MEDIA_QUERY = exports.COLOR_MODE_MEDIA_QUERY = '(prefers-color-scheme: dark)';
23
+ var EuiSystemColorModeProvider = exports.EuiSystemColorModeProvider = function EuiSystemColorModeProvider(_ref) {
24
+ var children = _ref.children;
25
+ // Use optional chaining here for SSR or test environments
26
+ var _useState = (0, _react.useState)(function () {
27
+ var _window, _window$matchMedia;
28
+ return (_window = window) !== null && _window !== void 0 && (_window$matchMedia = _window.matchMedia) !== null && _window$matchMedia !== void 0 && _window$matchMedia.call(_window, COLOR_MODE_MEDIA_QUERY).matches ? 'DARK' : 'LIGHT';
29
+ }),
30
+ _useState2 = _slicedToArray(_useState, 2),
31
+ systemColorMode = _useState2[0],
32
+ setSystemColorMode = _useState2[1];
33
+
34
+ // Listen for system changes
35
+ (0, _react.useEffect)(function () {
36
+ var _window$matchMedia2, _window2, _window$matchMedia2$c, _window$matchMedia2$c2;
37
+ var eventListener = function eventListener(event) {
38
+ setSystemColorMode(event.matches ? 'DARK' : 'LIGHT');
39
+ };
40
+
41
+ // Optional chaining here is for test environments - SSR should not run useEffect
42
+ (_window$matchMedia2 = (_window2 = window).matchMedia) === null || _window$matchMedia2 === void 0 || (_window$matchMedia2$c = (_window$matchMedia2$c2 = _window$matchMedia2.call(_window2, COLOR_MODE_MEDIA_QUERY)).addEventListener) === null || _window$matchMedia2$c === void 0 || _window$matchMedia2$c.call(_window$matchMedia2$c2, 'change', eventListener);
43
+
44
+ // Clean up the listener on unmount
45
+ return function () {
46
+ var _window$matchMedia3, _window3, _window$matchMedia3$c, _window$matchMedia3$c2;
47
+ (_window$matchMedia3 = (_window3 = window).matchMedia) === null || _window$matchMedia3 === void 0 || (_window$matchMedia3$c = (_window$matchMedia3$c2 = _window$matchMedia3.call(_window3, COLOR_MODE_MEDIA_QUERY)).removeEventListener) === null || _window$matchMedia3$c === void 0 || _window$matchMedia3$c.call(_window$matchMedia3$c2, 'change', eventListener);
48
+ };
49
+ }, []);
50
+ return children(systemColorMode);
51
+ };
52
+ EuiSystemColorModeProvider.propTypes = {
53
+ children: _propTypes.default.func.isRequired
54
+ };
@@ -13,7 +13,7 @@ var _services = require("../../services");
13
13
  var _context = require("./context");
14
14
  var _resizable_button = require("./resizable_button.styles");
15
15
  var _react2 = require("@emotion/react");
16
- var _excluded = ["isHorizontal", "indicator", "alignIndicator", "className"],
16
+ var _excluded = ["isHorizontal", "indicator", "alignIndicator", "accountForScrollbars", "className"],
17
17
  _excluded2 = ["registration", "id", "disabled", "onFocus"];
18
18
  /*
19
19
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
@@ -44,12 +44,13 @@ var EuiResizableButton = exports.EuiResizableButton = /*#__PURE__*/(0, _react.fo
44
44
  indicator = _ref$indicator === void 0 ? 'handle' : _ref$indicator,
45
45
  _ref$alignIndicator = _ref.alignIndicator,
46
46
  alignIndicator = _ref$alignIndicator === void 0 ? 'center' : _ref$alignIndicator,
47
+ accountForScrollbars = _ref.accountForScrollbars,
47
48
  className = _ref.className,
48
49
  rest = _objectWithoutProperties(_ref, _excluded);
49
50
  var classes = (0, _classnames.default)('euiResizableButton', className);
50
51
  var resizeDirection = isHorizontal ? 'horizontal' : 'vertical';
51
52
  var styles = (0, _services.useEuiMemoizedStyles)(_resizable_button.euiResizableButtonStyles);
52
- var cssStyles = [styles.euiResizableButton, styles[indicator], styles["".concat(indicator, "Direction")][resizeDirection], styles[resizeDirection], indicator === 'handle' && styles.alignIndicator[alignIndicator]];
53
+ var cssStyles = [styles.euiResizableButton, styles[indicator], styles["".concat(indicator, "Direction")][resizeDirection], styles[resizeDirection], indicator === 'handle' && styles.alignIndicator[alignIndicator], styles.accountForScrollbars[resizeDirection][accountForScrollbars !== null && accountForScrollbars !== void 0 ? accountForScrollbars : 'none']];
53
54
  return (0, _react2.jsx)(_i18n.EuiI18n, {
54
55
  tokens: ['euiResizableButton.horizontalResizerAriaLabel', 'euiResizableButton.verticalResizerAriaLabel'],
55
56
  defaults: ['Press the left or right arrow keys to adjust panels size', 'Press the up or down arrow keys to adjust panels size']
@@ -88,6 +89,12 @@ EuiResizableButton.propTypes = {
88
89
  * tall content that scrolls off-screen
89
90
  */
90
91
  alignIndicator: _propTypes.default.oneOf(["center", "start", "end"]),
92
+ /**
93
+ * By default, EuiResizableButton will overlap into the panels before/after it.
94
+ * This can occasionally occlude interactive elements like scrollbars. To prevent
95
+ * this overlap, use this prop to remove the overlap for the specified side.
96
+ */
97
+ accountForScrollbars: _propTypes.default.oneOf(["before", "after", "both"]),
91
98
  /**
92
99
  * When disabled, the resizer button will be completely hidden
93
100
  */
@@ -41,6 +41,9 @@ var _ref3 = process.env.NODE_ENV === "production" ? {
41
41
  var euiResizableButtonStyles = exports.euiResizableButtonStyles = function euiResizableButtonStyles(euiThemeContext) {
42
42
  var euiTheme = euiThemeContext.euiTheme;
43
43
  var buttonSize = euiTheme.size.base;
44
+ var negativeMargin = (0, _global_styling.mathWithUnits)(buttonSize, function (x) {
45
+ return x / -2;
46
+ });
44
47
  var grabHandleWidth = euiTheme.size.m;
45
48
  var grabHandleHeight = euiTheme.border.width.thin;
46
49
  var transitionSpeed = euiTheme.animation.fast;
@@ -53,12 +56,22 @@ var euiResizableButtonStyles = exports.euiResizableButtonStyles = function euiRe
53
56
  euiResizableButton: /*#__PURE__*/(0, _react.css)("z-index:1;flex-shrink:0;display:flex;justify-content:center;&:disabled{display:none;}&::before,&::after{content:'';display:block;", _global_styling.euiCanAnimate, "{transition:width ", transition, ",height ", transition, ",margin ", transition, ",background-color ", transition, ";}}&:hover{&::before,&::after{background-color:", euiTheme.colors.mediumShade, ";}}&:focus,&:active{background-color:", (0, _services.transparentize)(euiTheme.colors.primary, 0.1), ";&::before,&::after{background-color:", euiTheme.colors.primary, ";", _global_styling.euiCanAnimate, "{transition:width ", transition, ",height ", transition, ";transition-delay:", (0, _global_styling.mathWithUnits)(transitionSpeed, function (x) {
54
57
  return x / 2;
55
58
  }), ";}}};label:euiResizableButton;"),
56
- horizontal: /*#__PURE__*/(0, _react.css)("cursor:col-resize;", (0, _global_styling.logicalCSS)('height', '100%'), " ", (0, _global_styling.logicalCSS)('width', buttonSize), " margin-inline:", (0, _global_styling.mathWithUnits)(buttonSize, function (x) {
57
- return x / -2;
58
- }), ";;label:horizontal;"),
59
- vertical: /*#__PURE__*/(0, _react.css)("flex-direction:column;cursor:row-resize;", (0, _global_styling.logicalCSS)('width', '100%'), " ", (0, _global_styling.logicalCSS)('height', buttonSize), " margin-block:", (0, _global_styling.mathWithUnits)(buttonSize, function (x) {
60
- return x / -2;
61
- }), ";;label:vertical;"),
59
+ horizontal: /*#__PURE__*/(0, _react.css)("cursor:col-resize;", (0, _global_styling.logicalCSS)('height', '100%'), " ", (0, _global_styling.logicalCSS)('width', buttonSize), ";;label:horizontal;"),
60
+ vertical: /*#__PURE__*/(0, _react.css)("flex-direction:column;cursor:row-resize;", (0, _global_styling.logicalCSS)('width', '100%'), " ", (0, _global_styling.logicalCSS)('height', buttonSize), ";;label:vertical;"),
61
+ accountForScrollbars: {
62
+ horizontal: {
63
+ both: /*#__PURE__*/(0, _react.css)(";label:both;"),
64
+ before: /*#__PURE__*/(0, _react.css)((0, _global_styling.logicalCSS)('margin-right', negativeMargin), ";label:before;"),
65
+ after: /*#__PURE__*/(0, _react.css)((0, _global_styling.logicalCSS)('margin-left', negativeMargin), ";label:after;"),
66
+ none: /*#__PURE__*/(0, _react.css)((0, _global_styling.logicalCSS)('margin-horizontal', negativeMargin), ";label:none;")
67
+ },
68
+ vertical: {
69
+ both: /*#__PURE__*/(0, _react.css)(";label:both;"),
70
+ before: /*#__PURE__*/(0, _react.css)((0, _global_styling.logicalCSS)('margin-bottom', negativeMargin), ";label:before;"),
71
+ after: /*#__PURE__*/(0, _react.css)((0, _global_styling.logicalCSS)('margin-top', negativeMargin), ";label:after;"),
72
+ none: /*#__PURE__*/(0, _react.css)((0, _global_styling.logicalCSS)('margin-vertical', negativeMargin), ";label:none;")
73
+ }
74
+ },
62
75
  border: /*#__PURE__*/(0, _react.css)("&::before,&::after{background-color:", euiTheme.border.color, ";};label:border;"),
63
76
  borderDirection: {
64
77
  horizontal: /*#__PURE__*/(0, _react.css)("&::before{", (0, _global_styling.logicalCSS)('width', euiTheme.border.width.thin), " ", (0, _global_styling.logicalCSS)('height', '100%'), ";}&:hover,&:focus,&:active{&::after{", (0, _global_styling.logicalCSS)('width', euiTheme.border.width.thin), " ", (0, _global_styling.logicalCSS)('height', '100%'), ";}};label:horizontal;"),
@@ -17,7 +17,7 @@ var _responsive_context = require("./mobile/responsive_context");
17
17
  var _table_cell_content = require("./_table_cell_content");
18
18
  var _table_cells_shared = require("./table_cells_shared.styles");
19
19
  var _react2 = require("@emotion/react");
20
- var _excluded = ["children", "align", "onSort", "isSorted", "isSortAscending", "className", "scope", "mobileOptions", "width", "style", "readOnly", "description"];
20
+ var _excluded = ["children", "align", "onSort", "isSorted", "isSortAscending", "className", "scope", "mobileOptions", "width", "style", "readOnly", "description", "append"];
21
21
  /*
22
22
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
23
23
  * or more contributor license agreements. Licensed under the Elastic License
@@ -82,6 +82,7 @@ var EuiTableHeaderCell = exports.EuiTableHeaderCell = function EuiTableHeaderCel
82
82
  style = _ref2.style,
83
83
  readOnly = _ref2.readOnly,
84
84
  description = _ref2.description,
85
+ append = _ref2.append,
85
86
  rest = _objectWithoutProperties(_ref2, _excluded);
86
87
  var styles = (0, _services.useEuiMemoizedStyles)(_table_cells_shared.euiTableHeaderFooterCellStyles);
87
88
  var isResponsive = (0, _responsive_context.useEuiTableIsResponsive)();
@@ -124,7 +125,7 @@ var EuiTableHeaderCell = exports.EuiTableHeaderCell = function EuiTableHeaderCel
124
125
  }),
125
126
  onClick: onSort,
126
127
  "data-test-subj": "tableHeaderSortButton"
127
- }, (0, _react2.jsx)(CellContents, cellContentsProps)) : (0, _react2.jsx)(CellContents, cellContentsProps));
128
+ }, (0, _react2.jsx)(CellContents, cellContentsProps)) : (0, _react2.jsx)(CellContents, cellContentsProps), append);
128
129
  };
129
130
  EuiTableHeaderCell.propTypes = {
130
131
  className: _propTypes.default.string,
@@ -142,5 +143,11 @@ EuiTableHeaderCell.propTypes = {
142
143
  /**
143
144
  * Shows the sort indicator but removes the button
144
145
  */
145
- readOnly: _propTypes.default.bool
146
+ readOnly: _propTypes.default.bool,
147
+ /**
148
+ * Content rendered outside the visible cell content wrapper. Useful for, e.g. screen reader text.
149
+ *
150
+ * Used by EuiBasicTable to render hidden copy markers
151
+ */
152
+ append: _propTypes.default.node
146
153
  };
@@ -11,7 +11,7 @@ var _services = require("../../services");
11
11
  var _utils = require("./utils");
12
12
  var _table_cells_shared = require("./table_cells_shared.styles");
13
13
  var _react2 = require("@emotion/react");
14
- var _excluded = ["children", "className", "scope", "style", "width"];
14
+ var _excluded = ["children", "className", "scope", "style", "width", "append"];
15
15
  /*
16
16
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
17
17
  * or more contributor license agreements. Licensed under the Elastic License
@@ -30,6 +30,7 @@ var EuiTableHeaderCellCheckbox = exports.EuiTableHeaderCellCheckbox = function E
30
30
  scope = _ref$scope === void 0 ? 'col' : _ref$scope,
31
31
  style = _ref.style,
32
32
  width = _ref.width,
33
+ append = _ref.append,
33
34
  rest = _objectWithoutProperties(_ref, _excluded);
34
35
  var classes = (0, _classnames.default)('euiTableHeaderCellCheckbox', className);
35
36
  var styles = (0, _services.useEuiMemoizedStyles)(_table_cells_shared.euiTableCellCheckboxStyles);
@@ -41,7 +42,7 @@ var EuiTableHeaderCellCheckbox = exports.EuiTableHeaderCellCheckbox = function E
41
42
  style: inlineStyles
42
43
  }, rest), (0, _react2.jsx)("div", {
43
44
  className: "euiTableCellContent"
44
- }, children));
45
+ }, children), append);
45
46
  };
46
47
  EuiTableHeaderCellCheckbox.propTypes = {
47
48
  className: _propTypes.default.string,
@@ -49,5 +50,6 @@ EuiTableHeaderCellCheckbox.propTypes = {
49
50
  "data-test-subj": _propTypes.default.string,
50
51
  css: _propTypes.default.any,
51
52
  width: _propTypes.default.oneOfType([_propTypes.default.string.isRequired, _propTypes.default.number.isRequired]),
52
- scope: _propTypes.default.any
53
+ scope: _propTypes.default.any,
54
+ append: _propTypes.default.node
53
55
  };
@@ -14,7 +14,7 @@ var _utils = require("./utils");
14
14
  var _table_cell_content = require("./_table_cell_content");
15
15
  var _table_row_cell = require("./table_row_cell.styles");
16
16
  var _react2 = require("@emotion/react");
17
- var _excluded = ["align", "children", "className", "truncateText", "setScopeRow", "textOnly", "hasActions", "isExpander", "style", "width", "valign", "mobileOptions"];
17
+ var _excluded = ["align", "children", "className", "truncateText", "setScopeRow", "textOnly", "hasActions", "isExpander", "style", "width", "valign", "mobileOptions", "append"];
18
18
  /*
19
19
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
20
20
  * or more contributor license agreements. Licensed under the Elastic License
@@ -53,6 +53,7 @@ var EuiTableRowCell = exports.EuiTableRowCell = function EuiTableRowCell(_ref) {
53
53
  _ref$valign = _ref.valign,
54
54
  valign = _ref$valign === void 0 ? 'middle' : _ref$valign,
55
55
  mobileOptions = _ref.mobileOptions,
56
+ append = _ref.append,
56
57
  rest = _objectWithoutProperties(_ref, _excluded);
57
58
  var isResponsive = (0, _responsive_context.useEuiTableIsResponsive)();
58
59
  var styles = (0, _services.useEuiMemoizedStyles)(_table_row_cell.euiTableRowCellStyles);
@@ -92,7 +93,7 @@ var EuiTableRowCell = exports.EuiTableRowCell = function EuiTableRowCell(_ref) {
92
93
  ,
93
94
  truncateText: (_mobileOptions$trunca = mobileOptions === null || mobileOptions === void 0 ? void 0 : mobileOptions.truncateText) !== null && _mobileOptions$trunca !== void 0 ? _mobileOptions$trunca : truncateText,
94
95
  textOnly: (_mobileOptions$textOn = mobileOptions === null || mobileOptions === void 0 ? void 0 : mobileOptions.textOnly) !== null && _mobileOptions$textOn !== void 0 ? _mobileOptions$textOn : textOnly
95
- }), (mobileOptions === null || mobileOptions === void 0 ? void 0 : mobileOptions.render) || children));
96
+ }), (mobileOptions === null || mobileOptions === void 0 ? void 0 : mobileOptions.render) || children), append);
96
97
  }
97
98
  } else {
98
99
  // Desktop view
@@ -101,7 +102,7 @@ var EuiTableRowCell = exports.EuiTableRowCell = function EuiTableRowCell(_ref) {
101
102
  } else {
102
103
  return (0, _react2.jsx)(Element, _extends({
103
104
  className: cellClasses
104
- }, sharedProps), (0, _react2.jsx)(_table_cell_content.EuiTableCellContent, sharedContentProps, children));
105
+ }, sharedProps), (0, _react2.jsx)(_table_cell_content.EuiTableCellContent, sharedContentProps, children), append);
105
106
  }
106
107
  }
107
108
  };
@@ -183,6 +184,12 @@ EuiTableRowCell.propTypes = {
183
184
  lines: _propTypes.default.number.isRequired
184
185
  }).isRequired])
185
186
  }),
187
+ /**
188
+ * Content rendered outside the visible cell content wrapper. Useful for, e.g. screen reader text.
189
+ *
190
+ * Used by EuiBasicTable to render hidden copy markers
191
+ */
192
+ append: _propTypes.default.node,
186
193
  /**
187
194
  * Horizontal alignment of the text in the cell
188
195
  */
@@ -11,7 +11,7 @@ var _services = require("../../services");
11
11
  var _responsive_context = require("./mobile/responsive_context");
12
12
  var _table_cells_shared = require("./table_cells_shared.styles");
13
13
  var _react2 = require("@emotion/react");
14
- var _excluded = ["children", "className"];
14
+ var _excluded = ["children", "className", "append"];
15
15
  /*
16
16
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
17
17
  * or more contributor license agreements. Licensed under the Elastic License
@@ -26,6 +26,7 @@ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t =
26
26
  var EuiTableRowCellCheckbox = exports.EuiTableRowCellCheckbox = function EuiTableRowCellCheckbox(_ref) {
27
27
  var children = _ref.children,
28
28
  className = _ref.className,
29
+ append = _ref.append,
29
30
  rest = _objectWithoutProperties(_ref, _excluded);
30
31
  var isResponsive = (0, _responsive_context.useEuiTableIsResponsive)();
31
32
  var styles = (0, _services.useEuiMemoizedStyles)(_table_cells_shared.euiTableCellCheckboxStyles);
@@ -36,11 +37,12 @@ var EuiTableRowCellCheckbox = exports.EuiTableRowCellCheckbox = function EuiTabl
36
37
  className: classes
37
38
  }, rest), (0, _react2.jsx)("div", {
38
39
  className: "euiTableCellContent"
39
- }, children));
40
+ }, children), append);
40
41
  };
41
42
  EuiTableRowCellCheckbox.propTypes = {
42
43
  className: _propTypes.default.string,
43
44
  "aria-label": _propTypes.default.string,
44
45
  "data-test-subj": _propTypes.default.string,
45
- css: _propTypes.default.any
46
+ css: _propTypes.default.any,
47
+ append: _propTypes.default.node
46
48
  };
@@ -8,11 +8,11 @@ var _react = _interopRequireDefault(require("react"));
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
  var _classnames = _interopRequireDefault(require("classnames"));
10
10
  var _services = require("../../services");
11
- var _text = require("./text.styles");
12
11
  var _text_color = require("./text_color");
13
12
  var _text_align = require("./text_align");
13
+ var _text = require("./text.styles");
14
14
  var _react2 = require("@emotion/react");
15
- var _excluded = ["size", "color", "grow", "textAlign", "children", "className"];
15
+ var _excluded = ["component", "size", "color", "grow", "textAlign", "children", "className"];
16
16
  /*
17
17
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
18
18
  * or more contributor license agreements. Licensed under the Elastic License
@@ -26,7 +26,9 @@ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i
26
26
  function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }
27
27
  var TEXT_SIZES = exports.TEXT_SIZES = ['xs', 's', 'm', 'relative'];
28
28
  var EuiText = exports.EuiText = function EuiText(_ref) {
29
- var _ref$size = _ref.size,
29
+ var _ref$component = _ref.component,
30
+ component = _ref$component === void 0 ? 'div' : _ref$component,
31
+ _ref$size = _ref.size,
30
32
  size = _ref$size === void 0 ? 'm' : _ref$size,
31
33
  color = _ref.color,
32
34
  _ref$grow = _ref.grow,
@@ -38,12 +40,14 @@ var EuiText = exports.EuiText = function EuiText(_ref) {
38
40
  var styles = (0, _services.useEuiMemoizedStyles)(_text.euiTextStyles);
39
41
  var cssStyles = [styles.euiText, !grow ? styles.constrainedWidth : undefined, styles[size]];
40
42
  var classes = (0, _classnames.default)('euiText', className);
41
- var text = (0, _react2.jsx)("div", _extends({
43
+ var Component = component;
44
+ var text = (0, _react2.jsx)(Component, _extends({
42
45
  css: cssStyles,
43
46
  className: classes
44
47
  }, rest), children);
45
48
  if (color) {
46
49
  text = (0, _react2.jsx)(_text_color.EuiTextColor, {
50
+ component: component,
47
51
  color: color,
48
52
  className: classes,
49
53
  cloneElement: true
@@ -51,6 +55,7 @@ var EuiText = exports.EuiText = function EuiText(_ref) {
51
55
  }
52
56
  if (textAlign) {
53
57
  text = (0, _react2.jsx)(_text_align.EuiTextAlign, {
58
+ component: component,
54
59
  textAlign: textAlign,
55
60
  className: classes,
56
61
  cloneElement: true
@@ -63,15 +68,26 @@ EuiText.propTypes = {
63
68
  "aria-label": _propTypes.default.string,
64
69
  "data-test-subj": _propTypes.default.string,
65
70
  css: _propTypes.default.any,
71
+ /**
72
+ * The HTML element/tag to render.
73
+ * Use with care when nesting multiple components to ensure valid XHTML:
74
+ * - `<div>` and other block tags are not valid to use inside `<p>`. If using the `<p>` tag, we recommend passing strings/text only.
75
+ * - `<span>` is valid to be nested in any tag, and can have any tag nested within it.
76
+ */
77
+ component: _propTypes.default.oneOf(["div", "span", "p"]),
78
+ /**
79
+ * Any of our named colors or a `hex`, `rgb` or `rgba` value.
80
+ * @default inherit
81
+ */
82
+ color: _propTypes.default.oneOfType([_propTypes.default.any.isRequired, _propTypes.default.any.isRequired]),
83
+ /**
84
+ * Applies horizontal text alignment
85
+ * @default left
86
+ */
66
87
  textAlign: _propTypes.default.any,
67
88
  /**
68
89
  * Determines the text size. Choose `relative` to control the `font-size` based on the value of a parent container.
69
90
  */
70
91
  size: _propTypes.default.any,
71
- /**
72
- * Any of our named colors or a `hex`, `rgb` or `rgba` value.
73
- * @default inherit
74
- */
75
- color: _propTypes.default.oneOfType([_propTypes.default.any.isRequired, _propTypes.default.any.isRequired]),
76
92
  grow: _propTypes.default.bool
77
93
  };
@@ -10,7 +10,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
10
10
  var _services = require("../../services");
11
11
  var _text_align = require("./text_align.styles");
12
12
  var _react2 = require("@emotion/react");
13
- var _excluded = ["children", "textAlign", "cloneElement"];
13
+ var _excluded = ["children", "component", "textAlign", "cloneElement"];
14
14
  /*
15
15
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
16
16
  * or more contributor license agreements. Licensed under the Elastic License
@@ -31,6 +31,8 @@ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t =
31
31
  var ALIGNMENTS = exports.ALIGNMENTS = ['left', 'right', 'center'];
32
32
  var EuiTextAlign = exports.EuiTextAlign = function EuiTextAlign(_ref) {
33
33
  var children = _ref.children,
34
+ _ref$component = _ref.component,
35
+ Component = _ref$component === void 0 ? 'div' : _ref$component,
34
36
  _ref$textAlign = _ref.textAlign,
35
37
  textAlign = _ref$textAlign === void 0 ? 'left' : _ref$textAlign,
36
38
  _ref$cloneElement = _ref.cloneElement,
@@ -43,7 +45,7 @@ var EuiTextAlign = exports.EuiTextAlign = function EuiTextAlign(_ref) {
43
45
  if ( /*#__PURE__*/(0, _react.isValidElement)(children) && cloneElement) {
44
46
  return (0, _services.cloneElementWithCss)(children, props);
45
47
  } else {
46
- return (0, _react2.jsx)("div", props, children);
48
+ return (0, _react2.jsx)(Component, props, children);
47
49
  }
48
50
  };
49
51
  EuiTextAlign.propTypes = {
@@ -51,10 +53,21 @@ EuiTextAlign.propTypes = {
51
53
  "aria-label": _propTypes.default.string,
52
54
  "data-test-subj": _propTypes.default.string,
53
55
  css: _propTypes.default.any,
54
- textAlign: _propTypes.default.any,
55
56
  /**
56
- * Applies text styling to the child element instead of rendering a parent wrapper `div`.
57
- * Can only be used when wrapping a *single* child element/tag, and not raw text.
57
+ * The HTML element/tag to render.
58
+ * Use with care when nesting multiple components to ensure valid XHTML:
59
+ * - `<div>` and other block tags are not valid to use inside `<p>`. If using the `<p>` tag, we recommend passing strings/text only.
60
+ * - `<span>` is valid to be nested in any tag, and can have any tag nested within it.
58
61
  */
59
- cloneElement: _propTypes.default.bool
62
+ component: _propTypes.default.oneOf(["div", "span", "p"]),
63
+ /**
64
+ * Applies text styling to the child element instead of rendering a parent wrapper.
65
+ * Can only be used when wrapping a *single* child element/tag, and not raw text.
66
+ */
67
+ cloneElement: _propTypes.default.bool,
68
+ /**
69
+ * Applies horizontal text alignment
70
+ * @default left
71
+ */
72
+ textAlign: _propTypes.default.any
60
73
  };
@@ -37,7 +37,7 @@ var EuiTextColor = exports.EuiTextColor = function EuiTextColor(_ref) {
37
37
  _ref$color = _ref.color,
38
38
  color = _ref$color === void 0 ? 'default' : _ref$color,
39
39
  _ref$component = _ref.component,
40
- component = _ref$component === void 0 ? 'span' : _ref$component,
40
+ Component = _ref$component === void 0 ? 'span' : _ref$component,
41
41
  _ref$cloneElement = _ref.cloneElement,
42
42
  cloneElement = _ref$cloneElement === void 0 ? false : _ref$cloneElement,
43
43
  style = _ref.style,
@@ -62,7 +62,6 @@ var EuiTextColor = exports.EuiTextColor = function EuiTextColor(_ref) {
62
62
  style: childrenStyle
63
63
  }));
64
64
  } else {
65
- var Component = component;
66
65
  return (0, _react2.jsx)(Component, props, children);
67
66
  }
68
67
  };
@@ -72,16 +71,20 @@ EuiTextColor.propTypes = {
72
71
  "data-test-subj": _propTypes.default.string,
73
72
  css: _propTypes.default.any,
74
73
  /**
75
- * Any of our named colors or a `hex`, `rgb` or `rgba` value.
74
+ * The HTML element/tag to render.
75
+ * Use with care when nesting multiple components to ensure valid XHTML:
76
+ * - `<div>` and other block tags are not valid to use inside `<p>`. If using the `<p>` tag, we recommend passing strings/text only.
77
+ * - `<span>` is valid to be nested in any tag, and can have any tag nested within it.
76
78
  */
77
- color: _propTypes.default.oneOfType([_propTypes.default.any.isRequired, _propTypes.default.any.isRequired]),
79
+ component: _propTypes.default.oneOf(["div", "span", "p"]),
78
80
  /**
79
- * Determines the root element
80
- */
81
- component: _propTypes.default.oneOf(["div", "span"]),
81
+ * Applies text styling to the child element instead of rendering a parent wrapper.
82
+ * Can only be used when wrapping a *single* child element/tag, and not raw text.
83
+ */
84
+ cloneElement: _propTypes.default.bool,
82
85
  /**
83
- * Applies text styling to the child element instead of rendering a parent wrapper `span`/`div`.
84
- * Can only be used when wrapping a *single* child element/tag, and not raw text.
85
- */
86
- cloneElement: _propTypes.default.bool
86
+ * Any of our named colors or a `hex`, `rgb` or `rgba` value.
87
+ * @default inherit
88
+ */
89
+ color: _propTypes.default.oneOfType([_propTypes.default.any.isRequired, _propTypes.default.any.isRequired])
87
90
  };
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "OverrideCopiedTabularContent", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _tabular_copy.OverrideCopiedTabularContent;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "copyToClipboard", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _copy_to_clipboard.copyToClipboard;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "tabularCopyMarkers", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _tabular_copy.tabularCopyMarkers;
22
+ }
23
+ });
24
+ var _copy_to_clipboard = require("./copy_to_clipboard");
25
+ var _tabular_copy = require("./tabular_copy");
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.tabularCopyMarkers = exports.onTabularCopy = exports.OverrideCopiedTabularContent = exports.CHARS = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _react2 = require("@emotion/react");
10
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
11
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
12
+ /*
13
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
14
+ * or more contributor license agreements. Licensed under the Elastic License
15
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
16
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
17
+ * Side Public License, v 1.
18
+ */
19
+
20
+ /**
21
+ * Clipboard text cleaning logic
22
+ */
23
+
24
+ // Special visually hidden unicode characters that we use to manually clean content
25
+ // and force our own newlines/horizontal tabs
26
+ var CHARS = exports.CHARS = {
27
+ NEWLINE: '↵',
28
+ TAB: '↦',
29
+ // Use multiple characters to reduce the chances of consumers also using these characters
30
+ TABULAR_CONTENT_BOUND: '𐘂𐘂',
31
+ NO_COPY_BOUND: '✄𐘗'
32
+ };
33
+ // This regex finds all content between two bounds
34
+ var noCopyBoundsRegex = new RegExp("".concat(CHARS.NO_COPY_BOUND, "[^").concat(CHARS.NO_COPY_BOUND, "]*").concat(CHARS.NO_COPY_BOUND), 'gs');
35
+ var hasCharsToReplace = function hasCharsToReplace(text) {
36
+ for (var _i = 0, _Object$values = Object.values(CHARS); _i < _Object$values.length; _i++) {
37
+ var char = _Object$values[_i];
38
+ if (text.indexOf(char) >= 0) return true;
39
+ }
40
+ return false;
41
+ };
42
+
43
+ // Strip all existing newlines and replace our special hidden characters
44
+ // with the desired spacing needed to paste cleanly into a spreadsheet
45
+ var onTabularCopy = exports.onTabularCopy = function onTabularCopy(event) {
46
+ var _window$getSelection;
47
+ if (!event.clipboardData) return;
48
+ var selectedText = (_window$getSelection = window.getSelection()) === null || _window$getSelection === void 0 ? void 0 : _window$getSelection.toString();
49
+ if (!selectedText || !hasCharsToReplace(selectedText)) return;
50
+ var amendedText = selectedText.split(CHARS.TABULAR_CONTENT_BOUND).map(function (text) {
51
+ return hasCharsToReplace(text) ? text.replace(/\r?\n/g, '') // remove all other newlines generated by content or block display
52
+ .replaceAll(CHARS.NEWLINE, '\n') // insert newline for each table/grid row
53
+ .replace(/\t/g, '') // remove tabs generated by content or automatically by <td> elements
54
+ .replaceAll(CHARS.TAB, "\t") // insert horizontal tab for each table/grid cell
55
+ .replace(noCopyBoundsRegex, '') // remove text that should not be copied (e.g. screen reader instructions)
56
+ : text;
57
+ }).join('');
58
+ event.clipboardData.setData('text/plain', amendedText);
59
+ event.preventDefault();
60
+ };
61
+
62
+ /**
63
+ * JSX utils for rendering the hidden marker characters
64
+ */
65
+
66
+ var VisuallyHide = function VisuallyHide(_ref) {
67
+ var children = _ref.children,
68
+ _ref$type = _ref.type,
69
+ type = _ref$type === void 0 ? 'true' : _ref$type;
70
+ return (
71
+ // Hides the characters to both sighted user and screen readers
72
+ // Sadly, we can't use `hidden` as that hides the chars from the clipboard as well
73
+ (0, _react2.jsx)("span", {
74
+ className: "euiScreenReaderOnly",
75
+ "aria-hidden": true,
76
+ "data-tabular-copy-marker": type
77
+ }, children)
78
+ );
79
+ };
80
+ var tabularCopyMarkers = exports.tabularCopyMarkers = {
81
+ hiddenTab: (0, _react2.jsx)(VisuallyHide, {
82
+ type: "tab"
83
+ }, CHARS.TAB),
84
+ hiddenNewline: (0, _react2.jsx)(VisuallyHide, {
85
+ type: "newline"
86
+ }, CHARS.NEWLINE),
87
+ hiddenWrapperBoundary: (0, _react2.jsx)(VisuallyHide, {
88
+ type: "boundary"
89
+ }, CHARS.TABULAR_CONTENT_BOUND),
90
+ hiddenNoCopyBoundary: (0, _react2.jsx)(VisuallyHide, {
91
+ type: "no-copy"
92
+ }, CHARS.NO_COPY_BOUND)
93
+ };
94
+
95
+ /**
96
+ * Wrapper setup around table/grid tabular content we want to override/clean up on copy
97
+ */
98
+
99
+ var OverrideCopiedTabularContent = exports.OverrideCopiedTabularContent = function OverrideCopiedTabularContent(_ref2) {
100
+ var children = _ref2.children;
101
+ (0, _react.useEffect)(function () {
102
+ // Chrome and webkit browsers work perfectly when passing `onTabularCopy` to a React
103
+ // `onCopy` prop, but sadly Firefox does not if copying more than just the table/grid
104
+ // (e.g. Ctrl+A). So we have to set up a global window event listener
105
+ window.document.addEventListener('copy', onTabularCopy);
106
+ // Note: Since onCopy is static, we don't have to worry about duplicate
107
+ // event listeners - it's automatically handled by the browser. See:
108
+ // https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Multiple_identical_event_listeners
109
+ }, []);
110
+ return (0, _react2.jsx)(_react.default.Fragment, null, tabularCopyMarkers.hiddenWrapperBoundary, children, tabularCopyMarkers.hiddenWrapperBoundary);
111
+ };