@elastic/eui 104.1.0 → 105.0.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 (320) hide show
  1. package/es/components/avatar/avatar.js +1 -1
  2. package/es/components/badge/badge.js +1 -1
  3. package/es/components/badge/beta_badge/beta_badge.js +1 -1
  4. package/es/components/basic_table/basic_table.js +4 -4
  5. package/es/components/basic_table/in_memory_table.js +4 -4
  6. package/es/components/button/button.js +1 -1
  7. package/es/components/button/button_display/_button_display.js +1 -1
  8. package/es/components/button/button_display/_button_display_content.js +1 -1
  9. package/es/components/button/button_empty/button_empty.js +1 -1
  10. package/es/components/button/button_group/button_group.js +1 -1
  11. package/es/components/button/button_group/button_group_button.js +1 -1
  12. package/es/components/button/button_icon/button_icon.js +1 -1
  13. package/es/components/call_out/call_out.js +1 -1
  14. package/es/components/card/card.js +2 -2
  15. package/es/components/card/card_select/card_select.js +1 -1
  16. package/es/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +1 -1
  17. package/es/components/collapsible_nav_beta/_kibana_solution/collapsible_nav_kibana_solution.js +1 -1
  18. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +1 -1
  19. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +2 -2
  20. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +2 -2
  21. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +4 -4
  22. package/es/components/combo_box/combo_box.a11y.js +53 -2
  23. package/es/components/combo_box/combo_box.js +26 -8
  24. package/es/components/combo_box/combo_box_options_list/combo_box_options_list.js +9 -3
  25. package/es/components/comment_list/comment.js +2 -2
  26. package/es/components/comment_list/comment_event.js +1 -1
  27. package/es/components/comment_list/comment_list.js +2 -2
  28. package/es/components/comment_list/comment_timeline.js +1 -1
  29. package/es/components/context_menu/context_menu_item.js +1 -1
  30. package/es/components/datagrid/body/cell/data_grid_cell.js +12 -12
  31. package/es/components/datagrid/body/cell/data_grid_cell.styles.js +9 -4
  32. package/es/components/datagrid/body/data_grid_body.js +7 -7
  33. package/es/components/datagrid/body/data_grid_body_custom.js +7 -7
  34. package/es/components/datagrid/body/data_grid_body_virtualized.js +7 -7
  35. package/es/components/datagrid/body/header/data_grid_header_cell.js +6 -6
  36. package/es/components/datagrid/controls/column_sorting.js +7 -7
  37. package/es/components/datagrid/controls/column_sorting_draggable.js +1 -1
  38. package/es/components/datagrid/controls/data_grid_toolbar_control.js +1 -1
  39. package/es/components/datagrid/data_grid.styles.js +4 -1
  40. package/es/components/datagrid/utils/in_memory.js +6 -6
  41. package/es/components/date_picker/date_picker.js +2 -2
  42. package/es/components/date_picker/date_picker_range.js +1 -1
  43. package/es/components/empty_prompt/empty_prompt.js +1 -1
  44. package/es/components/facet/facet_button.js +1 -1
  45. package/es/components/filter_group/filter_select_item.js +21 -17
  46. package/es/components/flyout/flyout.js +88 -21
  47. package/es/components/flyout/flyout.styles.js +9 -5
  48. package/es/components/flyout/flyout_child.js +209 -0
  49. package/es/components/flyout/flyout_child.styles.js +31 -0
  50. package/es/components/flyout/flyout_child_manager.js +112 -0
  51. package/es/components/flyout/flyout_context.js +16 -0
  52. package/es/components/flyout/index.js +3 -1
  53. package/es/components/flyout/sessions/flyout_provider.js +109 -0
  54. package/es/components/flyout/sessions/flyout_reducer.js +217 -0
  55. package/es/components/flyout/sessions/index.js +10 -0
  56. package/es/components/flyout/sessions/types.js +1 -0
  57. package/es/components/flyout/sessions/use_eui_flyout.js +94 -0
  58. package/es/components/form/field_number/field_number.js +2 -2
  59. package/es/components/form/field_text/field_text.js +2 -2
  60. package/es/components/form/form_control_layout/form_control_layout.js +2 -2
  61. package/es/components/form/form_control_layout/form_control_layout_custom_icon.js +1 -1
  62. package/es/components/form/form_control_layout/form_control_layout_icons.js +2 -2
  63. package/es/components/form/text_area/text_area.js +2 -2
  64. package/es/components/header/header_links/header_link.js +1 -1
  65. package/es/components/header/header_links/header_links.js +1 -1
  66. package/es/components/header/header_logo/header_logo.js +1 -1
  67. package/es/components/header/header_section/header_section_item_button.js +1 -1
  68. package/es/components/icon/icon.js +1 -1
  69. package/es/components/icon/icon_map.js +1 -4
  70. package/es/components/key_pad_menu/key_pad_menu_item.js +1 -1
  71. package/es/components/list_group/list_group.js +2 -2
  72. package/es/components/list_group/list_group_item.js +2 -2
  73. package/es/components/list_group/list_group_item_extra_action.js +1 -1
  74. package/es/components/list_group/pinnable_list_group/pinnable_list_group.js +4 -4
  75. package/es/components/loading/loading_logo.js +1 -1
  76. package/es/components/markdown_editor/markdown_editor.js +1 -1
  77. package/es/components/markdown_editor/markdown_editor_drop_zone.js +1 -1
  78. package/es/components/markdown_editor/markdown_editor_footer.js +1 -1
  79. package/es/components/markdown_editor/markdown_editor_toolbar.js +1 -1
  80. package/es/components/page/page_header/page_header_content.js +1 -1
  81. package/es/components/pagination/pagination_button.js +1 -1
  82. package/es/components/progress/progress.js +51 -11
  83. package/es/components/selectable/selectable_list/selectable_list.js +1 -1
  84. package/es/components/selectable/selectable_list/selectable_list_item.js +1 -1
  85. package/es/components/selectable/selectable_templates/selectable_template_sitewide.js +1 -1
  86. package/es/components/table/table_header_cell.js +1 -1
  87. package/es/components/table/table_row.styles.js +11 -6
  88. package/es/components/timeline/timeline_item_icon.js +1 -1
  89. package/es/components/toast/global_toast_list.js +1 -1
  90. package/es/components/toast/toast.js +1 -1
  91. package/es/components/tool_tip/icon_tip.js +1 -1
  92. package/es/themes/amsterdam/global_styling/variables/_components.js +305 -270
  93. package/eui.d.ts +400 -77
  94. package/lib/components/avatar/avatar.js +1 -1
  95. package/lib/components/badge/badge.js +1 -1
  96. package/lib/components/badge/beta_badge/beta_badge.js +1 -1
  97. package/lib/components/basic_table/basic_table.js +4 -4
  98. package/lib/components/basic_table/in_memory_table.js +4 -4
  99. package/lib/components/button/button.js +1 -1
  100. package/lib/components/button/button_display/_button_display.js +1 -1
  101. package/lib/components/button/button_display/_button_display_content.js +1 -1
  102. package/lib/components/button/button_empty/button_empty.js +1 -1
  103. package/lib/components/button/button_group/button_group.js +1 -1
  104. package/lib/components/button/button_group/button_group_button.js +1 -1
  105. package/lib/components/button/button_icon/button_icon.js +1 -1
  106. package/lib/components/call_out/call_out.js +1 -1
  107. package/lib/components/card/card.js +2 -2
  108. package/lib/components/card/card_select/card_select.js +1 -1
  109. package/lib/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +1 -1
  110. package/lib/components/collapsible_nav_beta/_kibana_solution/collapsible_nav_kibana_solution.js +1 -1
  111. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +1 -1
  112. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +2 -2
  113. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +2 -2
  114. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +4 -4
  115. package/lib/components/combo_box/combo_box.a11y.js +53 -2
  116. package/lib/components/combo_box/combo_box.js +26 -8
  117. package/lib/components/combo_box/combo_box_options_list/combo_box_options_list.js +9 -3
  118. package/lib/components/comment_list/comment.js +2 -2
  119. package/lib/components/comment_list/comment_event.js +1 -1
  120. package/lib/components/comment_list/comment_list.js +2 -2
  121. package/lib/components/comment_list/comment_timeline.js +1 -1
  122. package/lib/components/context_menu/context_menu_item.js +1 -1
  123. package/lib/components/datagrid/body/cell/data_grid_cell.js +12 -12
  124. package/lib/components/datagrid/body/cell/data_grid_cell.styles.js +9 -4
  125. package/lib/components/datagrid/body/data_grid_body.js +7 -7
  126. package/lib/components/datagrid/body/data_grid_body_custom.js +7 -7
  127. package/lib/components/datagrid/body/data_grid_body_virtualized.js +7 -7
  128. package/lib/components/datagrid/body/header/data_grid_header_cell.js +6 -6
  129. package/lib/components/datagrid/controls/column_sorting.js +7 -7
  130. package/lib/components/datagrid/controls/column_sorting_draggable.js +1 -1
  131. package/lib/components/datagrid/controls/data_grid_toolbar_control.js +1 -1
  132. package/lib/components/datagrid/data_grid.styles.js +4 -1
  133. package/lib/components/datagrid/utils/in_memory.js +6 -6
  134. package/lib/components/date_picker/date_picker.js +2 -2
  135. package/lib/components/date_picker/date_picker_range.js +1 -1
  136. package/lib/components/empty_prompt/empty_prompt.js +1 -1
  137. package/lib/components/facet/facet_button.js +1 -1
  138. package/lib/components/filter_group/filter_select_item.js +21 -17
  139. package/lib/components/flyout/flyout.js +88 -21
  140. package/lib/components/flyout/flyout.styles.js +10 -6
  141. package/lib/components/flyout/flyout_child.js +217 -0
  142. package/lib/components/flyout/flyout_child.styles.js +37 -0
  143. package/lib/components/flyout/flyout_child_manager.js +120 -0
  144. package/lib/components/flyout/flyout_context.js +21 -0
  145. package/lib/components/flyout/index.js +21 -1
  146. package/lib/components/flyout/sessions/flyout_provider.js +116 -0
  147. package/lib/components/flyout/sessions/flyout_reducer.js +224 -0
  148. package/lib/components/flyout/sessions/index.js +25 -0
  149. package/lib/components/flyout/sessions/types.js +5 -0
  150. package/lib/components/flyout/sessions/use_eui_flyout.js +99 -0
  151. package/lib/components/form/field_number/field_number.js +2 -2
  152. package/lib/components/form/field_text/field_text.js +2 -2
  153. package/lib/components/form/form_control_layout/form_control_layout.js +2 -2
  154. package/lib/components/form/form_control_layout/form_control_layout_custom_icon.js +1 -1
  155. package/lib/components/form/form_control_layout/form_control_layout_icons.js +2 -2
  156. package/lib/components/form/text_area/text_area.js +2 -2
  157. package/lib/components/header/header_links/header_link.js +1 -1
  158. package/lib/components/header/header_links/header_links.js +1 -1
  159. package/lib/components/header/header_logo/header_logo.js +1 -1
  160. package/lib/components/header/header_section/header_section_item_button.js +1 -1
  161. package/lib/components/icon/icon.js +1 -1
  162. package/lib/components/icon/icon_map.js +1 -4
  163. package/lib/components/key_pad_menu/key_pad_menu_item.js +1 -1
  164. package/lib/components/list_group/list_group.js +2 -2
  165. package/lib/components/list_group/list_group_item.js +2 -2
  166. package/lib/components/list_group/list_group_item_extra_action.js +1 -1
  167. package/lib/components/list_group/pinnable_list_group/pinnable_list_group.js +4 -4
  168. package/lib/components/loading/loading_logo.js +1 -1
  169. package/lib/components/markdown_editor/markdown_editor.js +1 -1
  170. package/lib/components/markdown_editor/markdown_editor_drop_zone.js +1 -1
  171. package/lib/components/markdown_editor/markdown_editor_footer.js +1 -1
  172. package/lib/components/markdown_editor/markdown_editor_toolbar.js +1 -1
  173. package/lib/components/page/page_header/page_header_content.js +1 -1
  174. package/lib/components/pagination/pagination_button.js +1 -1
  175. package/lib/components/progress/progress.js +54 -11
  176. package/lib/components/selectable/selectable_list/selectable_list.js +1 -1
  177. package/lib/components/selectable/selectable_list/selectable_list_item.js +1 -1
  178. package/lib/components/selectable/selectable_templates/selectable_template_sitewide.js +1 -1
  179. package/lib/components/table/table_header_cell.js +1 -1
  180. package/lib/components/table/table_row.styles.js +11 -6
  181. package/lib/components/timeline/timeline_item_icon.js +1 -1
  182. package/lib/components/toast/global_toast_list.js +1 -1
  183. package/lib/components/toast/toast.js +1 -1
  184. package/lib/components/tool_tip/icon_tip.js +1 -1
  185. package/lib/themes/amsterdam/global_styling/variables/_components.js +305 -270
  186. package/optimize/es/components/combo_box/combo_box.a11y.js +53 -2
  187. package/optimize/es/components/combo_box/combo_box.js +26 -8
  188. package/optimize/es/components/combo_box/combo_box_options_list/combo_box_options_list.js +8 -3
  189. package/optimize/es/components/datagrid/body/cell/data_grid_cell.styles.js +9 -4
  190. package/optimize/es/components/datagrid/data_grid.styles.js +4 -1
  191. package/optimize/es/components/filter_group/filter_select_item.js +20 -17
  192. package/optimize/es/components/flyout/flyout.js +88 -21
  193. package/optimize/es/components/flyout/flyout.styles.js +9 -5
  194. package/optimize/es/components/flyout/flyout_child.js +168 -0
  195. package/optimize/es/components/flyout/flyout_child.styles.js +31 -0
  196. package/optimize/es/components/flyout/flyout_child_manager.js +98 -0
  197. package/optimize/es/components/flyout/flyout_context.js +16 -0
  198. package/optimize/es/components/flyout/index.js +3 -1
  199. package/optimize/es/components/flyout/sessions/flyout_provider.js +104 -0
  200. package/optimize/es/components/flyout/sessions/flyout_reducer.js +209 -0
  201. package/optimize/es/components/flyout/sessions/index.js +10 -0
  202. package/optimize/es/components/flyout/sessions/types.js +1 -0
  203. package/optimize/es/components/flyout/sessions/use_eui_flyout.js +94 -0
  204. package/optimize/es/components/icon/icon_map.js +1 -4
  205. package/optimize/es/components/progress/progress.js +38 -9
  206. package/optimize/es/components/table/table_row.styles.js +11 -6
  207. package/optimize/es/themes/amsterdam/global_styling/variables/_components.js +305 -270
  208. package/optimize/lib/components/combo_box/combo_box.a11y.js +53 -2
  209. package/optimize/lib/components/combo_box/combo_box.js +26 -8
  210. package/optimize/lib/components/combo_box/combo_box_options_list/combo_box_options_list.js +8 -3
  211. package/optimize/lib/components/datagrid/body/cell/data_grid_cell.styles.js +9 -4
  212. package/optimize/lib/components/datagrid/data_grid.styles.js +4 -1
  213. package/optimize/lib/components/filter_group/filter_select_item.js +20 -17
  214. package/optimize/lib/components/flyout/flyout.js +88 -21
  215. package/optimize/lib/components/flyout/flyout.styles.js +10 -6
  216. package/optimize/lib/components/flyout/flyout_child.js +176 -0
  217. package/optimize/lib/components/flyout/flyout_child.styles.js +37 -0
  218. package/optimize/lib/components/flyout/flyout_child_manager.js +108 -0
  219. package/optimize/lib/components/flyout/flyout_context.js +21 -0
  220. package/optimize/lib/components/flyout/index.js +21 -1
  221. package/optimize/lib/components/flyout/sessions/flyout_provider.js +114 -0
  222. package/optimize/lib/components/flyout/sessions/flyout_reducer.js +217 -0
  223. package/optimize/lib/components/flyout/sessions/index.js +25 -0
  224. package/optimize/lib/components/flyout/sessions/types.js +5 -0
  225. package/optimize/lib/components/flyout/sessions/use_eui_flyout.js +99 -0
  226. package/optimize/lib/components/icon/icon_map.js +1 -4
  227. package/optimize/lib/components/progress/progress.js +41 -9
  228. package/optimize/lib/components/table/table_row.styles.js +11 -6
  229. package/optimize/lib/themes/amsterdam/global_styling/variables/_components.js +305 -270
  230. package/package.json +4 -4
  231. package/test-env/components/avatar/avatar.js +1 -1
  232. package/test-env/components/badge/badge.js +1 -1
  233. package/test-env/components/badge/beta_badge/beta_badge.js +1 -1
  234. package/test-env/components/basic_table/basic_table.js +4 -4
  235. package/test-env/components/basic_table/in_memory_table.js +4 -4
  236. package/test-env/components/button/button.js +1 -1
  237. package/test-env/components/button/button_display/_button_display.js +1 -1
  238. package/test-env/components/button/button_display/_button_display_content.js +1 -1
  239. package/test-env/components/button/button_empty/button_empty.js +1 -1
  240. package/test-env/components/button/button_group/button_group.js +1 -1
  241. package/test-env/components/button/button_group/button_group_button.js +1 -1
  242. package/test-env/components/button/button_icon/button_icon.js +1 -1
  243. package/test-env/components/call_out/call_out.js +1 -1
  244. package/test-env/components/card/card.js +2 -2
  245. package/test-env/components/card/card_select/card_select.js +1 -1
  246. package/test-env/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +1 -1
  247. package/test-env/components/collapsible_nav_beta/_kibana_solution/collapsible_nav_kibana_solution.js +1 -1
  248. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +1 -1
  249. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +2 -2
  250. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +2 -2
  251. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +4 -4
  252. package/test-env/components/combo_box/combo_box.a11y.js +53 -2
  253. package/test-env/components/combo_box/combo_box.js +26 -8
  254. package/test-env/components/combo_box/combo_box_options_list/combo_box_options_list.js +9 -3
  255. package/test-env/components/comment_list/comment.js +2 -2
  256. package/test-env/components/comment_list/comment_event.js +1 -1
  257. package/test-env/components/comment_list/comment_list.js +2 -2
  258. package/test-env/components/comment_list/comment_timeline.js +1 -1
  259. package/test-env/components/context_menu/context_menu_item.js +1 -1
  260. package/test-env/components/datagrid/body/cell/data_grid_cell.js +12 -12
  261. package/test-env/components/datagrid/body/cell/data_grid_cell.styles.js +9 -4
  262. package/test-env/components/datagrid/body/data_grid_body.js +7 -7
  263. package/test-env/components/datagrid/body/data_grid_body_custom.js +7 -7
  264. package/test-env/components/datagrid/body/data_grid_body_virtualized.js +7 -7
  265. package/test-env/components/datagrid/body/header/data_grid_header_cell.js +6 -6
  266. package/test-env/components/datagrid/controls/column_sorting.js +7 -7
  267. package/test-env/components/datagrid/controls/column_sorting_draggable.js +1 -1
  268. package/test-env/components/datagrid/controls/data_grid_toolbar_control.js +1 -1
  269. package/test-env/components/datagrid/data_grid.styles.js +4 -1
  270. package/test-env/components/datagrid/utils/in_memory.js +6 -6
  271. package/test-env/components/date_picker/date_picker.js +2 -2
  272. package/test-env/components/date_picker/date_picker_range.js +1 -1
  273. package/test-env/components/empty_prompt/empty_prompt.js +1 -1
  274. package/test-env/components/facet/facet_button.js +1 -1
  275. package/test-env/components/filter_group/filter_select_item.js +21 -17
  276. package/test-env/components/flyout/flyout.styles.js +10 -6
  277. package/test-env/components/flyout/flyout_child.js +216 -0
  278. package/test-env/components/flyout/flyout_child.styles.js +37 -0
  279. package/test-env/components/flyout/flyout_child_manager.js +117 -0
  280. package/test-env/components/flyout/flyout_context.js +21 -0
  281. package/test-env/components/flyout/index.js +21 -1
  282. package/test-env/components/flyout/sessions/flyout_provider.js +114 -0
  283. package/test-env/components/flyout/sessions/flyout_reducer.js +217 -0
  284. package/test-env/components/flyout/sessions/index.js +25 -0
  285. package/test-env/components/flyout/sessions/types.js +5 -0
  286. package/test-env/components/flyout/sessions/use_eui_flyout.js +99 -0
  287. package/test-env/components/form/field_number/field_number.js +2 -2
  288. package/test-env/components/form/field_text/field_text.js +2 -2
  289. package/test-env/components/form/form_control_layout/form_control_layout.js +2 -2
  290. package/test-env/components/form/form_control_layout/form_control_layout_custom_icon.js +1 -1
  291. package/test-env/components/form/form_control_layout/form_control_layout_icons.js +2 -2
  292. package/test-env/components/form/text_area/text_area.js +2 -2
  293. package/test-env/components/header/header_links/header_link.js +1 -1
  294. package/test-env/components/header/header_links/header_links.js +1 -1
  295. package/test-env/components/header/header_logo/header_logo.js +1 -1
  296. package/test-env/components/header/header_section/header_section_item_button.js +1 -1
  297. package/test-env/components/icon/icon_map.js +1 -4
  298. package/test-env/components/key_pad_menu/key_pad_menu_item.js +1 -1
  299. package/test-env/components/list_group/list_group.js +2 -2
  300. package/test-env/components/list_group/list_group_item.js +2 -2
  301. package/test-env/components/list_group/list_group_item_extra_action.js +1 -1
  302. package/test-env/components/list_group/pinnable_list_group/pinnable_list_group.js +4 -4
  303. package/test-env/components/loading/loading_logo.js +1 -1
  304. package/test-env/components/markdown_editor/markdown_editor.js +1 -1
  305. package/test-env/components/markdown_editor/markdown_editor_drop_zone.js +1 -1
  306. package/test-env/components/markdown_editor/markdown_editor_footer.js +1 -1
  307. package/test-env/components/markdown_editor/markdown_editor_toolbar.js +1 -1
  308. package/test-env/components/page/page_header/page_header_content.js +1 -1
  309. package/test-env/components/pagination/pagination_button.js +1 -1
  310. package/test-env/components/progress/progress.js +49 -11
  311. package/test-env/components/selectable/selectable_list/selectable_list.js +1 -1
  312. package/test-env/components/selectable/selectable_list/selectable_list_item.js +1 -1
  313. package/test-env/components/selectable/selectable_templates/selectable_template_sitewide.js +1 -1
  314. package/test-env/components/table/table_header_cell.js +1 -1
  315. package/test-env/components/table/table_row.styles.js +11 -6
  316. package/test-env/components/timeline/timeline_item_icon.js +1 -1
  317. package/test-env/components/toast/global_toast_list.js +1 -1
  318. package/test-env/components/toast/toast.js +1 -1
  319. package/test-env/components/tool_tip/icon_tip.js +1 -1
  320. package/test-env/themes/amsterdam/global_styling/variables/_components.js +305 -270
@@ -0,0 +1,168 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
+ var _excluded = ["children", "className", "banner", "hideCloseButton", "onClose", "scrollableTabIndex", "size"];
4
+ /*
5
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
6
+ * or more contributor license agreements. Licensed under the Elastic License
7
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
8
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
9
+ * Side Public License, v 1.
10
+ */
11
+
12
+ import React, { useContext, Children, useEffect, useMemo, useRef } from 'react';
13
+ import classNames from 'classnames';
14
+ import { useEuiMemoizedStyles, useGeneratedHtmlId } from '../../services';
15
+ import { euiFlyoutChildStyles } from './flyout_child.styles';
16
+ import { EuiFlyoutCloseButton } from './_flyout_close_button';
17
+ import { EuiFlyoutContext } from './flyout_context';
18
+ import { EuiFlyoutBody } from './flyout_body';
19
+ import { EuiFocusTrap } from '../focus_trap';
20
+
21
+ /**
22
+ * Props used to render and configure the child flyout panel
23
+ */
24
+ import { jsx as ___EmotionJSX } from "@emotion/react";
25
+ /**
26
+ * The child flyout is a panel that appears to the left of the parent flyout.
27
+ * It is only visible when the parent flyout is open.
28
+ */
29
+ export var EuiFlyoutChild = function EuiFlyoutChild(_ref) {
30
+ var children = _ref.children,
31
+ className = _ref.className,
32
+ banner = _ref.banner,
33
+ _ref$hideCloseButton = _ref.hideCloseButton,
34
+ hideCloseButton = _ref$hideCloseButton === void 0 ? false : _ref$hideCloseButton,
35
+ onClose = _ref.onClose,
36
+ _ref$scrollableTabInd = _ref.scrollableTabIndex,
37
+ scrollableTabIndex = _ref$scrollableTabInd === void 0 ? 0 : _ref$scrollableTabInd,
38
+ _ref$size = _ref.size,
39
+ size = _ref$size === void 0 ? 's' : _ref$size,
40
+ rest = _objectWithoutProperties(_ref, _excluded);
41
+ var flyoutContext = useContext(EuiFlyoutContext);
42
+ if (!flyoutContext) {
43
+ throw new Error('EuiFlyoutChild must be used as a child of EuiFlyout.');
44
+ }
45
+ var setIsChildFlyoutOpen = flyoutContext.setIsChildFlyoutOpen,
46
+ parentSize = flyoutContext.parentSize;
47
+ useEffect(function () {
48
+ setIsChildFlyoutOpen === null || setIsChildFlyoutOpen === void 0 || setIsChildFlyoutOpen(true);
49
+ return function () {
50
+ setIsChildFlyoutOpen === null || setIsChildFlyoutOpen === void 0 || setIsChildFlyoutOpen(false);
51
+ };
52
+ }, [setIsChildFlyoutOpen]);
53
+ if (React.Children.count(children) === 0) {
54
+ console.warn('EuiFlyoutChild was rendered with no children!');
55
+ }
56
+ if (parentSize === 'm' && size === 'm') {
57
+ throw new Error('When the parent EuiFlyout size is "m", the EuiFlyoutChild size cannot be "m". Please use size "s" for the EuiFlyoutChild.');
58
+ }
59
+ var handleClose = function handleClose(event) {
60
+ setIsChildFlyoutOpen === null || setIsChildFlyoutOpen === void 0 || setIsChildFlyoutOpen(false);
61
+ onClose(event);
62
+ };
63
+ var flyoutTitleText;
64
+ var hasDescribedByBody = false;
65
+ Children.forEach(children, function (child) {
66
+ if ( /*#__PURE__*/React.isValidElement(child)) {
67
+ var _child$type;
68
+ if (((_child$type = child.type) === null || _child$type === void 0 ? void 0 : _child$type.displayName) === 'EuiFlyoutHeader') {
69
+ // Attempt to extract string content from header for ARIA
70
+ var headerChildren = child.props.children;
71
+ if (typeof headerChildren === 'string') {
72
+ flyoutTitleText = headerChildren;
73
+ } else if ( /*#__PURE__*/React.isValidElement(headerChildren) &&
74
+ // Check if props exist and children is a string
75
+ typeof headerChildren.props.children === 'string') {
76
+ flyoutTitleText = headerChildren.props.children;
77
+ } else if (Array.isArray(headerChildren)) {
78
+ // Find the first string child if headerChildren is an array
79
+ flyoutTitleText = headerChildren.find(function (cNode) {
80
+ return typeof cNode === 'string';
81
+ });
82
+ }
83
+ }
84
+ if (child.type === EuiFlyoutBody) {
85
+ hasDescribedByBody = true;
86
+ }
87
+ }
88
+ });
89
+ var titleIdGenerated = useGeneratedHtmlId({
90
+ prefix: 'euiFlyoutChildTitle'
91
+ });
92
+ var bodyIdGenerated = useGeneratedHtmlId({
93
+ prefix: 'euiFlyoutChildBody'
94
+ });
95
+ var ariaLabelledBy = flyoutTitleText ? titleIdGenerated : undefined;
96
+ var ariaDescribedBy = hasDescribedByBody ? bodyIdGenerated : undefined;
97
+ // Use existing aria-label if provided, otherwise fallback if no labelledby can be derived
98
+ var ariaLabel = rest['aria-label'] || (!ariaLabelledBy && !flyoutTitleText ? 'Flyout panel' : undefined);
99
+ var processedChildren = useMemo(function () {
100
+ return Children.map(children, function (child) {
101
+ if ( /*#__PURE__*/React.isValidElement(child)) {
102
+ var _child$type2, _child$type3;
103
+ if ((child.type === EuiFlyoutBody || ((_child$type2 = child.type) === null || _child$type2 === void 0 ? void 0 : _child$type2.displayName) === 'EuiFlyoutBody') && hasDescribedByBody) {
104
+ return /*#__PURE__*/React.cloneElement(child, {
105
+ id: bodyIdGenerated
106
+ });
107
+ }
108
+ // If EuiFlyoutHeader is found and we derived flyoutTitleText, set its ID
109
+ if (((_child$type3 = child.type) === null || _child$type3 === void 0 ? void 0 : _child$type3.displayName) === 'EuiFlyoutHeader' && flyoutTitleText && ariaLabelledBy) {
110
+ return /*#__PURE__*/React.cloneElement(child, {
111
+ id: titleIdGenerated
112
+ });
113
+ }
114
+ }
115
+ return child;
116
+ });
117
+ }, [children, bodyIdGenerated, titleIdGenerated, hasDescribedByBody, flyoutTitleText, ariaLabelledBy]);
118
+ var flyoutWrapperRef = useRef(null);
119
+ var classes = classNames('euiFlyoutChild', className);
120
+ var styles = useEuiMemoizedStyles(euiFlyoutChildStyles);
121
+ var childLayoutMode = flyoutContext.childLayoutMode,
122
+ parentFlyoutRef = flyoutContext.parentFlyoutRef;
123
+ var flyoutChildCss = [styles.euiFlyoutChild, size === 's' ? styles.s : styles.m, childLayoutMode === 'side-by-side' ? styles.sidePosition : styles.stackedPosition];
124
+ return ___EmotionJSX(EuiFocusTrap, {
125
+ returnFocus: function returnFocus() {
126
+ if (parentFlyoutRef !== null && parentFlyoutRef !== void 0 && parentFlyoutRef.current) {
127
+ parentFlyoutRef.current.focus();
128
+ return false; // We've handled focus
129
+ }
130
+ return true;
131
+ },
132
+ shards: [],
133
+ disabled: false
134
+ }, ___EmotionJSX("div", _extends({
135
+ ref: flyoutWrapperRef,
136
+ className: classes,
137
+ css: flyoutChildCss,
138
+ "data-test-subj": "euiFlyoutChild",
139
+ role: "dialog",
140
+ "aria-modal": "true",
141
+ "aria-label": ariaLabel,
142
+ "aria-labelledby": ariaLabelledBy,
143
+ "aria-describedby": ariaDescribedBy,
144
+ tabIndex: -1
145
+ }, rest), flyoutTitleText && !ariaLabelledBy && ___EmotionJSX("h2", {
146
+ id: titleIdGenerated,
147
+ className: "euiScreenReaderOnly"
148
+ }, flyoutTitleText), !hideCloseButton && ___EmotionJSX(EuiFlyoutCloseButton, {
149
+ className: "euiFlyoutChild__closeButton",
150
+ css: styles.closeButton,
151
+ onClose: handleClose,
152
+ side: "right",
153
+ closeButtonPosition: "inside",
154
+ "data-test-subj": "euiFlyoutChildCloseButton"
155
+ }), ___EmotionJSX("div", {
156
+ tabIndex: scrollableTabIndex,
157
+ className: "euiFlyoutChild__overflow",
158
+ css: styles.overflow.overflow
159
+ }, banner && ___EmotionJSX("div", {
160
+ className: "euiFlyoutChild__banner",
161
+ css: styles.banner,
162
+ "data-test-subj": "euiFlyoutChildBanner"
163
+ }, banner), ___EmotionJSX("div", {
164
+ className: "euiFlyoutChild__overflowContent",
165
+ css: styles.overflow.wrapper
166
+ }, processedChildren))));
167
+ };
168
+ EuiFlyoutChild.displayName = 'EuiFlyoutChild';
@@ -0,0 +1,31 @@
1
+ /*
2
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3
+ * or more contributor license agreements. Licensed under the Elastic License
4
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
5
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
6
+ * Side Public License, v 1.
7
+ */
8
+
9
+ import { css } from '@emotion/react';
10
+ import { logicalCSS, logicalCSSWithFallback, highContrastModeStyles, euiYScroll } from '../../global_styling';
11
+ import { composeFlyoutSizing, maxedFlyoutWidth } from './flyout.styles';
12
+ export var euiFlyoutChildStyles = function euiFlyoutChildStyles(euiThemeContext) {
13
+ var euiTheme = euiThemeContext.euiTheme;
14
+ return {
15
+ // Base styles for the child flyout
16
+ euiFlyoutChild: /*#__PURE__*/css("position:absolute;inset-block-start:0;inset-inline-start:0;block-size:100%;background:", euiTheme.colors.backgroundBaseSubdued, ";display:flex;flex-direction:column;", logicalCSSWithFallback('overflow-y', 'hidden'), " ", logicalCSS('height', '100%'), " z-index:", Number(euiTheme.levels.flyout) + 1, ";border-inline-start:", euiTheme.border.thin, ";", maxedFlyoutWidth(euiThemeContext), ";;label:euiFlyoutChild;"),
17
+ // Position variants based on screen size
18
+ sidePosition: /*#__PURE__*/css("transform:translateX(-100%);border-inline-end:", euiTheme.border.thin, ";;label:sidePosition;"),
19
+ stackedPosition: /*#__PURE__*/css("inset-inline-end:0;inline-size:100%;border-block-end:", euiTheme.border.thin, ";;label:stackedPosition;"),
20
+ s: /*#__PURE__*/css(composeFlyoutSizing(euiThemeContext, 's'), ";;label:s;"),
21
+ m: /*#__PURE__*/css(composeFlyoutSizing(euiThemeContext, 'm'), ";;label:m;"),
22
+ closeButton: /*#__PURE__*/css("position:absolute;inset-block-start:", euiTheme.size.s, ";inset-inline-end:", euiTheme.size.s, ";z-index:1;;label:closeButton;"),
23
+ overflow: {
24
+ overflow: /*#__PURE__*/css("flex-grow:1;display:flex;flex-direction:column;", euiYScroll(euiThemeContext), ";;label:overflow;"),
25
+ wrapper: /*#__PURE__*/css("display:flex;flex-direction:column;flex-grow:1;", logicalCSS('overflow-x', 'auto'), ";;label:wrapper;")
26
+ },
27
+ banner: /*#__PURE__*/css(logicalCSSWithFallback('overflow-x', 'hidden'), " ", highContrastModeStyles(euiThemeContext, {
28
+ preferred: logicalCSS('border-bottom', euiTheme.border.thin)
29
+ }), ";;label:banner;")
30
+ };
31
+ };
@@ -0,0 +1,98 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ /*
3
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
4
+ * or more contributor license agreements. Licensed under the Elastic License
5
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
6
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
7
+ * Side Public License, v 1.
8
+ */
9
+
10
+ import React, { useEffect, useMemo, useState } from 'react';
11
+ import { useEuiTheme } from '../../services';
12
+ import { EuiFlyoutContext } from './flyout_context';
13
+ import { jsx as ___EmotionJSX } from "@emotion/react";
14
+ /**
15
+ * An intermediate component between EuiFlyout and EuiFlyoutChild.
16
+ * It is responsible for managing the state of the child flyout, and passing it to EuiFlyoutContext.
17
+ * It removes the responsibility of managing child flyout state from EuiFlyout, which is especially important there might not be a child flyout.
18
+ */
19
+ export var EuiFlyoutChildProvider = function EuiFlyoutChildProvider(_ref) {
20
+ var parentSize = _ref.parentSize,
21
+ parentFlyoutRef = _ref.parentFlyoutRef,
22
+ childElement = _ref.childElement,
23
+ childrenToRender = _ref.childrenToRender,
24
+ reportIsChildOpen = _ref.reportIsChildOpen,
25
+ reportChildLayoutMode = _ref.reportChildLayoutMode;
26
+ var _useEuiTheme = useEuiTheme(),
27
+ euiTheme = _useEuiTheme.euiTheme;
28
+ var _useState = useState(false),
29
+ _useState2 = _slicedToArray(_useState, 2),
30
+ isChildFlyoutOpen = _useState2[0],
31
+ setIsChildFlyoutOpen = _useState2[1];
32
+ var _useState3 = useState(typeof window !== 'undefined' ? window.innerWidth : Infinity),
33
+ _useState4 = _slicedToArray(_useState3, 2),
34
+ windowWidth = _useState4[0],
35
+ setWindowWidth = _useState4[1];
36
+ var _useState5 = useState('side-by-side'),
37
+ _useState6 = _slicedToArray(_useState5, 2),
38
+ childLayoutMode = _useState6[0],
39
+ setChildLayoutMode = _useState6[1];
40
+
41
+ // update windowWidth on resize
42
+ useEffect(function () {
43
+ if (typeof window === 'undefined') return;
44
+ var handleResize = function handleResize() {
45
+ setWindowWidth(window.innerWidth);
46
+ };
47
+ window.addEventListener('resize', handleResize);
48
+ handleResize();
49
+ return function () {
50
+ return window.removeEventListener('resize', handleResize);
51
+ };
52
+ }, []);
53
+
54
+ // Calculate stacking breakpoint value for child flyout.
55
+ // Stacking breakpoint value is a sum of parent breakpoint value and child breakpoint value.
56
+ var stackingBreakpointValue = useMemo(function () {
57
+ var parentSizeName = parentSize;
58
+ var childSizeName = childElement.props.size || 's';
59
+ var parentNumericValue = 0;
60
+ if (parentSizeName === 's') parentNumericValue = euiTheme.breakpoint.s;else if (parentSizeName === 'm') parentNumericValue = euiTheme.breakpoint.m;
61
+ // Parent 'l' size is not allowed when child is present, so no need to check here
62
+
63
+ var childNumericValue = 0;
64
+ if (childSizeName === 's') childNumericValue = euiTheme.breakpoint.s;else if (childSizeName === 'm') childNumericValue = euiTheme.breakpoint.m;
65
+ return parentNumericValue + childNumericValue;
66
+ }, [parentSize, childElement.props.size, euiTheme.breakpoint]);
67
+
68
+ // update childLayoutMode based on windowWidth and the calculated stackingBreakpoint
69
+ useEffect(function () {
70
+ if (windowWidth >= stackingBreakpointValue) {
71
+ setChildLayoutMode('side-by-side');
72
+ } else {
73
+ setChildLayoutMode('stacked');
74
+ }
75
+ }, [windowWidth, stackingBreakpointValue]);
76
+
77
+ // report isChildFlyoutOpen changes to the parent EuiFlyout
78
+ useEffect(function () {
79
+ reportIsChildOpen(isChildFlyoutOpen);
80
+ }, [isChildFlyoutOpen, reportIsChildOpen]);
81
+
82
+ // report childLayoutMode changes to the parent EuiFlyout
83
+ useEffect(function () {
84
+ reportChildLayoutMode(childLayoutMode);
85
+ }, [childLayoutMode, reportChildLayoutMode]);
86
+ var contextValue = useMemo(function () {
87
+ return {
88
+ parentSize: parentSize,
89
+ parentFlyoutRef: parentFlyoutRef,
90
+ isChildFlyoutOpen: isChildFlyoutOpen,
91
+ setIsChildFlyoutOpen: setIsChildFlyoutOpen,
92
+ childLayoutMode: childLayoutMode
93
+ };
94
+ }, [parentSize, parentFlyoutRef, isChildFlyoutOpen, setIsChildFlyoutOpen, childLayoutMode]);
95
+ return ___EmotionJSX(EuiFlyoutContext.Provider, {
96
+ value: contextValue
97
+ }, childrenToRender);
98
+ };
@@ -0,0 +1,16 @@
1
+ /*
2
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3
+ * or more contributor license agreements. Licensed under the Elastic License
4
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
5
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
6
+ * Side Public License, v 1.
7
+ */
8
+
9
+ import { createContext } from 'react';
10
+
11
+ /**
12
+ * Context shared between the main and child flyouts
13
+ * @internal
14
+ */
15
+
16
+ export var EuiFlyoutContext = /*#__PURE__*/createContext(null);
@@ -11,4 +11,6 @@ export { EuiFlyoutBody } from './flyout_body';
11
11
  export { EuiFlyoutFooter } from './flyout_footer';
12
12
  export { EuiFlyoutHeader } from './flyout_header';
13
13
  export { euiFlyoutSlideInRight, euiFlyoutSlideInLeft } from './flyout.styles';
14
- export { EuiFlyoutResizable } from './flyout_resizable';
14
+ export { EuiFlyoutResizable } from './flyout_resizable';
15
+ export { EuiFlyoutChild } from './flyout_child';
16
+ export { EuiFlyoutSessionProvider, useEuiFlyoutSession } from './sessions';
@@ -0,0 +1,104 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
+ /*
4
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
5
+ * or more contributor license agreements. Licensed under the Elastic License
6
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
7
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
8
+ * Side Public License, v 1.
9
+ */
10
+
11
+ import React, { createContext, useContext, useReducer } from 'react';
12
+ import { EuiFlyout, EuiFlyoutChild } from '../index';
13
+ import { initialFlyoutState, flyoutReducer } from './flyout_reducer';
14
+ import { jsx as ___EmotionJSX } from "@emotion/react";
15
+ var EuiFlyoutSessionContext = /*#__PURE__*/createContext(null);
16
+
17
+ /**
18
+ * Accesses the state data and dispatch function from the context of EuiFlyoutSessionProvider
19
+ * Use this if you need to debug the state or need direct access to the dispatch function, otherwise use useEuiFlyoutSession hook.
20
+ */
21
+ export var useEuiFlyoutSessionContext = function useEuiFlyoutSessionContext() {
22
+ var context = useContext(EuiFlyoutSessionContext);
23
+ if (!context) {
24
+ throw new Error('useEuiFlyoutSessionContext must be used within a EuiFlyoutSessionProvider');
25
+ }
26
+ return context;
27
+ };
28
+
29
+ /**
30
+ * FlyoutProvider is a component that provides a context for Flyout components.
31
+ * It is used to manage the state of the Flyout and its child.
32
+ * It also renders the Flyout and FlyoutChild components.
33
+ *
34
+ * @param children - The children of the FlyoutProvider component.
35
+ * @param renderMainFlyoutContent - A function that renders the content of the main Flyout.
36
+ * @param renderChildFlyoutContent - A function that renders the content of the child Flyout.
37
+ * @returns The FlyoutProvider component.
38
+ */
39
+ export var EuiFlyoutSessionProvider = function EuiFlyoutSessionProvider(_ref) {
40
+ var children = _ref.children,
41
+ renderMainFlyoutContent = _ref.renderMainFlyoutContent,
42
+ renderChildFlyoutContent = _ref.renderChildFlyoutContent;
43
+ var _useReducer = useReducer(flyoutReducer, initialFlyoutState),
44
+ _useReducer2 = _slicedToArray(_useReducer, 2),
45
+ state = _useReducer2[0],
46
+ dispatch = _useReducer2[1];
47
+ var activeFlyoutGroup = state.activeFlyoutGroup;
48
+ var handleClose = function handleClose() {
49
+ dispatch({
50
+ type: 'CLEAR_HISTORY'
51
+ });
52
+ };
53
+ var handleCloseChild = function handleCloseChild() {
54
+ dispatch({
55
+ type: 'CLOSE_CHILD_FLYOUT'
56
+ });
57
+ };
58
+ var mainFlyoutContentNode = null;
59
+ var childFlyoutContentNode = null;
60
+ if (activeFlyoutGroup) {
61
+ var mainRenderContext = {
62
+ flyoutProps: activeFlyoutGroup.config.mainFlyoutProps || {},
63
+ flyoutSize: activeFlyoutGroup.config.mainSize,
64
+ flyoutType: 'main',
65
+ dispatch: dispatch,
66
+ activeFlyoutGroup: activeFlyoutGroup,
67
+ onCloseFlyout: handleClose,
68
+ onCloseChildFlyout: handleCloseChild,
69
+ meta: activeFlyoutGroup.meta
70
+ };
71
+ mainFlyoutContentNode = renderMainFlyoutContent(mainRenderContext);
72
+ if (activeFlyoutGroup.isChildOpen && renderChildFlyoutContent) {
73
+ var childRenderContext = {
74
+ flyoutProps: activeFlyoutGroup.config.childFlyoutProps || {},
75
+ flyoutSize: activeFlyoutGroup.config.childSize,
76
+ flyoutType: 'child',
77
+ dispatch: dispatch,
78
+ activeFlyoutGroup: activeFlyoutGroup,
79
+ onCloseFlyout: handleClose,
80
+ onCloseChildFlyout: handleCloseChild,
81
+ meta: activeFlyoutGroup.meta
82
+ };
83
+ childFlyoutContentNode = renderChildFlyoutContent(childRenderContext);
84
+ } else if (activeFlyoutGroup.isChildOpen && !renderChildFlyoutContent) {
85
+ console.warn('EuiFlyoutSessionProvider: A child flyout is open, but renderChildFlyoutContent was not provided.');
86
+ }
87
+ }
88
+ var config = activeFlyoutGroup === null || activeFlyoutGroup === void 0 ? void 0 : activeFlyoutGroup.config;
89
+ var flyoutPropsMain = (config === null || config === void 0 ? void 0 : config.mainFlyoutProps) || {};
90
+ var flyoutPropsChild = (config === null || config === void 0 ? void 0 : config.childFlyoutProps) || {};
91
+ return ___EmotionJSX(EuiFlyoutSessionContext.Provider, {
92
+ value: {
93
+ state: state,
94
+ dispatch: dispatch
95
+ }
96
+ }, children, (activeFlyoutGroup === null || activeFlyoutGroup === void 0 ? void 0 : activeFlyoutGroup.isMainOpen) && ___EmotionJSX(EuiFlyout, _extends({
97
+ onClose: handleClose,
98
+ size: activeFlyoutGroup.config.mainSize,
99
+ ownFocus: !activeFlyoutGroup.isChildOpen
100
+ }, flyoutPropsMain), mainFlyoutContentNode, activeFlyoutGroup.isChildOpen && childFlyoutContentNode && ___EmotionJSX(EuiFlyoutChild, _extends({
101
+ onClose: handleCloseChild,
102
+ size: activeFlyoutGroup.config.childSize
103
+ }, flyoutPropsChild), childFlyoutContentNode)));
104
+ };
@@ -0,0 +1,209 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
+ /*
6
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
7
+ * or more contributor license agreements. Licensed under the Elastic License
8
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
9
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
10
+ * Side Public License, v 1.
11
+ */
12
+
13
+ /**
14
+ * Initial state for the flyout session
15
+ * @internal
16
+ */
17
+ export var initialFlyoutState = {
18
+ activeFlyoutGroup: null,
19
+ history: []
20
+ };
21
+
22
+ // Helper to apply size constraints for flyout groups
23
+ var applySizeConstraints = function applySizeConstraints(group) {
24
+ var originalMainSize = group.config.mainSize;
25
+ var originalChildSize = group.config.childSize;
26
+ var newMainSize = originalMainSize;
27
+ var newChildSize = originalChildSize;
28
+ if (group.isChildOpen) {
29
+ if (originalMainSize === 'l') {
30
+ newMainSize = 'm'; // If main is 'l' with child, it must be converted to 'm'
31
+ newChildSize = 's'; // And child must be 's'
32
+ } else if (originalMainSize === 'm' && originalChildSize !== 's') {
33
+ newChildSize = 's'; // If main is 'm' with child, child must be 's'
34
+ }
35
+ }
36
+
37
+ // If sizes haven't changed, return the original group to preserve references
38
+ if (newMainSize === originalMainSize && newChildSize === originalChildSize) {
39
+ return group;
40
+ }
41
+ return _objectSpread(_objectSpread({}, group), {}, {
42
+ config: _objectSpread(_objectSpread({}, group.config), {}, {
43
+ mainSize: newMainSize,
44
+ childSize: newChildSize
45
+ })
46
+ });
47
+ };
48
+
49
+ /**
50
+ * Flyout reducer
51
+ * Controls state changes for flyout groups
52
+ */
53
+ export function flyoutReducer(state, action) {
54
+ switch (action.type) {
55
+ case 'OPEN_MAIN_FLYOUT':
56
+ {
57
+ var _state$activeFlyoutGr, _state$activeFlyoutGr2;
58
+ var _action$payload = action.payload,
59
+ size = _action$payload.size,
60
+ flyoutProps = _action$payload.flyoutProps,
61
+ onUnmount = _action$payload.onUnmount;
62
+ var newHistory = _toConsumableArray(state.history);
63
+ if (state.activeFlyoutGroup) {
64
+ newHistory.push(state.activeFlyoutGroup);
65
+ }
66
+ var newActiveGroup = {
67
+ isMainOpen: true,
68
+ isChildOpen: false,
69
+ config: {
70
+ mainSize: size,
71
+ childSize: 's',
72
+ mainFlyoutProps: flyoutProps,
73
+ childFlyoutProps: {}
74
+ },
75
+ mainOnUnmount: onUnmount,
76
+ childOnUnmount: undefined,
77
+ meta: action.payload.meta !== undefined ? ((_state$activeFlyoutGr = state.activeFlyoutGroup) === null || _state$activeFlyoutGr === void 0 ? void 0 : _state$activeFlyoutGr.meta) !== undefined ? _objectSpread(_objectSpread({}, state.activeFlyoutGroup.meta), action.payload.meta) : action.payload.meta : (_state$activeFlyoutGr2 = state.activeFlyoutGroup) === null || _state$activeFlyoutGr2 === void 0 ? void 0 : _state$activeFlyoutGr2.meta
78
+ };
79
+ return {
80
+ activeFlyoutGroup: applySizeConstraints(newActiveGroup),
81
+ history: newHistory
82
+ };
83
+ }
84
+ case 'OPEN_CHILD_FLYOUT':
85
+ {
86
+ if (!state.activeFlyoutGroup || !state.activeFlyoutGroup.isMainOpen) {
87
+ console.warn('Cannot open child flyout: main flyout is not open or no active group.');
88
+ return state;
89
+ }
90
+ var _action$payload2 = action.payload,
91
+ _size = _action$payload2.size,
92
+ _flyoutProps = _action$payload2.flyoutProps,
93
+ _onUnmount = _action$payload2.onUnmount;
94
+ var updatedActiveGroup = _objectSpread(_objectSpread({}, state.activeFlyoutGroup), {}, {
95
+ isChildOpen: true,
96
+ config: _objectSpread(_objectSpread({}, state.activeFlyoutGroup.config), {}, {
97
+ childSize: _size,
98
+ childFlyoutProps: _flyoutProps
99
+ }),
100
+ childOnUnmount: _onUnmount,
101
+ meta: action.payload.meta !== undefined ? state.activeFlyoutGroup.meta !== undefined ? _objectSpread(_objectSpread({}, state.activeFlyoutGroup.meta), action.payload.meta) : action.payload.meta : state.activeFlyoutGroup.meta
102
+ });
103
+ return {
104
+ history: state.history,
105
+ activeFlyoutGroup: applySizeConstraints(updatedActiveGroup)
106
+ };
107
+ }
108
+ case 'OPEN_FLYOUT_GROUP':
109
+ {
110
+ var _action$payload3 = action.payload,
111
+ main = _action$payload3.main,
112
+ child = _action$payload3.child,
113
+ meta = _action$payload3.meta;
114
+ var _newHistory = _toConsumableArray(state.history);
115
+ if (state.activeFlyoutGroup) {
116
+ _newHistory.push(state.activeFlyoutGroup);
117
+ }
118
+
119
+ // Create the new active group with both main and child flyouts open
120
+ var _newActiveGroup = {
121
+ isMainOpen: true,
122
+ isChildOpen: true,
123
+ config: {
124
+ mainSize: main.size,
125
+ childSize: child.size,
126
+ mainFlyoutProps: main.flyoutProps,
127
+ childFlyoutProps: child.flyoutProps
128
+ },
129
+ mainOnUnmount: main.onUnmount,
130
+ childOnUnmount: child.onUnmount,
131
+ meta: meta
132
+ };
133
+ return {
134
+ activeFlyoutGroup: applySizeConstraints(_newActiveGroup),
135
+ history: _newHistory
136
+ };
137
+ }
138
+ case 'CLOSE_CHILD_FLYOUT':
139
+ {
140
+ var _state$activeFlyoutGr3, _state$activeFlyoutGr4;
141
+ if (!state.activeFlyoutGroup || !state.activeFlyoutGroup.isChildOpen) {
142
+ console.warn('Cannot close child flyout: no child is open or no active group.');
143
+ return state;
144
+ }
145
+ (_state$activeFlyoutGr3 = (_state$activeFlyoutGr4 = state.activeFlyoutGroup).childOnUnmount) === null || _state$activeFlyoutGr3 === void 0 || _state$activeFlyoutGr3.call(_state$activeFlyoutGr4);
146
+ var _updatedActiveGroup = _objectSpread(_objectSpread({}, state.activeFlyoutGroup), {}, {
147
+ isChildOpen: false,
148
+ config: _objectSpread(_objectSpread({}, state.activeFlyoutGroup.config), {}, {
149
+ childFlyoutProps: {}
150
+ }),
151
+ childOnUnmount: undefined
152
+ });
153
+ return {
154
+ history: state.history,
155
+ activeFlyoutGroup: applySizeConstraints(_updatedActiveGroup)
156
+ };
157
+ }
158
+ case 'GO_BACK':
159
+ {
160
+ var _state$activeFlyoutGr7, _state$activeFlyoutGr8;
161
+ if (!state.activeFlyoutGroup) return initialFlyoutState;
162
+ if (state.activeFlyoutGroup.isChildOpen) {
163
+ var _state$activeFlyoutGr5, _state$activeFlyoutGr6;
164
+ (_state$activeFlyoutGr5 = (_state$activeFlyoutGr6 = state.activeFlyoutGroup).childOnUnmount) === null || _state$activeFlyoutGr5 === void 0 || _state$activeFlyoutGr5.call(_state$activeFlyoutGr6);
165
+ }
166
+ (_state$activeFlyoutGr7 = (_state$activeFlyoutGr8 = state.activeFlyoutGroup).mainOnUnmount) === null || _state$activeFlyoutGr7 === void 0 || _state$activeFlyoutGr7.call(_state$activeFlyoutGr8);
167
+
168
+ // Restore from history or return to initial state
169
+ if (state.history.length > 0) {
170
+ var _newHistory2 = _toConsumableArray(state.history);
171
+ var previousGroup = _newHistory2.pop();
172
+ return {
173
+ activeFlyoutGroup: previousGroup ? applySizeConstraints(previousGroup) : null,
174
+ history: _newHistory2
175
+ };
176
+ } else {
177
+ return initialFlyoutState;
178
+ }
179
+ }
180
+ case 'UPDATE_ACTIVE_FLYOUT_CONFIG':
181
+ {
182
+ if (!state.activeFlyoutGroup) {
183
+ console.warn('Cannot update config: no active flyout group.');
184
+ return state;
185
+ }
186
+ var _action$payload4 = action.payload,
187
+ configChanges = _action$payload4.configChanges,
188
+ newMainOnUnmount = _action$payload4.newMainOnUnmount,
189
+ newChildOnUnmount = _action$payload4.newChildOnUnmount;
190
+ var _updatedActiveGroup2 = _objectSpread(_objectSpread({}, state.activeFlyoutGroup), {}, {
191
+ config: _objectSpread(_objectSpread({}, state.activeFlyoutGroup.config), configChanges),
192
+ mainOnUnmount: newMainOnUnmount !== undefined ? newMainOnUnmount : state.activeFlyoutGroup.mainOnUnmount,
193
+ childOnUnmount: newChildOnUnmount !== undefined ? newChildOnUnmount : state.activeFlyoutGroup.childOnUnmount
194
+ });
195
+ var finalUpdatedActiveGroup = applySizeConstraints(_updatedActiveGroup2);
196
+ return _objectSpread(_objectSpread({}, state), {}, {
197
+ activeFlyoutGroup: finalUpdatedActiveGroup
198
+ });
199
+ }
200
+ case 'CLEAR_HISTORY':
201
+ // Clear the history and remove the active group
202
+ return {
203
+ activeFlyoutGroup: null,
204
+ history: []
205
+ };
206
+ default:
207
+ return state;
208
+ }
209
+ }
@@ -0,0 +1,10 @@
1
+ /*
2
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3
+ * or more contributor license agreements. Licensed under the Elastic License
4
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
5
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
6
+ * Side Public License, v 1.
7
+ */
8
+
9
+ export { EuiFlyoutSessionProvider, useEuiFlyoutSessionContext } from './flyout_provider';
10
+ export { useEuiFlyoutSession } from './use_eui_flyout';
@@ -0,0 +1 @@
1
+ export {};