@zendeskgarden/react-grid 8.53.1 → 8.53.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs.js CHANGED
@@ -191,7 +191,7 @@ var WRAP = ['nowrap', 'wrap', 'wrap-reverse'];
191
191
  var ORIENTATION = ['top', 'bottom', 'start', 'end'];
192
192
 
193
193
  var COMPONENT_ID$6 = 'grid.col';
194
- var colorStyles$3 = function colorStyles(props) {
194
+ var colorStyles$4 = function colorStyles(props) {
195
195
  var backgroundColor = reactTheming.getColor('primaryHue', 600, props.theme, 0.1);
196
196
  return styled.css(["background-clip:content-box;background-color:", ";"], backgroundColor);
197
197
  };
@@ -242,7 +242,7 @@ var sizeStyles$4 = function sizeStyles(props) {
242
242
  };
243
243
  var StyledCol = styled__default["default"].div.attrs({
244
244
  'data-garden-id': COMPONENT_ID$6,
245
- 'data-garden-version': '8.53.1'
245
+ 'data-garden-version': '8.53.2'
246
246
  }).withConfig({
247
247
  displayName: "StyledCol",
248
248
  componentId: "sc-inuw62-0"
@@ -251,7 +251,7 @@ var StyledCol = styled__default["default"].div.attrs({
251
251
  }, function (props) {
252
252
  return sizeStyles$4(props);
253
253
  }, function (props) {
254
- return props.debug && colorStyles$3(props);
254
+ return props.debug && colorStyles$4(props);
255
255
  }, function (props) {
256
256
  return mediaStyles$1(props.theme.breakpoints.xs, props.xs, props.alignSelfXs, props.textAlignXs, props.offsetXs, props.orderXs, props);
257
257
  }, function (props) {
@@ -271,7 +271,7 @@ StyledCol.defaultProps = {
271
271
  };
272
272
 
273
273
  var COMPONENT_ID$5 = 'grid.grid';
274
- var colorStyles$2 = function colorStyles(props) {
274
+ var colorStyles$3 = function colorStyles(props) {
275
275
  var borderColor = reactTheming.getColor(props.theme.palette.crimson, 400, props.theme, 0.5);
276
276
  var borderWidth = polished.math("".concat(props.theme.borderWidths.sm, " * 2"));
277
277
  return styled.css(["box-shadow:-", " 0 0 0 ", ",", " 0 0 0 ", ";"], borderWidth, borderColor, borderWidth, borderColor);
@@ -282,7 +282,7 @@ var sizeStyles$3 = function sizeStyles(props) {
282
282
  };
283
283
  var StyledGrid = styled__default["default"].div.attrs({
284
284
  'data-garden-id': COMPONENT_ID$5,
285
- 'data-garden-version': '8.53.1'
285
+ 'data-garden-version': '8.53.2'
286
286
  }).withConfig({
287
287
  displayName: "StyledGrid",
288
288
  componentId: "sc-oxgg5i-0"
@@ -291,7 +291,7 @@ var StyledGrid = styled__default["default"].div.attrs({
291
291
  }, function (props) {
292
292
  return sizeStyles$3(props);
293
293
  }, function (props) {
294
- return props.debug && colorStyles$2(props);
294
+ return props.debug && colorStyles$3(props);
295
295
  }, function (props) {
296
296
  return reactTheming.retrieveComponentStyles(COMPONENT_ID$5, props);
297
297
  });
@@ -301,7 +301,7 @@ StyledGrid.defaultProps = {
301
301
  };
302
302
 
303
303
  var COMPONENT_ID$4 = 'grid.row';
304
- var colorStyles$1 = function colorStyles(props) {
304
+ var colorStyles$2 = function colorStyles(props) {
305
305
  var borderColor = reactTheming.getColor(props.theme.palette.mint, 600, props.theme, 0.5);
306
306
  var borderWidth = props.theme.borderWidths.sm;
307
307
  return styled.css(["box-shadow:inset 0 ", " 0 0 ", ",inset 0 -", " 0 0 ", ";"], borderWidth, borderColor, borderWidth, borderColor);
@@ -332,7 +332,7 @@ var sizeStyles$2 = function sizeStyles(props) {
332
332
  };
333
333
  var StyledRow = styled__default["default"].div.attrs({
334
334
  'data-garden-id': COMPONENT_ID$4,
335
- 'data-garden-version': '8.53.1'
335
+ 'data-garden-version': '8.53.2'
336
336
  }).withConfig({
337
337
  displayName: "StyledRow",
338
338
  componentId: "sc-xjsdg1-0"
@@ -341,7 +341,7 @@ var StyledRow = styled__default["default"].div.attrs({
341
341
  }, function (props) {
342
342
  return sizeStyles$2(props);
343
343
  }, function (props) {
344
- return props.debug && colorStyles$1(props);
344
+ return props.debug && colorStyles$2(props);
345
345
  }, function (props) {
346
346
  return mediaStyles(props.theme.breakpoints.xs, props.alignItemsXs, props.justifyContentXs, props.wrapXs);
347
347
  }, function (props) {
@@ -363,7 +363,7 @@ StyledRow.defaultProps = {
363
363
  var COMPONENT_ID$3 = 'pane';
364
364
  var StyledPane = styled__default["default"].div.attrs({
365
365
  'data-garden-id': COMPONENT_ID$3,
366
- 'data-garden-version': '8.53.1'
366
+ 'data-garden-version': '8.53.2'
367
367
  }).withConfig({
368
368
  displayName: "StyledPane",
369
369
  componentId: "sc-1ltjst7-0"
@@ -377,7 +377,7 @@ StyledPane.defaultProps = {
377
377
  var COMPONENT_ID$2 = 'pane.content';
378
378
  var StyledPaneContent = styled__default["default"].div.attrs({
379
379
  'data-garden-id': COMPONENT_ID$2,
380
- 'data-garden-version': '8.53.1'
380
+ 'data-garden-version': '8.53.2'
381
381
  }).withConfig({
382
382
  displayName: "StyledPaneContent",
383
383
  componentId: "sc-1b38mbh-0"
@@ -389,15 +389,16 @@ StyledPaneContent.defaultProps = {
389
389
  };
390
390
 
391
391
  var COMPONENT_ID$1 = 'pane.splitter';
392
- var colorStyles = function colorStyles(props) {
392
+ var colorStyles$1 = function colorStyles(props) {
393
393
  var color = reactTheming.getColor('neutralHue', 300, props.theme);
394
394
  var hoverColor = reactTheming.getColor('primaryHue', 600, props.theme);
395
395
  var activeColor = reactTheming.getColor('primaryHue', 800, props.theme);
396
396
  var boxShadow = props.theme.shadows.md(polished.rgba(hoverColor, 0.35));
397
- return styled.css(["&::before{background-color:", ";}&:hover::before,&[data-garden-focus-visible]::before{background-color:", ";}&[data-garden-focus-visible]::before{box-shadow:", ";}&:active::before{background-color:", ";}"], color, hoverColor, boxShadow, activeColor);
397
+ return styled.css(["&::before{background-color:", ";}&:hover::before{background-color:", ";}&[data-garden-focus-visible]::before{box-shadow:", ";background-color:", ";}&:active::before{background-color:", ";}"], color, props.isHovered && hoverColor, boxShadow, hoverColor, props.isHovered && activeColor);
398
398
  };
399
399
  var sizeStyles$1 = function sizeStyles(props) {
400
400
  var size = polished.math("".concat(props.theme.shadowWidths.md, " * 2"));
401
+ var separatorSize = polished.math("".concat(props.theme.borderWidths.sm, " * 2"));
401
402
  var offset = polished.math("-".concat(size, " / 2"));
402
403
  var cursor;
403
404
  var top;
@@ -452,15 +453,16 @@ var sizeStyles$1 = function sizeStyles(props) {
452
453
  }
453
454
  break;
454
455
  }
455
- return styled.css(["top:", ";right:", ";bottom:", ";left:", ";cursor:", ";width:", ";height:", ";&::before{width:", ";height:", ";}&:hover::before,&[data-garden-focus-visible]::before,&:focus::before{", ":", ";}&[data-garden-focus-visible]::before{border-radius:", ";}"], top, right, bottom, left, cursor, width, height, separatorWidth, separatorHeight, width === '100%' ? 'height' : 'width', polished.math("".concat(props.theme.borderWidths.sm, " * 2")), props.theme.borderRadii.md);
456
+ var dimensionProperty = width === '100%' ? 'height' : 'width';
457
+ return styled.css(["top:", ";right:", ";bottom:", ";left:", ";cursor:", ";width:", ";height:", ";&::before{width:", ";height:", ";}&:hover::before{", ":", ";}&[data-garden-focus-visible]::before,&:focus::before{", ":", ";}&[data-garden-focus-visible]::before{border-radius:", ";}"], top, right, bottom, left, cursor, width, height, separatorWidth, separatorHeight, dimensionProperty, props.isHovered && separatorSize, dimensionProperty, separatorSize, props.theme.borderRadii.md);
456
458
  };
457
459
  var StyledPaneSplitter = styled__default["default"].div.attrs({
458
460
  'data-garden-id': COMPONENT_ID$1,
459
- 'data-garden-version': '8.53.1'
461
+ 'data-garden-version': '8.53.2'
460
462
  }).withConfig({
461
463
  displayName: "StyledPaneSplitter",
462
464
  componentId: "sc-jylemn-0"
463
- })(["display:flex;position:absolute;align-items:center;justify-content:center;z-index:1;user-select:none;", ";&:focus{outline:none;}&::before{position:absolute;transition:box-shadow 0.1s ease-in-out,background-color 0.25s ease-in-out;z-index:-1;content:'';}", ";", ";"], sizeStyles$1, colorStyles, function (props) {
465
+ })(["display:flex;position:absolute;align-items:center;justify-content:center;z-index:1;user-select:none;", ";&:focus{outline:none;}&::before{position:absolute;transition:box-shadow 0.1s ease-in-out,background-color 0.25s ease-in-out;z-index:-1;content:'';}", ";", ";"], sizeStyles$1, colorStyles$1, function (props) {
464
466
  return reactTheming.retrieveComponentStyles(COMPONENT_ID$1, props);
465
467
  });
466
468
  StyledPaneSplitter.defaultProps = {
@@ -482,42 +484,51 @@ var transformStyles = function transformStyles(props) {
482
484
  }
483
485
  return styled.css(["& > svg{transform:rotate(", "deg);}"], degrees);
484
486
  };
487
+ var colorStyles = function colorStyles(_ref) {
488
+ var theme = _ref.theme;
489
+ var boxShadow = theme.shadows.lg("".concat(theme.space.base, "px"), "".concat(theme.space.base * 2, "px"), reactTheming.getColor('chromeHue', 600, theme, 0.15));
490
+ var focusBoxShadow = theme.shadows.md(reactTheming.getColor('primaryHue', 600, theme, 0.35));
491
+ return styled.css(["box-shadow:", ";&[data-garden-focus-visible]{box-shadow:", ",", ";}"], boxShadow, focusBoxShadow, boxShadow);
492
+ };
485
493
  var sizeStyles = function sizeStyles(props) {
486
494
  var size = "".concat(props.theme.space.base * 6, "px");
495
+ var display = props.splitterSize <= polished.stripUnit(polished.math("".concat(props.theme.shadowWidths.md, " * 2 + ").concat(size))) && 'none';
487
496
  var isVertical = props.orientation === 'start' || props.orientation === 'end';
488
497
  var top;
489
498
  var left;
490
499
  var right;
491
500
  var bottom;
492
- if (props.placement === 'start') {
493
- if (isVertical) {
494
- top = size;
495
- } else if (props.theme.rtl) {
496
- right = size;
497
- } else {
498
- left = size;
499
- }
500
- } else if (props.placement === 'end') {
501
- if (isVertical) {
502
- bottom = size;
503
- } else if (props.theme.rtl) {
504
- left = size;
505
- } else {
506
- right = size;
501
+ if (props.splitterSize >= polished.stripUnit(polished.math("".concat(size, " * 3")))) {
502
+ if (props.placement === 'start') {
503
+ if (isVertical) {
504
+ top = size;
505
+ } else if (props.theme.rtl) {
506
+ right = size;
507
+ } else {
508
+ left = size;
509
+ }
510
+ } else if (props.placement === 'end') {
511
+ if (isVertical) {
512
+ bottom = size;
513
+ } else if (props.theme.rtl) {
514
+ left = size;
515
+ } else {
516
+ right = size;
517
+ }
507
518
  }
508
519
  }
509
- return styled.css(["top:", ";right:", ";bottom:", ";left:", ";width:", ";min-width:", ";height:", ";"], top, right, bottom, left, size, size, size);
520
+ return styled.css(["display:", ";top:", ";right:", ";bottom:", ";left:", ";width:", ";min-width:", ";height:", ";"], display, top, right, bottom, left, size, size, size);
510
521
  };
511
522
  var StyledPaneSplitterButton = styled__default["default"](reactButtons.ChevronButton).attrs({
512
523
  'data-garden-id': COMPONENT_ID,
513
- 'data-garden-version': '8.53.1',
524
+ 'data-garden-version': '8.53.2',
514
525
  isBasic: true,
515
526
  isPill: true,
516
527
  size: 'small'
517
528
  }).withConfig({
518
529
  displayName: "StyledPaneSplitterButton",
519
530
  componentId: "sc-zh032e-0"
520
- })(["position:absolute;transition:box-shadow 0.1s ease-in-out,background-color 0.25s ease-in-out,opacity 0.25s ease-in-out 0.1s;opacity:0;&[data-garden-focus-visible],", ":hover &,", "[data-garden-focus-visible] &{opacity:1;}", ";", ";&::before{position:absolute;z-index:-1;background-color:", ";width:100%;height:100%;content:'';}", ";"], StyledPaneSplitter, StyledPaneSplitter, sizeStyles, transformStyles, function (props) {
531
+ })(["position:absolute;transition:background-color 0.25s ease-in-out,opacity 0.25s ease-in-out 0.1s;opacity:0;&[data-garden-focus-visible],", ":hover &,", "[data-garden-focus-visible] &{opacity:1;}", ";", ";", ";&::before{position:absolute;z-index:-1;background-color:", ";width:100%;height:100%;content:'';}", ";"], StyledPaneSplitter, StyledPaneSplitter, sizeStyles, transformStyles, colorStyles, function (props) {
521
532
  return props.theme.colors.background;
522
533
  }, function (props) {
523
534
  return reactTheming.retrieveComponentStyles(COMPONENT_ID, props);
@@ -870,6 +881,7 @@ var PaneSplitterContext = React.createContext({
870
881
  max: 0,
871
882
  layoutKey: '',
872
883
  valueNow: 0,
884
+ size: 0,
873
885
  isRow: false
874
886
  });
875
887
  var usePaneSplitterContext = function usePaneSplitterContext() {
@@ -896,6 +908,7 @@ var orientationToDimension = {
896
908
  bottom: 'rows'
897
909
  };
898
910
  var SplitterComponent = React.forwardRef(function (_ref, ref) {
911
+ var _separatorProps$ref$c, _separatorProps$ref$c2;
899
912
  var providerId = _ref.providerId,
900
913
  layoutKey = _ref.layoutKey,
901
914
  min = _ref.min,
@@ -905,6 +918,10 @@ var SplitterComponent = React.forwardRef(function (_ref, ref) {
905
918
  var paneProviderContext = usePaneProviderContextData(providerId);
906
919
  var paneContext = usePaneContext();
907
920
  var themeContext = React.useContext(styled.ThemeContext);
921
+ var _useState = React.useState(false),
922
+ _useState2 = _slicedToArray(_useState, 2),
923
+ isHovered = _useState2[0],
924
+ setIsHovered = _useState2[1];
908
925
  var position = orientationToPosition[orientation];
909
926
  var isRow = orientationToDimension[orientation] === 'rows';
910
927
  var splitterOrientation = paneToSplitterOrientation[orientation];
@@ -937,6 +954,12 @@ var SplitterComponent = React.forwardRef(function (_ref, ref) {
937
954
  var separatorProps = getSeparatorProps({
938
955
  'aria-controls': paneContext.id
939
956
  });
957
+ var size = isRow ? (_separatorProps$ref$c = separatorProps.ref.current) === null || _separatorProps$ref$c === void 0 ? void 0 : _separatorProps$ref$c.clientWidth : (_separatorProps$ref$c2 = separatorProps.ref.current) === null || _separatorProps$ref$c2 === void 0 ? void 0 : _separatorProps$ref$c2.clientHeight;
958
+ var onMouseOver = React.useMemo(function () {
959
+ return containerUtilities.composeEventHandlers(props.onMouseOver, function (event) {
960
+ return setIsHovered(event.target === separatorProps.ref.current);
961
+ });
962
+ }, [props.onMouseOver, separatorProps.ref]);
940
963
  return React__default["default"].createElement(PaneSplitterContext.Provider, {
941
964
  value: React.useMemo(function () {
942
965
  return {
@@ -945,12 +968,15 @@ var SplitterComponent = React.forwardRef(function (_ref, ref) {
945
968
  min: min,
946
969
  max: max,
947
970
  valueNow: valueInFr,
971
+ size: size,
948
972
  isRow: isRow
949
973
  };
950
- }, [orientation, layoutKey, min, max, valueInFr, isRow])
974
+ }, [orientation, layoutKey, min, max, valueInFr, size, isRow])
951
975
  }, React__default["default"].createElement(StyledPaneSplitter, _extends({
976
+ isHovered: isHovered,
952
977
  orientation: orientation
953
978
  }, separatorProps, props, {
979
+ onMouseOver: onMouseOver,
954
980
  ref: mergeRefs__default["default"]([separatorProps.ref, ref])
955
981
  })));
956
982
  });
@@ -984,6 +1010,7 @@ var SplitterButtonComponent = React.forwardRef(function (props, ref) {
984
1010
  max = _usePaneSplitterConte.max,
985
1011
  isRow = _usePaneSplitterConte.isRow,
986
1012
  valueNow = _usePaneSplitterConte.valueNow,
1013
+ size = _usePaneSplitterConte.size,
987
1014
  providerId = _usePaneSplitterConte.providerId;
988
1015
  var paneProviderContext = usePaneProviderContextData(providerId);
989
1016
  var isTop = orientation === 'top';
@@ -1000,9 +1027,9 @@ var SplitterButtonComponent = React.forwardRef(function (props, ref) {
1000
1027
  var setValue = React.useCallback(function (value) {
1001
1028
  if (isRow) {
1002
1029
  paneProviderContext.setRowValue(isTop, layoutKey, value);
1003
- return;
1030
+ } else {
1031
+ paneProviderContext.setColumnValue(isStart, layoutKey, value);
1004
1032
  }
1005
- paneProviderContext.setColumnValue(isStart, layoutKey, value);
1006
1033
  }, [isRow, isTop, isStart, layoutKey, paneProviderContext]);
1007
1034
  var onClick = containerUtilities.composeEventHandlers(props.onClick, function () {
1008
1035
  if (isMin) {
@@ -1015,17 +1042,29 @@ var SplitterButtonComponent = React.forwardRef(function (props, ref) {
1015
1042
  return event.stopPropagation();
1016
1043
  }
1017
1044
  );
1045
+ var onMouseDown = containerUtilities.composeEventHandlers(props.onMouseDown, function (event) {
1046
+ return event.stopPropagation();
1047
+ }
1048
+ );
1018
1049
  return React__default["default"].createElement(reactTooltips.Tooltip, {
1019
- content: label
1050
+ content: label,
1051
+ style: {
1052
+ cursor: 'default'
1053
+ },
1054
+ onMouseDown: function onMouseDown(e) {
1055
+ return e.stopPropagation();
1056
+ }
1020
1057
  }, React__default["default"].createElement(StyledPaneSplitterButton, _extends({
1021
1058
  "aria-label": label
1022
1059
  }, props, {
1023
1060
  placement: placement,
1024
1061
  orientation: orientation,
1025
1062
  isRotated: isMin,
1063
+ splitterSize: size || 0,
1026
1064
  ref: ref,
1027
1065
  onClick: onClick,
1028
- onKeyDown: onKeyDown
1066
+ onKeyDown: onKeyDown,
1067
+ onMouseDown: onMouseDown
1029
1068
  })));
1030
1069
  });
1031
1070
  SplitterButtonComponent.displayName = 'Pane.SplitterButton';
package/dist/index.esm.js CHANGED
@@ -8,7 +8,7 @@
8
8
  import React, { createContext, useContext, useMemo, useState, useCallback, forwardRef, useEffect } from 'react';
9
9
  import PropTypes from 'prop-types';
10
10
  import styled, { css, ThemeContext } from 'styled-components';
11
- import { math, rgba } from 'polished';
11
+ import { math, rgba, stripUnit } from 'polished';
12
12
  import { retrieveComponentStyles, DEFAULT_THEME, getColor } from '@zendeskgarden/react-theming';
13
13
  import { ChevronButton } from '@zendeskgarden/react-buttons';
14
14
  import { useId, composeEventHandlers } from '@zendeskgarden/container-utilities';
@@ -180,7 +180,7 @@ var WRAP = ['nowrap', 'wrap', 'wrap-reverse'];
180
180
  var ORIENTATION = ['top', 'bottom', 'start', 'end'];
181
181
 
182
182
  var COMPONENT_ID$6 = 'grid.col';
183
- var colorStyles$3 = function colorStyles(props) {
183
+ var colorStyles$4 = function colorStyles(props) {
184
184
  var backgroundColor = getColor('primaryHue', 600, props.theme, 0.1);
185
185
  return css(["background-clip:content-box;background-color:", ";"], backgroundColor);
186
186
  };
@@ -231,7 +231,7 @@ var sizeStyles$4 = function sizeStyles(props) {
231
231
  };
232
232
  var StyledCol = styled.div.attrs({
233
233
  'data-garden-id': COMPONENT_ID$6,
234
- 'data-garden-version': '8.53.1'
234
+ 'data-garden-version': '8.53.2'
235
235
  }).withConfig({
236
236
  displayName: "StyledCol",
237
237
  componentId: "sc-inuw62-0"
@@ -240,7 +240,7 @@ var StyledCol = styled.div.attrs({
240
240
  }, function (props) {
241
241
  return sizeStyles$4(props);
242
242
  }, function (props) {
243
- return props.debug && colorStyles$3(props);
243
+ return props.debug && colorStyles$4(props);
244
244
  }, function (props) {
245
245
  return mediaStyles$1(props.theme.breakpoints.xs, props.xs, props.alignSelfXs, props.textAlignXs, props.offsetXs, props.orderXs, props);
246
246
  }, function (props) {
@@ -260,7 +260,7 @@ StyledCol.defaultProps = {
260
260
  };
261
261
 
262
262
  var COMPONENT_ID$5 = 'grid.grid';
263
- var colorStyles$2 = function colorStyles(props) {
263
+ var colorStyles$3 = function colorStyles(props) {
264
264
  var borderColor = getColor(props.theme.palette.crimson, 400, props.theme, 0.5);
265
265
  var borderWidth = math("".concat(props.theme.borderWidths.sm, " * 2"));
266
266
  return css(["box-shadow:-", " 0 0 0 ", ",", " 0 0 0 ", ";"], borderWidth, borderColor, borderWidth, borderColor);
@@ -271,7 +271,7 @@ var sizeStyles$3 = function sizeStyles(props) {
271
271
  };
272
272
  var StyledGrid = styled.div.attrs({
273
273
  'data-garden-id': COMPONENT_ID$5,
274
- 'data-garden-version': '8.53.1'
274
+ 'data-garden-version': '8.53.2'
275
275
  }).withConfig({
276
276
  displayName: "StyledGrid",
277
277
  componentId: "sc-oxgg5i-0"
@@ -280,7 +280,7 @@ var StyledGrid = styled.div.attrs({
280
280
  }, function (props) {
281
281
  return sizeStyles$3(props);
282
282
  }, function (props) {
283
- return props.debug && colorStyles$2(props);
283
+ return props.debug && colorStyles$3(props);
284
284
  }, function (props) {
285
285
  return retrieveComponentStyles(COMPONENT_ID$5, props);
286
286
  });
@@ -290,7 +290,7 @@ StyledGrid.defaultProps = {
290
290
  };
291
291
 
292
292
  var COMPONENT_ID$4 = 'grid.row';
293
- var colorStyles$1 = function colorStyles(props) {
293
+ var colorStyles$2 = function colorStyles(props) {
294
294
  var borderColor = getColor(props.theme.palette.mint, 600, props.theme, 0.5);
295
295
  var borderWidth = props.theme.borderWidths.sm;
296
296
  return css(["box-shadow:inset 0 ", " 0 0 ", ",inset 0 -", " 0 0 ", ";"], borderWidth, borderColor, borderWidth, borderColor);
@@ -321,7 +321,7 @@ var sizeStyles$2 = function sizeStyles(props) {
321
321
  };
322
322
  var StyledRow = styled.div.attrs({
323
323
  'data-garden-id': COMPONENT_ID$4,
324
- 'data-garden-version': '8.53.1'
324
+ 'data-garden-version': '8.53.2'
325
325
  }).withConfig({
326
326
  displayName: "StyledRow",
327
327
  componentId: "sc-xjsdg1-0"
@@ -330,7 +330,7 @@ var StyledRow = styled.div.attrs({
330
330
  }, function (props) {
331
331
  return sizeStyles$2(props);
332
332
  }, function (props) {
333
- return props.debug && colorStyles$1(props);
333
+ return props.debug && colorStyles$2(props);
334
334
  }, function (props) {
335
335
  return mediaStyles(props.theme.breakpoints.xs, props.alignItemsXs, props.justifyContentXs, props.wrapXs);
336
336
  }, function (props) {
@@ -352,7 +352,7 @@ StyledRow.defaultProps = {
352
352
  var COMPONENT_ID$3 = 'pane';
353
353
  var StyledPane = styled.div.attrs({
354
354
  'data-garden-id': COMPONENT_ID$3,
355
- 'data-garden-version': '8.53.1'
355
+ 'data-garden-version': '8.53.2'
356
356
  }).withConfig({
357
357
  displayName: "StyledPane",
358
358
  componentId: "sc-1ltjst7-0"
@@ -366,7 +366,7 @@ StyledPane.defaultProps = {
366
366
  var COMPONENT_ID$2 = 'pane.content';
367
367
  var StyledPaneContent = styled.div.attrs({
368
368
  'data-garden-id': COMPONENT_ID$2,
369
- 'data-garden-version': '8.53.1'
369
+ 'data-garden-version': '8.53.2'
370
370
  }).withConfig({
371
371
  displayName: "StyledPaneContent",
372
372
  componentId: "sc-1b38mbh-0"
@@ -378,15 +378,16 @@ StyledPaneContent.defaultProps = {
378
378
  };
379
379
 
380
380
  var COMPONENT_ID$1 = 'pane.splitter';
381
- var colorStyles = function colorStyles(props) {
381
+ var colorStyles$1 = function colorStyles(props) {
382
382
  var color = getColor('neutralHue', 300, props.theme);
383
383
  var hoverColor = getColor('primaryHue', 600, props.theme);
384
384
  var activeColor = getColor('primaryHue', 800, props.theme);
385
385
  var boxShadow = props.theme.shadows.md(rgba(hoverColor, 0.35));
386
- return css(["&::before{background-color:", ";}&:hover::before,&[data-garden-focus-visible]::before{background-color:", ";}&[data-garden-focus-visible]::before{box-shadow:", ";}&:active::before{background-color:", ";}"], color, hoverColor, boxShadow, activeColor);
386
+ return css(["&::before{background-color:", ";}&:hover::before{background-color:", ";}&[data-garden-focus-visible]::before{box-shadow:", ";background-color:", ";}&:active::before{background-color:", ";}"], color, props.isHovered && hoverColor, boxShadow, hoverColor, props.isHovered && activeColor);
387
387
  };
388
388
  var sizeStyles$1 = function sizeStyles(props) {
389
389
  var size = math("".concat(props.theme.shadowWidths.md, " * 2"));
390
+ var separatorSize = math("".concat(props.theme.borderWidths.sm, " * 2"));
390
391
  var offset = math("-".concat(size, " / 2"));
391
392
  var cursor;
392
393
  var top;
@@ -441,15 +442,16 @@ var sizeStyles$1 = function sizeStyles(props) {
441
442
  }
442
443
  break;
443
444
  }
444
- return css(["top:", ";right:", ";bottom:", ";left:", ";cursor:", ";width:", ";height:", ";&::before{width:", ";height:", ";}&:hover::before,&[data-garden-focus-visible]::before,&:focus::before{", ":", ";}&[data-garden-focus-visible]::before{border-radius:", ";}"], top, right, bottom, left, cursor, width, height, separatorWidth, separatorHeight, width === '100%' ? 'height' : 'width', math("".concat(props.theme.borderWidths.sm, " * 2")), props.theme.borderRadii.md);
445
+ var dimensionProperty = width === '100%' ? 'height' : 'width';
446
+ return css(["top:", ";right:", ";bottom:", ";left:", ";cursor:", ";width:", ";height:", ";&::before{width:", ";height:", ";}&:hover::before{", ":", ";}&[data-garden-focus-visible]::before,&:focus::before{", ":", ";}&[data-garden-focus-visible]::before{border-radius:", ";}"], top, right, bottom, left, cursor, width, height, separatorWidth, separatorHeight, dimensionProperty, props.isHovered && separatorSize, dimensionProperty, separatorSize, props.theme.borderRadii.md);
445
447
  };
446
448
  var StyledPaneSplitter = styled.div.attrs({
447
449
  'data-garden-id': COMPONENT_ID$1,
448
- 'data-garden-version': '8.53.1'
450
+ 'data-garden-version': '8.53.2'
449
451
  }).withConfig({
450
452
  displayName: "StyledPaneSplitter",
451
453
  componentId: "sc-jylemn-0"
452
- })(["display:flex;position:absolute;align-items:center;justify-content:center;z-index:1;user-select:none;", ";&:focus{outline:none;}&::before{position:absolute;transition:box-shadow 0.1s ease-in-out,background-color 0.25s ease-in-out;z-index:-1;content:'';}", ";", ";"], sizeStyles$1, colorStyles, function (props) {
454
+ })(["display:flex;position:absolute;align-items:center;justify-content:center;z-index:1;user-select:none;", ";&:focus{outline:none;}&::before{position:absolute;transition:box-shadow 0.1s ease-in-out,background-color 0.25s ease-in-out;z-index:-1;content:'';}", ";", ";"], sizeStyles$1, colorStyles$1, function (props) {
453
455
  return retrieveComponentStyles(COMPONENT_ID$1, props);
454
456
  });
455
457
  StyledPaneSplitter.defaultProps = {
@@ -471,42 +473,51 @@ var transformStyles = function transformStyles(props) {
471
473
  }
472
474
  return css(["& > svg{transform:rotate(", "deg);}"], degrees);
473
475
  };
476
+ var colorStyles = function colorStyles(_ref) {
477
+ var theme = _ref.theme;
478
+ var boxShadow = theme.shadows.lg("".concat(theme.space.base, "px"), "".concat(theme.space.base * 2, "px"), getColor('chromeHue', 600, theme, 0.15));
479
+ var focusBoxShadow = theme.shadows.md(getColor('primaryHue', 600, theme, 0.35));
480
+ return css(["box-shadow:", ";&[data-garden-focus-visible]{box-shadow:", ",", ";}"], boxShadow, focusBoxShadow, boxShadow);
481
+ };
474
482
  var sizeStyles = function sizeStyles(props) {
475
483
  var size = "".concat(props.theme.space.base * 6, "px");
484
+ var display = props.splitterSize <= stripUnit(math("".concat(props.theme.shadowWidths.md, " * 2 + ").concat(size))) && 'none';
476
485
  var isVertical = props.orientation === 'start' || props.orientation === 'end';
477
486
  var top;
478
487
  var left;
479
488
  var right;
480
489
  var bottom;
481
- if (props.placement === 'start') {
482
- if (isVertical) {
483
- top = size;
484
- } else if (props.theme.rtl) {
485
- right = size;
486
- } else {
487
- left = size;
488
- }
489
- } else if (props.placement === 'end') {
490
- if (isVertical) {
491
- bottom = size;
492
- } else if (props.theme.rtl) {
493
- left = size;
494
- } else {
495
- right = size;
490
+ if (props.splitterSize >= stripUnit(math("".concat(size, " * 3")))) {
491
+ if (props.placement === 'start') {
492
+ if (isVertical) {
493
+ top = size;
494
+ } else if (props.theme.rtl) {
495
+ right = size;
496
+ } else {
497
+ left = size;
498
+ }
499
+ } else if (props.placement === 'end') {
500
+ if (isVertical) {
501
+ bottom = size;
502
+ } else if (props.theme.rtl) {
503
+ left = size;
504
+ } else {
505
+ right = size;
506
+ }
496
507
  }
497
508
  }
498
- return css(["top:", ";right:", ";bottom:", ";left:", ";width:", ";min-width:", ";height:", ";"], top, right, bottom, left, size, size, size);
509
+ return css(["display:", ";top:", ";right:", ";bottom:", ";left:", ";width:", ";min-width:", ";height:", ";"], display, top, right, bottom, left, size, size, size);
499
510
  };
500
511
  var StyledPaneSplitterButton = styled(ChevronButton).attrs({
501
512
  'data-garden-id': COMPONENT_ID,
502
- 'data-garden-version': '8.53.1',
513
+ 'data-garden-version': '8.53.2',
503
514
  isBasic: true,
504
515
  isPill: true,
505
516
  size: 'small'
506
517
  }).withConfig({
507
518
  displayName: "StyledPaneSplitterButton",
508
519
  componentId: "sc-zh032e-0"
509
- })(["position:absolute;transition:box-shadow 0.1s ease-in-out,background-color 0.25s ease-in-out,opacity 0.25s ease-in-out 0.1s;opacity:0;&[data-garden-focus-visible],", ":hover &,", "[data-garden-focus-visible] &{opacity:1;}", ";", ";&::before{position:absolute;z-index:-1;background-color:", ";width:100%;height:100%;content:'';}", ";"], StyledPaneSplitter, StyledPaneSplitter, sizeStyles, transformStyles, function (props) {
520
+ })(["position:absolute;transition:background-color 0.25s ease-in-out,opacity 0.25s ease-in-out 0.1s;opacity:0;&[data-garden-focus-visible],", ":hover &,", "[data-garden-focus-visible] &{opacity:1;}", ";", ";", ";&::before{position:absolute;z-index:-1;background-color:", ";width:100%;height:100%;content:'';}", ";"], StyledPaneSplitter, StyledPaneSplitter, sizeStyles, transformStyles, colorStyles, function (props) {
510
521
  return props.theme.colors.background;
511
522
  }, function (props) {
512
523
  return retrieveComponentStyles(COMPONENT_ID, props);
@@ -859,6 +870,7 @@ var PaneSplitterContext = createContext({
859
870
  max: 0,
860
871
  layoutKey: '',
861
872
  valueNow: 0,
873
+ size: 0,
862
874
  isRow: false
863
875
  });
864
876
  var usePaneSplitterContext = function usePaneSplitterContext() {
@@ -885,6 +897,7 @@ var orientationToDimension = {
885
897
  bottom: 'rows'
886
898
  };
887
899
  var SplitterComponent = forwardRef(function (_ref, ref) {
900
+ var _separatorProps$ref$c, _separatorProps$ref$c2;
888
901
  var providerId = _ref.providerId,
889
902
  layoutKey = _ref.layoutKey,
890
903
  min = _ref.min,
@@ -894,6 +907,10 @@ var SplitterComponent = forwardRef(function (_ref, ref) {
894
907
  var paneProviderContext = usePaneProviderContextData(providerId);
895
908
  var paneContext = usePaneContext();
896
909
  var themeContext = useContext(ThemeContext);
910
+ var _useState = useState(false),
911
+ _useState2 = _slicedToArray(_useState, 2),
912
+ isHovered = _useState2[0],
913
+ setIsHovered = _useState2[1];
897
914
  var position = orientationToPosition[orientation];
898
915
  var isRow = orientationToDimension[orientation] === 'rows';
899
916
  var splitterOrientation = paneToSplitterOrientation[orientation];
@@ -926,6 +943,12 @@ var SplitterComponent = forwardRef(function (_ref, ref) {
926
943
  var separatorProps = getSeparatorProps({
927
944
  'aria-controls': paneContext.id
928
945
  });
946
+ var size = isRow ? (_separatorProps$ref$c = separatorProps.ref.current) === null || _separatorProps$ref$c === void 0 ? void 0 : _separatorProps$ref$c.clientWidth : (_separatorProps$ref$c2 = separatorProps.ref.current) === null || _separatorProps$ref$c2 === void 0 ? void 0 : _separatorProps$ref$c2.clientHeight;
947
+ var onMouseOver = useMemo(function () {
948
+ return composeEventHandlers(props.onMouseOver, function (event) {
949
+ return setIsHovered(event.target === separatorProps.ref.current);
950
+ });
951
+ }, [props.onMouseOver, separatorProps.ref]);
929
952
  return React.createElement(PaneSplitterContext.Provider, {
930
953
  value: useMemo(function () {
931
954
  return {
@@ -934,12 +957,15 @@ var SplitterComponent = forwardRef(function (_ref, ref) {
934
957
  min: min,
935
958
  max: max,
936
959
  valueNow: valueInFr,
960
+ size: size,
937
961
  isRow: isRow
938
962
  };
939
- }, [orientation, layoutKey, min, max, valueInFr, isRow])
963
+ }, [orientation, layoutKey, min, max, valueInFr, size, isRow])
940
964
  }, React.createElement(StyledPaneSplitter, _extends({
965
+ isHovered: isHovered,
941
966
  orientation: orientation
942
967
  }, separatorProps, props, {
968
+ onMouseOver: onMouseOver,
943
969
  ref: mergeRefs([separatorProps.ref, ref])
944
970
  })));
945
971
  });
@@ -973,6 +999,7 @@ var SplitterButtonComponent = forwardRef(function (props, ref) {
973
999
  max = _usePaneSplitterConte.max,
974
1000
  isRow = _usePaneSplitterConte.isRow,
975
1001
  valueNow = _usePaneSplitterConte.valueNow,
1002
+ size = _usePaneSplitterConte.size,
976
1003
  providerId = _usePaneSplitterConte.providerId;
977
1004
  var paneProviderContext = usePaneProviderContextData(providerId);
978
1005
  var isTop = orientation === 'top';
@@ -989,9 +1016,9 @@ var SplitterButtonComponent = forwardRef(function (props, ref) {
989
1016
  var setValue = useCallback(function (value) {
990
1017
  if (isRow) {
991
1018
  paneProviderContext.setRowValue(isTop, layoutKey, value);
992
- return;
1019
+ } else {
1020
+ paneProviderContext.setColumnValue(isStart, layoutKey, value);
993
1021
  }
994
- paneProviderContext.setColumnValue(isStart, layoutKey, value);
995
1022
  }, [isRow, isTop, isStart, layoutKey, paneProviderContext]);
996
1023
  var onClick = composeEventHandlers(props.onClick, function () {
997
1024
  if (isMin) {
@@ -1004,17 +1031,29 @@ var SplitterButtonComponent = forwardRef(function (props, ref) {
1004
1031
  return event.stopPropagation();
1005
1032
  }
1006
1033
  );
1034
+ var onMouseDown = composeEventHandlers(props.onMouseDown, function (event) {
1035
+ return event.stopPropagation();
1036
+ }
1037
+ );
1007
1038
  return React.createElement(Tooltip, {
1008
- content: label
1039
+ content: label,
1040
+ style: {
1041
+ cursor: 'default'
1042
+ },
1043
+ onMouseDown: function onMouseDown(e) {
1044
+ return e.stopPropagation();
1045
+ }
1009
1046
  }, React.createElement(StyledPaneSplitterButton, _extends({
1010
1047
  "aria-label": label
1011
1048
  }, props, {
1012
1049
  placement: placement,
1013
1050
  orientation: orientation,
1014
1051
  isRotated: isMin,
1052
+ splitterSize: size || 0,
1015
1053
  ref: ref,
1016
1054
  onClick: onClick,
1017
- onKeyDown: onKeyDown
1055
+ onKeyDown: onKeyDown,
1056
+ onMouseDown: onMouseDown
1018
1057
  })));
1019
1058
  });
1020
1059
  SplitterButtonComponent.displayName = 'Pane.SplitterButton';
@@ -7,6 +7,7 @@
7
7
  import { DefaultTheme } from 'styled-components';
8
8
  import { Orientation } from '../../types';
9
9
  interface IStyledPaneSplitterProps {
10
+ isHovered: boolean;
10
11
  orientation: Orientation;
11
12
  }
12
13
  /**
@@ -11,6 +11,7 @@ interface IStyledSplitterButtonProps extends ISplitterButtonProps {
11
11
  orientation: Orientation;
12
12
  placement: typeof PLACEMENT[number];
13
13
  isRotated: boolean;
14
+ splitterSize: number;
14
15
  }
15
16
  /**
16
17
  * 1. Opaque "dish" behind transparent button
@@ -12,6 +12,7 @@ interface IPaneSplitterContext {
12
12
  max: ISplitterProps['max'];
13
13
  layoutKey: ISplitterProps['layoutKey'];
14
14
  valueNow?: number;
15
+ size?: number;
15
16
  isRow: boolean;
16
17
  providerId?: ISplitterProps['providerId'];
17
18
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zendeskgarden/react-grid",
3
- "version": "8.53.1",
3
+ "version": "8.53.2",
4
4
  "description": "Components relating to layout grids in the Garden Design System",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Zendesk Garden <garden@zendesk.com>",
@@ -23,8 +23,8 @@
23
23
  "dependencies": {
24
24
  "@zendeskgarden/container-splitter": "^0.2.3",
25
25
  "@zendeskgarden/container-utilities": "^0.7.1",
26
- "@zendeskgarden/react-buttons": "^8.53.1",
27
- "@zendeskgarden/react-tooltips": "^8.53.1",
26
+ "@zendeskgarden/react-buttons": "^8.53.2",
27
+ "@zendeskgarden/react-tooltips": "^8.53.2",
28
28
  "polished": "^4.0.0",
29
29
  "prop-types": "^15.5.7",
30
30
  "react-merge-refs": "^1.1.0"
@@ -36,7 +36,7 @@
36
36
  "styled-components": "^4.2.0 || ^5.0.0"
37
37
  },
38
38
  "devDependencies": {
39
- "@zendeskgarden/react-theming": "^8.53.1",
39
+ "@zendeskgarden/react-theming": "^8.53.2",
40
40
  "use-resize-observer": "9.0.0"
41
41
  },
42
42
  "keywords": [
@@ -49,5 +49,5 @@
49
49
  "access": "public"
50
50
  },
51
51
  "zendeskgarden:src": "src/index.ts",
52
- "gitHead": "79dee8e82b6f082e8d4a72ba95a5fb3982d63040"
52
+ "gitHead": "b4ef84eb8f6606659aee9e689b8b44cb1feb0b87"
53
53
  }