@elastic/eui 110.0.0 → 111.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/components/avatar/avatar.js +1 -1
- package/es/components/badge/badge.js +1 -1
- package/es/components/badge/beta_badge/beta_badge.js +1 -1
- package/es/components/basic_table/basic_table.js +36 -55
- package/es/components/basic_table/in_memory_table.js +6 -6
- package/es/components/beacon/beacon.styles.js +1 -1
- package/es/components/button/button_display/_button_display_content.js +1 -1
- package/es/components/button/button_empty/button_empty.js +1 -1
- package/es/components/button/button_group/button_group.js +1 -1
- package/es/components/button/button_group/button_group_button.js +1 -1
- package/es/components/button/button_icon/button_icon.js +1 -1
- package/es/components/button/index.js +2 -1
- package/es/components/button/split_button/index.js +10 -0
- package/es/components/button/split_button/split_button.js +120 -0
- package/es/components/button/split_button/split_button.styles.js +51 -0
- package/es/components/button/split_button/split_button_actions.js +115 -0
- package/{optimize/es/components/flyout/flyout_context.js → es/components/button/split_button/split_button_context.js} +5 -7
- package/es/components/call_out/call_out.js +1 -1
- package/es/components/card/card.js +1 -1
- package/es/components/collapsible_nav/collapsible_nav.js +20 -101
- package/es/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +1 -1
- package/es/components/collapsible_nav_beta/_kibana_solution/collapsible_nav_kibana_solution.js +1 -1
- package/es/components/collapsible_nav_beta/collapsible_nav_beta.js +1 -0
- package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +1 -1
- package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +2 -2
- package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +2 -2
- package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +4 -4
- package/es/components/comment_list/comment.js +2 -2
- package/es/components/comment_list/comment_event.js +1 -1
- package/es/components/comment_list/comment_list.js +2 -2
- package/es/components/comment_list/comment_timeline.js +1 -1
- package/es/components/context_menu/context_menu_item.js +1 -1
- package/es/components/datagrid/body/cell/data_grid_cell.js +12 -12
- package/es/components/datagrid/body/data_grid_body.js +7 -7
- package/es/components/datagrid/body/data_grid_body_custom.js +7 -7
- package/es/components/datagrid/body/data_grid_body_virtualized.js +7 -7
- package/es/components/datagrid/body/header/data_grid_header_cell.js +6 -6
- package/es/components/datagrid/controls/column_sorting.js +7 -7
- package/es/components/datagrid/controls/column_sorting_draggable.js +1 -1
- package/es/components/datagrid/controls/data_grid_toolbar_control.js +1 -1
- package/es/components/datagrid/controls/fullscreen_selector.styles.js +1 -1
- package/es/components/datagrid/utils/in_memory.js +6 -6
- package/es/components/date_picker/date_picker.js +2 -2
- package/es/components/date_picker/date_picker_range.js +1 -1
- package/es/components/empty_prompt/empty_prompt.js +2 -2
- package/es/components/flex/flex_group.js +1 -1
- package/es/components/flyout/_flyout_overlay.js +52 -0
- package/es/components/flyout/_flyout_resize_button.js +32 -0
- package/es/components/flyout/{flyout_resizable.styles.js → _flyout_resize_button.styles.js} +11 -11
- package/es/components/flyout/const.js +42 -0
- package/es/components/flyout/flyout.component.js +481 -0
- package/es/components/flyout/flyout.js +77 -379
- package/es/components/flyout/flyout.styles.js +106 -7
- package/es/components/flyout/flyout_menu.js +241 -0
- package/es/components/flyout/flyout_menu.styles.js +19 -0
- package/es/components/flyout/{flyout_context.js → flyout_menu_context.js} +1 -7
- package/es/components/flyout/flyout_parent_context.js +36 -0
- package/es/components/flyout/flyout_resizable.js +33 -144
- package/es/components/flyout/hooks.js +25 -0
- package/es/components/flyout/index.js +5 -2
- package/es/components/flyout/manager/actions.js +153 -0
- package/es/components/flyout/manager/activity_stage.js +95 -0
- package/es/components/flyout/manager/const.js +56 -0
- package/es/components/flyout/manager/context.js +33 -0
- package/es/components/flyout/manager/flyout_child.js +75 -0
- package/es/components/flyout/manager/flyout_main.js +65 -0
- package/es/components/flyout/manager/flyout_main.styles.js +25 -0
- package/es/components/flyout/manager/flyout_managed.js +227 -0
- package/es/components/flyout/manager/flyout_managed.styles.js +69 -0
- package/es/components/flyout/manager/hooks.js +55 -0
- package/es/components/flyout/manager/index.js +31 -0
- package/es/components/flyout/manager/layout_mode.js +167 -0
- package/es/components/flyout/manager/provider.js +57 -0
- package/es/components/flyout/manager/reducer.js +320 -0
- package/es/components/flyout/manager/selectors.js +116 -0
- package/es/components/flyout/manager/store.js +113 -0
- package/es/components/flyout/manager/validation.js +85 -0
- package/es/components/flyout/use_flyout_resizable.js +149 -0
- package/es/components/flyout/use_flyout_z_index.js +46 -0
- package/es/components/form/field_number/field_number.js +2 -2
- package/es/components/form/field_text/field_text.js +2 -2
- package/es/components/form/form_control_button/form_control_button.js +1 -1
- package/es/components/form/form_control_layout/form_control_layout.js +2 -2
- package/es/components/form/form_control_layout/form_control_layout_custom_icon.js +1 -1
- package/es/components/form/form_control_layout/form_control_layout_icons.js +2 -2
- package/es/components/form/text_area/text_area.js +2 -2
- package/es/components/header/header_links/header_link.js +1 -1
- package/es/components/header/header_links/header_links.js +1 -1
- package/es/components/header/header_logo/header_logo.js +1 -1
- package/es/components/header/header_section/header_section_item_button.js +1 -1
- package/es/components/horizontal_rule/horizontal_rule.js +1 -1
- package/es/components/icon/assets/agentBuilderRobot.js +37 -0
- package/es/components/icon/assets/cross_project_search.js +35 -0
- package/es/components/icon/assets/dashed_circle.js +35 -0
- package/es/components/icon/assets/product_robot.js +37 -0
- package/es/components/icon/icon.js +1 -1
- package/es/components/icon/icon_map.js +3 -0
- package/es/components/key_pad_menu/key_pad_menu_item.js +1 -1
- package/es/components/link/external_link_icon.js +6 -3
- package/es/components/list_group/list_group.js +2 -2
- package/es/components/list_group/list_group_item.js +2 -2
- package/es/components/list_group/list_group_item_extra_action.js +1 -1
- package/es/components/list_group/pinnable_list_group/pinnable_list_group.js +4 -4
- package/es/components/loading/loading_logo.js +1 -1
- package/es/components/markdown_editor/markdown_editor.js +1 -1
- package/es/components/markdown_editor/markdown_editor_drop_zone.js +1 -1
- package/es/components/markdown_editor/markdown_editor_footer.js +1 -1
- package/es/components/markdown_editor/markdown_editor_toolbar.js +1 -1
- package/es/components/overlay_mask/overlay_mask.js +13 -3
- package/es/components/overlay_mask/overlay_mask.styles.js +11 -2
- package/es/components/page/page_header/page_header_content.js +2 -2
- package/es/components/pagination/pagination_button.js +1 -1
- package/es/components/provider/provider.js +2 -1
- package/es/components/search_bar/search_bar.js +1 -1
- package/es/components/selectable/selectable_list/selectable_list.js +1 -1
- package/es/components/selectable/selectable_list/selectable_list_item.js +1 -1
- package/es/components/selectable/selectable_templates/selectable_template_sitewide.js +1 -1
- package/es/components/spacer/spacer.js +1 -1
- package/es/components/table/table_header_cell.js +1 -1
- package/es/components/timeline/timeline_item_icon.js +1 -1
- package/es/components/toast/global_toast_list.js +1 -1
- package/es/components/toast/toast.js +1 -1
- package/es/components/tool_tip/icon_tip.js +1 -1
- package/es/components/tour/tour_step_indicator.js +8 -3
- package/es/global_styling/mixins/_button.js +28 -9
- package/es/global_styling/mixins/_container_query.js +106 -0
- package/es/global_styling/mixins/index.js +1 -0
- package/es/services/container_query/container_query_hook.js +64 -0
- package/es/{components/flyout/sessions → services/container_query}/index.js +1 -2
- package/es/services/container_query/match_container.js +242 -0
- package/eui.d.ts +7558 -6642
- package/i18ntokens.json +1438 -1384
- package/lib/components/avatar/avatar.js +1 -1
- package/lib/components/badge/badge.js +1 -1
- package/lib/components/badge/beta_badge/beta_badge.js +1 -1
- package/lib/components/basic_table/basic_table.js +36 -55
- package/lib/components/basic_table/in_memory_table.js +6 -6
- package/lib/components/beacon/beacon.styles.js +1 -1
- package/lib/components/button/button_display/_button_display_content.js +1 -1
- package/lib/components/button/button_empty/button_empty.js +1 -1
- package/lib/components/button/button_group/button_group.js +1 -1
- package/lib/components/button/button_group/button_group_button.js +1 -1
- package/lib/components/button/button_icon/button_icon.js +1 -1
- package/lib/components/button/index.js +8 -1
- package/lib/components/button/split_button/index.js +25 -0
- package/lib/components/button/split_button/split_button.js +129 -0
- package/lib/components/button/split_button/split_button.styles.js +55 -0
- package/lib/components/button/split_button/split_button_actions.js +123 -0
- package/{optimize/lib/components/flyout/flyout_context.js → lib/components/button/split_button/split_button_context.js} +6 -7
- package/lib/components/call_out/call_out.js +1 -1
- package/lib/components/card/card.js +1 -1
- package/lib/components/collapsible_nav/collapsible_nav.js +20 -101
- package/lib/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +1 -1
- package/lib/components/collapsible_nav_beta/_kibana_solution/collapsible_nav_kibana_solution.js +1 -1
- package/lib/components/collapsible_nav_beta/collapsible_nav_beta.js +1 -0
- package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +1 -1
- package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +2 -2
- package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +2 -2
- package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +4 -4
- package/lib/components/comment_list/comment.js +2 -2
- package/lib/components/comment_list/comment_event.js +1 -1
- package/lib/components/comment_list/comment_list.js +2 -2
- package/lib/components/comment_list/comment_timeline.js +1 -1
- package/lib/components/context_menu/context_menu_item.js +1 -1
- package/lib/components/datagrid/body/cell/data_grid_cell.js +12 -12
- package/lib/components/datagrid/body/data_grid_body.js +7 -7
- package/lib/components/datagrid/body/data_grid_body_custom.js +7 -7
- package/lib/components/datagrid/body/data_grid_body_virtualized.js +7 -7
- package/lib/components/datagrid/body/header/data_grid_header_cell.js +6 -6
- package/lib/components/datagrid/controls/column_sorting.js +7 -7
- package/lib/components/datagrid/controls/column_sorting_draggable.js +1 -1
- package/lib/components/datagrid/controls/data_grid_toolbar_control.js +1 -1
- package/lib/components/datagrid/controls/fullscreen_selector.styles.js +1 -1
- package/lib/components/datagrid/utils/in_memory.js +6 -6
- package/lib/components/date_picker/date_picker.js +2 -2
- package/lib/components/date_picker/date_picker_range.js +1 -1
- package/lib/components/empty_prompt/empty_prompt.js +2 -2
- package/lib/components/flex/flex_group.js +1 -1
- package/lib/components/flyout/_flyout_overlay.js +59 -0
- package/lib/components/flyout/_flyout_resize_button.js +38 -0
- package/{test-env/components/flyout/flyout_resizable.styles.js → lib/components/flyout/_flyout_resize_button.styles.js} +12 -12
- package/lib/components/flyout/const.js +49 -0
- package/lib/components/flyout/flyout.component.js +488 -0
- package/lib/components/flyout/flyout.js +102 -379
- package/lib/components/flyout/flyout.styles.js +106 -7
- package/lib/components/flyout/flyout_menu.js +243 -0
- package/lib/components/flyout/flyout_menu.styles.js +25 -0
- package/lib/components/flyout/{flyout_context.js → flyout_menu_context.js} +2 -7
- package/lib/components/flyout/flyout_parent_context.js +43 -0
- package/lib/components/flyout/flyout_resizable.js +36 -147
- package/lib/components/flyout/hooks.js +30 -0
- package/lib/components/flyout/index.js +21 -14
- package/lib/components/flyout/manager/actions.js +159 -0
- package/lib/components/flyout/manager/activity_stage.js +101 -0
- package/lib/components/flyout/manager/const.js +62 -0
- package/lib/components/flyout/manager/context.js +41 -0
- package/lib/components/flyout/manager/flyout_child.js +80 -0
- package/lib/components/flyout/manager/flyout_main.js +70 -0
- package/lib/components/flyout/manager/flyout_main.styles.js +31 -0
- package/lib/components/flyout/manager/flyout_managed.js +233 -0
- package/lib/components/flyout/manager/flyout_managed.styles.js +73 -0
- package/lib/components/flyout/manager/hooks.js +131 -0
- package/lib/components/flyout/manager/index.js +168 -0
- package/lib/components/flyout/manager/layout_mode.js +171 -0
- package/lib/components/flyout/manager/provider.js +63 -0
- package/lib/components/flyout/manager/reducer.js +325 -0
- package/lib/components/flyout/manager/selectors.js +122 -0
- package/lib/components/flyout/manager/store.js +120 -0
- package/lib/components/flyout/manager/validation.js +94 -0
- package/lib/components/flyout/use_flyout_resizable.js +153 -0
- package/lib/components/flyout/use_flyout_z_index.js +51 -0
- package/lib/components/form/field_number/field_number.js +2 -2
- package/lib/components/form/field_text/field_text.js +2 -2
- package/lib/components/form/form_control_button/form_control_button.js +1 -1
- package/lib/components/form/form_control_layout/form_control_layout.js +2 -2
- package/lib/components/form/form_control_layout/form_control_layout_custom_icon.js +1 -1
- package/lib/components/form/form_control_layout/form_control_layout_icons.js +2 -2
- package/lib/components/form/text_area/text_area.js +2 -2
- package/lib/components/header/header_links/header_link.js +1 -1
- package/lib/components/header/header_links/header_links.js +1 -1
- package/lib/components/header/header_logo/header_logo.js +1 -1
- package/lib/components/header/header_section/header_section_item_button.js +1 -1
- package/lib/components/horizontal_rule/horizontal_rule.js +1 -1
- package/lib/components/icon/assets/agentBuilderRobot.js +44 -0
- package/lib/components/icon/assets/cross_project_search.js +42 -0
- package/lib/components/icon/assets/dashed_circle.js +42 -0
- package/lib/components/icon/assets/product_robot.js +44 -0
- package/lib/components/icon/icon.js +1 -1
- package/lib/components/icon/icon_map.js +3 -0
- package/lib/components/icon/svgs/cross_project_search.svg +3 -0
- package/lib/components/icon/svgs/dashed_circle.svg +5 -0
- package/lib/components/icon/svgs/product_robot.svg +4 -0
- package/lib/components/key_pad_menu/key_pad_menu_item.js +1 -1
- package/lib/components/link/external_link_icon.js +6 -3
- package/lib/components/list_group/list_group.js +2 -2
- package/lib/components/list_group/list_group_item.js +2 -2
- package/lib/components/list_group/list_group_item_extra_action.js +1 -1
- package/lib/components/list_group/pinnable_list_group/pinnable_list_group.js +4 -4
- package/lib/components/loading/loading_logo.js +1 -1
- package/lib/components/markdown_editor/markdown_editor.js +1 -1
- package/lib/components/markdown_editor/markdown_editor_drop_zone.js +1 -1
- package/lib/components/markdown_editor/markdown_editor_footer.js +1 -1
- package/lib/components/markdown_editor/markdown_editor_toolbar.js +1 -1
- package/lib/components/overlay_mask/overlay_mask.js +12 -2
- package/lib/components/overlay_mask/overlay_mask.styles.js +11 -4
- package/lib/components/page/page_header/page_header_content.js +2 -2
- package/lib/components/pagination/pagination_button.js +1 -1
- package/lib/components/provider/provider.js +2 -1
- package/lib/components/search_bar/search_bar.js +1 -1
- package/lib/components/selectable/selectable_list/selectable_list.js +1 -1
- package/lib/components/selectable/selectable_list/selectable_list_item.js +1 -1
- package/lib/components/selectable/selectable_templates/selectable_template_sitewide.js +1 -1
- package/lib/components/spacer/spacer.js +1 -1
- package/lib/components/table/table_header_cell.js +1 -1
- package/lib/components/timeline/timeline_item_icon.js +1 -1
- package/lib/components/toast/global_toast_list.js +1 -1
- package/lib/components/toast/toast.js +1 -1
- package/lib/components/tool_tip/icon_tip.js +1 -1
- package/lib/components/tour/tour_step_indicator.js +8 -3
- package/lib/global_styling/mixins/_button.js +29 -10
- package/lib/global_styling/mixins/_container_query.js +112 -0
- package/lib/global_styling/mixins/index.js +11 -0
- package/lib/services/container_query/container_query_hook.js +67 -0
- package/lib/services/container_query/index.js +16 -0
- package/lib/services/container_query/match_container.js +243 -0
- package/optimize/es/components/basic_table/basic_table.js +30 -49
- package/optimize/es/components/beacon/beacon.styles.js +1 -1
- package/optimize/es/components/button/index.js +2 -1
- package/optimize/es/components/button/split_button/index.js +10 -0
- package/optimize/es/components/button/split_button/split_button.js +98 -0
- package/optimize/es/components/button/split_button/split_button.styles.js +51 -0
- package/optimize/es/components/button/split_button/split_button_actions.js +89 -0
- package/optimize/es/components/button/split_button/split_button_context.js +14 -0
- package/optimize/es/components/collapsible_nav/collapsible_nav.js +1 -0
- package/optimize/es/components/collapsible_nav_beta/collapsible_nav_beta.js +1 -0
- package/optimize/es/components/datagrid/controls/fullscreen_selector.styles.js +1 -1
- package/optimize/es/components/empty_prompt/empty_prompt.js +1 -1
- package/optimize/es/components/flex/flex_group.js +1 -1
- package/optimize/es/components/flyout/_flyout_overlay.js +52 -0
- package/optimize/es/components/flyout/_flyout_resize_button.js +31 -0
- package/optimize/es/components/flyout/{flyout_resizable.styles.js → _flyout_resize_button.styles.js} +11 -11
- package/optimize/es/components/flyout/const.js +42 -0
- package/optimize/es/components/flyout/flyout.component.js +469 -0
- package/optimize/es/components/flyout/flyout.js +53 -349
- package/optimize/es/components/flyout/flyout.styles.js +103 -7
- package/optimize/es/components/flyout/flyout_menu.js +162 -0
- package/optimize/es/components/flyout/flyout_menu.styles.js +19 -0
- package/optimize/es/components/flyout/flyout_menu_context.js +10 -0
- package/optimize/es/components/flyout/flyout_parent_context.js +36 -0
- package/optimize/es/components/flyout/flyout_resizable.js +7 -138
- package/optimize/es/components/flyout/hooks.js +25 -0
- package/optimize/es/components/flyout/index.js +5 -2
- package/optimize/es/components/flyout/manager/actions.js +153 -0
- package/optimize/es/components/flyout/manager/activity_stage.js +95 -0
- package/optimize/es/components/flyout/manager/const.js +56 -0
- package/optimize/es/components/flyout/manager/context.js +33 -0
- package/optimize/es/components/flyout/manager/flyout_child.js +71 -0
- package/optimize/es/components/flyout/manager/flyout_main.js +61 -0
- package/optimize/es/components/flyout/manager/flyout_main.styles.js +25 -0
- package/optimize/es/components/flyout/manager/flyout_managed.js +223 -0
- package/optimize/es/components/flyout/manager/flyout_managed.styles.js +69 -0
- package/optimize/es/components/flyout/manager/hooks.js +55 -0
- package/optimize/es/components/flyout/manager/index.js +31 -0
- package/optimize/es/components/flyout/manager/layout_mode.js +162 -0
- package/optimize/es/components/flyout/manager/provider.js +53 -0
- package/optimize/es/components/flyout/manager/reducer.js +312 -0
- package/optimize/es/components/flyout/manager/selectors.js +116 -0
- package/optimize/es/components/flyout/manager/store.js +113 -0
- package/optimize/es/components/flyout/manager/types.js +1 -0
- package/optimize/es/components/flyout/manager/validation.js +85 -0
- package/optimize/es/components/flyout/types.js +1 -0
- package/optimize/es/components/flyout/use_flyout_resizable.js +144 -0
- package/optimize/es/components/flyout/use_flyout_z_index.js +46 -0
- package/optimize/es/components/horizontal_rule/horizontal_rule.js +1 -1
- package/optimize/es/components/icon/assets/agentBuilderRobot.js +36 -0
- package/optimize/es/components/icon/assets/cross_project_search.js +34 -0
- package/optimize/es/components/icon/assets/dashed_circle.js +34 -0
- package/optimize/es/components/icon/assets/product_robot.js +36 -0
- package/optimize/es/components/icon/icon_map.js +3 -0
- package/optimize/es/components/link/external_link_icon.js +6 -3
- package/optimize/es/components/overlay_mask/overlay_mask.js +13 -3
- package/optimize/es/components/overlay_mask/overlay_mask.styles.js +11 -2
- package/optimize/es/components/page/page_header/page_header_content.js +1 -1
- package/optimize/es/components/provider/provider.js +2 -1
- package/optimize/es/components/search_bar/search_bar.js +1 -1
- package/optimize/es/components/spacer/spacer.js +1 -1
- package/optimize/es/components/tour/tour_step_indicator.js +8 -3
- package/optimize/es/global_styling/mixins/_button.js +28 -9
- package/optimize/es/global_styling/mixins/_container_query.js +106 -0
- package/optimize/es/global_styling/mixins/index.js +1 -0
- package/optimize/es/services/container_query/container_query_hook.js +59 -0
- package/optimize/es/{components/flyout/sessions → services/container_query}/index.js +1 -2
- package/optimize/es/services/container_query/match_container.js +229 -0
- package/optimize/lib/components/basic_table/basic_table.js +30 -49
- package/optimize/lib/components/beacon/beacon.styles.js +1 -1
- package/optimize/lib/components/button/index.js +8 -1
- package/optimize/lib/components/button/split_button/index.js +25 -0
- package/optimize/lib/components/button/split_button/split_button.js +107 -0
- package/optimize/lib/components/button/split_button/split_button.styles.js +55 -0
- package/optimize/lib/components/button/split_button/split_button_actions.js +98 -0
- package/{test-env/components/flyout/flyout_context.js → optimize/lib/components/button/split_button/split_button_context.js} +6 -7
- package/optimize/lib/components/collapsible_nav/collapsible_nav.js +1 -0
- package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_beta.js +1 -0
- package/optimize/lib/components/datagrid/controls/fullscreen_selector.styles.js +1 -1
- package/optimize/lib/components/empty_prompt/empty_prompt.js +1 -1
- package/optimize/lib/components/flex/flex_group.js +1 -1
- package/optimize/lib/components/flyout/_flyout_overlay.js +62 -0
- package/optimize/lib/components/flyout/_flyout_resize_button.js +37 -0
- package/{lib/components/flyout/flyout_resizable.styles.js → optimize/lib/components/flyout/_flyout_resize_button.styles.js} +12 -12
- package/optimize/lib/components/flyout/const.js +49 -0
- package/optimize/lib/components/flyout/flyout.component.js +477 -0
- package/optimize/lib/components/flyout/flyout.js +77 -349
- package/optimize/lib/components/flyout/flyout.styles.js +103 -7
- package/optimize/lib/components/flyout/flyout_menu.js +168 -0
- package/optimize/lib/components/flyout/flyout_menu.styles.js +25 -0
- package/optimize/lib/components/flyout/flyout_menu_context.js +16 -0
- package/optimize/lib/components/flyout/flyout_parent_context.js +43 -0
- package/optimize/lib/components/flyout/flyout_resizable.js +9 -139
- package/optimize/lib/components/flyout/hooks.js +30 -0
- package/optimize/lib/components/flyout/index.js +21 -14
- package/optimize/lib/components/flyout/manager/actions.js +159 -0
- package/optimize/lib/components/flyout/manager/activity_stage.js +101 -0
- package/optimize/lib/components/flyout/manager/const.js +62 -0
- package/optimize/lib/components/flyout/manager/context.js +41 -0
- package/optimize/lib/components/flyout/manager/flyout_child.js +76 -0
- package/optimize/lib/components/flyout/manager/flyout_main.js +66 -0
- package/optimize/lib/components/flyout/manager/flyout_main.styles.js +31 -0
- package/optimize/lib/components/flyout/manager/flyout_managed.js +231 -0
- package/optimize/lib/components/flyout/manager/flyout_managed.styles.js +74 -0
- package/optimize/lib/components/flyout/manager/hooks.js +131 -0
- package/optimize/lib/components/flyout/manager/index.js +168 -0
- package/optimize/lib/components/flyout/manager/layout_mode.js +169 -0
- package/optimize/lib/components/flyout/manager/provider.js +61 -0
- package/optimize/lib/components/flyout/manager/reducer.js +318 -0
- package/optimize/lib/components/flyout/manager/selectors.js +122 -0
- package/optimize/lib/components/flyout/manager/store.js +120 -0
- package/optimize/lib/components/flyout/manager/validation.js +94 -0
- package/optimize/lib/components/flyout/types.js +5 -0
- package/optimize/lib/components/flyout/use_flyout_resizable.js +151 -0
- package/optimize/lib/components/flyout/use_flyout_z_index.js +51 -0
- package/optimize/lib/components/horizontal_rule/horizontal_rule.js +1 -1
- package/optimize/lib/components/icon/assets/agentBuilderRobot.js +44 -0
- package/optimize/lib/components/icon/assets/cross_project_search.js +42 -0
- package/optimize/lib/components/icon/assets/dashed_circle.js +42 -0
- package/optimize/lib/components/icon/assets/product_robot.js +44 -0
- package/optimize/lib/components/icon/icon_map.js +3 -0
- package/optimize/lib/components/icon/svgs/cross_project_search.svg +3 -0
- package/optimize/lib/components/icon/svgs/dashed_circle.svg +5 -0
- package/optimize/lib/components/icon/svgs/product_robot.svg +4 -0
- package/optimize/lib/components/link/external_link_icon.js +6 -3
- package/optimize/lib/components/overlay_mask/overlay_mask.js +12 -2
- package/optimize/lib/components/overlay_mask/overlay_mask.styles.js +11 -4
- package/optimize/lib/components/page/page_header/page_header_content.js +1 -1
- package/optimize/lib/components/provider/provider.js +2 -1
- package/optimize/lib/components/search_bar/search_bar.js +1 -1
- package/optimize/lib/components/spacer/spacer.js +1 -1
- package/optimize/lib/components/tour/tour_step_indicator.js +8 -3
- package/optimize/lib/global_styling/mixins/_button.js +29 -10
- package/optimize/lib/global_styling/mixins/_container_query.js +112 -0
- package/optimize/lib/global_styling/mixins/index.js +11 -0
- package/optimize/lib/services/container_query/container_query_hook.js +65 -0
- package/optimize/lib/services/container_query/index.js +16 -0
- package/optimize/lib/services/container_query/match_container.js +231 -0
- package/package.json +5 -4
- package/test-env/components/avatar/avatar.js +1 -1
- package/test-env/components/badge/badge.js +1 -1
- package/test-env/components/badge/beta_badge/beta_badge.js +1 -1
- package/test-env/components/basic_table/basic_table.js +36 -55
- package/test-env/components/basic_table/in_memory_table.js +6 -6
- package/test-env/components/beacon/beacon.styles.js +1 -1
- package/test-env/components/button/button_display/_button_display_content.js +1 -1
- package/test-env/components/button/button_empty/button_empty.js +1 -1
- package/test-env/components/button/button_group/button_group.js +1 -1
- package/test-env/components/button/button_group/button_group_button.js +1 -1
- package/test-env/components/button/button_icon/button_icon.js +1 -1
- package/test-env/components/button/index.js +8 -1
- package/test-env/components/button/split_button/index.js +25 -0
- package/test-env/components/button/split_button/split_button.js +123 -0
- package/test-env/components/button/split_button/split_button.styles.js +55 -0
- package/test-env/components/button/split_button/split_button_actions.js +120 -0
- package/test-env/components/button/split_button/split_button_context.js +20 -0
- package/test-env/components/call_out/call_out.js +1 -1
- package/test-env/components/card/card.js +1 -1
- package/test-env/components/collapsible_nav/collapsible_nav.js +20 -101
- package/test-env/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +1 -1
- package/test-env/components/collapsible_nav_beta/_kibana_solution/collapsible_nav_kibana_solution.js +1 -1
- package/test-env/components/collapsible_nav_beta/collapsible_nav_beta.js +1 -0
- package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +1 -1
- package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +2 -2
- package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +2 -2
- package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +4 -4
- package/test-env/components/comment_list/comment.js +2 -2
- package/test-env/components/comment_list/comment_event.js +1 -1
- package/test-env/components/comment_list/comment_list.js +2 -2
- package/test-env/components/comment_list/comment_timeline.js +1 -1
- package/test-env/components/context_menu/context_menu_item.js +1 -1
- package/test-env/components/datagrid/body/cell/data_grid_cell.js +12 -12
- package/test-env/components/datagrid/body/data_grid_body.js +7 -7
- package/test-env/components/datagrid/body/data_grid_body_custom.js +7 -7
- package/test-env/components/datagrid/body/data_grid_body_virtualized.js +7 -7
- package/test-env/components/datagrid/body/header/data_grid_header_cell.js +6 -6
- package/test-env/components/datagrid/controls/column_sorting.js +7 -7
- package/test-env/components/datagrid/controls/column_sorting_draggable.js +1 -1
- package/test-env/components/datagrid/controls/data_grid_toolbar_control.js +1 -1
- package/test-env/components/datagrid/controls/fullscreen_selector.styles.js +1 -1
- package/test-env/components/datagrid/utils/in_memory.js +6 -6
- package/test-env/components/date_picker/date_picker.js +2 -2
- package/test-env/components/date_picker/date_picker_range.js +1 -1
- package/test-env/components/empty_prompt/empty_prompt.js +2 -2
- package/test-env/components/flex/flex_group.js +1 -1
- package/test-env/components/flyout/_flyout_overlay.js +62 -0
- package/test-env/components/flyout/_flyout_resize_button.js +37 -0
- package/{optimize/lib/components/flyout/flyout_resizable.styles.js → test-env/components/flyout/_flyout_resize_button.styles.js} +12 -12
- package/test-env/components/flyout/const.js +49 -0
- package/test-env/components/flyout/flyout.component.js +477 -0
- package/test-env/components/flyout/flyout.styles.js +103 -7
- package/test-env/components/flyout/flyout_menu.js +241 -0
- package/test-env/components/flyout/flyout_menu.styles.js +25 -0
- package/test-env/components/flyout/flyout_menu_context.js +16 -0
- package/test-env/components/flyout/flyout_parent_context.js +43 -0
- package/test-env/components/flyout/flyout_resizable.js +35 -139
- package/test-env/components/flyout/hooks.js +30 -0
- package/test-env/components/flyout/index.js +21 -14
- package/test-env/components/flyout/manager/actions.js +159 -0
- package/test-env/components/flyout/manager/activity_stage.js +101 -0
- package/test-env/components/flyout/manager/const.js +62 -0
- package/test-env/components/flyout/manager/context.js +41 -0
- package/test-env/components/flyout/manager/flyout_child.js +76 -0
- package/test-env/components/flyout/manager/flyout_main.js +66 -0
- package/test-env/components/flyout/manager/flyout_main.styles.js +31 -0
- package/test-env/components/flyout/manager/flyout_managed.js +231 -0
- package/test-env/components/flyout/manager/flyout_managed.styles.js +74 -0
- package/test-env/components/flyout/manager/hooks.js +131 -0
- package/test-env/components/flyout/manager/index.js +168 -0
- package/test-env/components/flyout/manager/layout_mode.js +169 -0
- package/test-env/components/flyout/manager/provider.js +61 -0
- package/test-env/components/flyout/manager/reducer.js +318 -0
- package/test-env/components/flyout/manager/selectors.js +122 -0
- package/test-env/components/flyout/manager/store.js +120 -0
- package/test-env/components/flyout/manager/types.js +5 -0
- package/test-env/components/flyout/manager/validation.js +94 -0
- package/test-env/components/flyout/types.js +5 -0
- package/test-env/components/flyout/use_flyout_resizable.js +151 -0
- package/test-env/components/flyout/use_flyout_z_index.js +51 -0
- package/test-env/components/form/field_number/field_number.js +2 -2
- package/test-env/components/form/field_text/field_text.js +2 -2
- package/test-env/components/form/form_control_button/form_control_button.js +1 -1
- package/test-env/components/form/form_control_layout/form_control_layout.js +2 -2
- package/test-env/components/form/form_control_layout/form_control_layout_custom_icon.js +1 -1
- package/test-env/components/form/form_control_layout/form_control_layout_icons.js +2 -2
- package/test-env/components/form/text_area/text_area.js +2 -2
- package/test-env/components/header/header_links/header_link.js +1 -1
- package/test-env/components/header/header_links/header_links.js +1 -1
- package/test-env/components/header/header_logo/header_logo.js +1 -1
- package/test-env/components/header/header_section/header_section_item_button.js +1 -1
- package/test-env/components/horizontal_rule/horizontal_rule.js +1 -1
- package/test-env/components/icon/assets/agentBuilderRobot.js +44 -0
- package/test-env/components/icon/assets/cross_project_search.js +42 -0
- package/test-env/components/icon/assets/dashed_circle.js +42 -0
- package/test-env/components/icon/assets/product_robot.js +44 -0
- package/test-env/components/icon/icon_map.js +3 -0
- package/test-env/components/key_pad_menu/key_pad_menu_item.js +1 -1
- package/test-env/components/link/external_link_icon.js +6 -3
- package/test-env/components/list_group/list_group.js +2 -2
- package/test-env/components/list_group/list_group_item.js +2 -2
- package/test-env/components/list_group/list_group_item_extra_action.js +1 -1
- package/test-env/components/list_group/pinnable_list_group/pinnable_list_group.js +4 -4
- package/test-env/components/loading/loading_logo.js +1 -1
- package/test-env/components/markdown_editor/markdown_editor.js +1 -1
- package/test-env/components/markdown_editor/markdown_editor_drop_zone.js +1 -1
- package/test-env/components/markdown_editor/markdown_editor_footer.js +1 -1
- package/test-env/components/markdown_editor/markdown_editor_toolbar.js +1 -1
- package/test-env/components/overlay_mask/overlay_mask.js +12 -2
- package/test-env/components/overlay_mask/overlay_mask.styles.js +11 -4
- package/test-env/components/page/page_header/page_header_content.js +2 -2
- package/test-env/components/pagination/pagination_button.js +1 -1
- package/test-env/components/provider/provider.js +2 -1
- package/test-env/components/search_bar/search_bar.js +1 -1
- package/test-env/components/selectable/selectable_list/selectable_list.js +1 -1
- package/test-env/components/selectable/selectable_list/selectable_list_item.js +1 -1
- package/test-env/components/selectable/selectable_templates/selectable_template_sitewide.js +1 -1
- package/test-env/components/spacer/spacer.js +1 -1
- package/test-env/components/table/table_header_cell.js +1 -1
- package/test-env/components/timeline/timeline_item_icon.js +1 -1
- package/test-env/components/toast/global_toast_list.js +1 -1
- package/test-env/components/toast/toast.js +1 -1
- package/test-env/components/tool_tip/icon_tip.js +1 -1
- package/test-env/components/tour/tour_step_indicator.js +8 -3
- package/test-env/global_styling/mixins/_button.js +29 -10
- package/test-env/global_styling/mixins/_container_query.js +112 -0
- package/test-env/global_styling/mixins/index.js +11 -0
- package/test-env/services/container_query/container_query_hook.js +65 -0
- package/test-env/services/container_query/index.js +16 -0
- package/test-env/services/container_query/match_container.js +231 -0
- package/es/components/flyout/flyout_child.js +0 -223
- package/es/components/flyout/flyout_child.styles.js +0 -32
- package/es/components/flyout/flyout_child_manager.js +0 -114
- package/es/components/flyout/sessions/flyout_provider.js +0 -95
- package/es/components/flyout/sessions/flyout_reducer.js +0 -195
- package/es/components/flyout/sessions/use_eui_flyout.js +0 -82
- package/lib/components/flyout/flyout_child.js +0 -231
- package/lib/components/flyout/flyout_child.styles.js +0 -38
- package/lib/components/flyout/flyout_child_manager.js +0 -122
- package/lib/components/flyout/sessions/flyout_provider.js +0 -102
- package/lib/components/flyout/sessions/flyout_reducer.js +0 -202
- package/lib/components/flyout/sessions/index.js +0 -25
- package/lib/components/flyout/sessions/use_eui_flyout.js +0 -88
- package/optimize/es/components/flyout/flyout_child.js +0 -178
- package/optimize/es/components/flyout/flyout_child.styles.js +0 -32
- package/optimize/es/components/flyout/flyout_child_manager.js +0 -100
- package/optimize/es/components/flyout/sessions/flyout_provider.js +0 -90
- package/optimize/es/components/flyout/sessions/flyout_reducer.js +0 -187
- package/optimize/es/components/flyout/sessions/use_eui_flyout.js +0 -82
- package/optimize/lib/components/flyout/flyout_child.js +0 -186
- package/optimize/lib/components/flyout/flyout_child.styles.js +0 -38
- package/optimize/lib/components/flyout/flyout_child_manager.js +0 -110
- package/optimize/lib/components/flyout/sessions/flyout_provider.js +0 -100
- package/optimize/lib/components/flyout/sessions/flyout_reducer.js +0 -195
- package/optimize/lib/components/flyout/sessions/index.js +0 -25
- package/optimize/lib/components/flyout/sessions/use_eui_flyout.js +0 -88
- package/test-env/components/flyout/flyout_child.js +0 -230
- package/test-env/components/flyout/flyout_child.styles.js +0 -38
- package/test-env/components/flyout/flyout_child_manager.js +0 -119
- package/test-env/components/flyout/sessions/flyout_provider.js +0 -100
- package/test-env/components/flyout/sessions/flyout_reducer.js +0 -195
- package/test-env/components/flyout/sessions/index.js +0 -25
- package/test-env/components/flyout/sessions/use_eui_flyout.js +0 -88
- /package/es/components/flyout/{sessions → manager}/types.js +0 -0
- /package/{optimize/es/components/flyout/sessions → es/components/flyout}/types.js +0 -0
- /package/lib/components/flyout/{sessions → manager}/types.js +0 -0
- /package/{optimize/lib/components/flyout/sessions → lib/components/flyout}/types.js +0 -0
- /package/{test-env/components/flyout/sessions → optimize/lib/components/flyout/manager}/types.js +0 -0
|
@@ -0,0 +1,162 @@
|
|
|
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 { useCallback, useEffect, useMemo, useState } from 'react';
|
|
11
|
+
import { useEuiTheme } from '../../../services';
|
|
12
|
+
import { setLayoutMode } from './actions';
|
|
13
|
+
import { useCurrentChildFlyout, useCurrentMainFlyout, useCurrentSession, useFlyoutWidth } from './selectors';
|
|
14
|
+
import { useFlyoutManager } from './hooks';
|
|
15
|
+
import { LAYOUT_MODE_SIDE_BY_SIDE, LAYOUT_MODE_STACKED } from './const';
|
|
16
|
+
/**
|
|
17
|
+
* Hook to handle responsive layout mode for managed flyouts.
|
|
18
|
+
* Decides whether to place flyouts side-by-side or stacked based on
|
|
19
|
+
* viewport width and flyout widths/sizes.
|
|
20
|
+
*/
|
|
21
|
+
export var useApplyFlyoutLayoutMode = function useApplyFlyoutLayoutMode() {
|
|
22
|
+
var _context$state;
|
|
23
|
+
var _useEuiTheme = useEuiTheme(),
|
|
24
|
+
euiTheme = _useEuiTheme.euiTheme;
|
|
25
|
+
var context = useFlyoutManager();
|
|
26
|
+
var currentSession = useCurrentSession();
|
|
27
|
+
var parentFlyoutId = currentSession === null || currentSession === void 0 ? void 0 : currentSession.mainFlyoutId;
|
|
28
|
+
var childFlyoutId = currentSession === null || currentSession === void 0 ? void 0 : currentSession.childFlyoutId;
|
|
29
|
+
var parentFlyout = useCurrentMainFlyout();
|
|
30
|
+
var childFlyout = useCurrentChildFlyout();
|
|
31
|
+
var parentWidth = useFlyoutWidth(parentFlyoutId);
|
|
32
|
+
var childWidth = useFlyoutWidth(childFlyoutId);
|
|
33
|
+
var hasFlyouts = Boolean(parentFlyoutId);
|
|
34
|
+
var _useState = useState(typeof window !== 'undefined' ? window.innerWidth : Infinity),
|
|
35
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
36
|
+
windowWidth = _useState2[0],
|
|
37
|
+
setWindowWidth = _useState2[1];
|
|
38
|
+
|
|
39
|
+
// Extract specific context values
|
|
40
|
+
var dispatch = context === null || context === void 0 ? void 0 : context.dispatch;
|
|
41
|
+
var currentLayoutMode = context === null || context === void 0 || (_context$state = context.state) === null || _context$state === void 0 ? void 0 : _context$state.layoutMode;
|
|
42
|
+
var setMode = useCallback(function (layoutMode) {
|
|
43
|
+
if (dispatch) {
|
|
44
|
+
dispatch(setLayoutMode(layoutMode));
|
|
45
|
+
}
|
|
46
|
+
}, [dispatch]);
|
|
47
|
+
useEffect(function () {
|
|
48
|
+
if (typeof window === 'undefined') {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
var rafId = 0;
|
|
52
|
+
var handleResize = function handleResize() {
|
|
53
|
+
if (rafId) {
|
|
54
|
+
cancelAnimationFrame(rafId);
|
|
55
|
+
}
|
|
56
|
+
rafId = requestAnimationFrame(function () {
|
|
57
|
+
return setWindowWidth(window.innerWidth);
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
window.addEventListener('resize', handleResize);
|
|
61
|
+
return function () {
|
|
62
|
+
if (rafId) {
|
|
63
|
+
cancelAnimationFrame(rafId);
|
|
64
|
+
}
|
|
65
|
+
window.removeEventListener('resize', handleResize);
|
|
66
|
+
};
|
|
67
|
+
}, []);
|
|
68
|
+
|
|
69
|
+
// Calculate the desired layout mode
|
|
70
|
+
var desiredLayoutMode = useMemo(function () {
|
|
71
|
+
// Skip calculation if no flyouts open
|
|
72
|
+
if (!hasFlyouts) {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Thresholds to prevent thrashing near the breakpoint.
|
|
77
|
+
var THRESHOLD_TO_SIDE_BY_SIDE = 85;
|
|
78
|
+
var THRESHOLD_TO_STACKED = 95;
|
|
79
|
+
|
|
80
|
+
// If the window is too small, set the mode to stacked.
|
|
81
|
+
//
|
|
82
|
+
// The value is based on the maximum width of a flyout in
|
|
83
|
+
// `composeFlyoutSizing` in `flyout.styles.ts` multiplied
|
|
84
|
+
// by 2 (open flyouts side-by-side).
|
|
85
|
+
if (windowWidth < Math.round(euiTheme.breakpoint.s * 1.4)) {
|
|
86
|
+
return LAYOUT_MODE_STACKED;
|
|
87
|
+
}
|
|
88
|
+
if (!childFlyoutId) {
|
|
89
|
+
return LAYOUT_MODE_SIDE_BY_SIDE;
|
|
90
|
+
}
|
|
91
|
+
var parentWidthValue = parentWidth;
|
|
92
|
+
var childWidthValue = childWidth;
|
|
93
|
+
if (!parentWidthValue && parentFlyout !== null && parentFlyout !== void 0 && parentFlyout.size) {
|
|
94
|
+
parentWidthValue = getWidthFromSize(parentFlyout.size);
|
|
95
|
+
}
|
|
96
|
+
if (!childWidthValue && childFlyout !== null && childFlyout !== void 0 && childFlyout.size) {
|
|
97
|
+
childWidthValue = getWidthFromSize(childFlyout.size);
|
|
98
|
+
}
|
|
99
|
+
if (!parentWidthValue || !childWidthValue) {
|
|
100
|
+
return LAYOUT_MODE_SIDE_BY_SIDE;
|
|
101
|
+
}
|
|
102
|
+
var combinedWidth = parentWidthValue + childWidthValue;
|
|
103
|
+
var combinedWidthPercentage = combinedWidth / windowWidth * 100;
|
|
104
|
+
|
|
105
|
+
// Handle fill size flyouts: keep layout as side-by-side when fill flyout is present
|
|
106
|
+
// This allows fill flyouts to dynamically calculate their width based on the other in the pair
|
|
107
|
+
if ((parentFlyout === null || parentFlyout === void 0 ? void 0 : parentFlyout.size) === 'fill' || (childFlyout === null || childFlyout === void 0 ? void 0 : childFlyout.size) === 'fill') {
|
|
108
|
+
// For fill flyouts, we want to maintain side-by-side layout to enable dynamic width calculation
|
|
109
|
+
// Only stack if the viewport is too small (below the small breakpoint)
|
|
110
|
+
if (windowWidth >= Math.round(euiTheme.breakpoint.s * 1.4)) {
|
|
111
|
+
return LAYOUT_MODE_SIDE_BY_SIDE;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
if (currentLayoutMode === LAYOUT_MODE_STACKED) {
|
|
115
|
+
return combinedWidthPercentage <= THRESHOLD_TO_SIDE_BY_SIDE ? LAYOUT_MODE_SIDE_BY_SIDE : LAYOUT_MODE_STACKED;
|
|
116
|
+
} else {
|
|
117
|
+
return combinedWidthPercentage >= THRESHOLD_TO_STACKED ? LAYOUT_MODE_STACKED : LAYOUT_MODE_SIDE_BY_SIDE;
|
|
118
|
+
}
|
|
119
|
+
}, [hasFlyouts, windowWidth, euiTheme, childFlyoutId, parentWidth, childWidth, parentFlyout === null || parentFlyout === void 0 ? void 0 : parentFlyout.size, childFlyout === null || childFlyout === void 0 ? void 0 : childFlyout.size, currentLayoutMode]);
|
|
120
|
+
|
|
121
|
+
// Apply the desired layout mode
|
|
122
|
+
useEffect(function () {
|
|
123
|
+
if (desiredLayoutMode && currentLayoutMode !== desiredLayoutMode) {
|
|
124
|
+
setMode(desiredLayoutMode);
|
|
125
|
+
}
|
|
126
|
+
}, [desiredLayoutMode, currentLayoutMode, setMode]);
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
/** Convert a flyout `size` value to a pixel width using theme breakpoints. */
|
|
130
|
+
export var getWidthFromSize = function getWidthFromSize(size) {
|
|
131
|
+
if (typeof size === 'number') {
|
|
132
|
+
return size;
|
|
133
|
+
}
|
|
134
|
+
if (typeof size === 'string') {
|
|
135
|
+
var parsed = parseInt(size, 10);
|
|
136
|
+
if (!Number.isNaN(parsed)) {
|
|
137
|
+
return parsed;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// Size is a function of a percentage of `vw`, defined in `composeFlyoutSizing` in `flyout.styles.ts`
|
|
141
|
+
switch (size) {
|
|
142
|
+
case 's':
|
|
143
|
+
return Math.round(window.innerWidth * 0.25);
|
|
144
|
+
case 'm':
|
|
145
|
+
return Math.round(window.innerWidth * 0.5);
|
|
146
|
+
case 'l':
|
|
147
|
+
return Math.round(window.innerWidth * 0.75);
|
|
148
|
+
case 'fill':
|
|
149
|
+
return Math.round(window.innerWidth * 0.9);
|
|
150
|
+
default:
|
|
151
|
+
break;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return 0;
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
/** Current layout mode for managed flyouts (`side-by-side` or `stacked`). */
|
|
158
|
+
export var useFlyoutLayoutMode = function useFlyoutLayoutMode() {
|
|
159
|
+
var _context$state2;
|
|
160
|
+
var context = useFlyoutManager();
|
|
161
|
+
return (context === null || context === void 0 || (_context$state2 = context.state) === null || _context$state2 === void 0 ? void 0 : _context$state2.layoutMode) || LAYOUT_MODE_SIDE_BY_SIDE;
|
|
162
|
+
};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
|
+
var _excluded = ["getState", "subscribe"];
|
|
4
|
+
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; }
|
|
5
|
+
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; }
|
|
6
|
+
/*
|
|
7
|
+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
8
|
+
* or more contributor license agreements. Licensed under the Elastic License
|
|
9
|
+
* 2.0 and the Server Side Public License, v 1; you may not use this file except
|
|
10
|
+
* in compliance with, at your election, the Elastic License 2.0 or the Server
|
|
11
|
+
* Side Public License, v 1.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import React, { createContext, useContext, useMemo } from 'react';
|
|
15
|
+
import { useSyncExternalStore } from 'use-sync-external-store/shim';
|
|
16
|
+
import { useApplyFlyoutLayoutMode } from './layout_mode';
|
|
17
|
+
import { getFlyoutManagerStore } from './store';
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* React context that exposes the Flyout Manager API (state + actions).
|
|
21
|
+
*/
|
|
22
|
+
import { jsx as ___EmotionJSX } from "@emotion/react";
|
|
23
|
+
export var EuiFlyoutManagerContext = /*#__PURE__*/createContext(null);
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Provides the Flyout Manager API via context and runs layout-mode logic.
|
|
27
|
+
*/
|
|
28
|
+
export var EuiFlyoutManager = function EuiFlyoutManager(_ref) {
|
|
29
|
+
var children = _ref.children;
|
|
30
|
+
var _getFlyoutManagerStor = getFlyoutManagerStore(),
|
|
31
|
+
getState = _getFlyoutManagerStor.getState,
|
|
32
|
+
subscribe = _getFlyoutManagerStor.subscribe,
|
|
33
|
+
rest = _objectWithoutProperties(_getFlyoutManagerStor, _excluded);
|
|
34
|
+
var state = useSyncExternalStore(subscribe, getState, getState);
|
|
35
|
+
var api = useMemo(function () {
|
|
36
|
+
return _objectSpread({
|
|
37
|
+
state: state
|
|
38
|
+
}, rest);
|
|
39
|
+
}, [state, rest]);
|
|
40
|
+
return ___EmotionJSX(EuiFlyoutManagerContext.Provider, {
|
|
41
|
+
value: api
|
|
42
|
+
}, ___EmotionJSX(EuiFlyoutManagerContainer, null, children));
|
|
43
|
+
};
|
|
44
|
+
var EuiFlyoutManagerContainer = function EuiFlyoutManagerContainer(_ref2) {
|
|
45
|
+
var children = _ref2.children;
|
|
46
|
+
useApplyFlyoutLayoutMode();
|
|
47
|
+
return ___EmotionJSX(React.Fragment, null, children);
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
/** Hook to access the Flyout Manager API from context. */
|
|
51
|
+
export var useFlyoutManager = function useFlyoutManager() {
|
|
52
|
+
return useContext(EuiFlyoutManagerContext);
|
|
53
|
+
};
|
|
@@ -0,0 +1,312 @@
|
|
|
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
|
+
import { ACTION_ADD, ACTION_CLOSE, ACTION_SET_ACTIVE, ACTION_SET_LAYOUT_MODE, ACTION_SET_WIDTH, ACTION_SET_ACTIVITY_STAGE, ACTION_GO_BACK, ACTION_GO_TO_FLYOUT, ACTION_SET_PUSH_PADDING, ACTION_ADD_UNMANAGED_FLYOUT, ACTION_CLOSE_UNMANAGED_FLYOUT } from './actions';
|
|
14
|
+
import { LAYOUT_MODE_SIDE_BY_SIDE, LEVEL_MAIN, STAGE_OPENING } from './const';
|
|
15
|
+
/**
|
|
16
|
+
* Default flyout manager state used to initialize the reducer.
|
|
17
|
+
*/
|
|
18
|
+
export var initialState = {
|
|
19
|
+
sessions: [],
|
|
20
|
+
flyouts: [],
|
|
21
|
+
layoutMode: LAYOUT_MODE_SIDE_BY_SIDE,
|
|
22
|
+
pushPadding: {
|
|
23
|
+
left: 0,
|
|
24
|
+
right: 0
|
|
25
|
+
},
|
|
26
|
+
currentZIndex: 0,
|
|
27
|
+
unmanagedFlyouts: []
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Reducer handling all flyout manager actions and state transitions.
|
|
32
|
+
*/
|
|
33
|
+
export function flyoutManagerReducer() {
|
|
34
|
+
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
|
|
35
|
+
var action = arguments.length > 1 ? arguments[1] : undefined;
|
|
36
|
+
switch (action.type) {
|
|
37
|
+
case ACTION_ADD_UNMANAGED_FLYOUT:
|
|
38
|
+
{
|
|
39
|
+
if (state.unmanagedFlyouts.includes(action.flyoutId)) {
|
|
40
|
+
return state;
|
|
41
|
+
}
|
|
42
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
43
|
+
// Increment by 2 for each new unmanaged flyout.
|
|
44
|
+
// Unmanaged flyouts render on z-index of `n`, and their overlay mask
|
|
45
|
+
// on `n - 1`.
|
|
46
|
+
currentZIndex: state.currentZIndex + 2,
|
|
47
|
+
unmanagedFlyouts: [].concat(_toConsumableArray(state.unmanagedFlyouts), [action.flyoutId])
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
case ACTION_CLOSE_UNMANAGED_FLYOUT:
|
|
51
|
+
{
|
|
52
|
+
var newUnmanagedFlyouts = state.unmanagedFlyouts.filter(function (flyoutId) {
|
|
53
|
+
return flyoutId !== action.flyoutId;
|
|
54
|
+
});
|
|
55
|
+
var newCurrentZIndex = state.currentZIndex;
|
|
56
|
+
if (state.sessions.length === 0 && newUnmanagedFlyouts.length === 0) {
|
|
57
|
+
newCurrentZIndex = 0;
|
|
58
|
+
}
|
|
59
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
60
|
+
unmanagedFlyouts: newUnmanagedFlyouts,
|
|
61
|
+
currentZIndex: newCurrentZIndex
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Register a flyout.
|
|
66
|
+
// - Ignore duplicates by `flyoutId`.
|
|
67
|
+
// - For a `main` flyout, start a new session { main, child: null }.
|
|
68
|
+
// - For a `child` flyout, attach it to the most recent session; if no
|
|
69
|
+
// session exists, do nothing (invalid child without a parent).
|
|
70
|
+
case ACTION_ADD:
|
|
71
|
+
{
|
|
72
|
+
var flyoutId = action.flyoutId,
|
|
73
|
+
title = action.title,
|
|
74
|
+
level = action.level,
|
|
75
|
+
size = action.size;
|
|
76
|
+
|
|
77
|
+
// Ignore duplicate registrations
|
|
78
|
+
if (state.flyouts.some(function (f) {
|
|
79
|
+
return f.flyoutId === flyoutId;
|
|
80
|
+
})) {
|
|
81
|
+
return state;
|
|
82
|
+
}
|
|
83
|
+
var newFlyoutState = {
|
|
84
|
+
level: level,
|
|
85
|
+
flyoutId: flyoutId,
|
|
86
|
+
size: size,
|
|
87
|
+
activityStage: STAGE_OPENING
|
|
88
|
+
};
|
|
89
|
+
var newFlyouts = [].concat(_toConsumableArray(state.flyouts), [newFlyoutState]);
|
|
90
|
+
if (level === LEVEL_MAIN) {
|
|
91
|
+
var newSession = {
|
|
92
|
+
mainFlyoutId: flyoutId,
|
|
93
|
+
title: title,
|
|
94
|
+
childFlyoutId: null,
|
|
95
|
+
zIndex: state.currentZIndex
|
|
96
|
+
};
|
|
97
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
98
|
+
sessions: [].concat(_toConsumableArray(state.sessions), [newSession]),
|
|
99
|
+
flyouts: newFlyouts,
|
|
100
|
+
// Increment by 3 for each new flyout session.
|
|
101
|
+
// Managed flyouts render main flyouts on z-index of `n`,
|
|
102
|
+
// child flyouts on `n - 1` and the overlay mask on `n - 2`.
|
|
103
|
+
currentZIndex: state.currentZIndex + 3
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
if (state.sessions.length === 0) {
|
|
107
|
+
return state;
|
|
108
|
+
}
|
|
109
|
+
var updatedSessions = _toConsumableArray(state.sessions);
|
|
110
|
+
var currentSessionIndex = updatedSessions.length - 1;
|
|
111
|
+
updatedSessions[currentSessionIndex] = _objectSpread(_objectSpread({}, updatedSessions[currentSessionIndex]), {}, {
|
|
112
|
+
childFlyoutId: flyoutId
|
|
113
|
+
});
|
|
114
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
115
|
+
sessions: updatedSessions,
|
|
116
|
+
flyouts: newFlyouts
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// Unregister a flyout and update sessions accordingly.
|
|
121
|
+
// - When closing a `main` flyout, drop its entire session and all associated flyouts.
|
|
122
|
+
// - When closing a `child` flyout, clear the child pointer on the most
|
|
123
|
+
// recent session if it matches.
|
|
124
|
+
case ACTION_CLOSE:
|
|
125
|
+
{
|
|
126
|
+
var removedFlyout = state.flyouts.find(function (f) {
|
|
127
|
+
return f.flyoutId === action.flyoutId;
|
|
128
|
+
});
|
|
129
|
+
if (!removedFlyout) {
|
|
130
|
+
return state;
|
|
131
|
+
}
|
|
132
|
+
if (removedFlyout.level === LEVEL_MAIN) {
|
|
133
|
+
// Find the session that contains this main flyout
|
|
134
|
+
var sessionToRemove = state.sessions.find(function (session) {
|
|
135
|
+
return session.mainFlyoutId === action.flyoutId;
|
|
136
|
+
});
|
|
137
|
+
if (sessionToRemove) {
|
|
138
|
+
// Remove all flyouts associated with this session (main + child)
|
|
139
|
+
var flyoutsToRemove = new Set([action.flyoutId]);
|
|
140
|
+
if (sessionToRemove.childFlyoutId) {
|
|
141
|
+
flyoutsToRemove.add(sessionToRemove.childFlyoutId);
|
|
142
|
+
}
|
|
143
|
+
var _newFlyouts = state.flyouts.filter(function (f) {
|
|
144
|
+
return !flyoutsToRemove.has(f.flyoutId);
|
|
145
|
+
});
|
|
146
|
+
var newSessions = state.sessions.filter(function (session) {
|
|
147
|
+
return session.mainFlyoutId !== action.flyoutId;
|
|
148
|
+
});
|
|
149
|
+
var _newCurrentZIndex = state.currentZIndex;
|
|
150
|
+
if (newSessions.length === 0 && state.unmanagedFlyouts.length === 0) {
|
|
151
|
+
// Reset to initial value if no flyouts remain open to avoid
|
|
152
|
+
// the value going too high during the lifecycle of the app
|
|
153
|
+
_newCurrentZIndex = 0;
|
|
154
|
+
}
|
|
155
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
156
|
+
sessions: newSessions,
|
|
157
|
+
flyouts: _newFlyouts,
|
|
158
|
+
currentZIndex: _newCurrentZIndex
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// Handle child flyout closing (existing logic)
|
|
164
|
+
var _newFlyouts2 = state.flyouts.filter(function (f) {
|
|
165
|
+
return f.flyoutId !== action.flyoutId;
|
|
166
|
+
});
|
|
167
|
+
if (state.sessions.length === 0) {
|
|
168
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
169
|
+
flyouts: _newFlyouts2
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
var _updatedSessions = _toConsumableArray(state.sessions);
|
|
173
|
+
var _currentSessionIndex = _updatedSessions.length - 1;
|
|
174
|
+
if (_updatedSessions[_currentSessionIndex].childFlyoutId === action.flyoutId) {
|
|
175
|
+
_updatedSessions[_currentSessionIndex] = _objectSpread(_objectSpread({}, _updatedSessions[_currentSessionIndex]), {}, {
|
|
176
|
+
childFlyoutId: null
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
180
|
+
sessions: _updatedSessions,
|
|
181
|
+
flyouts: _newFlyouts2
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// Mark the provided flyout ID as the active child for the latest session.
|
|
186
|
+
case ACTION_SET_ACTIVE:
|
|
187
|
+
{
|
|
188
|
+
// No-op when no session exists.
|
|
189
|
+
if (state.sessions.length === 0) {
|
|
190
|
+
return state;
|
|
191
|
+
}
|
|
192
|
+
var _updatedSessions2 = _toConsumableArray(state.sessions);
|
|
193
|
+
var _currentSessionIndex2 = _updatedSessions2.length - 1;
|
|
194
|
+
_updatedSessions2[_currentSessionIndex2] = _objectSpread(_objectSpread({}, _updatedSessions2[_currentSessionIndex2]), {}, {
|
|
195
|
+
childFlyoutId: action.flyoutId
|
|
196
|
+
});
|
|
197
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
198
|
+
sessions: _updatedSessions2
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
// Persist a flyout's measured width (px). Used for responsive layout
|
|
203
|
+
// calculations, e.g., deciding stacked vs side-by-side.
|
|
204
|
+
case ACTION_SET_WIDTH:
|
|
205
|
+
{
|
|
206
|
+
var _flyoutId = action.flyoutId,
|
|
207
|
+
width = action.width;
|
|
208
|
+
var updatedFlyouts = state.flyouts.map(function (flyout) {
|
|
209
|
+
return flyout.flyoutId === _flyoutId ? _objectSpread(_objectSpread({}, flyout), {}, {
|
|
210
|
+
width: width
|
|
211
|
+
}) : flyout;
|
|
212
|
+
});
|
|
213
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
214
|
+
flyouts: updatedFlyouts
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
// Switch global layout mode for managed flyouts.
|
|
219
|
+
case ACTION_SET_LAYOUT_MODE:
|
|
220
|
+
{
|
|
221
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
222
|
+
layoutMode: action.layoutMode
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
// Update a flyout's activity stage in state
|
|
227
|
+
case ACTION_SET_ACTIVITY_STAGE:
|
|
228
|
+
{
|
|
229
|
+
var _flyoutId2 = action.flyoutId;
|
|
230
|
+
var _updatedFlyouts = state.flyouts.map(function (flyout) {
|
|
231
|
+
return flyout.flyoutId === _flyoutId2 ? _objectSpread(_objectSpread({}, flyout), {}, {
|
|
232
|
+
activityStage: action.activityStage
|
|
233
|
+
}) : flyout;
|
|
234
|
+
});
|
|
235
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
236
|
+
flyouts: _updatedFlyouts
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
// Go back one session (remove current session from stack)
|
|
241
|
+
case ACTION_GO_BACK:
|
|
242
|
+
{
|
|
243
|
+
if (state.sessions.length === 0) {
|
|
244
|
+
return state;
|
|
245
|
+
}
|
|
246
|
+
var _currentSessionIndex3 = state.sessions.length - 1;
|
|
247
|
+
var currentSession = state.sessions[_currentSessionIndex3];
|
|
248
|
+
|
|
249
|
+
// Close all flyouts in the current session
|
|
250
|
+
var _flyoutsToRemove = new Set([currentSession.mainFlyoutId]);
|
|
251
|
+
if (currentSession.childFlyoutId) {
|
|
252
|
+
_flyoutsToRemove.add(currentSession.childFlyoutId);
|
|
253
|
+
}
|
|
254
|
+
var _newFlyouts3 = state.flyouts.filter(function (f) {
|
|
255
|
+
return !_flyoutsToRemove.has(f.flyoutId);
|
|
256
|
+
});
|
|
257
|
+
var _newSessions = state.sessions.slice(0, _currentSessionIndex3);
|
|
258
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
259
|
+
sessions: _newSessions,
|
|
260
|
+
flyouts: _newFlyouts3
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
// Navigate to a specific flyout (remove all sessions after it)
|
|
265
|
+
case ACTION_GO_TO_FLYOUT:
|
|
266
|
+
{
|
|
267
|
+
var _flyoutId3 = action.flyoutId;
|
|
268
|
+
|
|
269
|
+
// Find the session containing the target flyout
|
|
270
|
+
var targetSessionIndex = state.sessions.findIndex(function (session) {
|
|
271
|
+
return session.mainFlyoutId === _flyoutId3;
|
|
272
|
+
});
|
|
273
|
+
if (targetSessionIndex === -1) {
|
|
274
|
+
return state; // Target flyout not found
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
// Close all sessions after the target session
|
|
278
|
+
var sessionsToClose = state.sessions.slice(targetSessionIndex + 1);
|
|
279
|
+
var _flyoutsToRemove2 = new Set();
|
|
280
|
+
sessionsToClose.forEach(function (session) {
|
|
281
|
+
_flyoutsToRemove2.add(session.mainFlyoutId);
|
|
282
|
+
if (session.childFlyoutId) {
|
|
283
|
+
_flyoutsToRemove2.add(session.childFlyoutId);
|
|
284
|
+
}
|
|
285
|
+
});
|
|
286
|
+
var _newFlyouts4 = state.flyouts.filter(function (f) {
|
|
287
|
+
return !_flyoutsToRemove2.has(f.flyoutId);
|
|
288
|
+
});
|
|
289
|
+
var _newSessions2 = state.sessions.slice(0, targetSessionIndex + 1);
|
|
290
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
291
|
+
sessions: _newSessions2,
|
|
292
|
+
flyouts: _newFlyouts4
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
// Set push padding offset for a specific side
|
|
297
|
+
case ACTION_SET_PUSH_PADDING:
|
|
298
|
+
{
|
|
299
|
+
var _state$pushPadding;
|
|
300
|
+
var side = action.side,
|
|
301
|
+
_width = action.width;
|
|
302
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
303
|
+
pushPadding: _objectSpread(_objectSpread({}, (_state$pushPadding = state.pushPadding) !== null && _state$pushPadding !== void 0 ? _state$pushPadding : {
|
|
304
|
+
left: 0,
|
|
305
|
+
right: 0
|
|
306
|
+
}), {}, _defineProperty({}, side, _width))
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
default:
|
|
310
|
+
return state;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
@@ -0,0 +1,116 @@
|
|
|
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 { useFlyoutManager } from './provider';
|
|
10
|
+
import { useRef } from 'react';
|
|
11
|
+
export var useSession = function useSession(flyoutId) {
|
|
12
|
+
var context = useFlyoutManager();
|
|
13
|
+
if (!context) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
return context.state.sessions.find(function (s) {
|
|
17
|
+
return s.mainFlyoutId === flyoutId || s.childFlyoutId === flyoutId;
|
|
18
|
+
}) || null;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
/** True when any managed flyout session is currently active. */
|
|
22
|
+
export var useHasActiveSession = function useHasActiveSession() {
|
|
23
|
+
return !!useCurrentSession();
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
/** True if the given `flyoutId` is the main or child flyout in the latest session. */
|
|
27
|
+
export var useIsFlyoutActive = function useIsFlyoutActive(flyoutId) {
|
|
28
|
+
var currentSession = useCurrentSession();
|
|
29
|
+
return (currentSession === null || currentSession === void 0 ? void 0 : currentSession.mainFlyoutId) === flyoutId || (currentSession === null || currentSession === void 0 ? void 0 : currentSession.childFlyoutId) === flyoutId;
|
|
30
|
+
};
|
|
31
|
+
export var useFlyout = function useFlyout(flyoutId) {
|
|
32
|
+
var context = useFlyoutManager();
|
|
33
|
+
if (!context || !flyoutId) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
return context.state.flyouts.find(function (f) {
|
|
37
|
+
return f.flyoutId === flyoutId;
|
|
38
|
+
}) || null;
|
|
39
|
+
};
|
|
40
|
+
export var useIsFlyoutRegistered = function useIsFlyoutRegistered(flyoutId) {
|
|
41
|
+
var context = useFlyoutManager();
|
|
42
|
+
if (!context || !flyoutId) {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
return context.state.flyouts.some(function (f) {
|
|
46
|
+
return f.flyoutId === flyoutId;
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
/** The most recent flyout session or `null` if none. */
|
|
51
|
+
export var useCurrentSession = function useCurrentSession() {
|
|
52
|
+
var context = useFlyoutManager();
|
|
53
|
+
if (!context) return null;
|
|
54
|
+
return context.state.sessions[context.state.sessions.length - 1] || null;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
/** The registered state of the current session's main flyout, if present. */
|
|
58
|
+
export var useCurrentMainFlyout = function useCurrentMainFlyout() {
|
|
59
|
+
var currentSession = useCurrentSession();
|
|
60
|
+
var mainFlyoutId = currentSession === null || currentSession === void 0 ? void 0 : currentSession.mainFlyoutId;
|
|
61
|
+
return useFlyout(mainFlyoutId);
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
/** The registered state of the current session's child flyout, if present. */
|
|
65
|
+
export var useCurrentChildFlyout = function useCurrentChildFlyout() {
|
|
66
|
+
var currentSession = useCurrentSession();
|
|
67
|
+
var childFlyoutId = currentSession === null || currentSession === void 0 ? void 0 : currentSession.childFlyoutId;
|
|
68
|
+
return useFlyout(childFlyoutId);
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
/** The measured width (px) of the specified flyout, or `null` if unknown. */
|
|
72
|
+
export var useFlyoutWidth = function useFlyoutWidth(flyoutId) {
|
|
73
|
+
var _useFlyout;
|
|
74
|
+
return (_useFlyout = useFlyout(flyoutId)) === null || _useFlyout === void 0 ? void 0 : _useFlyout.width;
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
/** The configured size of the parent (main) flyout for a given child flyout ID. */
|
|
78
|
+
export var useParentFlyoutSize = function useParentFlyoutSize(childFlyoutId) {
|
|
79
|
+
var session = useSession(childFlyoutId);
|
|
80
|
+
var parentFlyout = useFlyout(session === null || session === void 0 ? void 0 : session.mainFlyoutId);
|
|
81
|
+
return parentFlyout === null || parentFlyout === void 0 ? void 0 : parentFlyout.size;
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
/** True if the provided `flyoutId` is the main flyout and it currently has a child. */
|
|
85
|
+
export var useHasChildFlyout = function useHasChildFlyout(flyoutId) {
|
|
86
|
+
var session = useSession(flyoutId);
|
|
87
|
+
return !!(session !== null && session !== void 0 && session.childFlyoutId);
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
/** Get the current push padding offsets from manager state. */
|
|
91
|
+
export var usePushPaddingOffsets = function usePushPaddingOffsets() {
|
|
92
|
+
var _context$state$pushPa;
|
|
93
|
+
var context = useFlyoutManager();
|
|
94
|
+
if (!context) {
|
|
95
|
+
return {
|
|
96
|
+
left: 0,
|
|
97
|
+
right: 0
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
return (_context$state$pushPa = context.state.pushPadding) !== null && _context$state$pushPa !== void 0 ? _context$state$pushPa : {
|
|
101
|
+
left: 0,
|
|
102
|
+
right: 0
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
/** True if there's any active push padding (left or right side). */
|
|
107
|
+
export var useHasPushPadding = function useHasPushPadding() {
|
|
108
|
+
var pushPadding = usePushPaddingOffsets();
|
|
109
|
+
return pushPadding.left > 0 || pushPadding.right > 0;
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
/** Get the ref for the current flyout z-index to be used */
|
|
113
|
+
export var useCurrentFlyoutZIndexRef = function useCurrentFlyoutZIndexRef() {
|
|
114
|
+
var context = useFlyoutManager();
|
|
115
|
+
return useRef((context === null || context === void 0 ? void 0 : context.state.currentZIndex) || 0);
|
|
116
|
+
};
|