@elastic/eui 116.3.0 → 116.3.1-snapshot.1782148316870

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/es/components/avatar/avatar.js +4 -0
  2. package/es/components/avatar/avatar.styles.js +16 -16
  3. package/es/components/banner/banner.js +1 -2
  4. package/es/components/banner/banner.styles.js +1 -1
  5. package/es/components/basic_table/basic_table.js +35 -5
  6. package/es/components/basic_table/basic_table.styles.js +19 -1
  7. package/es/components/basic_table/in_memory_table.js +17 -0
  8. package/es/components/basic_table/index.js +2 -1
  9. package/es/components/basic_table/pagination_bar.js +19 -4
  10. package/es/components/basic_table/pagination_bar.styles.js +21 -0
  11. package/es/components/basic_table/panel.styles.js +14 -0
  12. package/es/components/basic_table/use_panel_props.js +28 -0
  13. package/es/components/date_picker/auto_refresh/refresh_interval.js +176 -229
  14. package/es/components/date_picker/date_picker.js +1 -1
  15. package/es/components/flyout/flyout.component.js +10 -6
  16. package/es/components/flyout/flyout_menu.js +122 -19
  17. package/es/components/flyout/flyout_menu.styles.js +2 -1
  18. package/es/components/flyout/manager/actions.js +20 -0
  19. package/es/components/flyout/manager/flyout_child.js +23 -1
  20. package/es/components/flyout/manager/flyout_managed.js +65 -19
  21. package/es/components/flyout/manager/hooks.js +1 -1
  22. package/es/components/flyout/manager/index.js +2 -2
  23. package/es/components/flyout/manager/reducer.js +32 -8
  24. package/es/components/flyout/manager/selectors.js +8 -2
  25. package/es/components/flyout/manager/store.js +35 -2
  26. package/es/components/flyout/use_flyout_menu.js +2 -2
  27. package/es/components/form/field_password/field_password.styles.js +1 -1
  28. package/es/components/form/field_search/field_search.styles.js +1 -1
  29. package/es/components/form/form.styles.js +1 -1
  30. package/es/components/form/form_control_layout/form_control_layout_icons.js +95 -143
  31. package/es/components/form/select/select.styles.js +1 -1
  32. package/es/components/form/text_area/text_area.styles.js +1 -1
  33. package/es/components/form/validatable_control/validatable_control.js +8 -55
  34. package/es/components/table/mobile/table_sort_mobile.js +64 -103
  35. package/es/components/table/store/use_unique_column_id.js +25 -0
  36. package/es/components/table/table_header_cell.js +7 -8
  37. package/es/components/table/table_header_cell_checkbox.js +5 -6
  38. package/es/components/tool_tip/tool_tip.js +61 -30
  39. package/es/components/tool_tip/tool_tip_anchor.js +5 -5
  40. package/es/components/tool_tip/tool_tip_manager.js +27 -2
  41. package/eui.d.ts +679 -530
  42. package/i18ntokens.json +810 -738
  43. package/lib/components/avatar/avatar.js +4 -0
  44. package/lib/components/avatar/avatar.styles.js +16 -16
  45. package/lib/components/banner/banner.js +1 -2
  46. package/lib/components/banner/banner.styles.js +1 -1
  47. package/lib/components/basic_table/basic_table.js +34 -4
  48. package/lib/components/basic_table/basic_table.styles.js +19 -1
  49. package/lib/components/basic_table/in_memory_table.js +17 -0
  50. package/lib/components/basic_table/index.js +8 -1
  51. package/lib/components/basic_table/pagination_bar.js +19 -4
  52. package/lib/components/basic_table/pagination_bar.styles.js +26 -0
  53. package/lib/components/basic_table/panel.styles.js +20 -0
  54. package/lib/components/basic_table/use_panel_props.js +33 -0
  55. package/lib/components/date_picker/auto_refresh/refresh_interval.js +175 -229
  56. package/lib/components/date_picker/date_picker.js +1 -1
  57. package/lib/components/flyout/flyout.component.js +10 -6
  58. package/lib/components/flyout/flyout_menu.js +120 -19
  59. package/lib/components/flyout/flyout_menu.styles.js +2 -1
  60. package/lib/components/flyout/manager/actions.js +21 -1
  61. package/lib/components/flyout/manager/flyout_child.js +23 -1
  62. package/lib/components/flyout/manager/flyout_managed.js +41 -17
  63. package/lib/components/flyout/manager/hooks.js +6 -0
  64. package/lib/components/flyout/manager/index.js +12 -0
  65. package/lib/components/flyout/manager/reducer.js +31 -7
  66. package/lib/components/flyout/manager/selectors.js +9 -3
  67. package/lib/components/flyout/manager/store.js +34 -1
  68. package/lib/components/flyout/use_flyout_menu.js +2 -2
  69. package/lib/components/form/field_password/field_password.styles.js +1 -1
  70. package/lib/components/form/field_search/field_search.styles.js +1 -1
  71. package/lib/components/form/form.styles.js +1 -1
  72. package/lib/components/form/form_control_layout/form_control_layout_icons.js +95 -145
  73. package/lib/components/form/select/select.styles.js +1 -1
  74. package/lib/components/form/text_area/text_area.styles.js +1 -1
  75. package/lib/components/form/validatable_control/validatable_control.js +7 -52
  76. package/lib/components/table/mobile/table_sort_mobile.js +71 -108
  77. package/lib/components/table/store/use_unique_column_id.js +34 -0
  78. package/lib/components/table/table_header_cell.js +7 -8
  79. package/lib/components/table/table_header_cell_checkbox.js +5 -6
  80. package/lib/components/tool_tip/tool_tip.js +59 -29
  81. package/lib/components/tool_tip/tool_tip_anchor.js +5 -5
  82. package/lib/components/tool_tip/tool_tip_manager.js +27 -2
  83. package/optimize/es/components/avatar/avatar.js +4 -0
  84. package/optimize/es/components/avatar/avatar.styles.js +16 -16
  85. package/optimize/es/components/banner/banner.js +1 -2
  86. package/optimize/es/components/banner/banner.styles.js +1 -1
  87. package/optimize/es/components/basic_table/basic_table.js +18 -5
  88. package/optimize/es/components/basic_table/basic_table.styles.js +19 -1
  89. package/optimize/es/components/basic_table/index.js +2 -1
  90. package/optimize/es/components/basic_table/pagination_bar.js +19 -4
  91. package/optimize/es/components/basic_table/pagination_bar.styles.js +21 -0
  92. package/optimize/es/components/basic_table/panel.styles.js +14 -0
  93. package/optimize/es/components/basic_table/use_panel_props.js +28 -0
  94. package/optimize/es/components/date_picker/auto_refresh/refresh_interval.js +172 -196
  95. package/optimize/es/components/date_picker/date_picker.js +1 -1
  96. package/optimize/es/components/flyout/flyout.component.js +10 -6
  97. package/optimize/es/components/flyout/flyout_menu.js +99 -18
  98. package/optimize/es/components/flyout/flyout_menu.styles.js +2 -1
  99. package/optimize/es/components/flyout/manager/actions.js +20 -0
  100. package/optimize/es/components/flyout/manager/flyout_managed.js +42 -18
  101. package/optimize/es/components/flyout/manager/hooks.js +1 -1
  102. package/optimize/es/components/flyout/manager/index.js +2 -2
  103. package/optimize/es/components/flyout/manager/reducer.js +32 -8
  104. package/optimize/es/components/flyout/manager/selectors.js +8 -2
  105. package/optimize/es/components/flyout/manager/store.js +35 -2
  106. package/optimize/es/components/flyout/use_flyout_menu.js +2 -2
  107. package/optimize/es/components/form/field_password/field_password.styles.js +1 -1
  108. package/optimize/es/components/form/field_search/field_search.styles.js +1 -1
  109. package/optimize/es/components/form/form.styles.js +1 -1
  110. package/optimize/es/components/form/form_control_layout/form_control_layout_icons.js +96 -115
  111. package/optimize/es/components/form/select/select.styles.js +1 -1
  112. package/optimize/es/components/form/text_area/text_area.styles.js +1 -1
  113. package/optimize/es/components/form/validatable_control/validatable_control.js +7 -48
  114. package/optimize/es/components/table/mobile/table_sort_mobile.js +59 -82
  115. package/optimize/es/components/table/store/use_unique_column_id.js +25 -0
  116. package/optimize/es/components/table/table_header_cell.js +7 -8
  117. package/optimize/es/components/table/table_header_cell_checkbox.js +5 -6
  118. package/optimize/es/components/tool_tip/tool_tip.js +58 -30
  119. package/optimize/es/components/tool_tip/tool_tip_anchor.js +5 -5
  120. package/optimize/es/components/tool_tip/tool_tip_manager.js +27 -2
  121. package/optimize/lib/components/avatar/avatar.js +4 -0
  122. package/optimize/lib/components/avatar/avatar.styles.js +16 -16
  123. package/optimize/lib/components/banner/banner.js +1 -2
  124. package/optimize/lib/components/banner/banner.styles.js +1 -1
  125. package/optimize/lib/components/basic_table/basic_table.js +17 -4
  126. package/optimize/lib/components/basic_table/basic_table.styles.js +19 -1
  127. package/optimize/lib/components/basic_table/index.js +8 -1
  128. package/optimize/lib/components/basic_table/pagination_bar.js +19 -4
  129. package/optimize/lib/components/basic_table/pagination_bar.styles.js +26 -0
  130. package/optimize/lib/components/basic_table/panel.styles.js +20 -0
  131. package/optimize/lib/components/basic_table/use_panel_props.js +33 -0
  132. package/optimize/lib/components/date_picker/auto_refresh/refresh_interval.js +170 -194
  133. package/optimize/lib/components/date_picker/date_picker.js +1 -1
  134. package/optimize/lib/components/flyout/flyout.component.js +10 -6
  135. package/optimize/lib/components/flyout/flyout_menu.js +98 -18
  136. package/optimize/lib/components/flyout/flyout_menu.styles.js +2 -1
  137. package/optimize/lib/components/flyout/manager/actions.js +21 -1
  138. package/optimize/lib/components/flyout/manager/flyout_managed.js +41 -17
  139. package/optimize/lib/components/flyout/manager/hooks.js +6 -0
  140. package/optimize/lib/components/flyout/manager/index.js +12 -0
  141. package/optimize/lib/components/flyout/manager/reducer.js +31 -7
  142. package/optimize/lib/components/flyout/manager/selectors.js +9 -3
  143. package/optimize/lib/components/flyout/manager/store.js +34 -1
  144. package/optimize/lib/components/flyout/use_flyout_menu.js +2 -2
  145. package/optimize/lib/components/form/field_password/field_password.styles.js +1 -1
  146. package/optimize/lib/components/form/field_search/field_search.styles.js +1 -1
  147. package/optimize/lib/components/form/form.styles.js +1 -1
  148. package/optimize/lib/components/form/form_control_layout/form_control_layout_icons.js +96 -117
  149. package/optimize/lib/components/form/select/select.styles.js +1 -1
  150. package/optimize/lib/components/form/text_area/text_area.styles.js +1 -1
  151. package/optimize/lib/components/form/validatable_control/validatable_control.js +6 -49
  152. package/optimize/lib/components/table/mobile/table_sort_mobile.js +61 -83
  153. package/optimize/lib/components/table/store/use_unique_column_id.js +34 -0
  154. package/optimize/lib/components/table/table_header_cell.js +7 -8
  155. package/optimize/lib/components/table/table_header_cell_checkbox.js +5 -6
  156. package/optimize/lib/components/tool_tip/tool_tip.js +57 -29
  157. package/optimize/lib/components/tool_tip/tool_tip_anchor.js +5 -5
  158. package/optimize/lib/components/tool_tip/tool_tip_manager.js +27 -2
  159. package/package.json +8 -5
  160. package/test-env/components/avatar/avatar.js +4 -0
  161. package/test-env/components/avatar/avatar.styles.js +16 -16
  162. package/test-env/components/banner/banner.js +1 -2
  163. package/test-env/components/banner/banner.styles.js +1 -1
  164. package/test-env/components/basic_table/basic_table.js +34 -4
  165. package/test-env/components/basic_table/basic_table.styles.js +19 -1
  166. package/test-env/components/basic_table/in_memory_table.js +17 -0
  167. package/test-env/components/basic_table/index.js +8 -1
  168. package/test-env/components/basic_table/pagination_bar.js +19 -4
  169. package/test-env/components/basic_table/pagination_bar.styles.js +26 -0
  170. package/test-env/components/basic_table/panel.styles.js +20 -0
  171. package/test-env/components/basic_table/use_panel_props.js +33 -0
  172. package/test-env/components/date_picker/auto_refresh/refresh_interval.js +170 -220
  173. package/test-env/components/date_picker/date_picker.js +1 -1
  174. package/test-env/components/flyout/flyout.component.js +10 -6
  175. package/test-env/components/flyout/flyout_menu.js +121 -19
  176. package/test-env/components/flyout/flyout_menu.styles.js +2 -1
  177. package/test-env/components/flyout/manager/actions.js +21 -1
  178. package/test-env/components/flyout/manager/flyout_child.js +23 -1
  179. package/test-env/components/flyout/manager/flyout_managed.js +41 -17
  180. package/test-env/components/flyout/manager/hooks.js +6 -0
  181. package/test-env/components/flyout/manager/index.js +12 -0
  182. package/test-env/components/flyout/manager/reducer.js +31 -7
  183. package/test-env/components/flyout/manager/selectors.js +9 -3
  184. package/test-env/components/flyout/manager/store.js +34 -1
  185. package/test-env/components/flyout/use_flyout_menu.js +2 -2
  186. package/test-env/components/form/field_password/field_password.styles.js +1 -1
  187. package/test-env/components/form/field_search/field_search.styles.js +1 -1
  188. package/test-env/components/form/form.styles.js +1 -1
  189. package/test-env/components/form/form_control_layout/form_control_layout_icons.js +95 -139
  190. package/test-env/components/form/select/select.styles.js +1 -1
  191. package/test-env/components/form/text_area/text_area.styles.js +1 -1
  192. package/test-env/components/form/validatable_control/validatable_control.js +6 -48
  193. package/test-env/components/table/mobile/table_sort_mobile.js +61 -98
  194. package/test-env/components/table/store/use_unique_column_id.js +34 -0
  195. package/test-env/components/table/table_header_cell.js +7 -8
  196. package/test-env/components/table/table_header_cell_checkbox.js +5 -6
  197. package/test-env/components/tool_tip/tool_tip.js +57 -29
  198. package/test-env/components/tool_tip/tool_tip_anchor.js +5 -5
  199. package/test-env/components/tool_tip/tool_tip_manager.js +27 -2
@@ -13,13 +13,16 @@ var _button = require("../button");
13
13
  var _flex = require("../flex");
14
14
  var _list_group = require("../list_group");
15
15
  var _popover = require("../popover");
16
+ var _accessibility = require("../accessibility");
17
+ var _text = require("../text");
16
18
  var _title = require("../title");
19
+ var _tool_tip = require("../tool_tip");
17
20
  var _flyout_close_button = require("./_flyout_close_button");
18
21
  var _flyout_menu = require("./flyout_menu.styles");
19
22
  var _flyout_menu_context = require("./flyout_menu_context");
20
23
  var _i18n = require("../i18n");
21
24
  var _react2 = require("@emotion/react");
22
- var _excluded = ["className", "title", "titleId", "hideTitle", "hideCloseButton", "historyItems", "showBackButton", "backButtonProps", "customActions", "iconType"];
25
+ var _excluded = ["className", "title", "titleId", "hideTitle", "hideCloseButton", "historyItems", "showBackButton", "backButtonProps", "customActions", "iconType", "pagination"];
23
26
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
24
27
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
25
28
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -40,6 +43,8 @@ function _extends() { return _extends = Object.assign ? Object.assign.bind() : f
40
43
  */ /**
41
44
  * History item for the flyout menu history popover
42
45
  */ /**
46
+ * Pagination configuration for the flyout menu
47
+ */ /**
43
48
  * Custom action item for the flyout menu component
44
49
  */ /**
45
50
  * Props for EuiFlyoutMenu
@@ -91,6 +96,73 @@ var HistoryPopover = function HistoryPopover(_ref) {
91
96
  }, item.title);
92
97
  })));
93
98
  };
99
+ var PaginationControls = function PaginationControls(_ref2) {
100
+ var pagination = _ref2.pagination,
101
+ styles = _ref2.styles;
102
+ var currentIndex = pagination.currentIndex,
103
+ total = pagination.total,
104
+ onPrevious = pagination.onPrevious,
105
+ onNext = pagination.onNext;
106
+ var prevLabel = (0, _i18n.useEuiI18n)('euiFlyoutMenu.pagination.previous', 'Previous');
107
+ var nextLabel = (0, _i18n.useEuiI18n)('euiFlyoutMenu.pagination.next', 'Next');
108
+ var isPrevDisabled = currentIndex === 0;
109
+ var isNextDisabled = currentIndex === total - 1;
110
+ var prevButton = (0, _react2.jsx)(_button.EuiButtonIcon, {
111
+ iconType: "chevronSingleUp",
112
+ color: "text",
113
+ size: "xs",
114
+ "aria-label": prevLabel,
115
+ onClick: onPrevious,
116
+ isDisabled: isPrevDisabled,
117
+ "data-test-subj": "euiFlyoutMenuPaginationPrev"
118
+ });
119
+ var nextButton = (0, _react2.jsx)(_button.EuiButtonIcon, {
120
+ iconType: "chevronSingleDown",
121
+ color: "text",
122
+ size: "xs",
123
+ "aria-label": nextLabel,
124
+ onClick: onNext,
125
+ isDisabled: isNextDisabled,
126
+ "data-test-subj": "euiFlyoutMenuPaginationNext"
127
+ });
128
+ return (0, _react2.jsx)(_flex.EuiFlexItem, {
129
+ grow: false
130
+ }, (0, _react2.jsx)(_flex.EuiFlexGroup, {
131
+ gutterSize: "xs",
132
+ alignItems: "center",
133
+ responsive: false
134
+ }, (0, _react2.jsx)(_flex.EuiFlexItem, {
135
+ grow: false
136
+ }, isPrevDisabled ? prevButton : (0, _react2.jsx)(_tool_tip.EuiToolTip, {
137
+ content: prevLabel,
138
+ disableScreenReaderOutput: true
139
+ }, prevButton)), (0, _react2.jsx)(_flex.EuiFlexItem, {
140
+ grow: false
141
+ }, (0, _react2.jsx)(_text.EuiText, {
142
+ size: "s",
143
+ css: styles.euiFlyoutMenu__paginationCounter,
144
+ "aria-hidden": "true"
145
+ }, (0, _react2.jsx)(_i18n.EuiI18n, {
146
+ token: "euiFlyoutMenu.pagination.counter",
147
+ default: "{position} of {total}",
148
+ values: {
149
+ position: currentIndex + 1,
150
+ total: total
151
+ }
152
+ })), (0, _react2.jsx)(_accessibility.EuiScreenReaderLive, null, (0, _react2.jsx)(_i18n.EuiI18n, {
153
+ token: "euiFlyoutMenu.pagination.counter",
154
+ default: "{position} of {total}",
155
+ values: {
156
+ position: currentIndex + 1,
157
+ total: total
158
+ }
159
+ }))), (0, _react2.jsx)(_flex.EuiFlexItem, {
160
+ grow: false
161
+ }, isNextDisabled ? nextButton : (0, _react2.jsx)(_tool_tip.EuiToolTip, {
162
+ content: nextLabel,
163
+ disableScreenReaderOutput: true
164
+ }, nextButton))));
165
+ };
94
166
 
95
167
  /**
96
168
  * The component for the top menu bar inside a flyout. Since this is a private
@@ -101,24 +173,26 @@ var HistoryPopover = function HistoryPopover(_ref) {
101
173
  *
102
174
  * @private
103
175
  */
104
- var EuiFlyoutMenu = exports.EuiFlyoutMenu = function EuiFlyoutMenu(_ref2) {
105
- var className = _ref2.className,
106
- title = _ref2.title,
107
- titleId = _ref2.titleId,
108
- _ref2$hideTitle = _ref2.hideTitle,
109
- hideTitle = _ref2$hideTitle === void 0 ? true : _ref2$hideTitle,
110
- hideCloseButton = _ref2.hideCloseButton,
111
- _ref2$historyItems = _ref2.historyItems,
112
- historyItems = _ref2$historyItems === void 0 ? [] : _ref2$historyItems,
113
- showBackButton = _ref2.showBackButton,
114
- backButtonProps = _ref2.backButtonProps,
115
- customActions = _ref2.customActions,
116
- _iconType = _ref2.iconType,
117
- rest = _objectWithoutProperties(_ref2, _excluded);
176
+ var EuiFlyoutMenu = exports.EuiFlyoutMenu = function EuiFlyoutMenu(_ref3) {
177
+ var className = _ref3.className,
178
+ title = _ref3.title,
179
+ titleId = _ref3.titleId,
180
+ _ref3$hideTitle = _ref3.hideTitle,
181
+ hideTitle = _ref3$hideTitle === void 0 ? true : _ref3$hideTitle,
182
+ hideCloseButton = _ref3.hideCloseButton,
183
+ _ref3$historyItems = _ref3.historyItems,
184
+ historyItems = _ref3$historyItems === void 0 ? [] : _ref3$historyItems,
185
+ showBackButton = _ref3.showBackButton,
186
+ backButtonProps = _ref3.backButtonProps,
187
+ customActions = _ref3.customActions,
188
+ _iconType = _ref3.iconType,
189
+ pagination = _ref3.pagination,
190
+ rest = _objectWithoutProperties(_ref3, _excluded);
118
191
  var _useContext = (0, _react.useContext)(_flyout_menu_context.EuiFlyoutMenuContext),
119
192
  onClose = _useContext.onClose;
120
193
  var styles = (0, _services.useEuiMemoizedStyles)(_flyout_menu.euiFlyoutMenuStyles);
121
194
  var classes = (0, _classnames.default)('euiFlyoutMenu', className);
195
+ var showPaginationControls = pagination != null && pagination.total > 1;
122
196
  var titleNode;
123
197
  if (title) {
124
198
  titleNode = (0, _react2.jsx)(_title.EuiTitle, {
@@ -129,7 +203,9 @@ var EuiFlyoutMenu = exports.EuiFlyoutMenu = function EuiFlyoutMenu(_ref2) {
129
203
  }, title));
130
204
  }
131
205
  var handleClose = function handleClose(event) {
132
- onClose === null || onClose === void 0 || onClose(event);
206
+ onClose === null || onClose === void 0 || onClose(event, {
207
+ reason: 'close-button'
208
+ });
133
209
  };
134
210
  var closeButton = (0, _react2.jsx)(_flyout_close_button.EuiFlyoutCloseButton, {
135
211
  onClose: handleClose,
@@ -145,13 +221,16 @@ var EuiFlyoutMenu = exports.EuiFlyoutMenu = function EuiFlyoutMenu(_ref2) {
145
221
  justifyContent: "spaceBetween",
146
222
  gutterSize: "none",
147
223
  responsive: false
148
- }, showBackButton && (0, _react2.jsx)(_flex.EuiFlexItem, {
224
+ }, showPaginationControls ? (0, _react2.jsx)(PaginationControls, {
225
+ pagination: pagination,
226
+ styles: styles
227
+ }) : (0, _react2.jsx)(_react.default.Fragment, null, showBackButton && (0, _react2.jsx)(_flex.EuiFlexItem, {
149
228
  grow: false
150
229
  }, (0, _react2.jsx)(BackButton, backButtonProps)), historyItems.length > 0 && (0, _react2.jsx)(_flex.EuiFlexItem, {
151
230
  grow: false
152
231
  }, (0, _react2.jsx)(HistoryPopover, {
153
232
  items: historyItems
154
- })), titleNode && (0, _react2.jsx)(_flex.EuiFlexItem, {
233
+ }))), titleNode && (0, _react2.jsx)(_flex.EuiFlexItem, {
155
234
  grow: false
156
235
  }, titleNode), (0, _react2.jsx)(_flex.EuiFlexItem, {
157
236
  grow: true
@@ -253,5 +332,27 @@ EuiFlyoutMenu.propTypes = {
253
332
  * Aria label for the action button
254
333
  */
255
334
  "aria-label": _propTypes.default.string.isRequired
256
- }).isRequired)
335
+ }).isRequired),
336
+ /**
337
+ * Enables Prev/Next navigation controls and a position counter in the menu bar.
338
+ * Pagination replaces back/history navigation in the left menu slot.
339
+ */
340
+ pagination: _propTypes.default.shape({
341
+ /**
342
+ * Zero-based index of the currently displayed item
343
+ */
344
+ currentIndex: _propTypes.default.number.isRequired,
345
+ /**
346
+ * Total number of items
347
+ */
348
+ total: _propTypes.default.number.isRequired,
349
+ /**
350
+ * Called when the user clicks the Previous button
351
+ */
352
+ onPrevious: _propTypes.default.func.isRequired,
353
+ /**
354
+ * Called when the user clicks the Next button
355
+ */
356
+ onNext: _propTypes.default.func.isRequired
357
+ })
257
358
  };
@@ -20,6 +20,7 @@ var euiFlyoutMenuStyles = exports.euiFlyoutMenuStyles = function euiFlyoutMenuSt
20
20
  euiFlyoutMenu__container: /*#__PURE__*/(0, _react.css)("block-size:calc(", euiTheme.size.m, " * 3.5);flex-shrink:0;padding-block:", euiTheme.size.s, ";padding-inline:", euiTheme.size.s, ";border-block-end:", euiTheme.border.width.thin, " solid ", euiTheme.border.color, ";padding-block-start:calc(", euiTheme.size.m, " * 0.8);.euiTitle{padding-inline:", euiTheme.size.s, ";};label:euiFlyoutMenu__container;"),
21
21
  euiFlyoutMenu__spacer: /*#__PURE__*/(0, _react.css)("padding-inline:", euiTheme.size.m, ";;label:euiFlyoutMenu__spacer;"),
22
22
  euiFlyoutMenu__actions: /*#__PURE__*/(0, _react.css)("block-size:calc(", euiTheme.size.m, " * 1.8);;label:euiFlyoutMenu__actions;"),
23
- euiFlyoutMenu__hiddenTitle: /*#__PURE__*/(0, _react.css)((0, _accessibility.euiScreenReaderOnly)(), ";;label:euiFlyoutMenu__hiddenTitle;")
23
+ euiFlyoutMenu__hiddenTitle: /*#__PURE__*/(0, _react.css)((0, _accessibility.euiScreenReaderOnly)(), ";;label:euiFlyoutMenu__hiddenTitle;"),
24
+ euiFlyoutMenu__paginationCounter: /*#__PURE__*/(0, _react.css)("color:", euiTheme.colors.textSubdued, ";white-space:nowrap;;label:euiFlyoutMenu__paginationCounter;")
24
25
  };
25
26
  };
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.setReferenceWidth = exports.setPushPadding = exports.setLayoutMode = exports.setFlyoutWidth = exports.setContainerElement = exports.setActivityStage = exports.setActiveFlyout = exports.goToFlyout = exports.goBack = exports.closeUnmanagedFlyout = exports.closeFlyout = exports.closeAllFlyouts = exports.addUnmanagedFlyout = exports.addFlyout = exports.ACTION_SET_WIDTH = exports.ACTION_SET_REFERENCE_WIDTH = exports.ACTION_SET_PUSH_PADDING = exports.ACTION_SET_LAYOUT_MODE = exports.ACTION_SET_CONTAINER_ELEMENT = exports.ACTION_SET_ACTIVITY_STAGE = exports.ACTION_SET_ACTIVE = exports.ACTION_GO_TO_FLYOUT = exports.ACTION_GO_BACK = exports.ACTION_CLOSE_UNMANAGED_FLYOUT = exports.ACTION_CLOSE_ALL = exports.ACTION_CLOSE = exports.ACTION_ADD_UNMANAGED_FLYOUT = exports.ACTION_ADD = void 0;
6
+ exports.setReferenceWidth = exports.setPushPadding = exports.setPagination = exports.setLayoutMode = exports.setFlyoutWidth = exports.setContainerElement = exports.setActivityStage = exports.setActiveFlyout = exports.goToFlyout = exports.goBack = exports.closeUnmanagedFlyout = exports.closeFlyout = exports.closeAllFlyouts = exports.addUnmanagedFlyout = exports.addFlyout = exports.ACTION_SET_WIDTH = exports.ACTION_SET_REFERENCE_WIDTH = exports.ACTION_SET_PUSH_PADDING = exports.ACTION_SET_PAGINATION = exports.ACTION_SET_LAYOUT_MODE = exports.ACTION_SET_CONTAINER_ELEMENT = exports.ACTION_SET_ACTIVITY_STAGE = exports.ACTION_SET_ACTIVE = exports.ACTION_GO_TO_FLYOUT = exports.ACTION_GO_BACK = exports.ACTION_CLOSE_UNMANAGED_FLYOUT = exports.ACTION_CLOSE_ALL = exports.ACTION_CLOSE = exports.ACTION_ADD_UNMANAGED_FLYOUT = exports.ACTION_ADD = void 0;
7
7
  var _const = require("./const");
8
8
  /*
9
9
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
@@ -24,6 +24,8 @@ var ACTION_CLOSE_ALL = exports.ACTION_CLOSE_ALL = "".concat(PREFIX, "/closeAll")
24
24
  var ACTION_SET_ACTIVE = exports.ACTION_SET_ACTIVE = "".concat(PREFIX, "/setActive");
25
25
  /** Dispatched when an active flyout's pixel width changes (for responsive layout). */
26
26
  var ACTION_SET_WIDTH = exports.ACTION_SET_WIDTH = "".concat(PREFIX, "/setWidth");
27
+ /** Dispatched to set a flyout's menu pagination. */
28
+ var ACTION_SET_PAGINATION = exports.ACTION_SET_PAGINATION = "".concat(PREFIX, "/setPagination");
27
29
  /** Dispatched to switch layout mode between `side-by-side` and `stacked`. */
28
30
  var ACTION_SET_LAYOUT_MODE = exports.ACTION_SET_LAYOUT_MODE = "".concat(PREFIX, "/setLayoutMode");
29
31
  /** Dispatched to update a flyout's activity stage (e.g., opening -> active). */
@@ -54,6 +56,8 @@ var ACTION_CLOSE_UNMANAGED_FLYOUT = exports.ACTION_CLOSE_UNMANAGED_FLYOUT = "".c
54
56
 
55
57
  /** Update a flyout's measured width in pixels. */
56
58
 
59
+ /** Set the manager pagination value for a flyout. */
60
+
57
61
  /** Change how flyouts are arranged: `side-by-side` or `stacked`. */
58
62
 
59
63
  /** Set a specific flyout's activity stage. */
@@ -128,6 +132,22 @@ var setFlyoutWidth = exports.setFlyoutWidth = function setFlyoutWidth(flyoutId,
128
132
  };
129
133
  };
130
134
 
135
+ /**
136
+ * Set (or clear) the menu pagination config for a flyout. When set, this
137
+ * overrides any pagination passed via `flyoutMenuProps.pagination` on the
138
+ * flyout itself, allowing reactive updates from a different React root.
139
+ *
140
+ * Only works for managed flyouts. Unmanaged flyouts (session={false}) must use
141
+ * the `flyoutMenuProps.pagination` prop instead.
142
+ */
143
+ var setPagination = exports.setPagination = function setPagination(flyoutId, pagination) {
144
+ return {
145
+ type: ACTION_SET_PAGINATION,
146
+ flyoutId: flyoutId,
147
+ pagination: pagination
148
+ };
149
+ };
150
+
131
151
  /** Switch layout mode between `side-by-side` and `stacked`. */
132
152
  var setLayoutMode = exports.setLayoutMode = function setLayoutMode(layoutMode) {
133
153
  return {
@@ -155,7 +155,29 @@ EuiFlyoutChild.propTypes = {
155
155
  * Aria label for the action button
156
156
  */
157
157
  "aria-label": _propTypes.default.string.isRequired
158
- }).isRequired)
158
+ }).isRequired),
159
+ /**
160
+ * Enables Prev/Next navigation controls and a position counter in the menu bar.
161
+ * Pagination replaces back/history navigation in the left menu slot.
162
+ */
163
+ pagination: _propTypes.default.shape({
164
+ /**
165
+ * Zero-based index of the currently displayed item
166
+ */
167
+ currentIndex: _propTypes.default.number.isRequired,
168
+ /**
169
+ * Total number of items
170
+ */
171
+ total: _propTypes.default.number.isRequired,
172
+ /**
173
+ * Called when the user clicks the Previous button
174
+ */
175
+ onPrevious: _propTypes.default.func.isRequired,
176
+ /**
177
+ * Called when the user clicks the Next button
178
+ */
179
+ onNext: _propTypes.default.func.isRequired
180
+ })
159
181
  }),
160
182
  onActive: _propTypes.default.func
161
183
  };
@@ -158,10 +158,10 @@ var EuiManagedFlyout = exports.EuiManagedFlyout = /*#__PURE__*/(0, _react.forwar
158
158
 
159
159
  // Stabilize the onClose callback
160
160
  var onCloseCallbackRef = (0, _react.useRef)();
161
- onCloseCallbackRef.current = function (e) {
161
+ onCloseCallbackRef.current = function (e, meta) {
162
162
  if (onCloseProp) {
163
163
  var event = e || new MouseEvent('click');
164
- onCloseProp(event);
164
+ onCloseProp(event, meta);
165
165
  }
166
166
  };
167
167
 
@@ -186,17 +186,20 @@ var EuiManagedFlyout = exports.EuiManagedFlyout = /*#__PURE__*/(0, _react.forwar
186
186
  (0, _react.useLayoutEffect)(function () {
187
187
  addFlyout(flyoutId, title, level, size, level === _const.LEVEL_MAIN ? historyKey : undefined, _flyoutMenuProps === null || _flyoutMenuProps === void 0 ? void 0 : _flyoutMenuProps.iconType, typeof minWidth === 'number' ? minWidth : undefined);
188
188
  return function () {
189
- var currentStoreState = (0, _store.getFlyoutManagerStore)().getState();
190
- var stillInStore = currentStoreState.flyouts.some(function (f) {
189
+ var store = (0, _store.getFlyoutManagerStore)();
190
+ var stillInStore = store.getState().flyouts.some(function (f) {
191
191
  return f.flyoutId === flyoutId;
192
192
  });
193
193
  if (stillInStore) {
194
194
  // Normal cleanup (deps changed or explicit close via isOpen=false)
195
195
  level === _const.LEVEL_MAIN ? closeAllFlyouts() : closeFlyout(flyoutId);
196
196
  } else if (wasRegisteredRef.current) {
197
- var _onCloseCallbackRef$c;
198
- // Cascade close: was registered but removed externally (e.g. main closed)
199
- (_onCloseCallbackRef$c = onCloseCallbackRef.current) === null || _onCloseCallbackRef$c === void 0 || _onCloseCallbackRef$c.call(onCloseCallbackRef, new MouseEvent('navigation'));
197
+ var _onCloseCallbackRef$c, _store$consumeCloseMe;
198
+ // Removed externally while mounted: forward the store-stamped reason
199
+ // (e.g. `navigation-back` from goBack), defaulting to cascade.
200
+ (_onCloseCallbackRef$c = onCloseCallbackRef.current) === null || _onCloseCallbackRef$c === void 0 || _onCloseCallbackRef$c.call(onCloseCallbackRef, new MouseEvent('navigation'), (_store$consumeCloseMe = store.consumeCloseMeta(flyoutId)) !== null && _store$consumeCloseMe !== void 0 ? _store$consumeCloseMe : {
201
+ reason: 'navigation-cascade'
202
+ });
200
203
  }
201
204
  wasRegisteredRef.current = false;
202
205
  };
@@ -209,11 +212,16 @@ var EuiManagedFlyout = exports.EuiManagedFlyout = /*#__PURE__*/(0, _react.forwar
209
212
  wasRegisteredRef.current = true;
210
213
  }
211
214
 
212
- // If flyout was previously registered, is marked as open, but no longer exists in manager state,
213
- // it was removed via navigation (Back button) - trigger close callback
215
+ // If flyout was previously registered, is marked as open, but no longer
216
+ // exists in manager state, it was removed externally while still mounted.
217
+ // Forward the store-stamped reason (e.g. `navigation-back` from goBack);
218
+ // any other removal (e.g. a closeAllFlyouts cascade reaching a backgrounded
219
+ // flyout) defaults to `navigation-cascade`.
214
220
  if (wasRegisteredRef.current && !flyoutExistsInManager) {
215
- var _onCloseCallbackRef$c2;
216
- (_onCloseCallbackRef$c2 = onCloseCallbackRef.current) === null || _onCloseCallbackRef$c2 === void 0 || _onCloseCallbackRef$c2.call(onCloseCallbackRef, new MouseEvent('navigation'));
221
+ var _onCloseCallbackRef$c2, _getFlyoutManagerStor;
222
+ (_onCloseCallbackRef$c2 = onCloseCallbackRef.current) === null || _onCloseCallbackRef$c2 === void 0 || _onCloseCallbackRef$c2.call(onCloseCallbackRef, new MouseEvent('navigation'), (_getFlyoutManagerStor = (0, _store.getFlyoutManagerStore)().consumeCloseMeta(flyoutId)) !== null && _getFlyoutManagerStor !== void 0 ? _getFlyoutManagerStor : {
223
+ reason: 'navigation-cascade'
224
+ });
217
225
  wasRegisteredRef.current = false; // Reset to avoid repeated calls
218
226
  }
219
227
  }, [flyoutExistsInManager, flyoutId]);
@@ -237,7 +245,12 @@ var EuiManagedFlyout = exports.EuiManagedFlyout = /*#__PURE__*/(0, _react.forwar
237
245
  width = _useResizeObserver.width;
238
246
 
239
247
  // Pass the stabilized onClose callback to the flyout menu context
240
- var onClose = function onClose(e) {
248
+ var onClose = function onClose(e, meta) {
249
+ // Clear before flushSync so that effects flushed synchronously inside it
250
+ // (the navigation-back detector) see wasRegisteredRef = false and do not
251
+ // misidentify this user-initiated close as a Back-button navigation.
252
+ wasRegisteredRef.current = false;
253
+
241
254
  // CRITICAL: Update manager state FIRST before allowing React to unmount
242
255
  // This prevents race conditions during portal → inline DOM transitions
243
256
  // and ensures cascade close logic runs before DOM cleanup begins
@@ -245,10 +258,9 @@ var EuiManagedFlyout = exports.EuiManagedFlyout = /*#__PURE__*/(0, _react.forwar
245
258
  (0, _reactDom.flushSync)(function () {
246
259
  level === _const.LEVEL_MAIN ? closeAllFlyouts() : closeFlyout(flyoutId);
247
260
  });
248
- wasRegisteredRef.current = false; // Prevent cleanup from double-firing onClose
249
261
  if (onCloseCallbackRef.current) {
250
262
  var event = e || new MouseEvent('click');
251
- onCloseCallbackRef.current(event);
263
+ onCloseCallbackRef.current(event, meta);
252
264
  }
253
265
  };
254
266
 
@@ -277,11 +289,23 @@ var EuiManagedFlyout = exports.EuiManagedFlyout = /*#__PURE__*/(0, _react.forwar
277
289
  } : undefined;
278
290
  }, [level, goBack]);
279
291
  var showBackButton = historyItems ? historyItems.length > 0 : false;
292
+
293
+ // When the store has a defined pagination value it takes precedence; the
294
+ // prop acts as a fallback for callers that don't use the cross-root store.
295
+ // Using both simultaneously is not supported and will log a warning in dev.
296
+ var storePagination = (0, _hooks.useFlyoutPagination)(flyoutId);
297
+ var propPagination = _flyoutMenuProps === null || _flyoutMenuProps === void 0 ? void 0 : _flyoutMenuProps.pagination;
298
+ if (process.env.NODE_ENV === 'development' && storePagination != null && propPagination != null) {
299
+ console.warn("flyout-pagination-dual-source-".concat(flyoutId), "[EuiFlyoutManager] flyout \"".concat(flyoutId, "\" has pagination set both via the store (setPagination) ") + 'and via flyoutMenuProps.pagination. The store value will be used. Remove one source to avoid confusion.');
300
+ }
301
+ var pagination = storePagination !== null && storePagination !== void 0 ? storePagination : propPagination;
302
+ var showPaginationControls = pagination != null && pagination.total > 1;
280
303
  var flyoutMenuProps = _objectSpread(_objectSpread({}, _flyoutMenuProps), {}, {
281
- historyItems: historyItems,
282
- showBackButton: showBackButton,
304
+ historyItems: showPaginationControls ? [] : historyItems,
305
+ showBackButton: showPaginationControls ? false : showBackButton,
283
306
  backButtonProps: backButtonProps,
284
- title: title
307
+ title: title,
308
+ pagination: pagination
285
309
  });
286
310
  return (0, _react2.jsx)(_context.EuiFlyoutIsManagedProvider, {
287
311
  isManaged: true
@@ -29,6 +29,12 @@ Object.defineProperty(exports, "useFlyoutLayoutMode", {
29
29
  }
30
30
  });
31
31
  exports.useFlyoutManager = void 0;
32
+ Object.defineProperty(exports, "useFlyoutPagination", {
33
+ enumerable: true,
34
+ get: function get() {
35
+ return _selectors.useFlyoutPagination;
36
+ }
37
+ });
32
38
  Object.defineProperty(exports, "useFlyoutWidth", {
33
39
  enumerable: true,
34
40
  get: function get() {
@@ -81,6 +81,12 @@ Object.defineProperty(exports, "setFlyoutWidthAction", {
81
81
  return _actions.setFlyoutWidth;
82
82
  }
83
83
  });
84
+ Object.defineProperty(exports, "setPaginationAction", {
85
+ enumerable: true,
86
+ get: function get() {
87
+ return _actions.setPagination;
88
+ }
89
+ });
84
90
  Object.defineProperty(exports, "setPushPaddingAction", {
85
91
  enumerable: true,
86
92
  get: function get() {
@@ -123,6 +129,12 @@ Object.defineProperty(exports, "useFlyoutManager", {
123
129
  return _hooks.useFlyoutManager;
124
130
  }
125
131
  });
132
+ Object.defineProperty(exports, "useFlyoutPagination", {
133
+ enumerable: true,
134
+ get: function get() {
135
+ return _hooks.useFlyoutPagination;
136
+ }
137
+ });
126
138
  Object.defineProperty(exports, "useFlyoutWidth", {
127
139
  enumerable: true,
128
140
  get: function get() {
@@ -364,6 +364,30 @@ function flyoutManagerReducer() {
364
364
  });
365
365
  }
366
366
 
367
+ // Update a flyout's menu pagination. No-op if unchanged or missing.
368
+ case _actions.ACTION_SET_PAGINATION:
369
+ {
370
+ var _flyoutId2 = action.flyoutId,
371
+ pagination = action.pagination;
372
+ var target = state.flyouts.find(function (f) {
373
+ return f.flyoutId === _flyoutId2;
374
+ });
375
+ if (!target) {
376
+ return state;
377
+ }
378
+ if (target.pagination === pagination) {
379
+ return state;
380
+ }
381
+ var _updatedFlyouts = state.flyouts.map(function (flyout) {
382
+ return flyout.flyoutId === _flyoutId2 ? _objectSpread(_objectSpread({}, flyout), {}, {
383
+ pagination: pagination
384
+ }) : flyout;
385
+ });
386
+ return _objectSpread(_objectSpread({}, state), {}, {
387
+ flyouts: _updatedFlyouts
388
+ });
389
+ }
390
+
367
391
  // Switch global layout mode for managed flyouts.
368
392
  case _actions.ACTION_SET_LAYOUT_MODE:
369
393
  {
@@ -375,14 +399,14 @@ function flyoutManagerReducer() {
375
399
  // Update a flyout's activity stage in state
376
400
  case _actions.ACTION_SET_ACTIVITY_STAGE:
377
401
  {
378
- var _flyoutId2 = action.flyoutId;
379
- var _updatedFlyouts = state.flyouts.map(function (flyout) {
380
- return flyout.flyoutId === _flyoutId2 ? _objectSpread(_objectSpread({}, flyout), {}, {
402
+ var _flyoutId3 = action.flyoutId;
403
+ var _updatedFlyouts2 = state.flyouts.map(function (flyout) {
404
+ return flyout.flyoutId === _flyoutId3 ? _objectSpread(_objectSpread({}, flyout), {}, {
381
405
  activityStage: action.activityStage
382
406
  }) : flyout;
383
407
  });
384
408
  return _objectSpread(_objectSpread({}, state), {}, {
385
- flyouts: _updatedFlyouts
409
+ flyouts: _updatedFlyouts2
386
410
  });
387
411
  }
388
412
 
@@ -436,7 +460,7 @@ function flyoutManagerReducer() {
436
460
  // Navigate to a specific flyout (by main session or by child in current session's history)
437
461
  case _actions.ACTION_GO_TO_FLYOUT:
438
462
  {
439
- var _flyoutId3 = action.flyoutId,
463
+ var _flyoutId4 = action.flyoutId,
440
464
  _level = action.level;
441
465
  var _currentSessionIndex4 = state.sessions.length - 1;
442
466
  if (_level === _const.LEVEL_CHILD && state.sessions.length > 0) {
@@ -444,7 +468,7 @@ function flyoutManagerReducer() {
444
468
  var _currentSession3 = state.sessions[_currentSessionIndex4];
445
469
  var _childHistory2 = (_currentSession3$chil = _currentSession3.childHistory) !== null && _currentSession3$chil !== void 0 ? _currentSession3$chil : [];
446
470
  var targetIndex = _childHistory2.findIndex(function (entry) {
447
- return entry.flyoutId === _flyoutId3;
471
+ return entry.flyoutId === _flyoutId4;
448
472
  });
449
473
  if (targetIndex === -1) {
450
474
  return state; // Target child not in history
@@ -476,7 +500,7 @@ function flyoutManagerReducer() {
476
500
 
477
501
  // Navigate by main flyout: remove all sessions after the target
478
502
  var targetSessionIndex = state.sessions.findIndex(function (session) {
479
- return session.mainFlyoutId === _flyoutId3;
503
+ return session.mainFlyoutId === _flyoutId4;
480
504
  });
481
505
  if (targetSessionIndex === -1) {
482
506
  return state; // Target flyout not found
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.useSession = exports.usePushPaddingOffsets = exports.useParentFlyoutSize = exports.useIsFlyoutRegistered = exports.useIsFlyoutActive = exports.useHasPushPadding = exports.useHasChildFlyout = exports.useHasActiveSession = exports.useFlyoutWidth = exports.useFlyoutMinWidth = exports.useFlyout = exports.useCurrentSession = exports.useCurrentMainFlyout = exports.useCurrentFlyoutZIndexRef = exports.useCurrentChildFlyout = void 0;
6
+ exports.useSession = exports.usePushPaddingOffsets = exports.useParentFlyoutSize = exports.useIsFlyoutRegistered = exports.useIsFlyoutActive = exports.useHasPushPadding = exports.useHasChildFlyout = exports.useHasActiveSession = exports.useFlyoutWidth = exports.useFlyoutPagination = exports.useFlyoutMinWidth = exports.useFlyout = exports.useCurrentSession = exports.useCurrentMainFlyout = exports.useCurrentFlyoutZIndexRef = exports.useCurrentChildFlyout = void 0;
7
7
  var _provider = require("./provider");
8
8
  var _react = require("react");
9
9
  /*
@@ -80,10 +80,16 @@ var useFlyoutWidth = exports.useFlyoutWidth = function useFlyoutWidth(flyoutId)
80
80
  return (_useFlyout = useFlyout(flyoutId)) === null || _useFlyout === void 0 ? void 0 : _useFlyout.width;
81
81
  };
82
82
 
83
+ /** Returns the store pagination override for a flyout, if set. */
84
+ var useFlyoutPagination = exports.useFlyoutPagination = function useFlyoutPagination(flyoutId) {
85
+ var _useFlyout2;
86
+ return (_useFlyout2 = useFlyout(flyoutId)) === null || _useFlyout2 === void 0 ? void 0 : _useFlyout2.pagination;
87
+ };
88
+
83
89
  /** The configured minWidth (px) of the specified flyout, or `undefined` if not set. */
84
90
  var useFlyoutMinWidth = exports.useFlyoutMinWidth = function useFlyoutMinWidth(flyoutId) {
85
- var _useFlyout2;
86
- return (_useFlyout2 = useFlyout(flyoutId)) === null || _useFlyout2 === void 0 ? void 0 : _useFlyout2.minWidth;
91
+ var _useFlyout3;
92
+ return (_useFlyout3 = useFlyout(flyoutId)) === null || _useFlyout3 === void 0 ? void 0 : _useFlyout3.minWidth;
87
93
  };
88
94
 
89
95
  /** The configured size of the parent (main) flyout for a given child flyout ID. */
@@ -28,6 +28,13 @@ function createStore() {
28
28
  var currentState = initial;
29
29
  var listeners = new Set();
30
30
  var eventListeners = new Set();
31
+
32
+ // Transient, one-shot close annotations keyed by flyoutId. `goBack` stamps the
33
+ // flyouts it removes so the managed flyout can report `navigation-back`; any
34
+ // other removal (e.g. closeAllFlyouts cascade) leaves no stamp and defaults to
35
+ // `navigation-cascade`. Kept off reducer state because it is a per-close
36
+ // annotation, not persistent state.
37
+ var pendingCloseMeta = new Map();
31
38
  var getState = function getState() {
32
39
  return currentState;
33
40
  };
@@ -171,6 +178,9 @@ function createStore() {
171
178
  setFlyoutWidth: function setFlyoutWidth(flyoutId, width) {
172
179
  return dispatch((0, _actions.setFlyoutWidth)(flyoutId, width));
173
180
  },
181
+ setPagination: function setPagination(flyoutId, pagination) {
182
+ return dispatch((0, _actions.setPagination)(flyoutId, pagination));
183
+ },
174
184
  setPushPadding: function setPushPadding(side, width) {
175
185
  return dispatch((0, _actions.setPushPadding)(side, width));
176
186
  },
@@ -178,7 +188,23 @@ function createStore() {
178
188
  return dispatch((0, _actions.setContainerElement)(element));
179
189
  },
180
190
  goBack: function goBack() {
181
- return dispatch((0, _actions.goBack)());
191
+ // Stamp the flyouts goBack removes as `navigation-back` (vs. the default
192
+ // `navigation-cascade`) BEFORE dispatching. dispatch synchronously flushes
193
+ // subscribers, which can consume the meta during unmount, so peek the pure
194
+ // reducer to learn which flyouts go away and stamp them first.
195
+ var action = (0, _actions.goBack)();
196
+ var nextState = (0, _reducer.flyoutManagerReducer)(currentState, action);
197
+ var remaining = new Set(nextState.flyouts.map(function (f) {
198
+ return f.flyoutId;
199
+ }));
200
+ currentState.flyouts.forEach(function (f) {
201
+ if (!remaining.has(f.flyoutId)) {
202
+ pendingCloseMeta.set(f.flyoutId, {
203
+ reason: 'navigation-back'
204
+ });
205
+ }
206
+ });
207
+ dispatch(action);
182
208
  },
183
209
  goToFlyout: function goToFlyout(flyoutId, level) {
184
210
  return dispatch((0, _actions.goToFlyout)(flyoutId, level));
@@ -189,6 +215,13 @@ function createStore() {
189
215
  closeUnmanagedFlyout: function closeUnmanagedFlyout(flyoutId) {
190
216
  return dispatch((0, _actions.closeUnmanagedFlyout)(flyoutId));
191
217
  },
218
+ consumeCloseMeta: function consumeCloseMeta(flyoutId) {
219
+ var meta = pendingCloseMeta.get(flyoutId);
220
+ if (meta) {
221
+ pendingCloseMeta.delete(flyoutId);
222
+ }
223
+ return meta;
224
+ },
192
225
  historyItems: computeHistoryItems(dispatch) // Initialize with current state
193
226
  };
194
227
  return store;
@@ -46,10 +46,10 @@ var useEuiFlyoutMenu = exports.useEuiFlyoutMenu = function useEuiFlyoutMenu(_ref
46
46
  }, [hasMenu, _titleId, generatedMenuId]);
47
47
 
48
48
  // Determine if the menu has any content
49
- // hasBackButton or hasHistory or hasCustomActions or hasVisibleTitle
49
+ // hasBackButton or hasHistory or hasCustomActions or hasVisibleTitle or hasPagination
50
50
  var menuHasContent = hasMenu && (!!flyoutMenuProps.showBackButton || ((_flyoutMenuProps$hist = (_flyoutMenuProps$hist2 = flyoutMenuProps.historyItems) === null || _flyoutMenuProps$hist2 === void 0 ? void 0 : _flyoutMenuProps$hist2.length) !== null && _flyoutMenuProps$hist !== void 0 ? _flyoutMenuProps$hist : 0) > 0 || ((_flyoutMenuProps$cust = (_flyoutMenuProps$cust2 = flyoutMenuProps.customActions) === null || _flyoutMenuProps$cust2 === void 0 ? void 0 : _flyoutMenuProps$cust2.length) !== null && _flyoutMenuProps$cust !== void 0 ? _flyoutMenuProps$cust : 0) > 0 ||
51
51
  // Component defaults to hiding the title, so only explicit false means the title will be visible
52
- !!(flyoutMenuProps.title && flyoutMenuProps.hideTitle === false));
52
+ !!(flyoutMenuProps.title && flyoutMenuProps.hideTitle === false) || !!(flyoutMenuProps.pagination && flyoutMenuProps.pagination.total > 1));
53
53
 
54
54
  // Determine if the menu should be rendered based on the display mode and menu content
55
55
  var shouldRenderMenu = (0, _react.useMemo)(function () {
@@ -24,7 +24,7 @@ var _ref = process.env.NODE_ENV === "production" ? {
24
24
  var euiFieldPasswordStyles = exports.euiFieldPasswordStyles = function euiFieldPasswordStyles(euiThemeContext) {
25
25
  var formStyles = (0, _form.euiFormControlStyles)(euiThemeContext);
26
26
  return {
27
- euiFieldPassword: /*#__PURE__*/(0, _react.css)(formStyles.shared, " &:invalid{", formStyles.invalid, ";}&:focus{", formStyles.focus, ";}&:disabled{", formStyles.disabled, ";}&[readOnly]{", formStyles.readOnly, ";}&:autofill{", formStyles.autoFill, ";};label:euiFieldPassword;"),
27
+ euiFieldPassword: /*#__PURE__*/(0, _react.css)(formStyles.shared, " &:is(:invalid, [aria-invalid='true']){", formStyles.invalid, ";}&:focus{", formStyles.focus, ";}&:disabled{", formStyles.disabled, ";}&[readOnly]{", formStyles.readOnly, ";}&:autofill{", formStyles.autoFill, ";};label:euiFieldPassword;"),
28
28
  // Only remove Edge's internal reveal button if we're providing a custom one
29
29
  // This pseudo-element is still supported in Chromium-based Edge.
30
30
  withToggle: _ref,
@@ -17,7 +17,7 @@ var _form = require("../form.styles");
17
17
  var euiFieldSearchStyles = exports.euiFieldSearchStyles = function euiFieldSearchStyles(euiThemeContext) {
18
18
  var formStyles = (0, _form.euiFormControlStyles)(euiThemeContext);
19
19
  return {
20
- euiFieldSearch: /*#__PURE__*/(0, _react.css)("-webkit-appearance:textfield;&::-webkit-search-decoration,&::-webkit-search-cancel-button{-webkit-appearance:none;}", formStyles.shared, " &:invalid{", formStyles.invalid, ";}&:focus{", formStyles.focus, ";}&:disabled{", formStyles.disabled, ";}&[readOnly]{", formStyles.readOnly, ";}&:autofill{", formStyles.autoFill, ";};label:euiFieldSearch;"),
20
+ euiFieldSearch: /*#__PURE__*/(0, _react.css)("-webkit-appearance:textfield;&::-webkit-search-decoration,&::-webkit-search-cancel-button{-webkit-appearance:none;}", formStyles.shared, " &:is(:invalid, [aria-invalid='true']){", formStyles.invalid, ";}&:focus{", formStyles.focus, ";}&:disabled{", formStyles.disabled, ";}&[readOnly]{", formStyles.readOnly, ";}&:autofill{", formStyles.autoFill, ";};label:euiFieldSearch;"),
21
21
  // Skip the css() on the default height to avoid generating a className
22
22
  uncompressed: formStyles.uncompressed,
23
23
  compressed: /*#__PURE__*/(0, _react.css)(formStyles.compressed, ";label:compressed;"),