@zendeskgarden/react-grid 8.51.0 → 8.52.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs.js
CHANGED
|
@@ -14,6 +14,7 @@ var PropTypes = require('prop-types');
|
|
|
14
14
|
var styled = require('styled-components');
|
|
15
15
|
var polished = require('polished');
|
|
16
16
|
var reactTheming = require('@zendeskgarden/react-theming');
|
|
17
|
+
var containerUtilities = require('@zendeskgarden/container-utilities');
|
|
17
18
|
var mergeRefs = require('react-merge-refs');
|
|
18
19
|
var containerSplitter = require('@zendeskgarden/container-splitter');
|
|
19
20
|
|
|
@@ -239,7 +240,7 @@ var sizeStyles$3 = function sizeStyles(props) {
|
|
|
239
240
|
};
|
|
240
241
|
var StyledCol = styled__default["default"].div.attrs({
|
|
241
242
|
'data-garden-id': COMPONENT_ID$5,
|
|
242
|
-
'data-garden-version': '8.
|
|
243
|
+
'data-garden-version': '8.52.0'
|
|
243
244
|
}).withConfig({
|
|
244
245
|
displayName: "StyledCol",
|
|
245
246
|
componentId: "sc-inuw62-0"
|
|
@@ -279,7 +280,7 @@ var sizeStyles$2 = function sizeStyles(props) {
|
|
|
279
280
|
};
|
|
280
281
|
var StyledGrid = styled__default["default"].div.attrs({
|
|
281
282
|
'data-garden-id': COMPONENT_ID$4,
|
|
282
|
-
'data-garden-version': '8.
|
|
283
|
+
'data-garden-version': '8.52.0'
|
|
283
284
|
}).withConfig({
|
|
284
285
|
displayName: "StyledGrid",
|
|
285
286
|
componentId: "sc-oxgg5i-0"
|
|
@@ -329,7 +330,7 @@ var sizeStyles$1 = function sizeStyles(props) {
|
|
|
329
330
|
};
|
|
330
331
|
var StyledRow = styled__default["default"].div.attrs({
|
|
331
332
|
'data-garden-id': COMPONENT_ID$3,
|
|
332
|
-
'data-garden-version': '8.
|
|
333
|
+
'data-garden-version': '8.52.0'
|
|
333
334
|
}).withConfig({
|
|
334
335
|
displayName: "StyledRow",
|
|
335
336
|
componentId: "sc-xjsdg1-0"
|
|
@@ -360,7 +361,7 @@ StyledRow.defaultProps = {
|
|
|
360
361
|
var COMPONENT_ID$2 = 'pane';
|
|
361
362
|
var StyledPane = styled__default["default"].div.attrs({
|
|
362
363
|
'data-garden-id': COMPONENT_ID$2,
|
|
363
|
-
'data-garden-version': '8.
|
|
364
|
+
'data-garden-version': '8.52.0'
|
|
364
365
|
}).withConfig({
|
|
365
366
|
displayName: "StyledPane",
|
|
366
367
|
componentId: "sc-1ltjst7-0"
|
|
@@ -374,7 +375,7 @@ StyledPane.defaultProps = {
|
|
|
374
375
|
var COMPONENT_ID$1 = 'pane.content';
|
|
375
376
|
var StyledPaneContent = styled__default["default"].div.attrs({
|
|
376
377
|
'data-garden-id': COMPONENT_ID$1,
|
|
377
|
-
'data-garden-version': '8.
|
|
378
|
+
'data-garden-version': '8.52.0'
|
|
378
379
|
}).withConfig({
|
|
379
380
|
displayName: "StyledPaneContent",
|
|
380
381
|
componentId: "sc-1b38mbh-0"
|
|
@@ -453,11 +454,11 @@ var sizeStyles = function sizeStyles(props) {
|
|
|
453
454
|
};
|
|
454
455
|
var StyledPaneSplitter = styled__default["default"].div.attrs({
|
|
455
456
|
'data-garden-id': COMPONENT_ID,
|
|
456
|
-
'data-garden-version': '8.
|
|
457
|
+
'data-garden-version': '8.52.0'
|
|
457
458
|
}).withConfig({
|
|
458
459
|
displayName: "StyledPaneSplitter",
|
|
459
460
|
componentId: "sc-jylemn-0"
|
|
460
|
-
})(["position:absolute;z-index:1;", ";&:hover,&[data-garden-focus-visible]{z-index:2;}&:focus{outline:none;}&::before{display:block;content:'';}", ";", ";"], sizeStyles, colorStyles, function (props) {
|
|
461
|
+
})(["position:absolute;z-index:1;user-select:none;", ";&:hover,&[data-garden-focus-visible]{z-index:2;}&:focus{outline:none;}&::before{display:block;content:'';}", ";", ";"], sizeStyles, colorStyles, function (props) {
|
|
461
462
|
return reactTheming.retrieveComponentStyles(COMPONENT_ID, props);
|
|
462
463
|
});
|
|
463
464
|
StyledPaneSplitter.defaultProps = {
|
|
@@ -587,30 +588,14 @@ Row.propTypes = {
|
|
|
587
588
|
wrapXl: PropTypes__default["default"].oneOf(WRAP)
|
|
588
589
|
};
|
|
589
590
|
|
|
590
|
-
var
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
return 0;
|
|
599
|
-
},
|
|
600
|
-
getRowValue: function getRowValue() {
|
|
601
|
-
return 0;
|
|
602
|
-
},
|
|
603
|
-
rowState: {},
|
|
604
|
-
columnState: {},
|
|
605
|
-
totalPanesHeight: 1,
|
|
606
|
-
totalPanesWidth: 1,
|
|
607
|
-
pixelsPerFr: {
|
|
608
|
-
rows: 0,
|
|
609
|
-
columns: 0
|
|
610
|
-
}
|
|
611
|
-
});
|
|
612
|
-
var useSplitterContext = function useSplitterContext() {
|
|
613
|
-
return React.useContext(SplitterContext);
|
|
591
|
+
var PaneProviderContext = React.createContext({});
|
|
592
|
+
var usePaneProviderContextData = function usePaneProviderContextData(providerId) {
|
|
593
|
+
var context = React.useContext(PaneProviderContext);
|
|
594
|
+
var id = providerId || context.providerId;
|
|
595
|
+
return id && context.contextData ? context.contextData[id] : undefined;
|
|
596
|
+
};
|
|
597
|
+
var usePaneProviderContext = function usePaneProviderContext() {
|
|
598
|
+
return React.useContext(PaneProviderContext);
|
|
614
599
|
};
|
|
615
600
|
|
|
616
601
|
var getPixelsPerFr = function getPixelsPerFr(totalFrs, totalDimension) {
|
|
@@ -626,7 +611,8 @@ var convertToPixels = function convertToPixels(values, pixelsPerFr) {
|
|
|
626
611
|
}, {});
|
|
627
612
|
};
|
|
628
613
|
var PaneProvider = function PaneProvider(_ref3) {
|
|
629
|
-
var
|
|
614
|
+
var id = _ref3.id,
|
|
615
|
+
totalPanesWidth = _ref3.totalPanesWidth,
|
|
630
616
|
totalPanesHeight = _ref3.totalPanesHeight,
|
|
631
617
|
defaultRowValues = _ref3.defaultRowValues,
|
|
632
618
|
defaultColumnValues = _ref3.defaultColumnValues,
|
|
@@ -646,17 +632,17 @@ var PaneProvider = function PaneProvider(_ref3) {
|
|
|
646
632
|
var rowsTrack = isControlled ? rowValues : rowState;
|
|
647
633
|
var columnsTrack = isControlled ? columnValues : columnState;
|
|
648
634
|
var setRowsTrack = React.useCallback(function (values) {
|
|
649
|
-
if (onChange) {
|
|
635
|
+
if (isControlled && onChange) {
|
|
650
636
|
return onChange(values(rowsTrack), columnsTrack);
|
|
651
637
|
}
|
|
652
638
|
return setRowState(values);
|
|
653
|
-
}, [onChange, setRowState, columnsTrack, rowsTrack]);
|
|
639
|
+
}, [isControlled, onChange, setRowState, columnsTrack, rowsTrack]);
|
|
654
640
|
var setColumnsTrack = React.useCallback(function (values) {
|
|
655
|
-
if (onChange) {
|
|
641
|
+
if (isControlled && onChange) {
|
|
656
642
|
return onChange(rowsTrack, values(columnsTrack));
|
|
657
643
|
}
|
|
658
644
|
return setColumnState(values);
|
|
659
|
-
}, [onChange, setColumnState, rowsTrack, columnsTrack]);
|
|
645
|
+
}, [isControlled, onChange, setColumnState, rowsTrack, columnsTrack]);
|
|
660
646
|
var totalFractions = React.useMemo(function () {
|
|
661
647
|
return {
|
|
662
648
|
rows: Object.values(rowsTrack).reduce(function (prev, value) {
|
|
@@ -697,15 +683,15 @@ var PaneProvider = function PaneProvider(_ref3) {
|
|
|
697
683
|
columnArray: columnArray
|
|
698
684
|
};
|
|
699
685
|
}, [rowsTrack, columnsTrack]);
|
|
700
|
-
var setRowValue = React.useCallback(function (isTop,
|
|
686
|
+
var setRowValue = React.useCallback(function (isTop, splitterId, value) {
|
|
701
687
|
var rows = layoutIndices.rows,
|
|
702
688
|
rowArray = layoutIndices.rowArray;
|
|
703
689
|
var stealFromTraversal = isTop ? -1 : 1;
|
|
704
690
|
var addToTraversal = 0;
|
|
705
691
|
setRowsTrack(function (state) {
|
|
706
|
-
var oldValue = rowsTrack[
|
|
707
|
-
var stealFromIndex = rows[
|
|
708
|
-
var addToIndex = rows[
|
|
692
|
+
var oldValue = rowsTrack[splitterId];
|
|
693
|
+
var stealFromIndex = rows[splitterId] + stealFromTraversal;
|
|
694
|
+
var addToIndex = rows[splitterId] + addToTraversal;
|
|
709
695
|
var stealFromKey = rowArray[stealFromIndex];
|
|
710
696
|
var addToKey = rowArray[addToIndex];
|
|
711
697
|
var difference = oldValue - value;
|
|
@@ -715,15 +701,15 @@ var PaneProvider = function PaneProvider(_ref3) {
|
|
|
715
701
|
return nextState;
|
|
716
702
|
});
|
|
717
703
|
}, [layoutIndices, rowsTrack, setRowsTrack]);
|
|
718
|
-
var setColumnValue = React.useCallback(function (isStart,
|
|
704
|
+
var setColumnValue = React.useCallback(function (isStart, splitterId, value) {
|
|
719
705
|
var columns = layoutIndices.columns,
|
|
720
706
|
columnArray = layoutIndices.columnArray;
|
|
721
707
|
var stealFromTraversal = isStart ? 0 : 1;
|
|
722
708
|
var addToTraversal = isStart ? -1 : 0;
|
|
723
709
|
setColumnsTrack(function (state) {
|
|
724
|
-
var stealFromIndex = columns[
|
|
725
|
-
var addToIndex = columns[
|
|
726
|
-
var oldValue = columnsTrack[
|
|
710
|
+
var stealFromIndex = columns[splitterId] + stealFromTraversal;
|
|
711
|
+
var addToIndex = columns[splitterId] + addToTraversal;
|
|
712
|
+
var oldValue = columnsTrack[splitterId];
|
|
727
713
|
var stealFromKey = columnArray[stealFromIndex];
|
|
728
714
|
var addToKey = columnArray[addToIndex];
|
|
729
715
|
var difference = oldValue - value;
|
|
@@ -767,22 +753,28 @@ var PaneProvider = function PaneProvider(_ref3) {
|
|
|
767
753
|
return "".concat(rowsTrack[row], "fr");
|
|
768
754
|
}).join(' ');
|
|
769
755
|
}, [layoutIndices, rowsTrack, layoutStateInPixels]);
|
|
770
|
-
var
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
756
|
+
var providerId = containerUtilities.useId(id);
|
|
757
|
+
var parentPaneProviderContext = usePaneProviderContext();
|
|
758
|
+
var paneProviderContext = React.useMemo(function () {
|
|
759
|
+
return providerId ? {
|
|
760
|
+
providerId: providerId,
|
|
761
|
+
contextData: _objectSpread2(_objectSpread2({}, parentPaneProviderContext.contextData), {}, _defineProperty({}, providerId, {
|
|
762
|
+
columnState: columnState,
|
|
763
|
+
rowState: rowState,
|
|
764
|
+
setRowValue: setRowValue,
|
|
765
|
+
setColumnValue: setColumnValue,
|
|
766
|
+
getRowValue: getRowValue,
|
|
767
|
+
getColumnValue: getColumnValue,
|
|
768
|
+
totalPanesHeight: totalPanesHeight,
|
|
769
|
+
totalPanesWidth: totalPanesWidth,
|
|
770
|
+
pixelsPerFr: pixelsPerFr
|
|
771
|
+
}))
|
|
772
|
+
} : {};
|
|
773
|
+
}, [providerId, parentPaneProviderContext, rowState, columnState, setRowValue, setColumnValue, getRowValue, getColumnValue, totalPanesHeight, totalPanesWidth, pixelsPerFr]);
|
|
774
|
+
return React__default["default"].createElement(PaneProviderContext.Provider, {
|
|
775
|
+
value: paneProviderContext
|
|
785
776
|
}, children === null || children === void 0 ? void 0 : children({
|
|
777
|
+
id: providerId,
|
|
786
778
|
getRowValue: getRowValue,
|
|
787
779
|
getColumnValue: getColumnValue,
|
|
788
780
|
getGridTemplateColumns: getGridTemplateColumns,
|
|
@@ -791,6 +783,7 @@ var PaneProvider = function PaneProvider(_ref3) {
|
|
|
791
783
|
};
|
|
792
784
|
PaneProvider.displayName = 'PaneProvider';
|
|
793
785
|
PaneProvider.propTypes = {
|
|
786
|
+
id: PropTypes__default["default"].string,
|
|
794
787
|
totalPanesWidth: PropTypes__default["default"].number.isRequired,
|
|
795
788
|
totalPanesHeight: PropTypes__default["default"].number.isRequired,
|
|
796
789
|
defaultRowValues: PropTypes__default["default"].object,
|
|
@@ -810,7 +803,7 @@ var usePaneContext = function usePaneContext() {
|
|
|
810
803
|
return React.useContext(PaneContext);
|
|
811
804
|
};
|
|
812
805
|
|
|
813
|
-
var _excluded$1 = ["layoutKey", "min", "max", "orientation"];
|
|
806
|
+
var _excluded$1 = ["providerId", "layoutKey", "min", "max", "orientation"];
|
|
814
807
|
var orientationToPosition = {
|
|
815
808
|
start: containerSplitter.SplitterPosition.TRAILS,
|
|
816
809
|
end: containerSplitter.SplitterPosition.TRAILS,
|
|
@@ -830,18 +823,19 @@ var orientationToDimension = {
|
|
|
830
823
|
bottom: 'rows'
|
|
831
824
|
};
|
|
832
825
|
var SplitterComponent = React.forwardRef(function (_ref, ref) {
|
|
833
|
-
var
|
|
826
|
+
var providerId = _ref.providerId,
|
|
827
|
+
layoutKey = _ref.layoutKey,
|
|
834
828
|
min = _ref.min,
|
|
835
829
|
max = _ref.max,
|
|
836
830
|
orientation = _ref.orientation,
|
|
837
831
|
props = _objectWithoutProperties(_ref, _excluded$1);
|
|
838
|
-
var
|
|
832
|
+
var paneProviderContext = usePaneProviderContextData(providerId);
|
|
839
833
|
var paneContext = usePaneContext();
|
|
840
834
|
var themeContext = React.useContext(styled.ThemeContext);
|
|
841
835
|
var position = orientationToPosition[orientation];
|
|
842
836
|
var isRow = orientationToDimension[orientation] === 'rows';
|
|
843
837
|
var splitterOrientation = paneToSplitterOrientation[orientation];
|
|
844
|
-
var pixelsPerFr =
|
|
838
|
+
var pixelsPerFr = paneProviderContext ? paneProviderContext.pixelsPerFr[orientationToDimension[orientation]] : 0;
|
|
845
839
|
var _useSplitter = containerSplitter.useSplitter({
|
|
846
840
|
type: containerSplitter.SplitterType.VARIABLE,
|
|
847
841
|
orientation: splitterOrientation,
|
|
@@ -852,11 +846,11 @@ var SplitterComponent = React.forwardRef(function (_ref, ref) {
|
|
|
852
846
|
environment: window,
|
|
853
847
|
onChange: function onChange(valueNow) {
|
|
854
848
|
if (isRow) {
|
|
855
|
-
return
|
|
849
|
+
return paneProviderContext && paneProviderContext.setRowValue(orientation === 'top', layoutKey, valueNow / pixelsPerFr);
|
|
856
850
|
}
|
|
857
|
-
return
|
|
851
|
+
return paneProviderContext && paneProviderContext.setColumnValue(orientation === 'start', layoutKey, valueNow / pixelsPerFr);
|
|
858
852
|
},
|
|
859
|
-
valueNow: isRow ?
|
|
853
|
+
valueNow: isRow ? paneProviderContext && paneProviderContext.getRowValue(layoutKey, true) : paneProviderContext && paneProviderContext.getColumnValue(layoutKey, true)
|
|
860
854
|
}),
|
|
861
855
|
getSeparatorProps = _useSplitter.getSeparatorProps,
|
|
862
856
|
getPrimaryPaneProps = _useSplitter.getPrimaryPaneProps;
|
package/dist/index.esm.js
CHANGED
|
@@ -10,6 +10,7 @@ import PropTypes from 'prop-types';
|
|
|
10
10
|
import styled, { css, ThemeContext } from 'styled-components';
|
|
11
11
|
import { math, rgba } from 'polished';
|
|
12
12
|
import { retrieveComponentStyles, DEFAULT_THEME, getColor } from '@zendeskgarden/react-theming';
|
|
13
|
+
import { useId } from '@zendeskgarden/container-utilities';
|
|
13
14
|
import mergeRefs from 'react-merge-refs';
|
|
14
15
|
import { SplitterPosition, SplitterOrientation, useSplitter, SplitterType } from '@zendeskgarden/container-splitter';
|
|
15
16
|
|
|
@@ -228,7 +229,7 @@ var sizeStyles$3 = function sizeStyles(props) {
|
|
|
228
229
|
};
|
|
229
230
|
var StyledCol = styled.div.attrs({
|
|
230
231
|
'data-garden-id': COMPONENT_ID$5,
|
|
231
|
-
'data-garden-version': '8.
|
|
232
|
+
'data-garden-version': '8.52.0'
|
|
232
233
|
}).withConfig({
|
|
233
234
|
displayName: "StyledCol",
|
|
234
235
|
componentId: "sc-inuw62-0"
|
|
@@ -268,7 +269,7 @@ var sizeStyles$2 = function sizeStyles(props) {
|
|
|
268
269
|
};
|
|
269
270
|
var StyledGrid = styled.div.attrs({
|
|
270
271
|
'data-garden-id': COMPONENT_ID$4,
|
|
271
|
-
'data-garden-version': '8.
|
|
272
|
+
'data-garden-version': '8.52.0'
|
|
272
273
|
}).withConfig({
|
|
273
274
|
displayName: "StyledGrid",
|
|
274
275
|
componentId: "sc-oxgg5i-0"
|
|
@@ -318,7 +319,7 @@ var sizeStyles$1 = function sizeStyles(props) {
|
|
|
318
319
|
};
|
|
319
320
|
var StyledRow = styled.div.attrs({
|
|
320
321
|
'data-garden-id': COMPONENT_ID$3,
|
|
321
|
-
'data-garden-version': '8.
|
|
322
|
+
'data-garden-version': '8.52.0'
|
|
322
323
|
}).withConfig({
|
|
323
324
|
displayName: "StyledRow",
|
|
324
325
|
componentId: "sc-xjsdg1-0"
|
|
@@ -349,7 +350,7 @@ StyledRow.defaultProps = {
|
|
|
349
350
|
var COMPONENT_ID$2 = 'pane';
|
|
350
351
|
var StyledPane = styled.div.attrs({
|
|
351
352
|
'data-garden-id': COMPONENT_ID$2,
|
|
352
|
-
'data-garden-version': '8.
|
|
353
|
+
'data-garden-version': '8.52.0'
|
|
353
354
|
}).withConfig({
|
|
354
355
|
displayName: "StyledPane",
|
|
355
356
|
componentId: "sc-1ltjst7-0"
|
|
@@ -363,7 +364,7 @@ StyledPane.defaultProps = {
|
|
|
363
364
|
var COMPONENT_ID$1 = 'pane.content';
|
|
364
365
|
var StyledPaneContent = styled.div.attrs({
|
|
365
366
|
'data-garden-id': COMPONENT_ID$1,
|
|
366
|
-
'data-garden-version': '8.
|
|
367
|
+
'data-garden-version': '8.52.0'
|
|
367
368
|
}).withConfig({
|
|
368
369
|
displayName: "StyledPaneContent",
|
|
369
370
|
componentId: "sc-1b38mbh-0"
|
|
@@ -442,11 +443,11 @@ var sizeStyles = function sizeStyles(props) {
|
|
|
442
443
|
};
|
|
443
444
|
var StyledPaneSplitter = styled.div.attrs({
|
|
444
445
|
'data-garden-id': COMPONENT_ID,
|
|
445
|
-
'data-garden-version': '8.
|
|
446
|
+
'data-garden-version': '8.52.0'
|
|
446
447
|
}).withConfig({
|
|
447
448
|
displayName: "StyledPaneSplitter",
|
|
448
449
|
componentId: "sc-jylemn-0"
|
|
449
|
-
})(["position:absolute;z-index:1;", ";&:hover,&[data-garden-focus-visible]{z-index:2;}&:focus{outline:none;}&::before{display:block;content:'';}", ";", ";"], sizeStyles, colorStyles, function (props) {
|
|
450
|
+
})(["position:absolute;z-index:1;user-select:none;", ";&:hover,&[data-garden-focus-visible]{z-index:2;}&:focus{outline:none;}&::before{display:block;content:'';}", ";", ";"], sizeStyles, colorStyles, function (props) {
|
|
450
451
|
return retrieveComponentStyles(COMPONENT_ID, props);
|
|
451
452
|
});
|
|
452
453
|
StyledPaneSplitter.defaultProps = {
|
|
@@ -576,30 +577,14 @@ Row.propTypes = {
|
|
|
576
577
|
wrapXl: PropTypes.oneOf(WRAP)
|
|
577
578
|
};
|
|
578
579
|
|
|
579
|
-
var
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
return 0;
|
|
588
|
-
},
|
|
589
|
-
getRowValue: function getRowValue() {
|
|
590
|
-
return 0;
|
|
591
|
-
},
|
|
592
|
-
rowState: {},
|
|
593
|
-
columnState: {},
|
|
594
|
-
totalPanesHeight: 1,
|
|
595
|
-
totalPanesWidth: 1,
|
|
596
|
-
pixelsPerFr: {
|
|
597
|
-
rows: 0,
|
|
598
|
-
columns: 0
|
|
599
|
-
}
|
|
600
|
-
});
|
|
601
|
-
var useSplitterContext = function useSplitterContext() {
|
|
602
|
-
return useContext(SplitterContext);
|
|
580
|
+
var PaneProviderContext = createContext({});
|
|
581
|
+
var usePaneProviderContextData = function usePaneProviderContextData(providerId) {
|
|
582
|
+
var context = useContext(PaneProviderContext);
|
|
583
|
+
var id = providerId || context.providerId;
|
|
584
|
+
return id && context.contextData ? context.contextData[id] : undefined;
|
|
585
|
+
};
|
|
586
|
+
var usePaneProviderContext = function usePaneProviderContext() {
|
|
587
|
+
return useContext(PaneProviderContext);
|
|
603
588
|
};
|
|
604
589
|
|
|
605
590
|
var getPixelsPerFr = function getPixelsPerFr(totalFrs, totalDimension) {
|
|
@@ -615,7 +600,8 @@ var convertToPixels = function convertToPixels(values, pixelsPerFr) {
|
|
|
615
600
|
}, {});
|
|
616
601
|
};
|
|
617
602
|
var PaneProvider = function PaneProvider(_ref3) {
|
|
618
|
-
var
|
|
603
|
+
var id = _ref3.id,
|
|
604
|
+
totalPanesWidth = _ref3.totalPanesWidth,
|
|
619
605
|
totalPanesHeight = _ref3.totalPanesHeight,
|
|
620
606
|
defaultRowValues = _ref3.defaultRowValues,
|
|
621
607
|
defaultColumnValues = _ref3.defaultColumnValues,
|
|
@@ -635,17 +621,17 @@ var PaneProvider = function PaneProvider(_ref3) {
|
|
|
635
621
|
var rowsTrack = isControlled ? rowValues : rowState;
|
|
636
622
|
var columnsTrack = isControlled ? columnValues : columnState;
|
|
637
623
|
var setRowsTrack = useCallback(function (values) {
|
|
638
|
-
if (onChange) {
|
|
624
|
+
if (isControlled && onChange) {
|
|
639
625
|
return onChange(values(rowsTrack), columnsTrack);
|
|
640
626
|
}
|
|
641
627
|
return setRowState(values);
|
|
642
|
-
}, [onChange, setRowState, columnsTrack, rowsTrack]);
|
|
628
|
+
}, [isControlled, onChange, setRowState, columnsTrack, rowsTrack]);
|
|
643
629
|
var setColumnsTrack = useCallback(function (values) {
|
|
644
|
-
if (onChange) {
|
|
630
|
+
if (isControlled && onChange) {
|
|
645
631
|
return onChange(rowsTrack, values(columnsTrack));
|
|
646
632
|
}
|
|
647
633
|
return setColumnState(values);
|
|
648
|
-
}, [onChange, setColumnState, rowsTrack, columnsTrack]);
|
|
634
|
+
}, [isControlled, onChange, setColumnState, rowsTrack, columnsTrack]);
|
|
649
635
|
var totalFractions = useMemo(function () {
|
|
650
636
|
return {
|
|
651
637
|
rows: Object.values(rowsTrack).reduce(function (prev, value) {
|
|
@@ -686,15 +672,15 @@ var PaneProvider = function PaneProvider(_ref3) {
|
|
|
686
672
|
columnArray: columnArray
|
|
687
673
|
};
|
|
688
674
|
}, [rowsTrack, columnsTrack]);
|
|
689
|
-
var setRowValue = useCallback(function (isTop,
|
|
675
|
+
var setRowValue = useCallback(function (isTop, splitterId, value) {
|
|
690
676
|
var rows = layoutIndices.rows,
|
|
691
677
|
rowArray = layoutIndices.rowArray;
|
|
692
678
|
var stealFromTraversal = isTop ? -1 : 1;
|
|
693
679
|
var addToTraversal = 0;
|
|
694
680
|
setRowsTrack(function (state) {
|
|
695
|
-
var oldValue = rowsTrack[
|
|
696
|
-
var stealFromIndex = rows[
|
|
697
|
-
var addToIndex = rows[
|
|
681
|
+
var oldValue = rowsTrack[splitterId];
|
|
682
|
+
var stealFromIndex = rows[splitterId] + stealFromTraversal;
|
|
683
|
+
var addToIndex = rows[splitterId] + addToTraversal;
|
|
698
684
|
var stealFromKey = rowArray[stealFromIndex];
|
|
699
685
|
var addToKey = rowArray[addToIndex];
|
|
700
686
|
var difference = oldValue - value;
|
|
@@ -704,15 +690,15 @@ var PaneProvider = function PaneProvider(_ref3) {
|
|
|
704
690
|
return nextState;
|
|
705
691
|
});
|
|
706
692
|
}, [layoutIndices, rowsTrack, setRowsTrack]);
|
|
707
|
-
var setColumnValue = useCallback(function (isStart,
|
|
693
|
+
var setColumnValue = useCallback(function (isStart, splitterId, value) {
|
|
708
694
|
var columns = layoutIndices.columns,
|
|
709
695
|
columnArray = layoutIndices.columnArray;
|
|
710
696
|
var stealFromTraversal = isStart ? 0 : 1;
|
|
711
697
|
var addToTraversal = isStart ? -1 : 0;
|
|
712
698
|
setColumnsTrack(function (state) {
|
|
713
|
-
var stealFromIndex = columns[
|
|
714
|
-
var addToIndex = columns[
|
|
715
|
-
var oldValue = columnsTrack[
|
|
699
|
+
var stealFromIndex = columns[splitterId] + stealFromTraversal;
|
|
700
|
+
var addToIndex = columns[splitterId] + addToTraversal;
|
|
701
|
+
var oldValue = columnsTrack[splitterId];
|
|
716
702
|
var stealFromKey = columnArray[stealFromIndex];
|
|
717
703
|
var addToKey = columnArray[addToIndex];
|
|
718
704
|
var difference = oldValue - value;
|
|
@@ -756,22 +742,28 @@ var PaneProvider = function PaneProvider(_ref3) {
|
|
|
756
742
|
return "".concat(rowsTrack[row], "fr");
|
|
757
743
|
}).join(' ');
|
|
758
744
|
}, [layoutIndices, rowsTrack, layoutStateInPixels]);
|
|
759
|
-
var
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
745
|
+
var providerId = useId(id);
|
|
746
|
+
var parentPaneProviderContext = usePaneProviderContext();
|
|
747
|
+
var paneProviderContext = useMemo(function () {
|
|
748
|
+
return providerId ? {
|
|
749
|
+
providerId: providerId,
|
|
750
|
+
contextData: _objectSpread2(_objectSpread2({}, parentPaneProviderContext.contextData), {}, _defineProperty({}, providerId, {
|
|
751
|
+
columnState: columnState,
|
|
752
|
+
rowState: rowState,
|
|
753
|
+
setRowValue: setRowValue,
|
|
754
|
+
setColumnValue: setColumnValue,
|
|
755
|
+
getRowValue: getRowValue,
|
|
756
|
+
getColumnValue: getColumnValue,
|
|
757
|
+
totalPanesHeight: totalPanesHeight,
|
|
758
|
+
totalPanesWidth: totalPanesWidth,
|
|
759
|
+
pixelsPerFr: pixelsPerFr
|
|
760
|
+
}))
|
|
761
|
+
} : {};
|
|
762
|
+
}, [providerId, parentPaneProviderContext, rowState, columnState, setRowValue, setColumnValue, getRowValue, getColumnValue, totalPanesHeight, totalPanesWidth, pixelsPerFr]);
|
|
763
|
+
return React.createElement(PaneProviderContext.Provider, {
|
|
764
|
+
value: paneProviderContext
|
|
774
765
|
}, children === null || children === void 0 ? void 0 : children({
|
|
766
|
+
id: providerId,
|
|
775
767
|
getRowValue: getRowValue,
|
|
776
768
|
getColumnValue: getColumnValue,
|
|
777
769
|
getGridTemplateColumns: getGridTemplateColumns,
|
|
@@ -780,6 +772,7 @@ var PaneProvider = function PaneProvider(_ref3) {
|
|
|
780
772
|
};
|
|
781
773
|
PaneProvider.displayName = 'PaneProvider';
|
|
782
774
|
PaneProvider.propTypes = {
|
|
775
|
+
id: PropTypes.string,
|
|
783
776
|
totalPanesWidth: PropTypes.number.isRequired,
|
|
784
777
|
totalPanesHeight: PropTypes.number.isRequired,
|
|
785
778
|
defaultRowValues: PropTypes.object,
|
|
@@ -799,7 +792,7 @@ var usePaneContext = function usePaneContext() {
|
|
|
799
792
|
return useContext(PaneContext);
|
|
800
793
|
};
|
|
801
794
|
|
|
802
|
-
var _excluded$1 = ["layoutKey", "min", "max", "orientation"];
|
|
795
|
+
var _excluded$1 = ["providerId", "layoutKey", "min", "max", "orientation"];
|
|
803
796
|
var orientationToPosition = {
|
|
804
797
|
start: SplitterPosition.TRAILS,
|
|
805
798
|
end: SplitterPosition.TRAILS,
|
|
@@ -819,18 +812,19 @@ var orientationToDimension = {
|
|
|
819
812
|
bottom: 'rows'
|
|
820
813
|
};
|
|
821
814
|
var SplitterComponent = forwardRef(function (_ref, ref) {
|
|
822
|
-
var
|
|
815
|
+
var providerId = _ref.providerId,
|
|
816
|
+
layoutKey = _ref.layoutKey,
|
|
823
817
|
min = _ref.min,
|
|
824
818
|
max = _ref.max,
|
|
825
819
|
orientation = _ref.orientation,
|
|
826
820
|
props = _objectWithoutProperties(_ref, _excluded$1);
|
|
827
|
-
var
|
|
821
|
+
var paneProviderContext = usePaneProviderContextData(providerId);
|
|
828
822
|
var paneContext = usePaneContext();
|
|
829
823
|
var themeContext = useContext(ThemeContext);
|
|
830
824
|
var position = orientationToPosition[orientation];
|
|
831
825
|
var isRow = orientationToDimension[orientation] === 'rows';
|
|
832
826
|
var splitterOrientation = paneToSplitterOrientation[orientation];
|
|
833
|
-
var pixelsPerFr =
|
|
827
|
+
var pixelsPerFr = paneProviderContext ? paneProviderContext.pixelsPerFr[orientationToDimension[orientation]] : 0;
|
|
834
828
|
var _useSplitter = useSplitter({
|
|
835
829
|
type: SplitterType.VARIABLE,
|
|
836
830
|
orientation: splitterOrientation,
|
|
@@ -841,11 +835,11 @@ var SplitterComponent = forwardRef(function (_ref, ref) {
|
|
|
841
835
|
environment: window,
|
|
842
836
|
onChange: function onChange(valueNow) {
|
|
843
837
|
if (isRow) {
|
|
844
|
-
return
|
|
838
|
+
return paneProviderContext && paneProviderContext.setRowValue(orientation === 'top', layoutKey, valueNow / pixelsPerFr);
|
|
845
839
|
}
|
|
846
|
-
return
|
|
840
|
+
return paneProviderContext && paneProviderContext.setColumnValue(orientation === 'start', layoutKey, valueNow / pixelsPerFr);
|
|
847
841
|
},
|
|
848
|
-
valueNow: isRow ?
|
|
842
|
+
valueNow: isRow ? paneProviderContext && paneProviderContext.getRowValue(layoutKey, true) : paneProviderContext && paneProviderContext.getColumnValue(layoutKey, true)
|
|
849
843
|
}),
|
|
850
844
|
getSeparatorProps = _useSplitter.getSeparatorProps,
|
|
851
845
|
getPrimaryPaneProps = _useSplitter.getPrimaryPaneProps;
|
|
@@ -7,9 +7,10 @@
|
|
|
7
7
|
import PropTypes from 'prop-types';
|
|
8
8
|
import { IPaneProviderProps } from '../../types';
|
|
9
9
|
export declare const PaneProvider: {
|
|
10
|
-
({ totalPanesWidth, totalPanesHeight, defaultRowValues, defaultColumnValues, rowValues, columnValues, onChange, children }: IPaneProviderProps): JSX.Element;
|
|
10
|
+
({ id, totalPanesWidth, totalPanesHeight, defaultRowValues, defaultColumnValues, rowValues, columnValues, onChange, children }: IPaneProviderProps): JSX.Element;
|
|
11
11
|
displayName: string;
|
|
12
12
|
propTypes: {
|
|
13
|
+
id: PropTypes.Requireable<string>;
|
|
13
14
|
totalPanesWidth: PropTypes.Validator<number>;
|
|
14
15
|
totalPanesHeight: PropTypes.Validator<number>;
|
|
15
16
|
defaultRowValues: PropTypes.Requireable<object>;
|
|
@@ -155,6 +155,8 @@ export interface IRowProps extends HTMLAttributes<HTMLDivElement> {
|
|
|
155
155
|
export declare const ORIENTATION: readonly ["top", "bottom", "start", "end"];
|
|
156
156
|
export declare type Orientation = typeof ORIENTATION[number];
|
|
157
157
|
export interface IPaneProviderProps {
|
|
158
|
+
/** Identifies the pane provider */
|
|
159
|
+
id?: string;
|
|
158
160
|
/** Provides the total width, in `px` units, of all panes in the layout */
|
|
159
161
|
totalPanesWidth: number;
|
|
160
162
|
/** Provides the total height, in `px` units, of all panes in the layout */
|
|
@@ -175,14 +177,16 @@ export interface IPaneProviderProps {
|
|
|
175
177
|
*/
|
|
176
178
|
onChange?: (rowValues: Record<string, number>, columnValues: Record<string, number>) => void;
|
|
177
179
|
/**
|
|
178
|
-
* Surfaces render
|
|
180
|
+
* Surfaces render props for applying splitter state to the supporting layout
|
|
179
181
|
*
|
|
182
|
+
* @param id Provides the `id` prop, if specified; otherwise, a generated ID.
|
|
180
183
|
* @param getColumnValue Gets column value by key
|
|
181
184
|
* @param getRowValue Gets row value by key
|
|
182
185
|
* @param getGridTemplateRows Gets grid template rows track
|
|
183
186
|
* @param getGridTemplateColumns Gets grid template columns track
|
|
184
187
|
*/
|
|
185
|
-
children?: ({ getColumnValue, getRowValue, getGridTemplateRows, getGridTemplateColumns }: {
|
|
188
|
+
children?: ({ id, getColumnValue, getRowValue, getGridTemplateRows, getGridTemplateColumns }: {
|
|
189
|
+
id: string;
|
|
186
190
|
getColumnValue: (splitterKey: string, isPixels?: boolean) => number;
|
|
187
191
|
getRowValue: (splitterKey: string, isPixels?: boolean) => number;
|
|
188
192
|
getGridTemplateRows: (isPixels?: boolean) => string;
|
|
@@ -190,6 +194,8 @@ export interface IPaneProviderProps {
|
|
|
190
194
|
}) => ReactNode;
|
|
191
195
|
}
|
|
192
196
|
export interface ISplitterProps extends HTMLAttributes<HTMLDivElement> {
|
|
197
|
+
/** Identifies the associated `PaneProvider`. Assumes the closest parent provider, by default. */
|
|
198
|
+
providerId?: string;
|
|
193
199
|
/** Specifies the splitter key */
|
|
194
200
|
layoutKey: string;
|
|
195
201
|
/** Sets a minimum, in `fr` units, for splitter position */
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
6
|
*/
|
|
7
7
|
/// <reference types="react" />
|
|
8
|
-
interface
|
|
8
|
+
interface IPaneProviderContextData {
|
|
9
9
|
rowState: Record<string, number>;
|
|
10
10
|
columnState: Record<string, number>;
|
|
11
11
|
setRowValue: (isTop: boolean, id: string, value: number) => void;
|
|
@@ -19,9 +19,11 @@ interface ISplitterContext {
|
|
|
19
19
|
columns: number;
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
declare const
|
|
27
|
-
export
|
|
22
|
+
interface IPaneProviderContext {
|
|
23
|
+
providerId?: string;
|
|
24
|
+
contextData?: Record<string, IPaneProviderContextData>;
|
|
25
|
+
}
|
|
26
|
+
export declare const PaneProviderContext: import("react").Context<IPaneProviderContext>;
|
|
27
|
+
export declare const usePaneProviderContextData: (providerId?: string | undefined) => IPaneProviderContextData | undefined;
|
|
28
|
+
declare const usePaneProviderContext: () => IPaneProviderContext;
|
|
29
|
+
export default usePaneProviderContext;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zendeskgarden/react-grid",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.52.0",
|
|
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>",
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
"types": "dist/typings/index.d.ts",
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"@zendeskgarden/container-splitter": "^0.2.3",
|
|
25
|
+
"@zendeskgarden/container-utilities": "^0.7.1",
|
|
25
26
|
"polished": "^4.0.0",
|
|
26
27
|
"prop-types": "^15.5.7",
|
|
27
28
|
"react-merge-refs": "^1.1.0"
|
|
@@ -33,7 +34,8 @@
|
|
|
33
34
|
"styled-components": "^4.2.0 || ^5.0.0"
|
|
34
35
|
},
|
|
35
36
|
"devDependencies": {
|
|
36
|
-
"@zendeskgarden/react-theming": "^8.
|
|
37
|
+
"@zendeskgarden/react-theming": "^8.52.0",
|
|
38
|
+
"use-resize-observer": "^9.0.0"
|
|
37
39
|
},
|
|
38
40
|
"keywords": [
|
|
39
41
|
"components",
|
|
@@ -45,5 +47,5 @@
|
|
|
45
47
|
"access": "public"
|
|
46
48
|
},
|
|
47
49
|
"zendeskgarden:src": "src/index.ts",
|
|
48
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "1bc3c4a001a73769a5e33b7431e8b5f895b7caec"
|
|
49
51
|
}
|