@zendeskgarden/react-grid 8.51.0 → 8.53.1
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/README.md +6 -2
- package/dist/index.cjs.js +235 -97
- package/dist/index.esm.js +235 -97
- package/dist/typings/elements/pane/Pane.d.ts +2 -0
- package/dist/typings/elements/pane/PaneProvider.d.ts +2 -1
- package/dist/typings/elements/pane/components/SplitterButton.d.ts +12 -0
- package/dist/typings/index.d.ts +1 -1
- package/dist/typings/styled/index.d.ts +1 -0
- package/dist/typings/styled/pane/StyledPaneSplitter.d.ts +4 -0
- package/dist/typings/styled/pane/StyledPaneSplitterButton.d.ts +19 -0
- package/dist/typings/types/index.d.ts +16 -3
- package/dist/typings/utils/{useSplitterContext.d.ts → usePaneProviderContext.d.ts} +9 -7
- package/dist/typings/utils/usePaneSplitterContext.d.ts +23 -0
- package/package.json +7 -3
package/README.md
CHANGED
|
@@ -84,11 +84,15 @@ import { PaneProvider, Pane } from '@zendeskgarden/react-grid';
|
|
|
84
84
|
</Pane>
|
|
85
85
|
<Pane>
|
|
86
86
|
<Pane.Content>Pane 2</Pane.Content>
|
|
87
|
-
<Pane.Splitter layoutKey="row-1" min={0} max={2} orientation="bottom"
|
|
87
|
+
<Pane.Splitter layoutKey="row-1" min={0} max={2} orientation="bottom">
|
|
88
|
+
<Pane.SplitterButton label="toggle row-1" />
|
|
89
|
+
</Pane.Splitter>
|
|
88
90
|
</Pane>
|
|
89
91
|
<Pane>
|
|
90
92
|
<Pane.Content>Pane 3</Pane.Content>
|
|
91
|
-
<Pane.Splitter layoutKey="row-2" min={0} max={2} orientation="top"
|
|
93
|
+
<Pane.Splitter layoutKey="row-2" min={0} max={2} orientation="top">
|
|
94
|
+
<Pane.SplitterButton label="toggle row-2" placement="end" />
|
|
95
|
+
</Pane.Splitter>
|
|
92
96
|
</Pane>
|
|
93
97
|
<Pane>
|
|
94
98
|
<Pane.Content>Pane 4</Pane.Content>
|
package/dist/index.cjs.js
CHANGED
|
@@ -14,8 +14,11 @@ 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 reactButtons = require('@zendeskgarden/react-buttons');
|
|
18
|
+
var containerUtilities = require('@zendeskgarden/container-utilities');
|
|
17
19
|
var mergeRefs = require('react-merge-refs');
|
|
18
20
|
var containerSplitter = require('@zendeskgarden/container-splitter');
|
|
21
|
+
var reactTooltips = require('@zendeskgarden/react-tooltips');
|
|
19
22
|
|
|
20
23
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
21
24
|
|
|
@@ -187,7 +190,7 @@ var SPACE = [false, 'xxs', 'xs', 'sm', 'md', 'lg', 'xl', 'xxl'];
|
|
|
187
190
|
var WRAP = ['nowrap', 'wrap', 'wrap-reverse'];
|
|
188
191
|
var ORIENTATION = ['top', 'bottom', 'start', 'end'];
|
|
189
192
|
|
|
190
|
-
var COMPONENT_ID$
|
|
193
|
+
var COMPONENT_ID$6 = 'grid.col';
|
|
191
194
|
var colorStyles$3 = function colorStyles(props) {
|
|
192
195
|
var backgroundColor = reactTheming.getColor('primaryHue', 600, props.theme, 0.1);
|
|
193
196
|
return styled.css(["background-clip:content-box;background-color:", ";"], backgroundColor);
|
|
@@ -233,20 +236,20 @@ var flexStyles$1 = function flexStyles(size, alignSelf, textAlign, offset, order
|
|
|
233
236
|
var mediaStyles$1 = function mediaStyles(minWidth, size, alignSelf, textAlign, offset, order, props) {
|
|
234
237
|
return styled.css(["@media (min-width:", "){", ";}"], minWidth, flexStyles$1(size, alignSelf, textAlign, offset, order, props));
|
|
235
238
|
};
|
|
236
|
-
var sizeStyles$
|
|
239
|
+
var sizeStyles$4 = function sizeStyles(props) {
|
|
237
240
|
var padding = props.gutters ? polished.math("".concat(props.theme.space[props.gutters], " / 2")) : 0;
|
|
238
241
|
return styled.css(["padding-right:", ";padding-left:", ";"], padding, padding);
|
|
239
242
|
};
|
|
240
243
|
var StyledCol = styled__default["default"].div.attrs({
|
|
241
|
-
'data-garden-id': COMPONENT_ID$
|
|
242
|
-
'data-garden-version': '8.
|
|
244
|
+
'data-garden-id': COMPONENT_ID$6,
|
|
245
|
+
'data-garden-version': '8.53.1'
|
|
243
246
|
}).withConfig({
|
|
244
247
|
displayName: "StyledCol",
|
|
245
248
|
componentId: "sc-inuw62-0"
|
|
246
249
|
})(["box-sizing:border-box;width:100%;", ";", ";", ";", ";", ";", ";", ";", ";", ";"], function (props) {
|
|
247
250
|
return flexStyles$1(!props.sizeAll && (props.xs || props.sm || props.md || props.lg || props.xl) ? undefined : props.sizeAll || false, props.alignSelf, props.textAlign, props.offset, props.order, props);
|
|
248
251
|
}, function (props) {
|
|
249
|
-
return sizeStyles$
|
|
252
|
+
return sizeStyles$4(props);
|
|
250
253
|
}, function (props) {
|
|
251
254
|
return props.debug && colorStyles$3(props);
|
|
252
255
|
}, function (props) {
|
|
@@ -260,44 +263,44 @@ var StyledCol = styled__default["default"].div.attrs({
|
|
|
260
263
|
}, function (props) {
|
|
261
264
|
return mediaStyles$1(props.theme.breakpoints.xl, props.xl, props.alignSelfXl, props.textAlignXl, props.offsetXl, props.orderXl, props);
|
|
262
265
|
}, function (props) {
|
|
263
|
-
return reactTheming.retrieveComponentStyles(COMPONENT_ID$
|
|
266
|
+
return reactTheming.retrieveComponentStyles(COMPONENT_ID$6, props);
|
|
264
267
|
});
|
|
265
268
|
StyledCol.defaultProps = {
|
|
266
269
|
columns: 12,
|
|
267
270
|
theme: reactTheming.DEFAULT_THEME
|
|
268
271
|
};
|
|
269
272
|
|
|
270
|
-
var COMPONENT_ID$
|
|
273
|
+
var COMPONENT_ID$5 = 'grid.grid';
|
|
271
274
|
var colorStyles$2 = function colorStyles(props) {
|
|
272
275
|
var borderColor = reactTheming.getColor(props.theme.palette.crimson, 400, props.theme, 0.5);
|
|
273
276
|
var borderWidth = polished.math("".concat(props.theme.borderWidths.sm, " * 2"));
|
|
274
277
|
return styled.css(["box-shadow:-", " 0 0 0 ", ",", " 0 0 0 ", ";"], borderWidth, borderColor, borderWidth, borderColor);
|
|
275
278
|
};
|
|
276
|
-
var sizeStyles$
|
|
279
|
+
var sizeStyles$3 = function sizeStyles(props) {
|
|
277
280
|
var padding = props.gutters ? polished.math("".concat(props.theme.space[props.gutters], " / 2")) : 0;
|
|
278
281
|
return styled.css(["padding-right:", ";padding-left:", ";"], padding, padding);
|
|
279
282
|
};
|
|
280
283
|
var StyledGrid = styled__default["default"].div.attrs({
|
|
281
|
-
'data-garden-id': COMPONENT_ID$
|
|
282
|
-
'data-garden-version': '8.
|
|
284
|
+
'data-garden-id': COMPONENT_ID$5,
|
|
285
|
+
'data-garden-version': '8.53.1'
|
|
283
286
|
}).withConfig({
|
|
284
287
|
displayName: "StyledGrid",
|
|
285
288
|
componentId: "sc-oxgg5i-0"
|
|
286
289
|
})(["direction:", ";margin-right:auto;margin-left:auto;width:100%;box-sizing:border-box;", ";", ";", ";"], function (props) {
|
|
287
290
|
return props.theme.rtl && 'rtl';
|
|
288
291
|
}, function (props) {
|
|
289
|
-
return sizeStyles$
|
|
292
|
+
return sizeStyles$3(props);
|
|
290
293
|
}, function (props) {
|
|
291
294
|
return props.debug && colorStyles$2(props);
|
|
292
295
|
}, function (props) {
|
|
293
|
-
return reactTheming.retrieveComponentStyles(COMPONENT_ID$
|
|
296
|
+
return reactTheming.retrieveComponentStyles(COMPONENT_ID$5, props);
|
|
294
297
|
});
|
|
295
298
|
StyledGrid.defaultProps = {
|
|
296
299
|
gutters: 'md',
|
|
297
300
|
theme: reactTheming.DEFAULT_THEME
|
|
298
301
|
};
|
|
299
302
|
|
|
300
|
-
var COMPONENT_ID$
|
|
303
|
+
var COMPONENT_ID$4 = 'grid.row';
|
|
301
304
|
var colorStyles$1 = function colorStyles(props) {
|
|
302
305
|
var borderColor = reactTheming.getColor(props.theme.palette.mint, 600, props.theme, 0.5);
|
|
303
306
|
var borderWidth = props.theme.borderWidths.sm;
|
|
@@ -323,20 +326,20 @@ var flexStyles = function flexStyles(alignItems, justifyContent, wrap) {
|
|
|
323
326
|
var mediaStyles = function mediaStyles(minWidth, alignItems, justifyContent, wrap) {
|
|
324
327
|
return styled.css(["@media (min-width:", "){", ";}"], minWidth, flexStyles(alignItems, justifyContent, wrap));
|
|
325
328
|
};
|
|
326
|
-
var sizeStyles$
|
|
329
|
+
var sizeStyles$2 = function sizeStyles(props) {
|
|
327
330
|
var margin = props.gutters ? polished.math("".concat(props.theme.space[props.gutters], " / 2")) : 0;
|
|
328
331
|
return styled.css(["margin-right:-", ";margin-left:-", ";"], margin, margin);
|
|
329
332
|
};
|
|
330
333
|
var StyledRow = styled__default["default"].div.attrs({
|
|
331
|
-
'data-garden-id': COMPONENT_ID$
|
|
332
|
-
'data-garden-version': '8.
|
|
334
|
+
'data-garden-id': COMPONENT_ID$4,
|
|
335
|
+
'data-garden-version': '8.53.1'
|
|
333
336
|
}).withConfig({
|
|
334
337
|
displayName: "StyledRow",
|
|
335
338
|
componentId: "sc-xjsdg1-0"
|
|
336
339
|
})(["display:flex;box-sizing:border-box;", " ", ";", ";", ";", ";", ";", ";", ";", ";"], function (props) {
|
|
337
340
|
return flexStyles(props.alignItems, props.justifyContent, props.wrapAll);
|
|
338
341
|
}, function (props) {
|
|
339
|
-
return sizeStyles$
|
|
342
|
+
return sizeStyles$2(props);
|
|
340
343
|
}, function (props) {
|
|
341
344
|
return props.debug && colorStyles$1(props);
|
|
342
345
|
}, function (props) {
|
|
@@ -350,42 +353,42 @@ var StyledRow = styled__default["default"].div.attrs({
|
|
|
350
353
|
}, function (props) {
|
|
351
354
|
return mediaStyles(props.theme.breakpoints.xl, props.alignItemsXl, props.justifyContentXl, props.wrapXl);
|
|
352
355
|
}, function (props) {
|
|
353
|
-
return reactTheming.retrieveComponentStyles(COMPONENT_ID$
|
|
356
|
+
return reactTheming.retrieveComponentStyles(COMPONENT_ID$4, props);
|
|
354
357
|
});
|
|
355
358
|
StyledRow.defaultProps = {
|
|
356
359
|
wrapAll: 'wrap',
|
|
357
360
|
theme: reactTheming.DEFAULT_THEME
|
|
358
361
|
};
|
|
359
362
|
|
|
360
|
-
var COMPONENT_ID$
|
|
363
|
+
var COMPONENT_ID$3 = 'pane';
|
|
361
364
|
var StyledPane = styled__default["default"].div.attrs({
|
|
362
|
-
'data-garden-id': COMPONENT_ID$
|
|
363
|
-
'data-garden-version': '8.
|
|
365
|
+
'data-garden-id': COMPONENT_ID$3,
|
|
366
|
+
'data-garden-version': '8.53.1'
|
|
364
367
|
}).withConfig({
|
|
365
368
|
displayName: "StyledPane",
|
|
366
369
|
componentId: "sc-1ltjst7-0"
|
|
367
370
|
})(["position:relative;min-width:0;min-height:0;", ";"], function (props) {
|
|
368
|
-
return reactTheming.retrieveComponentStyles(COMPONENT_ID$
|
|
371
|
+
return reactTheming.retrieveComponentStyles(COMPONENT_ID$3, props);
|
|
369
372
|
});
|
|
370
373
|
StyledPane.defaultProps = {
|
|
371
374
|
theme: reactTheming.DEFAULT_THEME
|
|
372
375
|
};
|
|
373
376
|
|
|
374
|
-
var COMPONENT_ID$
|
|
377
|
+
var COMPONENT_ID$2 = 'pane.content';
|
|
375
378
|
var StyledPaneContent = styled__default["default"].div.attrs({
|
|
376
|
-
'data-garden-id': COMPONENT_ID$
|
|
377
|
-
'data-garden-version': '8.
|
|
379
|
+
'data-garden-id': COMPONENT_ID$2,
|
|
380
|
+
'data-garden-version': '8.53.1'
|
|
378
381
|
}).withConfig({
|
|
379
382
|
displayName: "StyledPaneContent",
|
|
380
383
|
componentId: "sc-1b38mbh-0"
|
|
381
384
|
})(["height:100%;overflow:auto;", ";"], function (props) {
|
|
382
|
-
return reactTheming.retrieveComponentStyles(COMPONENT_ID$
|
|
385
|
+
return reactTheming.retrieveComponentStyles(COMPONENT_ID$2, props);
|
|
383
386
|
});
|
|
384
387
|
StyledPaneContent.defaultProps = {
|
|
385
388
|
theme: reactTheming.DEFAULT_THEME
|
|
386
389
|
};
|
|
387
390
|
|
|
388
|
-
var COMPONENT_ID = 'pane.splitter';
|
|
391
|
+
var COMPONENT_ID$1 = 'pane.splitter';
|
|
389
392
|
var colorStyles = function colorStyles(props) {
|
|
390
393
|
var color = reactTheming.getColor('neutralHue', 300, props.theme);
|
|
391
394
|
var hoverColor = reactTheming.getColor('primaryHue', 600, props.theme);
|
|
@@ -393,7 +396,7 @@ var colorStyles = function colorStyles(props) {
|
|
|
393
396
|
var boxShadow = props.theme.shadows.md(polished.rgba(hoverColor, 0.35));
|
|
394
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);
|
|
395
398
|
};
|
|
396
|
-
var sizeStyles = function sizeStyles(props) {
|
|
399
|
+
var sizeStyles$1 = function sizeStyles(props) {
|
|
397
400
|
var size = polished.math("".concat(props.theme.shadowWidths.md, " * 2"));
|
|
398
401
|
var offset = polished.math("-".concat(size, " / 2"));
|
|
399
402
|
var cursor;
|
|
@@ -449,21 +452,80 @@ var sizeStyles = function sizeStyles(props) {
|
|
|
449
452
|
}
|
|
450
453
|
break;
|
|
451
454
|
}
|
|
452
|
-
return styled.css(["
|
|
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);
|
|
453
456
|
};
|
|
454
457
|
var StyledPaneSplitter = styled__default["default"].div.attrs({
|
|
455
|
-
'data-garden-id': COMPONENT_ID,
|
|
456
|
-
'data-garden-version': '8.
|
|
458
|
+
'data-garden-id': COMPONENT_ID$1,
|
|
459
|
+
'data-garden-version': '8.53.1'
|
|
457
460
|
}).withConfig({
|
|
458
461
|
displayName: "StyledPaneSplitter",
|
|
459
462
|
componentId: "sc-jylemn-0"
|
|
460
|
-
})(["position:absolute;z-index:1;", ";&:
|
|
461
|
-
return reactTheming.retrieveComponentStyles(COMPONENT_ID, props);
|
|
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) {
|
|
464
|
+
return reactTheming.retrieveComponentStyles(COMPONENT_ID$1, props);
|
|
462
465
|
});
|
|
463
466
|
StyledPaneSplitter.defaultProps = {
|
|
464
467
|
theme: reactTheming.DEFAULT_THEME
|
|
465
468
|
};
|
|
466
469
|
|
|
470
|
+
var COMPONENT_ID = 'pane.splitter_button';
|
|
471
|
+
var transformStyles = function transformStyles(props) {
|
|
472
|
+
var degrees = 0;
|
|
473
|
+
if (props.isRotated) {
|
|
474
|
+
degrees = props.theme.rtl ? -180 : 180;
|
|
475
|
+
}
|
|
476
|
+
if (props.orientation === 'end') {
|
|
477
|
+
degrees += props.theme.rtl ? -90 : 90;
|
|
478
|
+
} else if (props.orientation === 'start') {
|
|
479
|
+
degrees += props.theme.rtl ? 90 : -90;
|
|
480
|
+
} else if (props.orientation === 'bottom') {
|
|
481
|
+
degrees += 180;
|
|
482
|
+
}
|
|
483
|
+
return styled.css(["& > svg{transform:rotate(", "deg);}"], degrees);
|
|
484
|
+
};
|
|
485
|
+
var sizeStyles = function sizeStyles(props) {
|
|
486
|
+
var size = "".concat(props.theme.space.base * 6, "px");
|
|
487
|
+
var isVertical = props.orientation === 'start' || props.orientation === 'end';
|
|
488
|
+
var top;
|
|
489
|
+
var left;
|
|
490
|
+
var right;
|
|
491
|
+
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;
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
return styled.css(["top:", ";right:", ";bottom:", ";left:", ";width:", ";min-width:", ";height:", ";"], top, right, bottom, left, size, size, size);
|
|
510
|
+
};
|
|
511
|
+
var StyledPaneSplitterButton = styled__default["default"](reactButtons.ChevronButton).attrs({
|
|
512
|
+
'data-garden-id': COMPONENT_ID,
|
|
513
|
+
'data-garden-version': '8.53.1',
|
|
514
|
+
isBasic: true,
|
|
515
|
+
isPill: true,
|
|
516
|
+
size: 'small'
|
|
517
|
+
}).withConfig({
|
|
518
|
+
displayName: "StyledPaneSplitterButton",
|
|
519
|
+
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) {
|
|
521
|
+
return props.theme.colors.background;
|
|
522
|
+
}, function (props) {
|
|
523
|
+
return reactTheming.retrieveComponentStyles(COMPONENT_ID, props);
|
|
524
|
+
});
|
|
525
|
+
StyledPaneSplitterButton.defaultProps = {
|
|
526
|
+
theme: reactTheming.DEFAULT_THEME
|
|
527
|
+
};
|
|
528
|
+
|
|
467
529
|
var GridContext = React.createContext({
|
|
468
530
|
gutters: 'md'
|
|
469
531
|
});
|
|
@@ -587,30 +649,14 @@ Row.propTypes = {
|
|
|
587
649
|
wrapXl: PropTypes__default["default"].oneOf(WRAP)
|
|
588
650
|
};
|
|
589
651
|
|
|
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);
|
|
652
|
+
var PaneProviderContext = React.createContext({});
|
|
653
|
+
var usePaneProviderContextData = function usePaneProviderContextData(providerId) {
|
|
654
|
+
var context = React.useContext(PaneProviderContext);
|
|
655
|
+
var id = providerId || context.providerId;
|
|
656
|
+
return id && context.contextData ? context.contextData[id] : undefined;
|
|
657
|
+
};
|
|
658
|
+
var usePaneProviderContext = function usePaneProviderContext() {
|
|
659
|
+
return React.useContext(PaneProviderContext);
|
|
614
660
|
};
|
|
615
661
|
|
|
616
662
|
var getPixelsPerFr = function getPixelsPerFr(totalFrs, totalDimension) {
|
|
@@ -626,7 +672,8 @@ var convertToPixels = function convertToPixels(values, pixelsPerFr) {
|
|
|
626
672
|
}, {});
|
|
627
673
|
};
|
|
628
674
|
var PaneProvider = function PaneProvider(_ref3) {
|
|
629
|
-
var
|
|
675
|
+
var id = _ref3.id,
|
|
676
|
+
totalPanesWidth = _ref3.totalPanesWidth,
|
|
630
677
|
totalPanesHeight = _ref3.totalPanesHeight,
|
|
631
678
|
defaultRowValues = _ref3.defaultRowValues,
|
|
632
679
|
defaultColumnValues = _ref3.defaultColumnValues,
|
|
@@ -646,17 +693,17 @@ var PaneProvider = function PaneProvider(_ref3) {
|
|
|
646
693
|
var rowsTrack = isControlled ? rowValues : rowState;
|
|
647
694
|
var columnsTrack = isControlled ? columnValues : columnState;
|
|
648
695
|
var setRowsTrack = React.useCallback(function (values) {
|
|
649
|
-
if (onChange) {
|
|
696
|
+
if (isControlled && onChange) {
|
|
650
697
|
return onChange(values(rowsTrack), columnsTrack);
|
|
651
698
|
}
|
|
652
699
|
return setRowState(values);
|
|
653
|
-
}, [onChange, setRowState, columnsTrack, rowsTrack]);
|
|
700
|
+
}, [isControlled, onChange, setRowState, columnsTrack, rowsTrack]);
|
|
654
701
|
var setColumnsTrack = React.useCallback(function (values) {
|
|
655
|
-
if (onChange) {
|
|
702
|
+
if (isControlled && onChange) {
|
|
656
703
|
return onChange(rowsTrack, values(columnsTrack));
|
|
657
704
|
}
|
|
658
705
|
return setColumnState(values);
|
|
659
|
-
}, [onChange, setColumnState, rowsTrack, columnsTrack]);
|
|
706
|
+
}, [isControlled, onChange, setColumnState, rowsTrack, columnsTrack]);
|
|
660
707
|
var totalFractions = React.useMemo(function () {
|
|
661
708
|
return {
|
|
662
709
|
rows: Object.values(rowsTrack).reduce(function (prev, value) {
|
|
@@ -697,15 +744,15 @@ var PaneProvider = function PaneProvider(_ref3) {
|
|
|
697
744
|
columnArray: columnArray
|
|
698
745
|
};
|
|
699
746
|
}, [rowsTrack, columnsTrack]);
|
|
700
|
-
var setRowValue = React.useCallback(function (isTop,
|
|
747
|
+
var setRowValue = React.useCallback(function (isTop, splitterId, value) {
|
|
701
748
|
var rows = layoutIndices.rows,
|
|
702
749
|
rowArray = layoutIndices.rowArray;
|
|
703
750
|
var stealFromTraversal = isTop ? -1 : 1;
|
|
704
751
|
var addToTraversal = 0;
|
|
705
752
|
setRowsTrack(function (state) {
|
|
706
|
-
var oldValue = rowsTrack[
|
|
707
|
-
var stealFromIndex = rows[
|
|
708
|
-
var addToIndex = rows[
|
|
753
|
+
var oldValue = rowsTrack[splitterId];
|
|
754
|
+
var stealFromIndex = rows[splitterId] + stealFromTraversal;
|
|
755
|
+
var addToIndex = rows[splitterId] + addToTraversal;
|
|
709
756
|
var stealFromKey = rowArray[stealFromIndex];
|
|
710
757
|
var addToKey = rowArray[addToIndex];
|
|
711
758
|
var difference = oldValue - value;
|
|
@@ -715,15 +762,15 @@ var PaneProvider = function PaneProvider(_ref3) {
|
|
|
715
762
|
return nextState;
|
|
716
763
|
});
|
|
717
764
|
}, [layoutIndices, rowsTrack, setRowsTrack]);
|
|
718
|
-
var setColumnValue = React.useCallback(function (isStart,
|
|
765
|
+
var setColumnValue = React.useCallback(function (isStart, splitterId, value) {
|
|
719
766
|
var columns = layoutIndices.columns,
|
|
720
767
|
columnArray = layoutIndices.columnArray;
|
|
721
|
-
var stealFromTraversal = isStart ?
|
|
722
|
-
var addToTraversal =
|
|
768
|
+
var stealFromTraversal = isStart ? -1 : 1;
|
|
769
|
+
var addToTraversal = 0;
|
|
723
770
|
setColumnsTrack(function (state) {
|
|
724
|
-
var stealFromIndex = columns[
|
|
725
|
-
var addToIndex = columns[
|
|
726
|
-
var oldValue = columnsTrack[
|
|
771
|
+
var stealFromIndex = columns[splitterId] + stealFromTraversal;
|
|
772
|
+
var addToIndex = columns[splitterId] + addToTraversal;
|
|
773
|
+
var oldValue = columnsTrack[splitterId];
|
|
727
774
|
var stealFromKey = columnArray[stealFromIndex];
|
|
728
775
|
var addToKey = columnArray[addToIndex];
|
|
729
776
|
var difference = oldValue - value;
|
|
@@ -767,22 +814,28 @@ var PaneProvider = function PaneProvider(_ref3) {
|
|
|
767
814
|
return "".concat(rowsTrack[row], "fr");
|
|
768
815
|
}).join(' ');
|
|
769
816
|
}, [layoutIndices, rowsTrack, layoutStateInPixels]);
|
|
770
|
-
var
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
817
|
+
var providerId = containerUtilities.useId(id);
|
|
818
|
+
var parentPaneProviderContext = usePaneProviderContext();
|
|
819
|
+
var paneProviderContext = React.useMemo(function () {
|
|
820
|
+
return providerId ? {
|
|
821
|
+
providerId: providerId,
|
|
822
|
+
contextData: _objectSpread2(_objectSpread2({}, parentPaneProviderContext.contextData), {}, _defineProperty({}, providerId, {
|
|
823
|
+
columnState: columnState,
|
|
824
|
+
rowState: rowState,
|
|
825
|
+
setRowValue: setRowValue,
|
|
826
|
+
setColumnValue: setColumnValue,
|
|
827
|
+
getRowValue: getRowValue,
|
|
828
|
+
getColumnValue: getColumnValue,
|
|
829
|
+
totalPanesHeight: totalPanesHeight,
|
|
830
|
+
totalPanesWidth: totalPanesWidth,
|
|
831
|
+
pixelsPerFr: pixelsPerFr
|
|
832
|
+
}))
|
|
833
|
+
} : {};
|
|
834
|
+
}, [providerId, parentPaneProviderContext, rowState, columnState, setRowValue, setColumnValue, getRowValue, getColumnValue, totalPanesHeight, totalPanesWidth, pixelsPerFr]);
|
|
835
|
+
return React__default["default"].createElement(PaneProviderContext.Provider, {
|
|
836
|
+
value: paneProviderContext
|
|
785
837
|
}, children === null || children === void 0 ? void 0 : children({
|
|
838
|
+
id: providerId,
|
|
786
839
|
getRowValue: getRowValue,
|
|
787
840
|
getColumnValue: getColumnValue,
|
|
788
841
|
getGridTemplateColumns: getGridTemplateColumns,
|
|
@@ -791,6 +844,7 @@ var PaneProvider = function PaneProvider(_ref3) {
|
|
|
791
844
|
};
|
|
792
845
|
PaneProvider.displayName = 'PaneProvider';
|
|
793
846
|
PaneProvider.propTypes = {
|
|
847
|
+
id: PropTypes__default["default"].string,
|
|
794
848
|
totalPanesWidth: PropTypes__default["default"].number.isRequired,
|
|
795
849
|
totalPanesHeight: PropTypes__default["default"].number.isRequired,
|
|
796
850
|
defaultRowValues: PropTypes__default["default"].object,
|
|
@@ -810,9 +864,21 @@ var usePaneContext = function usePaneContext() {
|
|
|
810
864
|
return React.useContext(PaneContext);
|
|
811
865
|
};
|
|
812
866
|
|
|
813
|
-
var
|
|
867
|
+
var PaneSplitterContext = React.createContext({
|
|
868
|
+
orientation: 'start',
|
|
869
|
+
min: 0,
|
|
870
|
+
max: 0,
|
|
871
|
+
layoutKey: '',
|
|
872
|
+
valueNow: 0,
|
|
873
|
+
isRow: false
|
|
874
|
+
});
|
|
875
|
+
var usePaneSplitterContext = function usePaneSplitterContext() {
|
|
876
|
+
return React.useContext(PaneSplitterContext);
|
|
877
|
+
};
|
|
878
|
+
|
|
879
|
+
var _excluded$1 = ["providerId", "layoutKey", "min", "max", "orientation"];
|
|
814
880
|
var orientationToPosition = {
|
|
815
|
-
start: containerSplitter.SplitterPosition.
|
|
881
|
+
start: containerSplitter.SplitterPosition.LEADS,
|
|
816
882
|
end: containerSplitter.SplitterPosition.TRAILS,
|
|
817
883
|
top: containerSplitter.SplitterPosition.LEADS,
|
|
818
884
|
bottom: containerSplitter.SplitterPosition.TRAILS
|
|
@@ -830,18 +896,21 @@ var orientationToDimension = {
|
|
|
830
896
|
bottom: 'rows'
|
|
831
897
|
};
|
|
832
898
|
var SplitterComponent = React.forwardRef(function (_ref, ref) {
|
|
833
|
-
var
|
|
899
|
+
var providerId = _ref.providerId,
|
|
900
|
+
layoutKey = _ref.layoutKey,
|
|
834
901
|
min = _ref.min,
|
|
835
902
|
max = _ref.max,
|
|
836
903
|
orientation = _ref.orientation,
|
|
837
904
|
props = _objectWithoutProperties(_ref, _excluded$1);
|
|
838
|
-
var
|
|
905
|
+
var paneProviderContext = usePaneProviderContextData(providerId);
|
|
839
906
|
var paneContext = usePaneContext();
|
|
840
907
|
var themeContext = React.useContext(styled.ThemeContext);
|
|
841
908
|
var position = orientationToPosition[orientation];
|
|
842
909
|
var isRow = orientationToDimension[orientation] === 'rows';
|
|
843
910
|
var splitterOrientation = paneToSplitterOrientation[orientation];
|
|
844
|
-
var pixelsPerFr =
|
|
911
|
+
var pixelsPerFr = paneProviderContext ? paneProviderContext.pixelsPerFr[orientationToDimension[orientation]] : 0;
|
|
912
|
+
var value = isRow ? paneProviderContext === null || paneProviderContext === void 0 ? void 0 : paneProviderContext.getRowValue(layoutKey, true) : paneProviderContext === null || paneProviderContext === void 0 ? void 0 : paneProviderContext.getColumnValue(layoutKey, true);
|
|
913
|
+
var valueInFr = isRow ? paneProviderContext === null || paneProviderContext === void 0 ? void 0 : paneProviderContext.getRowValue(layoutKey) : paneProviderContext === null || paneProviderContext === void 0 ? void 0 : paneProviderContext.getColumnValue(layoutKey);
|
|
845
914
|
var _useSplitter = containerSplitter.useSplitter({
|
|
846
915
|
type: containerSplitter.SplitterType.VARIABLE,
|
|
847
916
|
orientation: splitterOrientation,
|
|
@@ -852,11 +921,11 @@ var SplitterComponent = React.forwardRef(function (_ref, ref) {
|
|
|
852
921
|
environment: window,
|
|
853
922
|
onChange: function onChange(valueNow) {
|
|
854
923
|
if (isRow) {
|
|
855
|
-
return
|
|
924
|
+
return paneProviderContext === null || paneProviderContext === void 0 ? void 0 : paneProviderContext.setRowValue(orientation === 'top', layoutKey, valueNow / pixelsPerFr);
|
|
856
925
|
}
|
|
857
|
-
return
|
|
926
|
+
return paneProviderContext === null || paneProviderContext === void 0 ? void 0 : paneProviderContext.setColumnValue(orientation === 'start', layoutKey, valueNow / pixelsPerFr);
|
|
858
927
|
},
|
|
859
|
-
valueNow:
|
|
928
|
+
valueNow: value
|
|
860
929
|
}),
|
|
861
930
|
getSeparatorProps = _useSplitter.getSeparatorProps,
|
|
862
931
|
getPrimaryPaneProps = _useSplitter.getPrimaryPaneProps;
|
|
@@ -868,11 +937,22 @@ var SplitterComponent = React.forwardRef(function (_ref, ref) {
|
|
|
868
937
|
var separatorProps = getSeparatorProps({
|
|
869
938
|
'aria-controls': paneContext.id
|
|
870
939
|
});
|
|
871
|
-
return React__default["default"].createElement(
|
|
940
|
+
return React__default["default"].createElement(PaneSplitterContext.Provider, {
|
|
941
|
+
value: React.useMemo(function () {
|
|
942
|
+
return {
|
|
943
|
+
orientation: orientation,
|
|
944
|
+
layoutKey: layoutKey,
|
|
945
|
+
min: min,
|
|
946
|
+
max: max,
|
|
947
|
+
valueNow: valueInFr,
|
|
948
|
+
isRow: isRow
|
|
949
|
+
};
|
|
950
|
+
}, [orientation, layoutKey, min, max, valueInFr, isRow])
|
|
951
|
+
}, React__default["default"].createElement(StyledPaneSplitter, _extends({
|
|
872
952
|
orientation: orientation
|
|
873
953
|
}, separatorProps, props, {
|
|
874
954
|
ref: mergeRefs__default["default"]([separatorProps.ref, ref])
|
|
875
|
-
}));
|
|
955
|
+
})));
|
|
876
956
|
});
|
|
877
957
|
SplitterComponent.displayName = 'Pane.Splitter';
|
|
878
958
|
SplitterComponent.propTypes = {
|
|
@@ -894,6 +974,63 @@ var ContentComponent = React.forwardRef(function (props, ref) {
|
|
|
894
974
|
ContentComponent.displayName = 'Pane.Content';
|
|
895
975
|
var Content = ContentComponent;
|
|
896
976
|
|
|
977
|
+
var SplitterButtonComponent = React.forwardRef(function (props, ref) {
|
|
978
|
+
var label = props.label,
|
|
979
|
+
defaultPlacement = props.placement;
|
|
980
|
+
var _usePaneSplitterConte = usePaneSplitterContext(),
|
|
981
|
+
orientation = _usePaneSplitterConte.orientation,
|
|
982
|
+
layoutKey = _usePaneSplitterConte.layoutKey,
|
|
983
|
+
min = _usePaneSplitterConte.min,
|
|
984
|
+
max = _usePaneSplitterConte.max,
|
|
985
|
+
isRow = _usePaneSplitterConte.isRow,
|
|
986
|
+
valueNow = _usePaneSplitterConte.valueNow,
|
|
987
|
+
providerId = _usePaneSplitterConte.providerId;
|
|
988
|
+
var paneProviderContext = usePaneProviderContextData(providerId);
|
|
989
|
+
var isTop = orientation === 'top';
|
|
990
|
+
var isStart = orientation === 'start';
|
|
991
|
+
var isMin = valueNow === min;
|
|
992
|
+
var placement = defaultPlacement;
|
|
993
|
+
if (!defaultPlacement) {
|
|
994
|
+
if (isRow) {
|
|
995
|
+
placement = 'center';
|
|
996
|
+
} else {
|
|
997
|
+
placement = 'start';
|
|
998
|
+
}
|
|
999
|
+
}
|
|
1000
|
+
var setValue = React.useCallback(function (value) {
|
|
1001
|
+
if (isRow) {
|
|
1002
|
+
paneProviderContext.setRowValue(isTop, layoutKey, value);
|
|
1003
|
+
return;
|
|
1004
|
+
}
|
|
1005
|
+
paneProviderContext.setColumnValue(isStart, layoutKey, value);
|
|
1006
|
+
}, [isRow, isTop, isStart, layoutKey, paneProviderContext]);
|
|
1007
|
+
var onClick = containerUtilities.composeEventHandlers(props.onClick, function () {
|
|
1008
|
+
if (isMin) {
|
|
1009
|
+
setValue(max);
|
|
1010
|
+
} else {
|
|
1011
|
+
setValue(min);
|
|
1012
|
+
}
|
|
1013
|
+
});
|
|
1014
|
+
var onKeyDown = containerUtilities.composeEventHandlers(props.onKeyDown, function (event) {
|
|
1015
|
+
return event.stopPropagation();
|
|
1016
|
+
}
|
|
1017
|
+
);
|
|
1018
|
+
return React__default["default"].createElement(reactTooltips.Tooltip, {
|
|
1019
|
+
content: label
|
|
1020
|
+
}, React__default["default"].createElement(StyledPaneSplitterButton, _extends({
|
|
1021
|
+
"aria-label": label
|
|
1022
|
+
}, props, {
|
|
1023
|
+
placement: placement,
|
|
1024
|
+
orientation: orientation,
|
|
1025
|
+
isRotated: isMin,
|
|
1026
|
+
ref: ref,
|
|
1027
|
+
onClick: onClick,
|
|
1028
|
+
onKeyDown: onKeyDown
|
|
1029
|
+
})));
|
|
1030
|
+
});
|
|
1031
|
+
SplitterButtonComponent.displayName = 'Pane.SplitterButton';
|
|
1032
|
+
var SplitterButton = SplitterButtonComponent;
|
|
1033
|
+
|
|
897
1034
|
var _excluded = ["children"];
|
|
898
1035
|
var PaneComponent = React.forwardRef(function (_ref, ref) {
|
|
899
1036
|
var children = _ref.children,
|
|
@@ -921,6 +1058,7 @@ PaneComponent.displayName = 'Pane';
|
|
|
921
1058
|
var Pane = PaneComponent;
|
|
922
1059
|
Pane.Content = Content;
|
|
923
1060
|
Pane.Splitter = Splitter;
|
|
1061
|
+
Pane.SplitterButton = SplitterButton;
|
|
924
1062
|
|
|
925
1063
|
exports.ARRAY_ALIGN_ITEMS = ALIGN_ITEMS;
|
|
926
1064
|
exports.ARRAY_ALIGN_SELF = ALIGN_SELF;
|