@elastic/eui 97.0.0 → 97.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/es/components/datagrid/body/cell/data_grid_cell.styles.js +4 -2
  2. package/es/components/datagrid/body/cell/focus_utils.js +14 -4
  3. package/es/components/datagrid/body/data_grid_body.js +2 -1
  4. package/es/components/datagrid/body/data_grid_body_custom.js +5 -2
  5. package/es/components/datagrid/body/data_grid_body_virtualized.js +8 -4
  6. package/es/components/datagrid/body/header/column_actions.js +262 -27
  7. package/es/components/datagrid/body/header/{data_grid_column_resizer.js → column_resizer.js} +10 -4
  8. package/es/components/datagrid/body/header/{data_grid_column_resizer.styles.js → column_resizer.styles.js} +6 -1
  9. package/es/components/datagrid/body/header/column_sorting.js +134 -0
  10. package/es/components/datagrid/body/header/data_grid_control_header_cell.js +3 -3
  11. package/es/components/datagrid/body/header/data_grid_header_cell.js +86 -305
  12. package/es/components/datagrid/body/header/data_grid_header_cell.styles.js +1 -1
  13. package/es/components/datagrid/body/header/data_grid_header_cell_wrapper.js +19 -17
  14. package/es/components/datagrid/body/header/data_grid_header_cell_wrapper.styles.js +1 -2
  15. package/es/components/datagrid/body/header/data_grid_header_row.js +25 -10
  16. package/es/components/datagrid/body/header/draggable_columns.js +301 -0
  17. package/es/components/datagrid/body/header/draggable_columns.styles.js +38 -0
  18. package/es/components/datagrid/data_grid.js +2 -1
  19. package/es/components/datagrid/data_grid.stories.utils.js +9 -6
  20. package/es/components/datagrid/utils/col_widths.js +4 -6
  21. package/es/components/datagrid/utils/focus.js +2 -2
  22. package/es/components/datagrid/utils/scrolling.js +13 -10
  23. package/es/components/date_picker/super_date_picker/date_popover/absolute_tab.js +8 -2
  24. package/es/components/date_picker/super_date_picker/date_popover/date_popover_button.js +8 -2
  25. package/es/components/date_picker/super_date_picker/date_popover/date_popover_content.js +8 -2
  26. package/es/components/date_picker/super_date_picker/super_date_picker.js +27 -5
  27. package/es/components/drag_and_drop/draggable.js +13 -5
  28. package/es/components/header/header.styles.js +6 -12
  29. package/es/components/header/header_links/header_links.js +1 -1
  30. package/es/components/header/header_links/header_links.styles.js +1 -0
  31. package/es/components/page_template/inner/page_inner.styles.js +3 -4
  32. package/es/components/tabs/tab.js +1 -1
  33. package/eui.d.ts +417 -307
  34. package/i18ntokens.json +175 -175
  35. package/lib/components/datagrid/body/cell/data_grid_cell.styles.js +4 -2
  36. package/lib/components/datagrid/body/cell/focus_utils.js +14 -4
  37. package/lib/components/datagrid/body/data_grid_body.js +2 -1
  38. package/lib/components/datagrid/body/data_grid_body_custom.js +5 -2
  39. package/lib/components/datagrid/body/data_grid_body_virtualized.js +8 -4
  40. package/lib/components/datagrid/body/header/column_actions.js +265 -29
  41. package/lib/components/datagrid/body/header/{data_grid_column_resizer.js → column_resizer.js} +11 -5
  42. package/{optimize/lib/components/datagrid/body/header/data_grid_column_resizer.styles.js → lib/components/datagrid/body/header/column_resizer.styles.js} +6 -1
  43. package/lib/components/datagrid/body/header/column_sorting.js +144 -0
  44. package/lib/components/datagrid/body/header/data_grid_control_header_cell.js +3 -3
  45. package/lib/components/datagrid/body/header/data_grid_header_cell.js +86 -305
  46. package/lib/components/datagrid/body/header/data_grid_header_cell.styles.js +1 -1
  47. package/lib/components/datagrid/body/header/data_grid_header_cell_wrapper.js +19 -17
  48. package/lib/components/datagrid/body/header/data_grid_header_cell_wrapper.styles.js +1 -2
  49. package/lib/components/datagrid/body/header/data_grid_header_row.js +24 -9
  50. package/lib/components/datagrid/body/header/draggable_columns.js +308 -0
  51. package/lib/components/datagrid/body/header/draggable_columns.styles.js +42 -0
  52. package/lib/components/datagrid/data_grid.js +2 -1
  53. package/lib/components/datagrid/data_grid.stories.utils.js +9 -6
  54. package/lib/components/datagrid/utils/col_widths.js +4 -6
  55. package/lib/components/datagrid/utils/focus.js +2 -2
  56. package/lib/components/datagrid/utils/scrolling.js +13 -10
  57. package/lib/components/date_picker/super_date_picker/date_popover/absolute_tab.js +8 -2
  58. package/lib/components/date_picker/super_date_picker/date_popover/date_popover_button.js +8 -2
  59. package/lib/components/date_picker/super_date_picker/date_popover/date_popover_content.js +8 -2
  60. package/lib/components/date_picker/super_date_picker/super_date_picker.js +27 -5
  61. package/lib/components/drag_and_drop/draggable.js +13 -5
  62. package/lib/components/header/header.styles.js +6 -12
  63. package/lib/components/header/header_links/header_links.js +1 -1
  64. package/lib/components/header/header_links/header_links.styles.js +1 -0
  65. package/lib/components/page_template/inner/page_inner.styles.js +3 -4
  66. package/lib/components/tabs/tab.js +1 -1
  67. package/optimize/es/components/datagrid/body/cell/data_grid_cell.styles.js +4 -2
  68. package/optimize/es/components/datagrid/body/cell/focus_utils.js +13 -4
  69. package/optimize/es/components/datagrid/body/data_grid_body_custom.js +3 -1
  70. package/optimize/es/components/datagrid/body/data_grid_body_virtualized.js +6 -3
  71. package/optimize/es/components/datagrid/body/header/column_actions.js +250 -26
  72. package/optimize/es/components/datagrid/body/header/{data_grid_column_resizer.js → column_resizer.js} +8 -3
  73. package/optimize/es/components/datagrid/body/header/{data_grid_column_resizer.styles.js → column_resizer.styles.js} +6 -1
  74. package/optimize/es/components/datagrid/body/header/column_sorting.js +134 -0
  75. package/optimize/es/components/datagrid/body/header/data_grid_control_header_cell.js +2 -2
  76. package/optimize/es/components/datagrid/body/header/data_grid_header_cell.js +82 -302
  77. package/optimize/es/components/datagrid/body/header/data_grid_header_cell.styles.js +1 -1
  78. package/optimize/es/components/datagrid/body/header/data_grid_header_cell_wrapper.js +15 -14
  79. package/optimize/es/components/datagrid/body/header/data_grid_header_cell_wrapper.styles.js +1 -2
  80. package/optimize/es/components/datagrid/body/header/data_grid_header_row.js +25 -10
  81. package/optimize/es/components/datagrid/body/header/draggable_columns.js +223 -0
  82. package/optimize/es/components/datagrid/body/header/draggable_columns.styles.js +38 -0
  83. package/optimize/es/components/datagrid/data_grid.js +2 -1
  84. package/optimize/es/components/datagrid/data_grid.stories.utils.js +7 -5
  85. package/optimize/es/components/datagrid/utils/col_widths.js +4 -6
  86. package/optimize/es/components/datagrid/utils/focus.js +2 -2
  87. package/optimize/es/components/datagrid/utils/scrolling.js +13 -10
  88. package/optimize/es/components/date_picker/super_date_picker/date_popover/absolute_tab.js +5 -1
  89. package/optimize/es/components/date_picker/super_date_picker/date_popover/date_popover_button.js +6 -2
  90. package/optimize/es/components/date_picker/super_date_picker/date_popover/date_popover_content.js +6 -2
  91. package/optimize/es/components/date_picker/super_date_picker/super_date_picker.js +11 -5
  92. package/optimize/es/components/drag_and_drop/draggable.js +8 -3
  93. package/optimize/es/components/header/header.styles.js +6 -12
  94. package/optimize/es/components/header/header_links/header_links.js +1 -1
  95. package/optimize/es/components/header/header_links/header_links.styles.js +1 -0
  96. package/optimize/es/components/page_template/inner/page_inner.styles.js +3 -4
  97. package/optimize/es/components/tabs/tab.js +1 -1
  98. package/optimize/lib/components/datagrid/body/cell/data_grid_cell.styles.js +4 -2
  99. package/optimize/lib/components/datagrid/body/cell/focus_utils.js +13 -4
  100. package/optimize/lib/components/datagrid/body/data_grid_body_custom.js +3 -1
  101. package/optimize/lib/components/datagrid/body/data_grid_body_virtualized.js +6 -3
  102. package/optimize/lib/components/datagrid/body/header/column_actions.js +253 -27
  103. package/optimize/lib/components/datagrid/body/header/{data_grid_column_resizer.js → column_resizer.js} +9 -4
  104. package/{test-env/components/datagrid/body/header/data_grid_column_resizer.styles.js → optimize/lib/components/datagrid/body/header/column_resizer.styles.js} +6 -1
  105. package/optimize/lib/components/datagrid/body/header/column_sorting.js +144 -0
  106. package/optimize/lib/components/datagrid/body/header/data_grid_control_header_cell.js +2 -2
  107. package/optimize/lib/components/datagrid/body/header/data_grid_header_cell.js +80 -300
  108. package/optimize/lib/components/datagrid/body/header/data_grid_header_cell.styles.js +1 -1
  109. package/optimize/lib/components/datagrid/body/header/data_grid_header_cell_wrapper.js +15 -14
  110. package/optimize/lib/components/datagrid/body/header/data_grid_header_cell_wrapper.styles.js +1 -2
  111. package/optimize/lib/components/datagrid/body/header/data_grid_header_row.js +24 -9
  112. package/optimize/lib/components/datagrid/body/header/draggable_columns.js +231 -0
  113. package/optimize/lib/components/datagrid/body/header/draggable_columns.styles.js +43 -0
  114. package/optimize/lib/components/datagrid/data_grid.js +2 -1
  115. package/optimize/lib/components/datagrid/data_grid.stories.utils.js +7 -5
  116. package/optimize/lib/components/datagrid/utils/col_widths.js +4 -6
  117. package/optimize/lib/components/datagrid/utils/focus.js +2 -2
  118. package/optimize/lib/components/datagrid/utils/scrolling.js +13 -10
  119. package/optimize/lib/components/date_picker/super_date_picker/date_popover/absolute_tab.js +5 -1
  120. package/optimize/lib/components/date_picker/super_date_picker/date_popover/date_popover_button.js +6 -2
  121. package/optimize/lib/components/date_picker/super_date_picker/date_popover/date_popover_content.js +6 -2
  122. package/optimize/lib/components/date_picker/super_date_picker/super_date_picker.js +11 -5
  123. package/optimize/lib/components/drag_and_drop/draggable.js +8 -3
  124. package/optimize/lib/components/header/header.styles.js +6 -12
  125. package/optimize/lib/components/header/header_links/header_links.js +1 -1
  126. package/optimize/lib/components/header/header_links/header_links.styles.js +1 -0
  127. package/optimize/lib/components/page_template/inner/page_inner.styles.js +3 -4
  128. package/optimize/lib/components/tabs/tab.js +1 -1
  129. package/package.json +1 -1
  130. package/test-env/components/datagrid/body/cell/data_grid_cell.styles.js +4 -2
  131. package/test-env/components/datagrid/body/cell/focus_utils.js +13 -4
  132. package/test-env/components/datagrid/body/data_grid_body.js +2 -1
  133. package/test-env/components/datagrid/body/data_grid_body_custom.js +5 -2
  134. package/test-env/components/datagrid/body/data_grid_body_virtualized.js +8 -4
  135. package/test-env/components/datagrid/body/header/column_actions.js +261 -27
  136. package/test-env/components/datagrid/body/header/{data_grid_column_resizer.js → column_resizer.js} +11 -5
  137. package/{lib/components/datagrid/body/header/data_grid_column_resizer.styles.js → test-env/components/datagrid/body/header/column_resizer.styles.js} +6 -1
  138. package/test-env/components/datagrid/body/header/column_sorting.js +144 -0
  139. package/test-env/components/datagrid/body/header/data_grid_control_header_cell.js +3 -3
  140. package/test-env/components/datagrid/body/header/data_grid_header_cell.js +82 -301
  141. package/test-env/components/datagrid/body/header/data_grid_header_cell.styles.js +1 -1
  142. package/test-env/components/datagrid/body/header/data_grid_header_cell_wrapper.js +19 -17
  143. package/test-env/components/datagrid/body/header/data_grid_header_cell_wrapper.styles.js +1 -2
  144. package/test-env/components/datagrid/body/header/data_grid_header_row.js +24 -9
  145. package/test-env/components/datagrid/body/header/draggable_columns.js +305 -0
  146. package/test-env/components/datagrid/body/header/draggable_columns.styles.js +43 -0
  147. package/test-env/components/datagrid/data_grid.js +2 -1
  148. package/test-env/components/datagrid/data_grid.stories.utils.js +9 -6
  149. package/test-env/components/datagrid/utils/col_widths.js +4 -6
  150. package/test-env/components/datagrid/utils/focus.js +2 -2
  151. package/test-env/components/datagrid/utils/scrolling.js +13 -10
  152. package/test-env/components/date_picker/super_date_picker/date_popover/absolute_tab.js +8 -2
  153. package/test-env/components/date_picker/super_date_picker/date_popover/date_popover_button.js +8 -2
  154. package/test-env/components/date_picker/super_date_picker/date_popover/date_popover_content.js +8 -2
  155. package/test-env/components/date_picker/super_date_picker/super_date_picker.js +27 -5
  156. package/test-env/components/drag_and_drop/draggable.js +13 -5
  157. package/test-env/components/header/header.styles.js +6 -12
  158. package/test-env/components/header/header_links/header_links.js +1 -1
  159. package/test-env/components/header/header_links/header_links.styles.js +1 -0
  160. package/test-env/components/page_template/inner/page_inner.styles.js +3 -4
  161. package/test-env/components/tabs/tab.js +1 -1
@@ -63,7 +63,8 @@ export var useScrollCellIntoView = function useScrollCellIntoView(_ref) {
63
63
  headerRowHeight = _ref.headerRowHeight,
64
64
  footerRowHeight = _ref.footerRowHeight,
65
65
  visibleRowCount = _ref.visibleRowCount,
66
- hasStickyFooter = _ref.hasStickyFooter;
66
+ hasStickyFooter = _ref.hasStickyFooter,
67
+ canDragAndDropColumns = _ref.canDragAndDropColumns;
67
68
  var scrollCellIntoView = useCallback(
68
69
  /*#__PURE__*/
69
70
  // Note: in order for this UX to work correctly with react-window's APIs,
@@ -72,7 +73,7 @@ export var useScrollCellIntoView = function useScrollCellIntoView(_ref) {
72
73
  function () {
73
74
  var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(_ref2) {
74
75
  var _adjustedScrollLeft;
75
- var rowIndex, colIndex, getCell, cell, cellIsInView, _outerGridRef$current, scrollTop, scrollLeft, adjustedScrollTop, adjustedScrollLeft, cellRightPos, rightScrollBound, rightWidthOutOfView, cellLeftPos, leftScrollBound, leftWidthOutOfView, isStickyHeader, isStickyFooter, _adjustedScrollTop, parentRow, cellBottomPos, bottomScrollBound, bottomHeightOutOfView, cellTopPos, topScrollBound, topHeightOutOfView, _adjustedScrollLeft2, _adjustedScrollTop2;
76
+ var rowIndex, colIndex, getCell, cell, cellIsInView, isStickyHeader, isStickyFooter, isDraggableHeader, isDraggableHeaderCell, _outerGridRef$current, scrollTop, scrollLeft, adjustedScrollTop, adjustedScrollLeft, cellLeftPos, cellRightPos, rightScrollBound, rightWidthOutOfView, leftScrollBound, leftWidthOutOfView, _adjustedScrollTop, parentRow, cellBottomPos, bottomScrollBound, bottomHeightOutOfView, cellTopPos, topScrollBound, topHeightOutOfView, _adjustedScrollLeft2, _adjustedScrollTop2;
76
77
  return _regeneratorRuntime().wrap(function _callee$(_context) {
77
78
  while (1) switch (_context.prev = _context.next) {
78
79
  case 0:
@@ -119,7 +120,10 @@ export var useScrollCellIntoView = function useScrollCellIntoView(_ref) {
119
120
  return _context.abrupt("return");
120
121
  case 15:
121
122
  // If for some reason we can't find a valid cell, short-circuit
122
- // We now manually adjust scroll positioning around the cell to ensure it's
123
+ isStickyHeader = rowIndex === -1;
124
+ isStickyFooter = hasStickyFooter && rowIndex === visibleRowCount;
125
+ isDraggableHeader = canDragAndDropColumns && isStickyHeader;
126
+ isDraggableHeaderCell = isDraggableHeader && cell.offsetLeft === 0 && colIndex !== 0; // We now manually adjust scroll positioning around the cell to ensure it's
123
127
  // fully in view on all sides. A couple of notes on this:
124
128
  // 1. We're avoiding relying on react-window's scrollToItem for this because it also
125
129
  // does not account for sticky items (see https://github.com/bvaughn/react-window/issues/586)
@@ -128,8 +132,10 @@ export var useScrollCellIntoView = function useScrollCellIntoView(_ref) {
128
132
  // halfway there, but doesn't guarantee the *full* cell in view, or account for
129
133
  // sticky positioned rows or OS scrollbars, hence these workarounds
130
134
  _outerGridRef$current = outerGridRef.current, scrollTop = _outerGridRef$current.scrollTop, scrollLeft = _outerGridRef$current.scrollLeft;
131
- // Check if the cell's right side is outside the current scrolling bounds
132
- cellRightPos = cell.offsetLeft + cell.offsetWidth;
135
+ // Draggable header columns are nested within EuiDraggables,
136
+ // and their offsetLeft needs to go up a wrapper as a result
137
+ cellLeftPos = isDraggableHeaderCell ? cell.offsetParent.offsetLeft : cell.offsetLeft; // Check if the cell's right side is outside the current scrolling bounds
138
+ cellRightPos = cellLeftPos + cell.offsetWidth;
133
139
  rightScrollBound = scrollLeft + outerGridRef.current.clientWidth; // Note: We specifically want clientWidth and not offsetWidth here to account for scrollbars
134
140
  rightWidthOutOfView = cellRightPos - rightScrollBound;
135
141
  if (rightWidthOutOfView > 0) {
@@ -137,7 +143,6 @@ export var useScrollCellIntoView = function useScrollCellIntoView(_ref) {
137
143
  }
138
144
 
139
145
  // Check if the cell's left side is outside the current scrolling bounds
140
- cellLeftPos = cell.offsetLeft;
141
146
  leftScrollBound = (_adjustedScrollLeft = adjustedScrollLeft) !== null && _adjustedScrollLeft !== void 0 ? _adjustedScrollLeft : scrollLeft;
142
147
  leftWidthOutOfView = leftScrollBound - cellLeftPos;
143
148
  if (leftWidthOutOfView > 0) {
@@ -148,8 +153,6 @@ export var useScrollCellIntoView = function useScrollCellIntoView(_ref) {
148
153
 
149
154
  // Skip top/bottom scroll adjustments for sticky headers & footers
150
155
  // since they should always be in view vertically
151
- isStickyHeader = rowIndex === -1;
152
- isStickyFooter = hasStickyFooter && rowIndex === visibleRowCount;
153
156
  if (!isStickyHeader && !isStickyFooter) {
154
157
  parentRow = cell.parentNode; // Check if the cell's bottom side is outside the current scrolling bounds
155
158
  cellBottomPos = parentRow.offsetTop + cell.offsetHeight;
@@ -179,7 +182,7 @@ export var useScrollCellIntoView = function useScrollCellIntoView(_ref) {
179
182
  scrollTop: (_adjustedScrollTop2 = adjustedScrollTop) !== null && _adjustedScrollTop2 !== void 0 ? _adjustedScrollTop2 : scrollTop
180
183
  });
181
184
  }
182
- case 28:
185
+ case 30:
183
186
  case "end":
184
187
  return _context.stop();
185
188
  }
@@ -188,7 +191,7 @@ export var useScrollCellIntoView = function useScrollCellIntoView(_ref) {
188
191
  return function (_x) {
189
192
  return _ref3.apply(this, arguments);
190
193
  };
191
- }(), [gridRef, outerGridRef, hasGridScrolling, headerRowHeight, footerRowHeight, visibleRowCount, hasStickyFooter]);
194
+ }(), [gridRef, outerGridRef, hasGridScrolling, headerRowHeight, footerRowHeight, visibleRowCount, hasStickyFooter, canDragAndDropColumns]);
192
195
  return {
193
196
  scrollCellIntoView: scrollCellIntoView
194
197
  };
@@ -38,6 +38,8 @@ export var EuiAbsoluteTab = function EuiAbsoluteTab(_ref) {
38
38
  locale = _ref.locale,
39
39
  roundUp = _ref.roundUp,
40
40
  utcOffset = _ref.utcOffset,
41
+ minDate = _ref.minDate,
42
+ maxDate = _ref.maxDate,
41
43
  labelPrefix = _ref.labelPrefix;
42
44
  var styles = useEuiMemoizedStyles(euiAbsoluteTabDateFormStyles);
43
45
  var _useState = useState(function () {
@@ -131,7 +133,9 @@ export var EuiAbsoluteTab = function EuiAbsoluteTab(_ref) {
131
133
  dateFormat: dateFormat,
132
134
  timeFormat: timeFormat,
133
135
  locale: locale,
134
- utcOffset: utcOffset
136
+ utcOffset: utcOffset,
137
+ minDate: minDate,
138
+ maxDate: maxDate
135
139
  }), ___EmotionJSX(EuiFlexGroup, {
136
140
  component: "form",
137
141
  onSubmit: function onSubmit(e) {
@@ -176,5 +180,7 @@ EuiAbsoluteTab.propTypes = {
176
180
  onChange: PropTypes.func.isRequired,
177
181
  roundUp: PropTypes.bool.isRequired,
178
182
  labelPrefix: PropTypes.string.isRequired,
179
- utcOffset: PropTypes.number
183
+ utcOffset: PropTypes.number,
184
+ minDate: PropTypes.any,
185
+ maxDate: PropTypes.any
180
186
  };
@@ -1,4 +1,4 @@
1
- var _excluded = ["position", "isDisabled", "isInvalid", "needsUpdating", "value", "buttonProps", "canRoundRelativeUnits", "roundUp", "onChange", "locale", "dateFormat", "utcOffset", "timeFormat", "isOpen", "onPopoverToggle", "onPopoverClose", "compressed", "timeOptions"];
1
+ var _excluded = ["position", "isDisabled", "isInvalid", "needsUpdating", "value", "buttonProps", "canRoundRelativeUnits", "roundUp", "onChange", "locale", "dateFormat", "utcOffset", "minDate", "maxDate", "timeFormat", "isOpen", "onPopoverToggle", "onPopoverClose", "compressed", "timeOptions"];
2
2
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
3
3
  function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], t.indexOf(o) >= 0 || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
4
4
  function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }
@@ -35,6 +35,8 @@ export var EuiDatePopoverButton = function EuiDatePopoverButton(props) {
35
35
  locale = props.locale,
36
36
  dateFormat = props.dateFormat,
37
37
  utcOffset = props.utcOffset,
38
+ minDate = props.minDate,
39
+ maxDate = props.maxDate,
38
40
  timeFormat = props.timeFormat,
39
41
  isOpen = props.isOpen,
40
42
  onPopoverToggle = props.onPopoverToggle,
@@ -95,7 +97,9 @@ export var EuiDatePopoverButton = function EuiDatePopoverButton(props) {
95
97
  locale: locale,
96
98
  position: position,
97
99
  utcOffset: utcOffset,
98
- timeOptions: timeOptions
100
+ timeOptions: timeOptions,
101
+ minDate: minDate,
102
+ maxDate: maxDate
99
103
  }));
100
104
  };
101
105
  EuiDatePopoverButton.propTypes = {
@@ -121,6 +125,8 @@ EuiDatePopoverButton.propTypes = {
121
125
  timeFormat: PropTypes.string.isRequired,
122
126
  value: PropTypes.string.isRequired,
123
127
  utcOffset: PropTypes.number,
128
+ minDate: PropTypes.any,
129
+ maxDate: PropTypes.any,
124
130
  compressed: PropTypes.bool,
125
131
  timeOptions: PropTypes.shape({
126
132
  timeTenseOptions: PropTypes.arrayOf(PropTypes.any.isRequired).isRequired,
@@ -31,7 +31,9 @@ export var EuiDatePopoverContent = function EuiDatePopoverContent(_ref) {
31
31
  locale = _ref.locale,
32
32
  position = _ref.position,
33
33
  utcOffset = _ref.utcOffset,
34
- timeOptions = _ref.timeOptions;
34
+ timeOptions = _ref.timeOptions,
35
+ minDate = _ref.minDate,
36
+ maxDate = _ref.maxDate;
35
37
  var styles = useEuiMemoizedStyles(euiDatePopoverContentStyles);
36
38
  var onTabClick = function onTabClick(selectedTab) {
37
39
  switch (selectedTab.id) {
@@ -60,7 +62,9 @@ export var EuiDatePopoverContent = function EuiDatePopoverContent(_ref) {
60
62
  onChange: onChange,
61
63
  roundUp: roundUp,
62
64
  labelPrefix: labelPrefix,
63
- utcOffset: utcOffset
65
+ utcOffset: utcOffset,
66
+ minDate: minDate,
67
+ maxDate: maxDate
64
68
  }),
65
69
  'data-test-subj': 'superDatePickerAbsoluteTab',
66
70
  'aria-label': "".concat(labelPrefix, ": ").concat(absoluteLabel)
@@ -130,6 +134,8 @@ EuiDatePopoverContent.propTypes = {
130
134
  locale: PropTypes.any,
131
135
  position: PropTypes.oneOf(["start", "end"]).isRequired,
132
136
  utcOffset: PropTypes.number,
137
+ minDate: PropTypes.any,
138
+ maxDate: PropTypes.any,
133
139
  timeOptions: PropTypes.shape({
134
140
  timeTenseOptions: PropTypes.arrayOf(PropTypes.any.isRequired).isRequired,
135
141
  timeUnitsOptions: PropTypes.arrayOf(PropTypes.any.isRequired).isRequired,
@@ -45,7 +45,7 @@ import { EuiDatePopoverButton } from './date_popover/date_popover_button';
45
45
  import { EuiAutoRefresh, EuiAutoRefreshButton } from '../auto_refresh/auto_refresh';
46
46
  import { euiSuperDatePickerStyles } from './super_date_picker.styles';
47
47
  import { jsx as ___EmotionJSX } from "@emotion/react";
48
- function isRangeInvalid(start, end) {
48
+ function isRangeInvalid(start, end, minDate, maxDate) {
49
49
  if (start === 'now' && end === 'now') {
50
50
  return true;
51
51
  }
@@ -53,7 +53,7 @@ function isRangeInvalid(start, end) {
53
53
  var endMoment = dateMath.parse(end, {
54
54
  roundUp: true
55
55
  });
56
- var isInvalid = !startMoment || !endMoment || !startMoment.isValid() || !endMoment.isValid() || !moment(startMoment).isValid() || !moment(endMoment).isValid() || startMoment.isAfter(endMoment);
56
+ var isInvalid = !startMoment || !endMoment || !startMoment.isValid() || !endMoment.isValid() || !moment(startMoment).isValid() || !moment(endMoment).isValid() || startMoment.isAfter(endMoment) || endMoment.isBefore(startMoment) || minDate != null && startMoment.isBefore(minDate) || maxDate != null && endMoment.isAfter(maxDate);
57
57
  return isInvalid;
58
58
  }
59
59
  export var EuiSuperDatePickerInternal = /*#__PURE__*/function (_Component) {
@@ -72,7 +72,7 @@ export var EuiSuperDatePickerInternal = /*#__PURE__*/function (_Component) {
72
72
  },
73
73
  start: _this.props.start,
74
74
  end: _this.props.end,
75
- isInvalid: isRangeInvalid(_this.props.start, _this.props.end),
75
+ isInvalid: isRangeInvalid(_this.props.start, _this.props.end, _this.props.minDate, _this.props.maxDate),
76
76
  hasChanged: false,
77
77
  showPrettyDuration: showPrettyDuration(_this.props.start, _this.props.end, _this.props.commonlyUsedRanges),
78
78
  isStartDatePopoverOpen: false,
@@ -81,7 +81,7 @@ export var EuiSuperDatePickerInternal = /*#__PURE__*/function (_Component) {
81
81
  _defineProperty(_this, "setTime", function (_ref) {
82
82
  var end = _ref.end,
83
83
  start = _ref.start;
84
- var isInvalid = isRangeInvalid(start, end);
84
+ var isInvalid = isRangeInvalid(start, end, _this.props.minDate, _this.props.maxDate);
85
85
  _this.setState({
86
86
  start: start,
87
87
  end: end,
@@ -270,6 +270,8 @@ export var EuiSuperDatePickerInternal = /*#__PURE__*/function (_Component) {
270
270
  locale = _this$props3.locale,
271
271
  timeFormat = _this$props3.timeFormat,
272
272
  utcOffset = _this$props3.utcOffset,
273
+ minDate = _this$props3.minDate,
274
+ maxDate = _this$props3.maxDate,
273
275
  compressed = _this$props3.compressed,
274
276
  onFocus = _this$props3.onFocus,
275
277
  styles = _this$props3.memoizedStyles;
@@ -344,6 +346,8 @@ export var EuiSuperDatePickerInternal = /*#__PURE__*/function (_Component) {
344
346
  utcOffset: utcOffset,
345
347
  timeFormat: timeFormat,
346
348
  locale: locale || contextLocale,
349
+ minDate: minDate,
350
+ maxDate: maxDate,
347
351
  canRoundRelativeUnits: canRoundRelativeUnits,
348
352
  isOpen: _this.state.isStartDatePopoverOpen,
349
353
  onPopoverToggle: _this.onStartDatePopoverToggle,
@@ -366,6 +370,8 @@ export var EuiSuperDatePickerInternal = /*#__PURE__*/function (_Component) {
366
370
  utcOffset: utcOffset,
367
371
  timeFormat: timeFormat,
368
372
  locale: locale || contextLocale,
373
+ minDate: minDate,
374
+ maxDate: maxDate,
369
375
  canRoundRelativeUnits: canRoundRelativeUnits,
370
376
  roundUp: true,
371
377
  isOpen: _this.state.isEndDatePopoverOpen,
@@ -471,7 +477,7 @@ export var EuiSuperDatePickerInternal = /*#__PURE__*/function (_Component) {
471
477
  },
472
478
  start: nextProps.start,
473
479
  end: nextProps.end,
474
- isInvalid: isRangeInvalid(nextProps.start, nextProps.end),
480
+ isInvalid: isRangeInvalid(nextProps.start, nextProps.end, nextProps.minDate, nextProps.maxDate),
475
481
  hasChanged: false,
476
482
  showPrettyDuration: showPrettyDuration(nextProps.start, nextProps.end, nextProps.commonlyUsedRanges)
477
483
  };
@@ -604,6 +610,14 @@ EuiSuperDatePickerInternal.propTypes = {
604
610
  refreshIntervalUnits: PropTypes.any,
605
611
  start: PropTypes.oneOfType([PropTypes.oneOfType([PropTypes.oneOf(["now"]), PropTypes.string.isRequired]), PropTypes.oneOfType([PropTypes.oneOf(["now"]), PropTypes.string.isRequired]).isRequired]),
606
612
  end: PropTypes.oneOfType([PropTypes.oneOfType([PropTypes.oneOf(["now"]), PropTypes.string.isRequired]), PropTypes.oneOfType([PropTypes.oneOf(["now"]), PropTypes.string.isRequired]).isRequired]),
613
+ /**
614
+ * Defines min. date accepted as a selection (in moment format)
615
+ */
616
+ minDate: PropTypes.any,
617
+ /**
618
+ * Defines max. date accepted as a selection (in moment format)
619
+ */
620
+ maxDate: PropTypes.any,
607
621
  /**
608
622
  * Specifies the formatted used when displaying times
609
623
  * @default 'HH:mm'
@@ -787,6 +801,14 @@ EuiSuperDatePicker.propTypes = {
787
801
  */
788
802
  start: PropTypes.oneOfType([PropTypes.oneOf(["now"]), PropTypes.string.isRequired]),
789
803
  end: PropTypes.oneOfType([PropTypes.oneOf(["now"]), PropTypes.string.isRequired]),
804
+ /**
805
+ * Defines min. date accepted as a selection (in moment format)
806
+ */
807
+ minDate: PropTypes.any,
808
+ /**
809
+ * Defines max. date accepted as a selection (in moment format)
810
+ */
811
+ maxDate: PropTypes.any,
790
812
  /**
791
813
  * Specifies the formatted used when displaying times
792
814
  * @default 'HH:mm'
@@ -50,6 +50,7 @@ export var EuiDraggable = function EuiDraggable(_ref) {
50
50
  cloneItems = _useContext.cloneItems;
51
51
  var euiTheme = useEuiTheme();
52
52
  var styles = euiDraggableStyles(euiTheme);
53
+ var hasCustomDragHandle = customDragHandle !== false;
53
54
  return ___EmotionJSX(Draggable, _extends({
54
55
  draggableId: draggableId,
55
56
  index: index,
@@ -57,13 +58,14 @@ export var EuiDraggable = function EuiDraggable(_ref) {
57
58
  }, rest), function (provided, snapshot, rubric) {
58
59
  var _provided$dragHandleP, _provided$dragHandleP2;
59
60
  var isDragging = snapshot.isDragging;
61
+ var isFullyCustomDragHandle = customDragHandle === 'custom';
60
62
  var cssStyles = [styles.euiDraggable, cloneItems && !isDragging && styles.hasClone, isDragging && styles.isDragging, isRemovable && styles.isRemovable, styles.spacing[spacing]];
61
63
  var classes = classNames('euiDraggable', className);
62
64
  var childClasses = classNames('euiDraggable__item', {
63
65
  'euiDraggable__item-isDisabled': isDragDisabled
64
66
  });
65
67
  var DraggableElement = typeof children === 'function' ? children(provided, snapshot, rubric) : children;
66
- var content = ___EmotionJSX(React.Fragment, null, ___EmotionJSX("div", _extends({}, provided.draggableProps, !customDragHandle ? provided.dragHandleProps : {}, {
68
+ var content = ___EmotionJSX(React.Fragment, null, ___EmotionJSX("div", _extends({}, provided.draggableProps, !hasCustomDragHandle ? provided.dragHandleProps : {}, {
67
69
  ref: provided.innerRef,
68
70
  "data-test-subj": dataTestSubj,
69
71
  className: classes,
@@ -73,11 +75,14 @@ export var EuiDraggable = function EuiDraggable(_ref) {
73
75
  // interactive element. Screen readers will cue users that this is a container
74
76
  // and has one or more elements inside that are part of a related group.
75
77
  ,
76
- role: hasInteractiveChildren ? 'group' : (_provided$dragHandleP = provided.dragHandleProps) === null || _provided$dragHandleP === void 0 ? void 0 : _provided$dragHandleP.role
78
+ role: isFullyCustomDragHandle ? undefined // prevent wrapper role from removing semantics of the children
79
+ : hasInteractiveChildren ? 'group' : (_provided$dragHandleP = provided.dragHandleProps) === null || _provided$dragHandleP === void 0 ? void 0 : _provided$dragHandleP.role
77
80
  // If the container includes an interactive element, we remove the tabindex=0
78
81
  // because [role="group"] does not permit or warrant a tab stop
82
+ // additionally we remove the tabindex when the child is a fully custom handle
83
+ // that has its own tabindex and handle props
79
84
  ,
80
- tabIndex: hasInteractiveChildren ? undefined : (_provided$dragHandleP2 = provided.dragHandleProps) === null || _provided$dragHandleP2 === void 0 ? void 0 : _provided$dragHandleP2.tabIndex
85
+ tabIndex: hasInteractiveChildren || isFullyCustomDragHandle ? undefined : (_provided$dragHandleP2 = provided.dragHandleProps) === null || _provided$dragHandleP2 === void 0 ? void 0 : _provided$dragHandleP2.tabIndex
81
86
  }), cloneElementWithCss(DraggableElement, {
82
87
  className: classNames(DraggableElement.props.className, childClasses),
83
88
  css: [euiDraggableItemStyles.euiDraggable__item, isDragDisabled && euiDraggableItemStyles.disabled]
@@ -95,9 +100,12 @@ EuiDraggable.propTypes = {
95
100
  children: PropTypes.oneOfType([PropTypes.element.isRequired, PropTypes.any.isRequired]).isRequired,
96
101
  className: PropTypes.string,
97
102
  /**
98
- * Whether the `children` will provide and set up its own drag handle
103
+ * Whether the `children` will provide and set up its own drag handle.
104
+ * The `custom` value additionally removes the `role` from the draggable container.
105
+ * Use this if the `children` element is focusable and should keep its
106
+ * semantic role for accessibility purposes.
99
107
  */
100
- customDragHandle: PropTypes.bool,
108
+ customDragHandle: PropTypes.oneOfType([PropTypes.bool.isRequired, PropTypes.oneOf(["custom"])]),
101
109
  /**
102
110
  * Whether the container has interactive children and should have `role="group"` instead of `"button"`.
103
111
  * Setting this flag ensures your drag & drop container is keyboard and screen reader accessible.
@@ -19,23 +19,18 @@ export var euiHeaderVariables = function euiHeaderVariables(euiThemeContext) {
19
19
  };
20
20
  };
21
21
  export var euiHeaderStyles = function euiHeaderStyles(euiThemeContext) {
22
- var euiTheme = euiThemeContext.euiTheme,
23
- colorMode = euiThemeContext.colorMode;
22
+ var euiTheme = euiThemeContext.euiTheme;
24
23
  var _euiHeaderVariables = euiHeaderVariables(euiThemeContext),
25
24
  height = _euiHeaderVariables.height,
26
25
  padding = _euiHeaderVariables.padding;
27
-
28
- // Curated border color to fade into the shadow without looking too much like a border
29
- // It adds separation between the header and flyout
30
- var borderColor = colorMode === 'DARK' ? shade(euiTheme.colors.emptyShade, 0.35) : shade(euiTheme.border.color, 0.03);
31
26
  return {
32
- euiHeader: /*#__PURE__*/css("display:flex;justify-content:space-between;", logicalCSS('height', height), " ", logicalCSS('padding-horizontal', padding), " ", euiShadowSmall(euiThemeContext), ";;label:euiHeader;"),
27
+ euiHeader: /*#__PURE__*/css("display:flex;justify-content:space-between;", logicalCSS('height', height), " ", logicalCSS('padding-horizontal', padding), " ", logicalCSS('border-bottom', euiTheme.border.thin), " ", euiShadowSmall(euiThemeContext), ";;label:euiHeader;"),
33
28
  // Position
34
29
  static: /*#__PURE__*/css("z-index:", Number(euiTheme.levels.header) - 1, ";position:relative;;label:static;"),
35
30
  fixed: /*#__PURE__*/css("z-index:", euiTheme.levels.header, ";position:fixed;", logicalCSS('top', 0), " ", logicalCSS('horizontal', 0), ";;label:fixed;"),
36
31
  // Theme
37
- default: /*#__PURE__*/css("background-color:", euiTheme.colors.emptyShade, ";", logicalCSS('border-bottom', "".concat(euiTheme.border.width.thin, " solid ").concat(borderColor)), ";;label:default;"),
38
- dark: /*#__PURE__*/css(euiHeaderDarkStyles(euiThemeContext, borderColor), ";label:dark;")
32
+ default: /*#__PURE__*/css("background-color:", euiTheme.colors.emptyShade, ";;label:default;"),
33
+ dark: /*#__PURE__*/css(euiHeaderDarkStyles(euiThemeContext), ";label:dark;")
39
34
  };
40
35
  };
41
36
 
@@ -49,12 +44,11 @@ export var euiHeaderStyles = function euiHeaderStyles(euiThemeContext) {
49
44
  * by Kibana in the near future, at which point we can remove this
50
45
  */
51
46
  import { euiFormVariables } from '../form/form.styles';
52
- var euiHeaderDarkStyles = function euiHeaderDarkStyles(euiThemeContext, defaultBorderColor) {
47
+ var euiHeaderDarkStyles = function euiHeaderDarkStyles(euiThemeContext) {
53
48
  var euiTheme = euiThemeContext.euiTheme,
54
49
  colorMode = euiThemeContext.colorMode;
55
50
  var _euiFormVariables = euiFormVariables(euiThemeContext),
56
51
  controlPlaceholderText = _euiFormVariables.controlPlaceholderText;
57
52
  var backgroundColor = colorMode === 'DARK' ? shade(euiTheme.colors.lightestShade, 0.5) : shade(euiTheme.colors.darkestShade, 0.28);
58
- var borderColor = colorMode === 'DARK' ? defaultBorderColor : backgroundColor;
59
- return "\n background-color: ".concat(backgroundColor, ";\n ").concat(logicalCSS('border-bottom-color', borderColor), "\n\n .euiHeaderLogo__text,\n .euiHeaderLink,\n .euiHeaderSectionItemButton {\n color: ").concat(euiTheme.colors.ghost, ";\n }\n\n .euiHeaderLink-isActive {\n color: ").concat(makeHighContrastColor(euiTheme.colors.primary)(backgroundColor), ";\n }\n\n .euiHeaderLogo,\n .euiHeaderLink,\n .euiHeaderSectionItemButton {\n &:focus {\n background-color: ").concat(shade(euiTheme.colors.primary, 0.5), ";\n }\n }\n\n .euiHeaderSectionItemButton__notification--badge {\n box-shadow: 0 0 0 ").concat(euiTheme.border.width.thin, " ").concat(backgroundColor, ";\n }\n\n .euiHeaderSectionItemButton__notification--dot {\n stroke: ").concat(backgroundColor, ";\n }\n\n .euiSelectableTemplateSitewide .euiFormControlLayout {\n background-color: transparent;\n\n &--group {\n border-color: ").concat(transparentize(euiTheme.colors.ghost, 0.3), ";\n }\n\n &:not(:focus-within) {\n /* Increase contrast of filled text to be more than placeholder text */\n color: ").concat(euiTheme.colors.ghost, ";\n\n input {\n /* Increase contrast of placeholder text */\n &::placeholder {\n color: ").concat(makeHighContrastColor(controlPlaceholderText, 8)(backgroundColor), ";\n }\n\n /* Inherit color from form control layout */\n color: inherit;\n background-color: transparent;\n }\n\n .euiFormControlLayout__append,\n .euiFormControlLayout__prepend {\n background-color: transparent;\n }\n\n .euiFormLabel {\n color: inherit;\n }\n }\n }\n ");
53
+ return "\n background-color: ".concat(backgroundColor, ";\n\n .euiHeaderLogo__text,\n .euiHeaderLink,\n .euiHeaderSectionItemButton {\n color: ").concat(euiTheme.colors.ghost, ";\n }\n\n .euiHeaderLink-isActive {\n color: ").concat(makeHighContrastColor(euiTheme.colors.primary)(backgroundColor), ";\n }\n\n .euiHeaderLogo,\n .euiHeaderLink,\n .euiHeaderSectionItemButton {\n &:focus {\n background-color: ").concat(shade(euiTheme.colors.primary, 0.5), ";\n }\n }\n\n .euiHeaderSectionItemButton__notification--badge {\n box-shadow: 0 0 0 ").concat(euiTheme.border.width.thin, " ").concat(backgroundColor, ";\n }\n\n .euiHeaderSectionItemButton__notification--dot {\n stroke: ").concat(backgroundColor, ";\n }\n\n .euiSelectableTemplateSitewide .euiFormControlLayout {\n background-color: transparent;\n\n &--group {\n border-color: ").concat(transparentize(euiTheme.colors.ghost, 0.3), ";\n }\n\n &:not(:focus-within) {\n /* Increase contrast of filled text to be more than placeholder text */\n color: ").concat(euiTheme.colors.ghost, ";\n\n input {\n /* Increase contrast of placeholder text */\n &::placeholder {\n color: ").concat(makeHighContrastColor(controlPlaceholderText, 8)(backgroundColor), ";\n }\n\n /* Inherit color from form control layout */\n color: inherit;\n background-color: transparent;\n }\n\n .euiFormControlLayout__append,\n .euiFormControlLayout__prepend {\n background-color: transparent;\n }\n\n .euiFormLabel {\n color: inherit;\n }\n }\n }\n ");
60
54
  };
@@ -28,7 +28,7 @@ import { EuiHeaderSectionItemButton } from '../header_section';
28
28
  import { EuiHideFor, EuiShowFor } from '../../responsive';
29
29
  import { euiHeaderLinksStyles } from './header_links.styles';
30
30
  import { jsx as ___EmotionJSX } from "@emotion/react";
31
- export var GUTTER_SIZES = ['xs', 's', 'm', 'l'];
31
+ export var GUTTER_SIZES = ['xxs', 'xs', 's', 'm', 'l'];
32
32
  export var EuiHeaderLinks = function EuiHeaderLinks(_ref) {
33
33
  var children = _ref.children,
34
34
  className = _ref.className,
@@ -31,6 +31,7 @@ export var euiHeaderLinksStyles = function euiHeaderLinksStyles(_ref3) {
31
31
  euiHeaderLinks: _ref2,
32
32
  euiHeaderLinks__list: _ref,
33
33
  gutterSizes: {
34
+ xxs: /*#__PURE__*/css("gap:", euiTheme.size.xs, ";;label:xxs;"),
34
35
  xs: /*#__PURE__*/css("gap:", euiTheme.size.s, ";;label:xs;"),
35
36
  s: /*#__PURE__*/css("gap:", euiTheme.size.m, ";;label:s;"),
36
37
  m: /*#__PURE__*/css("gap:", euiTheme.size.base, ";;label:m;"),
@@ -9,15 +9,14 @@
9
9
  import { css } from '@emotion/react';
10
10
  import { euiShadow } from '../../../themes/amsterdam/global_styling/mixins';
11
11
  import { euiBackgroundColor, logicalCSS } from '../../../global_styling';
12
- import { transparentize } from '../../../services';
13
12
  export var euiPageInnerStyles = function euiPageInnerStyles(euiThemeContext) {
14
- var borderColor = transparentize(euiThemeContext.euiTheme.colors.lightShade, 0.7);
13
+ var euiTheme = euiThemeContext.euiTheme;
15
14
  return {
16
15
  euiPageInner: /*#__PURE__*/css("display:flex;flex-direction:column;align-items:stretch;flex:1 1 100%;", logicalCSS('max-width', '100%'), " ", logicalCSS('min-width', '0'), ";;label:euiPageInner;"),
17
16
  panelled: /*#__PURE__*/css("background:", euiBackgroundColor(euiThemeContext, 'plain'), ";", euiShadow(euiThemeContext, 'm'), ";;label:panelled;"),
18
17
  border: {
19
- top: /*#__PURE__*/css(logicalCSS('border-top', "".concat(euiThemeContext.euiTheme.border.width.thin, " solid ").concat(borderColor)), ";;label:top;"),
20
- left: /*#__PURE__*/css(logicalCSS('border-left', "".concat(euiThemeContext.euiTheme.border.width.thin, " solid ").concat(borderColor)), ";;label:left;")
18
+ top: /*#__PURE__*/css(logicalCSS('border-top', euiTheme.border.thin), ";;label:top;"),
19
+ left: /*#__PURE__*/css(logicalCSS('border-left', euiTheme.border.thin), ";;label:left;")
21
20
  }
22
21
  };
23
22
  };
@@ -67,7 +67,7 @@ export var EuiTab = function EuiTab(_ref) {
67
67
  target: target,
68
68
  rel: secureRel
69
69
  }, rest), prependNode, ___EmotionJSX("span", {
70
- className: "euiTab__content",
70
+ className: "euiTab__content eui-textTruncate",
71
71
  css: cssTabContentStyles
72
72
  }, children), appendNode);
73
73
  }