@elastic/eui 109.0.0 → 109.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/accessibility/skip_link/skip_link.js +10 -1
- package/es/components/bottom_bar/bottom_bar.js +12 -2
- package/es/components/button/button.js +20 -25
- package/es/components/button/button_display/_button_display.js +32 -30
- package/es/components/button/button_display/_button_display.styles.js +4 -4
- package/es/components/button/button_empty/button_empty.js +32 -14
- package/es/components/button/button_group/button_group.js +49 -31
- package/es/components/button/button_group/button_group_button.js +14 -2
- package/es/components/button/button_group/button_group_button.styles.js +12 -8
- package/es/components/button/button_icon/button_icon.js +30 -6
- package/es/components/card/card.js +20 -25
- package/es/components/card/card_select/card_select.js +20 -25
- package/es/components/code/code_block_virtualized.js +9 -7
- package/es/components/collapsible_nav_beta/_kibana_solution/collapsible_nav_kibana_solution.js +13 -1
- package/es/components/datagrid/body/cell/data_grid_cell.js +35 -12
- package/es/components/datagrid/body/data_grid_body.js +23 -6
- package/es/components/datagrid/body/data_grid_body_custom.js +23 -6
- package/es/components/datagrid/body/data_grid_body_virtualized.js +23 -6
- package/es/components/datagrid/body/header/data_grid_header_cell.js +23 -6
- package/es/components/datagrid/controls/column_selector.js +36 -19
- package/es/components/datagrid/controls/column_sorting.js +23 -6
- package/es/components/datagrid/controls/data_grid_toolbar_control.js +13 -7
- package/es/components/datagrid/data_grid.js +5 -1
- package/es/components/datagrid/utils/in_memory.js +25 -7
- package/es/components/date_picker/auto_refresh/auto_refresh.js +11 -2
- package/es/components/date_picker/super_date_picker/date_popover/absolute_tab.js +31 -5
- package/es/components/date_picker/super_date_picker/date_popover/date_popover_button.js +24 -3
- package/es/components/date_picker/super_date_picker/date_popover/date_popover_content.js +26 -4
- package/es/components/date_picker/super_date_picker/date_popover/relative_tab.js +29 -3
- package/es/components/date_picker/super_date_picker/date_popover/timezone_display.js +98 -0
- package/es/components/date_picker/super_date_picker/date_popover/timezone_display.styles.js +19 -0
- package/es/components/date_picker/super_date_picker/pretty_duration.js +1 -8
- package/es/components/date_picker/super_date_picker/relative_utils.js +8 -0
- package/es/components/date_picker/super_date_picker/super_date_picker.js +118 -26
- package/es/components/date_picker/super_date_picker/time_window_buttons.js +185 -0
- package/es/components/facet/facet_button.js +9 -19
- package/es/components/filter_group/filter_button.js +14 -1
- package/es/components/flyout/flyout.js +27 -10
- package/es/components/form/form_control_button/form_control_button.js +13 -7
- package/es/components/header/header_links/header_link.js +13 -7
- package/es/components/header/header_section/header_section_item_button.js +13 -7
- package/es/components/icon/assets/boxes_vertical.js +1 -1
- package/es/components/icon/assets/checkInCircleFilled.js +1 -2
- package/es/components/icon/assets/errorFilled.js +1 -2
- package/es/components/icon/assets/warningFilled.js +1 -2
- package/es/components/icon/icon_map.js +3 -6
- package/es/components/list_group/list_group.js +13 -1
- package/es/components/list_group/list_group_item.js +13 -1
- package/es/components/list_group/list_group_item_extra_action.js +13 -1
- package/es/components/list_group/pinnable_list_group/pinnable_list_group.js +15 -2
- package/es/components/overlay_mask/overlay_mask.styles.js +1 -1
- package/es/components/pagination/pagination_button.js +13 -7
- package/es/components/popover/popover.js +22 -16
- package/es/components/provider/component_defaults/component_defaults.js +22 -2
- package/es/components/table/table_row.styles.js +1 -1
- package/es/components/tool_tip/tool_tip.js +24 -24
- package/es/global_styling/index.js +2 -1
- package/es/global_styling/mixins/_button.js +1 -1
- package/es/global_styling/utility/selectors.js +9 -0
- package/es/services/focus_trap/focus_trap_pub_sub.js +74 -0
- package/es/services/focus_trap/index.js +9 -0
- package/es/services/hooks/index.js +2 -1
- package/es/services/hooks/useEuiDisabledElement.js +195 -0
- package/es/services/index.js +1 -0
- package/es/services/popover/reposition_on_scroll.js +61 -0
- package/es/test/cypress/index.d.ts +12 -0
- package/es/test/cypress/index.js +9 -0
- package/es/test/cypress/matchers.d.ts +20 -0
- package/es/test/cypress/matchers.js +54 -0
- package/es/test/cypress/test_reposition_on_scroll.js +66 -0
- package/es/test/enzyme/enzyme_matchers.d.ts +36 -0
- package/es/test/enzyme/enzyme_matchers.js +43 -0
- package/es/test/enzyme/index.d.ts +14 -0
- package/es/test/enzyme/index.js +10 -0
- package/es/test/rtl/index.d.ts +9 -1
- package/es/test/rtl/index.js +2 -1
- package/es/test/rtl/matchers.d.ts +36 -0
- package/es/test/rtl/matchers.js +82 -0
- package/es/utils/element_can_be_disabled.js +16 -0
- package/es/utils/index.js +2 -1
- package/eui.d.ts +588 -180
- package/i18ntokens.json +1357 -1231
- package/lib/components/accessibility/skip_link/skip_link.js +10 -1
- package/lib/components/bottom_bar/bottom_bar.js +11 -1
- package/lib/components/button/button.js +21 -26
- package/lib/components/button/button_display/_button_display.js +31 -29
- package/lib/components/button/button_display/_button_display.styles.js +4 -4
- package/lib/components/button/button_empty/button_empty.js +31 -13
- package/lib/components/button/button_group/button_group.js +49 -31
- package/lib/components/button/button_group/button_group_button.js +14 -2
- package/lib/components/button/button_group/button_group_button.styles.js +10 -6
- package/lib/components/button/button_icon/button_icon.js +29 -5
- package/lib/components/card/card.js +21 -26
- package/lib/components/card/card_select/card_select.js +21 -26
- package/lib/components/code/code_block_virtualized.js +9 -7
- package/lib/components/collapsible_nav_beta/_kibana_solution/collapsible_nav_kibana_solution.js +13 -1
- package/lib/components/datagrid/body/cell/data_grid_cell.js +35 -12
- package/lib/components/datagrid/body/data_grid_body.js +23 -6
- package/lib/components/datagrid/body/data_grid_body_custom.js +23 -6
- package/lib/components/datagrid/body/data_grid_body_virtualized.js +23 -6
- package/lib/components/datagrid/body/header/data_grid_header_cell.js +23 -6
- package/lib/components/datagrid/controls/column_selector.js +36 -19
- package/lib/components/datagrid/controls/column_sorting.js +23 -6
- package/lib/components/datagrid/controls/data_grid_toolbar_control.js +13 -7
- package/lib/components/datagrid/data_grid.js +5 -1
- package/lib/components/datagrid/utils/in_memory.js +25 -7
- package/lib/components/date_picker/auto_refresh/auto_refresh.js +12 -3
- package/lib/components/date_picker/super_date_picker/date_popover/absolute_tab.js +30 -4
- package/lib/components/date_picker/super_date_picker/date_popover/date_popover_button.js +24 -3
- package/lib/components/date_picker/super_date_picker/date_popover/date_popover_content.js +26 -4
- package/lib/components/date_picker/super_date_picker/date_popover/relative_tab.js +29 -3
- package/lib/components/date_picker/super_date_picker/date_popover/timezone_display.js +104 -0
- package/lib/components/date_picker/super_date_picker/date_popover/timezone_display.styles.js +25 -0
- package/lib/components/date_picker/super_date_picker/pretty_duration.js +2 -9
- package/lib/components/date_picker/super_date_picker/relative_utils.js +9 -0
- package/lib/components/date_picker/super_date_picker/super_date_picker.js +118 -26
- package/lib/components/date_picker/super_date_picker/time_window_buttons.js +193 -0
- package/lib/components/facet/facet_button.js +9 -19
- package/lib/components/filter_group/filter_button.js +14 -1
- package/lib/components/flyout/flyout.js +26 -9
- package/lib/components/form/form_control_button/form_control_button.js +13 -7
- package/lib/components/header/header_links/header_link.js +13 -7
- package/lib/components/header/header_section/header_section_item_button.js +13 -7
- package/lib/components/icon/assets/boxes_vertical.js +1 -1
- package/lib/components/icon/assets/checkInCircleFilled.js +1 -2
- package/lib/components/icon/assets/errorFilled.js +1 -2
- package/lib/components/icon/assets/warningFilled.js +1 -2
- package/lib/components/icon/icon_map.js +3 -6
- package/lib/components/icon/svgs/boxes_vertical.svg +1 -1
- package/lib/components/icon/svgs/checkInCircleFilled.svg +1 -1
- package/lib/components/icon/svgs/errorFilled.svg +1 -1
- package/lib/components/icon/svgs/warningFilled.svg +1 -1
- package/lib/components/list_group/list_group.js +13 -1
- package/lib/components/list_group/list_group_item.js +13 -1
- package/lib/components/list_group/list_group_item_extra_action.js +13 -1
- package/lib/components/list_group/pinnable_list_group/pinnable_list_group.js +15 -2
- package/lib/components/overlay_mask/overlay_mask.styles.js +1 -1
- package/lib/components/pagination/pagination_button.js +13 -7
- package/lib/components/popover/popover.js +21 -15
- package/lib/components/provider/component_defaults/component_defaults.js +22 -2
- package/lib/components/table/table_row.styles.js +1 -1
- package/lib/components/tool_tip/tool_tip.js +24 -24
- package/lib/global_styling/index.js +16 -1
- package/lib/global_styling/mixins/_button.js +1 -1
- package/lib/global_styling/utility/selectors.js +15 -0
- package/lib/services/focus_trap/focus_trap_pub_sub.js +80 -0
- package/lib/services/focus_trap/index.js +12 -0
- package/lib/services/hooks/index.js +18 -1
- package/lib/services/hooks/useEuiDisabledElement.js +199 -0
- package/lib/services/index.js +8 -0
- package/lib/services/popover/reposition_on_scroll.js +67 -0
- package/lib/test/cypress/index.d.ts +12 -0
- package/lib/test/cypress/index.js +18 -0
- package/lib/test/cypress/matchers.d.ts +20 -0
- package/lib/test/cypress/matchers.js +61 -0
- package/lib/test/cypress/test_reposition_on_scroll.js +69 -0
- package/lib/test/enzyme/enzyme_matchers.d.ts +36 -0
- package/lib/test/enzyme/enzyme_matchers.js +49 -0
- package/lib/test/enzyme/index.d.ts +14 -0
- package/lib/test/enzyme/index.js +24 -0
- package/lib/test/rtl/index.d.ts +9 -1
- package/lib/test/rtl/index.js +24 -2
- package/lib/test/rtl/matchers.d.ts +36 -0
- package/lib/test/rtl/matchers.js +86 -0
- package/lib/utils/element_can_be_disabled.js +22 -0
- package/lib/utils/index.js +14 -1
- package/optimize/es/components/bottom_bar/bottom_bar.js +12 -2
- package/optimize/es/components/button/button_display/_button_display.js +24 -12
- package/optimize/es/components/button/button_display/_button_display.styles.js +4 -4
- package/optimize/es/components/button/button_empty/button_empty.js +18 -6
- package/optimize/es/components/button/button_group/button_group.js +10 -5
- package/optimize/es/components/button/button_group/button_group_button.js +1 -1
- package/optimize/es/components/button/button_group/button_group_button.styles.js +12 -8
- package/optimize/es/components/button/button_icon/button_icon.js +17 -5
- package/optimize/es/components/code/code_block_virtualized.js +9 -7
- package/optimize/es/components/datagrid/controls/column_selector.js +36 -19
- package/optimize/es/components/datagrid/data_grid.js +5 -1
- package/optimize/es/components/datagrid/utils/in_memory.js +2 -1
- package/optimize/es/components/date_picker/super_date_picker/date_popover/absolute_tab.js +12 -4
- package/optimize/es/components/date_picker/super_date_picker/date_popover/date_popover_button.js +5 -2
- package/optimize/es/components/date_picker/super_date_picker/date_popover/date_popover_content.js +7 -3
- package/optimize/es/components/date_picker/super_date_picker/date_popover/relative_tab.js +10 -2
- package/optimize/es/components/date_picker/super_date_picker/date_popover/timezone_display.js +97 -0
- package/optimize/es/components/date_picker/super_date_picker/date_popover/timezone_display.styles.js +19 -0
- package/optimize/es/components/date_picker/super_date_picker/pretty_duration.js +1 -8
- package/optimize/es/components/date_picker/super_date_picker/relative_utils.js +8 -0
- package/optimize/es/components/date_picker/super_date_picker/super_date_picker.js +49 -25
- package/optimize/es/components/date_picker/super_date_picker/time_window_buttons.js +185 -0
- package/optimize/es/components/flyout/flyout.js +27 -10
- package/optimize/es/components/icon/assets/boxes_vertical.js +1 -1
- package/optimize/es/components/icon/assets/checkInCircleFilled.js +1 -2
- package/optimize/es/components/icon/assets/errorFilled.js +1 -2
- package/optimize/es/components/icon/assets/warningFilled.js +1 -2
- package/optimize/es/components/icon/icon_map.js +3 -6
- package/optimize/es/components/overlay_mask/overlay_mask.styles.js +1 -1
- package/optimize/es/components/popover/popover.js +22 -16
- package/optimize/es/components/table/table_row.styles.js +1 -1
- package/optimize/es/components/tool_tip/tool_tip.js +24 -24
- package/optimize/es/global_styling/index.js +2 -1
- package/optimize/es/global_styling/mixins/_button.js +1 -1
- package/optimize/es/global_styling/utility/selectors.js +9 -0
- package/optimize/es/services/focus_trap/focus_trap_pub_sub.js +74 -0
- package/optimize/es/services/focus_trap/index.js +9 -0
- package/optimize/es/services/hooks/index.js +2 -1
- package/optimize/es/services/hooks/useEuiDisabledElement.js +192 -0
- package/optimize/es/services/index.js +1 -0
- package/optimize/es/services/popover/reposition_on_scroll.js +61 -0
- package/optimize/es/test/cypress/index.d.ts +12 -0
- package/optimize/es/test/cypress/index.js +9 -0
- package/optimize/es/test/cypress/matchers.d.ts +20 -0
- package/optimize/es/test/cypress/matchers.js +54 -0
- package/optimize/es/test/cypress/test_reposition_on_scroll.js +63 -0
- package/optimize/es/test/enzyme/enzyme_matchers.d.ts +36 -0
- package/optimize/es/test/enzyme/enzyme_matchers.js +43 -0
- package/optimize/es/test/enzyme/index.d.ts +14 -0
- package/optimize/es/test/enzyme/index.js +10 -0
- package/optimize/es/test/rtl/index.d.ts +9 -1
- package/optimize/es/test/rtl/index.js +2 -1
- package/optimize/es/test/rtl/matchers.d.ts +36 -0
- package/optimize/es/test/rtl/matchers.js +82 -0
- package/optimize/es/utils/element_can_be_disabled.js +16 -0
- package/optimize/es/utils/index.js +2 -1
- package/optimize/lib/components/bottom_bar/bottom_bar.js +11 -1
- package/optimize/lib/components/button/button_display/_button_display.js +23 -11
- package/optimize/lib/components/button/button_display/_button_display.styles.js +4 -4
- package/optimize/lib/components/button/button_empty/button_empty.js +17 -5
- package/optimize/lib/components/button/button_group/button_group.js +10 -5
- package/optimize/lib/components/button/button_group/button_group_button.js +1 -1
- package/optimize/lib/components/button/button_group/button_group_button.styles.js +10 -6
- package/optimize/lib/components/button/button_icon/button_icon.js +16 -4
- package/optimize/lib/components/code/code_block_virtualized.js +9 -7
- package/optimize/lib/components/datagrid/controls/column_selector.js +36 -19
- package/optimize/lib/components/datagrid/data_grid.js +5 -1
- package/optimize/lib/components/datagrid/utils/in_memory.js +2 -1
- package/optimize/lib/components/date_picker/super_date_picker/date_popover/absolute_tab.js +11 -3
- package/optimize/lib/components/date_picker/super_date_picker/date_popover/date_popover_button.js +5 -2
- package/optimize/lib/components/date_picker/super_date_picker/date_popover/date_popover_content.js +7 -3
- package/optimize/lib/components/date_picker/super_date_picker/date_popover/relative_tab.js +10 -2
- package/optimize/lib/components/date_picker/super_date_picker/date_popover/timezone_display.js +103 -0
- package/optimize/lib/components/date_picker/super_date_picker/date_popover/timezone_display.styles.js +25 -0
- package/optimize/lib/components/date_picker/super_date_picker/pretty_duration.js +2 -9
- package/optimize/lib/components/date_picker/super_date_picker/relative_utils.js +9 -0
- package/optimize/lib/components/date_picker/super_date_picker/super_date_picker.js +49 -25
- package/optimize/lib/components/date_picker/super_date_picker/time_window_buttons.js +193 -0
- package/optimize/lib/components/flyout/flyout.js +26 -9
- package/optimize/lib/components/icon/assets/boxes_vertical.js +1 -1
- package/optimize/lib/components/icon/assets/checkInCircleFilled.js +1 -2
- package/optimize/lib/components/icon/assets/errorFilled.js +1 -2
- package/optimize/lib/components/icon/assets/warningFilled.js +1 -2
- package/optimize/lib/components/icon/icon_map.js +3 -6
- package/optimize/lib/components/icon/svgs/boxes_vertical.svg +1 -1
- package/optimize/lib/components/icon/svgs/checkInCircleFilled.svg +1 -1
- package/optimize/lib/components/icon/svgs/errorFilled.svg +1 -1
- package/optimize/lib/components/icon/svgs/warningFilled.svg +1 -1
- package/optimize/lib/components/overlay_mask/overlay_mask.styles.js +1 -1
- package/optimize/lib/components/popover/popover.js +21 -15
- package/optimize/lib/components/table/table_row.styles.js +1 -1
- package/optimize/lib/components/tool_tip/tool_tip.js +24 -24
- package/optimize/lib/global_styling/index.js +16 -1
- package/optimize/lib/global_styling/mixins/_button.js +1 -1
- package/optimize/lib/global_styling/utility/selectors.js +15 -0
- package/optimize/lib/services/focus_trap/focus_trap_pub_sub.js +80 -0
- package/optimize/lib/services/focus_trap/index.js +12 -0
- package/optimize/lib/services/hooks/index.js +18 -1
- package/optimize/lib/services/hooks/useEuiDisabledElement.js +197 -0
- package/optimize/lib/services/index.js +8 -0
- package/optimize/lib/services/popover/reposition_on_scroll.js +67 -0
- package/optimize/lib/test/cypress/index.d.ts +12 -0
- package/optimize/lib/test/cypress/index.js +18 -0
- package/optimize/lib/test/cypress/matchers.d.ts +20 -0
- package/optimize/lib/test/cypress/matchers.js +61 -0
- package/optimize/lib/test/cypress/test_reposition_on_scroll.js +70 -0
- package/optimize/lib/test/enzyme/enzyme_matchers.d.ts +36 -0
- package/optimize/lib/test/enzyme/enzyme_matchers.js +50 -0
- package/optimize/lib/test/enzyme/index.d.ts +14 -0
- package/optimize/lib/test/enzyme/index.js +24 -0
- package/optimize/lib/test/rtl/index.d.ts +9 -1
- package/optimize/lib/test/rtl/index.js +24 -2
- package/optimize/lib/test/rtl/matchers.d.ts +36 -0
- package/optimize/lib/test/rtl/matchers.js +86 -0
- package/optimize/lib/utils/element_can_be_disabled.js +22 -0
- package/optimize/lib/utils/index.js +14 -1
- package/package.json +1 -1
- package/test-env/components/accessibility/skip_link/skip_link.js +10 -1
- package/test-env/components/bottom_bar/bottom_bar.js +11 -1
- package/test-env/components/button/button.js +21 -26
- package/test-env/components/button/button_display/_button_display.js +31 -29
- package/test-env/components/button/button_display/_button_display.styles.js +4 -4
- package/test-env/components/button/button_empty/button_empty.js +31 -13
- package/test-env/components/button/button_group/button_group.js +49 -31
- package/test-env/components/button/button_group/button_group_button.js +14 -2
- package/test-env/components/button/button_group/button_group_button.styles.js +10 -6
- package/test-env/components/button/button_icon/button_icon.js +29 -5
- package/test-env/components/card/card.js +21 -26
- package/test-env/components/card/card_select/card_select.js +21 -26
- package/test-env/components/code/code_block_virtualized.js +9 -7
- package/test-env/components/collapsible_nav_beta/_kibana_solution/collapsible_nav_kibana_solution.js +13 -1
- package/test-env/components/datagrid/body/cell/data_grid_cell.js +35 -12
- package/test-env/components/datagrid/body/data_grid_body.js +23 -6
- package/test-env/components/datagrid/body/data_grid_body_custom.js +23 -6
- package/test-env/components/datagrid/body/data_grid_body_virtualized.js +23 -6
- package/test-env/components/datagrid/body/header/data_grid_header_cell.js +23 -6
- package/test-env/components/datagrid/controls/column_selector.js +36 -19
- package/test-env/components/datagrid/controls/column_sorting.js +23 -6
- package/test-env/components/datagrid/controls/data_grid_toolbar_control.js +13 -7
- package/test-env/components/datagrid/data_grid.js +5 -1
- package/test-env/components/datagrid/utils/in_memory.js +25 -7
- package/test-env/components/date_picker/auto_refresh/auto_refresh.js +12 -3
- package/test-env/components/date_picker/super_date_picker/date_popover/absolute_tab.js +30 -4
- package/test-env/components/date_picker/super_date_picker/date_popover/date_popover_button.js +24 -3
- package/test-env/components/date_picker/super_date_picker/date_popover/date_popover_content.js +26 -4
- package/test-env/components/date_picker/super_date_picker/date_popover/relative_tab.js +29 -3
- package/test-env/components/date_picker/super_date_picker/date_popover/timezone_display.js +103 -0
- package/test-env/components/date_picker/super_date_picker/date_popover/timezone_display.styles.js +25 -0
- package/test-env/components/date_picker/super_date_picker/pretty_duration.js +2 -9
- package/test-env/components/date_picker/super_date_picker/relative_utils.js +9 -0
- package/test-env/components/date_picker/super_date_picker/super_date_picker.js +118 -26
- package/test-env/components/date_picker/super_date_picker/time_window_buttons.js +193 -0
- package/test-env/components/facet/facet_button.js +9 -19
- package/test-env/components/filter_group/filter_button.js +14 -1
- package/test-env/components/form/form_control_button/form_control_button.js +13 -7
- package/test-env/components/header/header_links/header_link.js +13 -7
- package/test-env/components/header/header_section/header_section_item_button.js +13 -7
- package/test-env/components/icon/assets/boxes_vertical.js +1 -1
- package/test-env/components/icon/assets/checkInCircleFilled.js +1 -2
- package/test-env/components/icon/assets/errorFilled.js +1 -2
- package/test-env/components/icon/assets/warningFilled.js +1 -2
- package/test-env/components/icon/icon_map.js +3 -6
- package/test-env/components/list_group/list_group.js +13 -1
- package/test-env/components/list_group/list_group_item.js +13 -1
- package/test-env/components/list_group/list_group_item_extra_action.js +13 -1
- package/test-env/components/list_group/pinnable_list_group/pinnable_list_group.js +15 -2
- package/test-env/components/overlay_mask/overlay_mask.styles.js +1 -1
- package/test-env/components/pagination/pagination_button.js +13 -7
- package/test-env/components/popover/popover.js +21 -15
- package/test-env/components/provider/component_defaults/component_defaults.js +22 -2
- package/test-env/components/table/table_row.styles.js +1 -1
- package/test-env/components/tool_tip/tool_tip.js +24 -24
- package/test-env/global_styling/index.js +16 -1
- package/test-env/global_styling/mixins/_button.js +1 -1
- package/test-env/global_styling/utility/selectors.js +15 -0
- package/test-env/services/focus_trap/focus_trap_pub_sub.js +80 -0
- package/test-env/services/focus_trap/index.js +12 -0
- package/test-env/services/hooks/index.js +18 -1
- package/test-env/services/hooks/useEuiDisabledElement.js +197 -0
- package/test-env/services/index.js +8 -0
- package/test-env/services/popover/reposition_on_scroll.js +67 -0
- package/test-env/test/cypress/index.js +18 -0
- package/test-env/test/cypress/matchers.js +61 -0
- package/test-env/test/cypress/test_reposition_on_scroll.js +70 -0
- package/test-env/test/enzyme/enzyme_matchers.js +50 -0
- package/test-env/test/enzyme/index.js +24 -0
- package/test-env/test/rtl/index.js +24 -2
- package/test-env/test/rtl/matchers.js +86 -0
- package/test-env/utils/element_can_be_disabled.js +22 -0
- package/test-env/utils/index.js +14 -1
|
@@ -12,10 +12,9 @@ function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringif
|
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
14
|
import { css } from '@emotion/react';
|
|
15
|
-
import { mathWithUnits, logicalCSS, logicalShorthandCSS, euiTextShift, euiOutline, euiCanAnimate, preventForcedColors, highContrastModeStyles } from '../../../global_styling';
|
|
16
|
-
import { BUTTON_COLORS } from '../../../global_styling/mixins/_button';
|
|
15
|
+
import { mathWithUnits, logicalCSS, logicalShorthandCSS, euiTextShift, euiOutline, euiCanAnimate, preventForcedColors, highContrastModeStyles, euiDisabledSelector } from '../../../global_styling';
|
|
16
|
+
import { BUTTON_COLORS, euiButtonSizeMap } from '../../../global_styling/mixins/_button';
|
|
17
17
|
import { euiScreenReaderOnly } from '../../accessibility';
|
|
18
|
-
import { euiFormVariables } from '../../form/form.styles';
|
|
19
18
|
var _ref = process.env.NODE_ENV === "production" ? {
|
|
20
19
|
name: "m6ysua-tooltipWrapper",
|
|
21
20
|
styles: "overflow:hidden;&:has(:focus-visible){z-index:1;};label:tooltipWrapper;"
|
|
@@ -35,9 +34,8 @@ var _ref2 = process.env.NODE_ENV === "production" ? {
|
|
|
35
34
|
export var euiButtonGroupButtonStyles = function euiButtonGroupButtonStyles(euiThemeContext) {
|
|
36
35
|
var euiTheme = euiThemeContext.euiTheme,
|
|
37
36
|
highContrastMode = euiThemeContext.highContrastMode;
|
|
38
|
-
var
|
|
39
|
-
|
|
40
|
-
var compressedButtonHeight = mathWithUnits([controlCompressedHeight, euiTheme.border.width.thin], function (x, y) {
|
|
37
|
+
var buttonSizes = euiButtonSizeMap(euiThemeContext);
|
|
38
|
+
var compressedButtonHeight = mathWithUnits([buttonSizes.s.height, euiTheme.border.width.thin], function (x, y) {
|
|
41
39
|
return x - y * 6;
|
|
42
40
|
});
|
|
43
41
|
var selectedSelectors = '.euiButtonGroupButton-isSelected, .euiButtonGroup__tooltipWrapper-isSelected';
|
|
@@ -49,10 +47,16 @@ export var euiButtonGroupButtonStyles = function euiButtonGroupButtonStyles(euiT
|
|
|
49
47
|
euiButtonGroupButton: /*#__PURE__*/css(logicalCSS('min-width', 0), " flex-shrink:1;flex-grow:0;z-index:0;&:focus-visible{z-index:2;}", euiCanAnimate, "{transition:background-color ", euiTheme.animation.normal, " ease-in-out,color ", euiTheme.animation.normal, " ease-in-out;}&:is(", selectedSelectors, "){", highContrastModeStyles(euiThemeContext, {
|
|
50
48
|
forced: "\n --highContrastHoverIndicatorColor: ".concat(euiTheme.colors.textInverse, ";\n border: none;\n\n /* styles the content manually instead of the button itself to preserve the system\n focus style, as otherwise preventForcedColors() would require manual styling */\n > [class*=\"euiButtonDisplayContent\"] {\n ").concat(preventForcedColors(euiThemeContext), "\n color: ").concat(euiTheme.colors.emptyShade, ";\n border: none;\n }\n ")
|
|
51
49
|
}), ";};label:euiButtonGroupButton;"),
|
|
52
|
-
iconOnly:
|
|
50
|
+
iconOnly: {
|
|
51
|
+
// used only as classname, sizes are added separately
|
|
52
|
+
iconOnly: /*#__PURE__*/css(";label:iconOnly;"),
|
|
53
|
+
s: "\n ".concat(logicalCSS('width', buttonSizes.s.height), "\n "),
|
|
54
|
+
m: "\n ".concat(logicalCSS('width', buttonSizes.m.height), "\n "),
|
|
55
|
+
compressed: "\n ".concat(logicalCSS('width', compressedButtonHeight), "\n ")
|
|
56
|
+
},
|
|
53
57
|
// Sizes
|
|
54
58
|
uncompressed: {
|
|
55
|
-
uncompressed: /*#__PURE__*/css("&:focus-visible{", euiOutline(euiThemeContext, 'inset', euiTheme.components.buttonGroupFocusColor), ";}&:is(", selectedSelectors, "):not(
|
|
59
|
+
uncompressed: /*#__PURE__*/css("&:focus-visible{", euiOutline(euiThemeContext, 'inset', euiTheme.components.buttonGroupFocusColor), ";}&:is(", selectedSelectors, "):not(", euiDisabledSelector, "){z-index:1;border:", euiTheme.border.width.thin, " solid transparent;", highContrastModeStyles(euiThemeContext, {
|
|
56
60
|
forced: "\n /* use inset focus outline to ensure visibility, same as custom hover.\n NOTE: temp solution - this will be revisited once we handle global focus styles */\n &:focus-visible {\n outline-color: ".concat(euiTheme.colors.textInverse, ";\n /* has to be inset due to overflow: hidden */\n outline-offset: -").concat(mathWithUnits(euiTheme.border.width.thin, function (x) {
|
|
57
61
|
return x * 4;
|
|
58
62
|
}), ";\n }\n ")
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
2
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
|
-
var _excluded = ["className", "iconType", "iconSize", "color", "isDisabled", "disabled", "href", "type", "display", "target", "rel", "size", "buttonRef", "isSelected", "isLoading"]
|
|
3
|
+
var _excluded = ["className", "iconType", "iconSize", "color", "isDisabled", "disabled", "hasAriaDisabled", "href", "type", "display", "target", "rel", "size", "buttonRef", "isSelected", "isLoading"],
|
|
4
|
+
_excluded2 = ["ref"];
|
|
4
5
|
/*
|
|
5
6
|
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
6
7
|
* or more contributor license agreements. Licensed under the Elastic License
|
|
@@ -11,7 +12,8 @@ var _excluded = ["className", "iconType", "iconSize", "color", "isDisabled", "di
|
|
|
11
12
|
|
|
12
13
|
import React from 'react';
|
|
13
14
|
import classNames from 'classnames';
|
|
14
|
-
import { getSecureRelForTarget, useEuiMemoizedStyles } from '../../../services';
|
|
15
|
+
import { getSecureRelForTarget, useCombinedRefs, useEuiMemoizedStyles } from '../../../services';
|
|
16
|
+
import { useEuiDisabledElement } from '../../../services/hooks/useEuiDisabledElement';
|
|
15
17
|
import { EuiIcon } from '../../icon';
|
|
16
18
|
import { EuiLoadingSpinner } from '../../loading';
|
|
17
19
|
import { useEuiButtonColorCSS, useEuiButtonFocusCSS } from '../../../global_styling/mixins/_button';
|
|
@@ -29,6 +31,8 @@ export var EuiButtonIcon = function EuiButtonIcon(_ref) {
|
|
|
29
31
|
color = _ref$color === void 0 ? 'primary' : _ref$color,
|
|
30
32
|
_isDisabled = _ref.isDisabled,
|
|
31
33
|
disabled = _ref.disabled,
|
|
34
|
+
_ref$hasAriaDisabled = _ref.hasAriaDisabled,
|
|
35
|
+
hasAriaDisabled = _ref$hasAriaDisabled === void 0 ? false : _ref$hasAriaDisabled,
|
|
32
36
|
href = _ref.href,
|
|
33
37
|
_ref$type = _ref.type,
|
|
34
38
|
type = _ref$type === void 0 ? 'button' : _ref$type,
|
|
@@ -47,6 +51,14 @@ export var EuiButtonIcon = function EuiButtonIcon(_ref) {
|
|
|
47
51
|
href: href,
|
|
48
52
|
isLoading: isLoading
|
|
49
53
|
});
|
|
54
|
+
var _useEuiDisabledElemen = useEuiDisabledElement({
|
|
55
|
+
isDisabled: isDisabled,
|
|
56
|
+
hasAriaDisabled: hasAriaDisabled,
|
|
57
|
+
onKeyDown: rest.onKeyDown
|
|
58
|
+
}),
|
|
59
|
+
disabledRef = _useEuiDisabledElemen.ref,
|
|
60
|
+
disabledButtonProps = _objectWithoutProperties(_useEuiDisabledElemen, _excluded2);
|
|
61
|
+
var setCombinedRef = useCombinedRefs([disabledRef, buttonRef]);
|
|
50
62
|
var ariaHidden = rest['aria-hidden'];
|
|
51
63
|
var isAriaHidden = ariaHidden === 'true' || ariaHidden === true;
|
|
52
64
|
if (!rest['aria-label'] && !rest['aria-labelledby'] && !isAriaHidden) {
|
|
@@ -106,7 +118,7 @@ export var EuiButtonIcon = function EuiButtonIcon(_ref) {
|
|
|
106
118
|
href: href,
|
|
107
119
|
target: target,
|
|
108
120
|
rel: secureRel,
|
|
109
|
-
ref:
|
|
121
|
+
ref: setCombinedRef
|
|
110
122
|
}, rest), buttonIcon);
|
|
111
123
|
}
|
|
112
124
|
var buttonType;
|
|
@@ -117,6 +129,6 @@ export var EuiButtonIcon = function EuiButtonIcon(_ref) {
|
|
|
117
129
|
className: classes,
|
|
118
130
|
"aria-pressed": isSelected,
|
|
119
131
|
type: type,
|
|
120
|
-
ref:
|
|
121
|
-
}, rest), buttonIcon);
|
|
132
|
+
ref: setCombinedRef
|
|
133
|
+
}, rest, disabledButtonProps), buttonIcon);
|
|
122
134
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
2
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
|
-
var _excluded = ["style"
|
|
3
|
+
var _excluded = ["style"],
|
|
4
4
|
_excluded2 = ["style"];
|
|
5
5
|
/*
|
|
6
6
|
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
@@ -23,29 +23,31 @@ export var EuiCodeBlockVirtualized = function EuiCodeBlockVirtualized(_ref) {
|
|
|
23
23
|
overflowHeight = _ref.overflowHeight,
|
|
24
24
|
preProps = _ref.preProps,
|
|
25
25
|
codeProps = _ref.codeProps;
|
|
26
|
+
// NOTE: Don't inject other content (e.g. a label) inside this outer virtualized
|
|
27
|
+
// container as react-window requires this to be stable for scroll calculations.
|
|
28
|
+
// Instead, inject it into the inner virtualized element.
|
|
26
29
|
var VirtualizedOuterElement = useMemo(function () {
|
|
27
30
|
return /*#__PURE__*/forwardRef(function (_ref2, ref) {
|
|
28
31
|
var style = _ref2.style,
|
|
29
|
-
children = _ref2.children,
|
|
30
32
|
props = _objectWithoutProperties(_ref2, _excluded);
|
|
31
33
|
return ___EmotionJSX("pre", _extends({
|
|
32
34
|
style: logicalStyles(style)
|
|
33
35
|
}, props, {
|
|
34
36
|
ref: ref
|
|
35
|
-
}, preProps)
|
|
37
|
+
}, preProps));
|
|
36
38
|
});
|
|
37
|
-
}, [preProps
|
|
39
|
+
}, [preProps]);
|
|
38
40
|
var VirtualizedInnerElement = useMemo(function () {
|
|
39
41
|
return /*#__PURE__*/forwardRef(function (_ref3, ref) {
|
|
40
42
|
var style = _ref3.style,
|
|
41
43
|
props = _objectWithoutProperties(_ref3, _excluded2);
|
|
42
|
-
return ___EmotionJSX("code", _extends({
|
|
44
|
+
return ___EmotionJSX(React.Fragment, null, label, ___EmotionJSX("code", _extends({
|
|
43
45
|
style: logicalStyles(style)
|
|
44
46
|
}, props, {
|
|
45
47
|
ref: ref
|
|
46
|
-
}, codeProps));
|
|
48
|
+
}, codeProps)));
|
|
47
49
|
});
|
|
48
|
-
}, [codeProps]);
|
|
50
|
+
}, [codeProps, label]);
|
|
49
51
|
var virtualizationProps = {
|
|
50
52
|
itemData: data,
|
|
51
53
|
itemSize: rowHeight,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
2
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
3
3
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
4
4
|
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
|
|
5
5
|
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
@@ -37,31 +37,48 @@ export var useDataGridColumnSelector = function useDataGridColumnSelector(availa
|
|
|
37
37
|
var id = _ref.id;
|
|
38
38
|
return id;
|
|
39
39
|
});
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
// remove duplicate columns to ensure unique columns
|
|
41
|
+
var availableColumnIdsSet = new Set(availableColumnIds);
|
|
42
|
+
if (process.env.NODE_ENV === 'development') {
|
|
43
|
+
if (availableColumnIds.length > availableColumnIdsSet.size) {
|
|
44
|
+
var duplicateIds = [];
|
|
45
|
+
var _iterator = _createForOfIteratorHelper(availableColumnIds),
|
|
46
|
+
_step;
|
|
47
|
+
try {
|
|
48
|
+
var _loop = function _loop() {
|
|
49
|
+
var id = _step.value;
|
|
50
|
+
if (!duplicateIds.includes(id) && availableColumnIds.filter(function (_id) {
|
|
51
|
+
return _id === id;
|
|
52
|
+
}).length > 1) {
|
|
53
|
+
duplicateIds.push(id);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
57
|
+
_loop();
|
|
58
|
+
}
|
|
59
|
+
} catch (err) {
|
|
60
|
+
_iterator.e(err);
|
|
61
|
+
} finally {
|
|
62
|
+
_iterator.f();
|
|
63
|
+
}
|
|
64
|
+
console.warn("\u26A0\uFE0F EuiDataGrid: Duplicate column IDs detected and removed: ".concat(duplicateIds.join(', '), "."), '\n Column IDs must be unique. Only the first occurrence of each duplicate will be used.');
|
|
65
|
+
}
|
|
66
|
+
}
|
|
42
67
|
var validVisibleColumns = visibleColumns.filter(function (id) {
|
|
43
|
-
return
|
|
68
|
+
return availableColumnIdsSet.has(id);
|
|
44
69
|
});
|
|
45
70
|
var visibleSet = new Set(validVisibleColumns);
|
|
46
71
|
var result = [];
|
|
47
72
|
var visibleIndex = 0;
|
|
48
|
-
var
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
var columnId = _step.value;
|
|
53
|
-
if (visibleSet.has(columnId)) {
|
|
54
|
-
// Replace with next visible column in order
|
|
73
|
+
for (var _i = 0, _arr = _toConsumableArray(availableColumnIdsSet); _i < _arr.length; _i++) {
|
|
74
|
+
var columnId = _arr[_i];
|
|
75
|
+
if (visibleSet.has(columnId)) {
|
|
76
|
+
if (visibleIndex < validVisibleColumns.length) {
|
|
55
77
|
result.push(validVisibleColumns[visibleIndex++]);
|
|
56
|
-
} else {
|
|
57
|
-
// Keep hidden column in original position
|
|
58
|
-
result.push(columnId);
|
|
59
78
|
}
|
|
79
|
+
} else {
|
|
80
|
+
result.push(columnId);
|
|
60
81
|
}
|
|
61
|
-
} catch (err) {
|
|
62
|
-
_iterator.e(err);
|
|
63
|
-
} finally {
|
|
64
|
-
_iterator.f();
|
|
65
82
|
}
|
|
66
83
|
return result;
|
|
67
84
|
// doesn't depend on visibleColumns on purpose to keep it an initial state
|
|
@@ -126,7 +143,7 @@ export var useDataGridColumnSelector = function useDataGridColumnSelector(availa
|
|
|
126
143
|
anchorPosition: "downLeft",
|
|
127
144
|
panelPaddingSize: "none",
|
|
128
145
|
button: ___EmotionJSX(EuiDataGridToolbarControl, {
|
|
129
|
-
badgeContent: numberOfHiddenFields > 0 ? "".concat(orderedVisibleColumns.length, "/").concat(
|
|
146
|
+
badgeContent: numberOfHiddenFields > 0 ? "".concat(orderedVisibleColumns.length, "/").concat(sortedColumns.length) : sortedColumns.length,
|
|
130
147
|
iconType: "tableDensityNormal",
|
|
131
148
|
"data-test-subj": "dataGridColumnSelectorButton",
|
|
132
149
|
onClick: function onClick() {
|
|
@@ -156,7 +156,11 @@ export var EuiDataGrid = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(function (pr
|
|
|
156
156
|
*/
|
|
157
157
|
var displayValues = useMemo(function () {
|
|
158
158
|
return columns.reduce(function (acc, column) {
|
|
159
|
-
|
|
159
|
+
// prevent duplicate values
|
|
160
|
+
if (!acc[column.id]) {
|
|
161
|
+
return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, column.id, column.displayAsText || column.id));
|
|
162
|
+
}
|
|
163
|
+
return acc;
|
|
160
164
|
}, {});
|
|
161
165
|
}, [columns]);
|
|
162
166
|
var _useDataGridDisplaySe = useDataGridDisplaySelector(checkOrDefaultToolBarDisplayOptions(toolbarVisibility, 'showDisplaySelector'), gridStyleWithDefaults, _rowHeightsOptions),
|
|
@@ -87,13 +87,14 @@ export var EuiDataGridInMemoryRenderer = function EuiDataGridInMemoryRenderer(_r
|
|
|
87
87
|
var cells = [];
|
|
88
88
|
var _loop = function _loop(i) {
|
|
89
89
|
cells.push(columns.map(function (column, j) {
|
|
90
|
+
var key = "".concat(i, "-").concat(j, "-").concat(column.id);
|
|
90
91
|
var skipThisColumn = inMemory.skipColumns && inMemory.skipColumns.indexOf(column.id) !== -1;
|
|
91
92
|
if (skipThisColumn) {
|
|
92
93
|
return null;
|
|
93
94
|
}
|
|
94
95
|
var isExpandable = column.isExpandable !== undefined ? column.isExpandable : true;
|
|
95
96
|
return ___EmotionJSX("div", {
|
|
96
|
-
key:
|
|
97
|
+
key: key,
|
|
97
98
|
"data-dg-row": i,
|
|
98
99
|
"data-dg-column": column.id
|
|
99
100
|
}, ___EmotionJSX(CellElement, {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
1
2
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
3
|
/*
|
|
3
4
|
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
@@ -10,13 +11,14 @@ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
|
10
11
|
import React, { useState, useEffect, useCallback } from 'react';
|
|
11
12
|
import moment from 'moment';
|
|
12
13
|
import dateMath from '@elastic/datemath';
|
|
13
|
-
import { useUpdateEffect, useEuiMemoizedStyles } from '../../../../services';
|
|
14
|
+
import { useUpdateEffect, useEuiMemoizedStyles, useGeneratedHtmlId } from '../../../../services';
|
|
14
15
|
import { useEuiI18n } from '../../../i18n';
|
|
15
16
|
import { EuiFormRow, EuiFieldText, EuiFormLabel } from '../../../form';
|
|
16
17
|
import { EuiFlexGroup } from '../../../flex';
|
|
17
18
|
import { EuiButtonIcon } from '../../../button';
|
|
18
19
|
import { EuiCode } from '../../../code';
|
|
19
20
|
import { EuiDatePicker } from '../../date_picker';
|
|
21
|
+
import { EuiTimeZoneDisplay } from './timezone_display';
|
|
20
22
|
import { euiAbsoluteTabDateFormStyles } from './absolute_tab.styles';
|
|
21
23
|
|
|
22
24
|
// Allow users to paste in and have the datepicker parse multiple common date formats,
|
|
@@ -34,7 +36,9 @@ export var EuiAbsoluteTab = function EuiAbsoluteTab(_ref) {
|
|
|
34
36
|
utcOffset = _ref.utcOffset,
|
|
35
37
|
minDate = _ref.minDate,
|
|
36
38
|
maxDate = _ref.maxDate,
|
|
37
|
-
labelPrefix = _ref.labelPrefix
|
|
39
|
+
labelPrefix = _ref.labelPrefix,
|
|
40
|
+
_ref$timeZoneDisplayP = _ref.timeZoneDisplayProps,
|
|
41
|
+
timeZoneDisplayProps = _ref$timeZoneDisplayP === void 0 ? {} : _ref$timeZoneDisplayP;
|
|
38
42
|
var styles = useEuiMemoizedStyles(euiAbsoluteTabDateFormStyles);
|
|
39
43
|
var _useState = useState(function () {
|
|
40
44
|
var parsedValue = dateMath.parse(value, {
|
|
@@ -53,6 +57,7 @@ export var EuiAbsoluteTab = function EuiAbsoluteTab(_ref) {
|
|
|
53
57
|
setHasUnparsedText(false);
|
|
54
58
|
setIsTextInvalid(false);
|
|
55
59
|
}, [dateFormat]);
|
|
60
|
+
var timeZomeDescriptionId = useGeneratedHtmlId();
|
|
56
61
|
var submitButtonLabel = useEuiI18n('euiAbsoluteTab.dateFormatButtonLabel', 'Parse date');
|
|
57
62
|
var dateFormatError = useEuiI18n('euiAbsoluteTab.dateFormatError', 'Allowed formats: {dateFormat}, ISO 8601, RFC 2822, or Unix timestamp.', {
|
|
58
63
|
dateFormat: ___EmotionJSX(EuiCode, null, dateFormat)
|
|
@@ -143,7 +148,8 @@ export var EuiAbsoluteTab = function EuiAbsoluteTab(_ref) {
|
|
|
143
148
|
css: styles.euiAbsoluteTabDateForm__row,
|
|
144
149
|
isInvalid: isTextInvalid,
|
|
145
150
|
error: isTextInvalid ? dateFormatError : undefined,
|
|
146
|
-
helpText: hasUnparsedText && !isTextInvalid ? dateFormatError : undefined
|
|
151
|
+
helpText: hasUnparsedText && !isTextInvalid ? dateFormatError : undefined,
|
|
152
|
+
describedByIds: [timeZomeDescriptionId]
|
|
147
153
|
}, ___EmotionJSX(EuiFieldText, {
|
|
148
154
|
compressed: true,
|
|
149
155
|
isInvalid: isTextInvalid,
|
|
@@ -167,5 +173,7 @@ export var EuiAbsoluteTab = function EuiAbsoluteTab(_ref) {
|
|
|
167
173
|
"aria-label": submitButtonLabel,
|
|
168
174
|
title: submitButtonLabel,
|
|
169
175
|
"data-test-subj": "parseAbsoluteDateFormat"
|
|
170
|
-
}))
|
|
176
|
+
})), ___EmotionJSX(EuiTimeZoneDisplay, _extends({
|
|
177
|
+
id: timeZomeDescriptionId
|
|
178
|
+
}, timeZoneDisplayProps)));
|
|
171
179
|
};
|
package/optimize/es/components/date_picker/super_date_picker/date_popover/date_popover_button.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
2
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
|
-
var _excluded = ["position", "isDisabled", "isInvalid", "needsUpdating", "value", "buttonProps", "canRoundRelativeUnits", "roundUp", "onChange", "locale", "dateFormat", "utcOffset", "minDate", "maxDate", "timeFormat", "isOpen", "onPopoverToggle", "onPopoverClose", "compressed", "timeOptions"];
|
|
3
|
+
var _excluded = ["position", "isDisabled", "isInvalid", "needsUpdating", "value", "buttonProps", "canRoundRelativeUnits", "roundUp", "onChange", "locale", "dateFormat", "utcOffset", "minDate", "maxDate", "timeFormat", "isOpen", "onPopoverToggle", "onPopoverClose", "compressed", "timeOptions", "timeZoneDisplayProps"];
|
|
4
4
|
/*
|
|
5
5
|
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
6
6
|
* or more contributor license agreements. Licensed under the Elastic License
|
|
@@ -41,6 +41,8 @@ export var EuiDatePopoverButton = function EuiDatePopoverButton(props) {
|
|
|
41
41
|
onPopoverClose = props.onPopoverClose,
|
|
42
42
|
compressed = props.compressed,
|
|
43
43
|
timeOptions = props.timeOptions,
|
|
44
|
+
_props$timeZoneDispla = props.timeZoneDisplayProps,
|
|
45
|
+
timeZoneDisplayProps = _props$timeZoneDispla === void 0 ? {} : _props$timeZoneDispla,
|
|
44
46
|
rest = _objectWithoutProperties(props, _excluded);
|
|
45
47
|
var classes = classNames(['euiDatePopoverButton', "euiDatePopoverButton--".concat(position), {
|
|
46
48
|
'euiDatePopoverButton--compressed': compressed,
|
|
@@ -99,7 +101,8 @@ export var EuiDatePopoverButton = function EuiDatePopoverButton(props) {
|
|
|
99
101
|
utcOffset: utcOffset,
|
|
100
102
|
timeOptions: timeOptions,
|
|
101
103
|
minDate: minDate,
|
|
102
|
-
maxDate: maxDate
|
|
104
|
+
maxDate: maxDate,
|
|
105
|
+
timeZoneDisplayProps: timeZoneDisplayProps
|
|
103
106
|
}));
|
|
104
107
|
};
|
|
105
108
|
EuiDatePopoverButton.displayName = 'EuiDatePopoverButton';
|
package/optimize/es/components/date_picker/super_date_picker/date_popover/date_popover_content.js
CHANGED
|
@@ -32,7 +32,9 @@ export var EuiDatePopoverContent = function EuiDatePopoverContent(_ref) {
|
|
|
32
32
|
utcOffset = _ref.utcOffset,
|
|
33
33
|
timeOptions = _ref.timeOptions,
|
|
34
34
|
minDate = _ref.minDate,
|
|
35
|
-
maxDate = _ref.maxDate
|
|
35
|
+
maxDate = _ref.maxDate,
|
|
36
|
+
_ref$timeZoneDisplayP = _ref.timeZoneDisplayProps,
|
|
37
|
+
timeZoneDisplayProps = _ref$timeZoneDisplayP === void 0 ? {} : _ref$timeZoneDisplayP;
|
|
36
38
|
var styles = useEuiMemoizedStyles(euiDatePopoverContentStyles);
|
|
37
39
|
var onTabClick = function onTabClick(selectedTab) {
|
|
38
40
|
switch (selectedTab.id) {
|
|
@@ -63,7 +65,8 @@ export var EuiDatePopoverContent = function EuiDatePopoverContent(_ref) {
|
|
|
63
65
|
labelPrefix: labelPrefix,
|
|
64
66
|
utcOffset: utcOffset,
|
|
65
67
|
minDate: minDate,
|
|
66
|
-
maxDate: maxDate
|
|
68
|
+
maxDate: maxDate,
|
|
69
|
+
timeZoneDisplayProps: timeZoneDisplayProps
|
|
67
70
|
}),
|
|
68
71
|
'data-test-subj': 'superDatePickerAbsoluteTab',
|
|
69
72
|
'aria-label': "".concat(labelPrefix, ": ").concat(absoluteLabel)
|
|
@@ -77,7 +80,8 @@ export var EuiDatePopoverContent = function EuiDatePopoverContent(_ref) {
|
|
|
77
80
|
onChange: onChange,
|
|
78
81
|
roundUp: roundUp,
|
|
79
82
|
labelPrefix: labelPrefix,
|
|
80
|
-
timeOptions: timeOptions
|
|
83
|
+
timeOptions: timeOptions,
|
|
84
|
+
timeZoneDisplayProps: timeZoneDisplayProps
|
|
81
85
|
}),
|
|
82
86
|
'data-test-subj': 'superDatePickerRelativeTab',
|
|
83
87
|
'aria-label': "".concat(labelPrefix, ": ").concat(relativeLabel)
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
1
2
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
3
|
/*
|
|
3
4
|
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
@@ -19,6 +20,7 @@ import { EuiPopoverFooter } from '../../../popover';
|
|
|
19
20
|
import { EuiSpacer } from '../../../spacer';
|
|
20
21
|
import { INVALID_DATE } from '../date_modes';
|
|
21
22
|
import { parseRelativeParts, toRelativeStringFromParts } from '../relative_utils';
|
|
23
|
+
import { EuiTimeZoneDisplay } from './timezone_display';
|
|
22
24
|
import { jsx as ___EmotionJSX } from "@emotion/react";
|
|
23
25
|
export var EuiRelativeTab = function EuiRelativeTab(_ref) {
|
|
24
26
|
var _ref$timeOptions = _ref.timeOptions,
|
|
@@ -29,7 +31,9 @@ export var EuiRelativeTab = function EuiRelativeTab(_ref) {
|
|
|
29
31
|
value = _ref.value,
|
|
30
32
|
onChange = _ref.onChange,
|
|
31
33
|
roundUp = _ref.roundUp,
|
|
32
|
-
labelPrefix = _ref.labelPrefix
|
|
34
|
+
labelPrefix = _ref.labelPrefix,
|
|
35
|
+
_ref$timeZoneDisplayP = _ref.timeZoneDisplayProps,
|
|
36
|
+
timeZoneDisplayProps = _ref$timeZoneDisplayP === void 0 ? {} : _ref$timeZoneDisplayP;
|
|
33
37
|
var initialRelativeParts = useRef(parseRelativeParts(value));
|
|
34
38
|
var roundUnit = initialRelativeParts.current.roundUnit;
|
|
35
39
|
var _useState = useState(initialRelativeParts.current.unit),
|
|
@@ -77,6 +81,7 @@ export var EuiRelativeTab = function EuiRelativeTab(_ref) {
|
|
|
77
81
|
return parsedValue.locale(locale || 'en').format(dateFormat);
|
|
78
82
|
}, [isInvalid, value, roundUp, locale, dateFormat]);
|
|
79
83
|
var relativeDateInputNumberDescriptionId = useGeneratedHtmlId();
|
|
84
|
+
var timeZomeDescriptionId = useGeneratedHtmlId();
|
|
80
85
|
var numberAriaLabel = useEuiI18n('euiRelativeTab.numberInputLabel', 'Time span amount');
|
|
81
86
|
var numberInputError = useEuiI18n('euiRelativeTab.numberInputError', 'Must be >= 0');
|
|
82
87
|
var dateInputError = useEuiI18n('euiRelativeTab.dateInputError', 'Must be a valid range');
|
|
@@ -110,6 +115,7 @@ export var EuiRelativeTab = function EuiRelativeTab(_ref) {
|
|
|
110
115
|
compressed: true,
|
|
111
116
|
value: formattedValue,
|
|
112
117
|
readOnly: true,
|
|
118
|
+
"aria-describedby": timeZomeDescriptionId,
|
|
113
119
|
prepend: ___EmotionJSX(EuiFormLabel, null, labelPrefix)
|
|
114
120
|
}), ___EmotionJSX(EuiScreenReaderOnly, null, ___EmotionJSX("p", {
|
|
115
121
|
id: relativeDateInputNumberDescriptionId
|
|
@@ -119,7 +125,9 @@ export var EuiRelativeTab = function EuiRelativeTab(_ref) {
|
|
|
119
125
|
values: {
|
|
120
126
|
unit: unit
|
|
121
127
|
}
|
|
122
|
-
})))), ___EmotionJSX(
|
|
128
|
+
})))), ___EmotionJSX(EuiTimeZoneDisplay, _extends({
|
|
129
|
+
id: timeZomeDescriptionId
|
|
130
|
+
}, timeZoneDisplayProps)), ___EmotionJSX(EuiPopoverFooter, {
|
|
123
131
|
paddingSize: "s"
|
|
124
132
|
}, ___EmotionJSX(EuiSwitch, {
|
|
125
133
|
"data-test-subj": "superDatePickerRelativeDateRoundSwitch",
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
|
+
var _excluded = ["timeZone", "customRender", "date"];
|
|
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 from 'react';
|
|
13
|
+
import { euiTimeZoneDisplayStyles } from './timezone_display.styles';
|
|
14
|
+
import { useEuiMemoizedStyles } from '../../../../services';
|
|
15
|
+
import { EuiFlexGroup } from '../../../flex';
|
|
16
|
+
import { EuiIcon } from '../../../icon';
|
|
17
|
+
import { EuiText } from '../../../text';
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Available elements to render passed to the
|
|
21
|
+
* `customRender` render function.
|
|
22
|
+
*/
|
|
23
|
+
import { jsx as ___EmotionJSX } from "@emotion/react";
|
|
24
|
+
/**
|
|
25
|
+
* Display time zone information.
|
|
26
|
+
*/
|
|
27
|
+
export var EuiTimeZoneDisplay = function EuiTimeZoneDisplay(_ref) {
|
|
28
|
+
var timeZone = _ref.timeZone,
|
|
29
|
+
customRender = _ref.customRender,
|
|
30
|
+
date = _ref.date,
|
|
31
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
32
|
+
var color = 'subdued';
|
|
33
|
+
var styles = useEuiMemoizedStyles(euiTimeZoneDisplayStyles);
|
|
34
|
+
var referenceDate = date ? date.toDate() : undefined;
|
|
35
|
+
var _useEuiUTCOffsetDispl = useEuiUTCOffsetDisplay(timeZone !== null && timeZone !== void 0 ? timeZone : 'Browser', referenceDate),
|
|
36
|
+
utc = _useEuiUTCOffsetDispl.utc,
|
|
37
|
+
name = _useEuiUTCOffsetDispl.name,
|
|
38
|
+
isInvalid = _useEuiUTCOffsetDispl.isInvalid;
|
|
39
|
+
if (!timeZone || isInvalid) return null;
|
|
40
|
+
var label = !name ? utc : "".concat(utc, " (").concat(name, ")");
|
|
41
|
+
var nameDisplay = ___EmotionJSX(React.Fragment, null, ___EmotionJSX(EuiIcon, {
|
|
42
|
+
type: "globe",
|
|
43
|
+
color: color
|
|
44
|
+
}), ___EmotionJSX(EuiText, {
|
|
45
|
+
component: "span",
|
|
46
|
+
color: color,
|
|
47
|
+
size: "s"
|
|
48
|
+
}, label));
|
|
49
|
+
return ___EmotionJSX(EuiFlexGroup, _extends({
|
|
50
|
+
css: styles.euiTimeZoneDisplay,
|
|
51
|
+
alignItems: "center",
|
|
52
|
+
gutterSize: "xs",
|
|
53
|
+
"data-test-subj": "euiTimeZoneDisplay",
|
|
54
|
+
"aria-label": label
|
|
55
|
+
}, rest), typeof customRender === 'function' ? customRender({
|
|
56
|
+
nameDisplay: nameDisplay
|
|
57
|
+
}) : nameDisplay);
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Get the UTC offset display in hours e.g. "UTC+2" from time zone name.
|
|
62
|
+
*
|
|
63
|
+
* @param timeZoneName IANA time zone name
|
|
64
|
+
* @param [date] Reference date to get offset with Intl.DateTimeFormat
|
|
65
|
+
*/
|
|
66
|
+
export function useEuiUTCOffsetDisplay(timeZoneName, date) {
|
|
67
|
+
try {
|
|
68
|
+
var _formattedParts$find;
|
|
69
|
+
if (timeZoneName === 'UTC') {
|
|
70
|
+
return {
|
|
71
|
+
utc: 'UTC',
|
|
72
|
+
name: '',
|
|
73
|
+
isInvalid: false
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
var ianaName = timeZoneName === 'Browser' ? new Intl.DateTimeFormat().resolvedOptions().timeZone : timeZoneName;
|
|
77
|
+
var formatter = new Intl.DateTimeFormat(undefined, {
|
|
78
|
+
timeZone: ianaName,
|
|
79
|
+
timeZoneName: 'shortOffset'
|
|
80
|
+
});
|
|
81
|
+
var formattedParts = formatter.formatToParts(date !== null && date !== void 0 ? date : new Date());
|
|
82
|
+
var timeZoneNamePart = ((_formattedParts$find = formattedParts.find(function (part) {
|
|
83
|
+
return part.type === 'timeZoneName';
|
|
84
|
+
})) === null || _formattedParts$find === void 0 ? void 0 : _formattedParts$find.value) || '';
|
|
85
|
+
return {
|
|
86
|
+
utc: timeZoneNamePart.replace('GMT', 'UTC'),
|
|
87
|
+
name: ianaName,
|
|
88
|
+
isInvalid: false
|
|
89
|
+
};
|
|
90
|
+
} catch (err) {
|
|
91
|
+
return {
|
|
92
|
+
utc: '',
|
|
93
|
+
name: timeZoneName,
|
|
94
|
+
isInvalid: true
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
}
|
package/optimize/es/components/date_picker/super_date_picker/date_popover/timezone_display.styles.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
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 } from '../../../../global_styling';
|
|
11
|
+
export var euiTimeZoneDisplayStyles = function euiTimeZoneDisplayStyles(euiThemeContext) {
|
|
12
|
+
var euiTheme = euiThemeContext.euiTheme;
|
|
13
|
+
|
|
14
|
+
// This padding should probably not be part of this component to make it really reusable
|
|
15
|
+
|
|
16
|
+
return {
|
|
17
|
+
euiTimeZoneDisplay: /*#__PURE__*/css(logicalCSS('padding-horizontal', euiTheme.size.s), " ", logicalCSS('padding-bottom', euiTheme.size.s), ";;label:euiTimeZoneDisplay;")
|
|
18
|
+
};
|
|
19
|
+
};
|
|
@@ -11,7 +11,7 @@ import dateMath from '@elastic/datemath';
|
|
|
11
11
|
import moment from 'moment'; // eslint-disable-line import/named
|
|
12
12
|
import { useEuiI18n } from '../../i18n';
|
|
13
13
|
import { getDateMode, DATE_MODES } from './date_modes';
|
|
14
|
-
import { parseRelativeParts } from './relative_utils';
|
|
14
|
+
import { parseRelativeParts, isRelativeToNow } from './relative_utils';
|
|
15
15
|
import { useI18nTimeOptions } from './time_options';
|
|
16
16
|
import { jsx as ___EmotionJSX } from "@emotion/react";
|
|
17
17
|
/**
|
|
@@ -272,13 +272,6 @@ var hasRangeMatch = function hasRangeMatch(timeFrom, timeTo, ranges) {
|
|
|
272
272
|
return timeFrom === start && timeTo === end;
|
|
273
273
|
});
|
|
274
274
|
};
|
|
275
|
-
var isRelativeToNow = function isRelativeToNow(timeFrom, timeTo) {
|
|
276
|
-
var fromDateMode = getDateMode(timeFrom);
|
|
277
|
-
var toDateMode = getDateMode(timeTo);
|
|
278
|
-
var isLast = fromDateMode === DATE_MODES.RELATIVE && toDateMode === DATE_MODES.NOW;
|
|
279
|
-
var isNext = fromDateMode === DATE_MODES.NOW && toDateMode === DATE_MODES.RELATIVE;
|
|
280
|
-
return isLast || isNext;
|
|
281
|
-
};
|
|
282
275
|
export var showPrettyDuration = function showPrettyDuration(timeFrom, timeTo, quickRanges) {
|
|
283
276
|
if (hasRangeMatch(timeFrom, timeTo, quickRanges)) {
|
|
284
277
|
return true;
|
|
@@ -13,6 +13,7 @@ import dateMath from '@elastic/datemath';
|
|
|
13
13
|
import moment from 'moment';
|
|
14
14
|
import { get } from '../../../services/objects';
|
|
15
15
|
import { isString } from '../../../services/predicate';
|
|
16
|
+
import { getDateMode, DATE_MODES } from './date_modes';
|
|
16
17
|
var ROUND_DELIMETER = '/';
|
|
17
18
|
export var relativeUnitsFromLargestToSmallest = ['y', 'M', 'w', 'd', 'h', 'm', 's'];
|
|
18
19
|
export function parseRelativeParts(value) {
|
|
@@ -62,4 +63,11 @@ export var toRelativeStringFromParts = function toRelativeStringFromParts(relati
|
|
|
62
63
|
var operator = matches && matches[2] ? matches[2] : '-';
|
|
63
64
|
var round = isRounded ? "".concat(ROUND_DELIMETER).concat(unit) : '';
|
|
64
65
|
return "now".concat(operator).concat(count).concat(unit).concat(round);
|
|
66
|
+
};
|
|
67
|
+
export var isRelativeToNow = function isRelativeToNow(timeFrom, timeTo) {
|
|
68
|
+
var fromDateMode = getDateMode(timeFrom);
|
|
69
|
+
var toDateMode = getDateMode(timeTo);
|
|
70
|
+
var isLast = fromDateMode === DATE_MODES.RELATIVE && toDateMode === DATE_MODES.NOW;
|
|
71
|
+
var isNext = fromDateMode === DATE_MODES.NOW && toDateMode === DATE_MODES.RELATIVE;
|
|
72
|
+
return isLast || isNext;
|
|
65
73
|
};
|