@zendeskgarden/react-grid 8.52.0 → 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/README.md +6 -2
- package/dist/index.cjs.js +232 -49
- package/dist/index.esm.js +234 -51
- package/dist/typings/elements/pane/Pane.d.ts +2 -0
- 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 +5 -0
- package/dist/typings/styled/pane/StyledPaneSplitterButton.d.ts +20 -0
- package/dist/typings/types/index.d.ts +8 -1
- package/dist/typings/utils/usePaneSplitterContext.d.ts +24 -0
- package/package.json +6 -4
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,9 +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');
|
|
17
18
|
var containerUtilities = require('@zendeskgarden/container-utilities');
|
|
18
19
|
var mergeRefs = require('react-merge-refs');
|
|
19
20
|
var containerSplitter = require('@zendeskgarden/container-splitter');
|
|
21
|
+
var reactTooltips = require('@zendeskgarden/react-tooltips');
|
|
20
22
|
|
|
21
23
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
22
24
|
|
|
@@ -188,8 +190,8 @@ var SPACE = [false, 'xxs', 'xs', 'sm', 'md', 'lg', 'xl', 'xxl'];
|
|
|
188
190
|
var WRAP = ['nowrap', 'wrap', 'wrap-reverse'];
|
|
189
191
|
var ORIENTATION = ['top', 'bottom', 'start', 'end'];
|
|
190
192
|
|
|
191
|
-
var COMPONENT_ID$
|
|
192
|
-
var colorStyles$
|
|
193
|
+
var COMPONENT_ID$6 = 'grid.col';
|
|
194
|
+
var colorStyles$4 = function colorStyles(props) {
|
|
193
195
|
var backgroundColor = reactTheming.getColor('primaryHue', 600, props.theme, 0.1);
|
|
194
196
|
return styled.css(["background-clip:content-box;background-color:", ";"], backgroundColor);
|
|
195
197
|
};
|
|
@@ -234,22 +236,22 @@ var flexStyles$1 = function flexStyles(size, alignSelf, textAlign, offset, order
|
|
|
234
236
|
var mediaStyles$1 = function mediaStyles(minWidth, size, alignSelf, textAlign, offset, order, props) {
|
|
235
237
|
return styled.css(["@media (min-width:", "){", ";}"], minWidth, flexStyles$1(size, alignSelf, textAlign, offset, order, props));
|
|
236
238
|
};
|
|
237
|
-
var sizeStyles$
|
|
239
|
+
var sizeStyles$4 = function sizeStyles(props) {
|
|
238
240
|
var padding = props.gutters ? polished.math("".concat(props.theme.space[props.gutters], " / 2")) : 0;
|
|
239
241
|
return styled.css(["padding-right:", ";padding-left:", ";"], padding, padding);
|
|
240
242
|
};
|
|
241
243
|
var StyledCol = styled__default["default"].div.attrs({
|
|
242
|
-
'data-garden-id': COMPONENT_ID$
|
|
243
|
-
'data-garden-version': '8.
|
|
244
|
+
'data-garden-id': COMPONENT_ID$6,
|
|
245
|
+
'data-garden-version': '8.53.2'
|
|
244
246
|
}).withConfig({
|
|
245
247
|
displayName: "StyledCol",
|
|
246
248
|
componentId: "sc-inuw62-0"
|
|
247
249
|
})(["box-sizing:border-box;width:100%;", ";", ";", ";", ";", ";", ";", ";", ";", ";"], function (props) {
|
|
248
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);
|
|
249
251
|
}, function (props) {
|
|
250
|
-
return sizeStyles$
|
|
252
|
+
return sizeStyles$4(props);
|
|
251
253
|
}, function (props) {
|
|
252
|
-
return props.debug && colorStyles$
|
|
254
|
+
return props.debug && colorStyles$4(props);
|
|
253
255
|
}, function (props) {
|
|
254
256
|
return mediaStyles$1(props.theme.breakpoints.xs, props.xs, props.alignSelfXs, props.textAlignXs, props.offsetXs, props.orderXs, props);
|
|
255
257
|
}, function (props) {
|
|
@@ -261,45 +263,45 @@ var StyledCol = styled__default["default"].div.attrs({
|
|
|
261
263
|
}, function (props) {
|
|
262
264
|
return mediaStyles$1(props.theme.breakpoints.xl, props.xl, props.alignSelfXl, props.textAlignXl, props.offsetXl, props.orderXl, props);
|
|
263
265
|
}, function (props) {
|
|
264
|
-
return reactTheming.retrieveComponentStyles(COMPONENT_ID$
|
|
266
|
+
return reactTheming.retrieveComponentStyles(COMPONENT_ID$6, props);
|
|
265
267
|
});
|
|
266
268
|
StyledCol.defaultProps = {
|
|
267
269
|
columns: 12,
|
|
268
270
|
theme: reactTheming.DEFAULT_THEME
|
|
269
271
|
};
|
|
270
272
|
|
|
271
|
-
var COMPONENT_ID$
|
|
272
|
-
var colorStyles$
|
|
273
|
+
var COMPONENT_ID$5 = 'grid.grid';
|
|
274
|
+
var colorStyles$3 = function colorStyles(props) {
|
|
273
275
|
var borderColor = reactTheming.getColor(props.theme.palette.crimson, 400, props.theme, 0.5);
|
|
274
276
|
var borderWidth = polished.math("".concat(props.theme.borderWidths.sm, " * 2"));
|
|
275
277
|
return styled.css(["box-shadow:-", " 0 0 0 ", ",", " 0 0 0 ", ";"], borderWidth, borderColor, borderWidth, borderColor);
|
|
276
278
|
};
|
|
277
|
-
var sizeStyles$
|
|
279
|
+
var sizeStyles$3 = function sizeStyles(props) {
|
|
278
280
|
var padding = props.gutters ? polished.math("".concat(props.theme.space[props.gutters], " / 2")) : 0;
|
|
279
281
|
return styled.css(["padding-right:", ";padding-left:", ";"], padding, padding);
|
|
280
282
|
};
|
|
281
283
|
var StyledGrid = styled__default["default"].div.attrs({
|
|
282
|
-
'data-garden-id': COMPONENT_ID$
|
|
283
|
-
'data-garden-version': '8.
|
|
284
|
+
'data-garden-id': COMPONENT_ID$5,
|
|
285
|
+
'data-garden-version': '8.53.2'
|
|
284
286
|
}).withConfig({
|
|
285
287
|
displayName: "StyledGrid",
|
|
286
288
|
componentId: "sc-oxgg5i-0"
|
|
287
289
|
})(["direction:", ";margin-right:auto;margin-left:auto;width:100%;box-sizing:border-box;", ";", ";", ";"], function (props) {
|
|
288
290
|
return props.theme.rtl && 'rtl';
|
|
289
291
|
}, function (props) {
|
|
290
|
-
return sizeStyles$
|
|
292
|
+
return sizeStyles$3(props);
|
|
291
293
|
}, function (props) {
|
|
292
|
-
return props.debug && colorStyles$
|
|
294
|
+
return props.debug && colorStyles$3(props);
|
|
293
295
|
}, function (props) {
|
|
294
|
-
return reactTheming.retrieveComponentStyles(COMPONENT_ID$
|
|
296
|
+
return reactTheming.retrieveComponentStyles(COMPONENT_ID$5, props);
|
|
295
297
|
});
|
|
296
298
|
StyledGrid.defaultProps = {
|
|
297
299
|
gutters: 'md',
|
|
298
300
|
theme: reactTheming.DEFAULT_THEME
|
|
299
301
|
};
|
|
300
302
|
|
|
301
|
-
var COMPONENT_ID$
|
|
302
|
-
var colorStyles$
|
|
303
|
+
var COMPONENT_ID$4 = 'grid.row';
|
|
304
|
+
var colorStyles$2 = function colorStyles(props) {
|
|
303
305
|
var borderColor = reactTheming.getColor(props.theme.palette.mint, 600, props.theme, 0.5);
|
|
304
306
|
var borderWidth = props.theme.borderWidths.sm;
|
|
305
307
|
return styled.css(["box-shadow:inset 0 ", " 0 0 ", ",inset 0 -", " 0 0 ", ";"], borderWidth, borderColor, borderWidth, borderColor);
|
|
@@ -324,22 +326,22 @@ var flexStyles = function flexStyles(alignItems, justifyContent, wrap) {
|
|
|
324
326
|
var mediaStyles = function mediaStyles(minWidth, alignItems, justifyContent, wrap) {
|
|
325
327
|
return styled.css(["@media (min-width:", "){", ";}"], minWidth, flexStyles(alignItems, justifyContent, wrap));
|
|
326
328
|
};
|
|
327
|
-
var sizeStyles$
|
|
329
|
+
var sizeStyles$2 = function sizeStyles(props) {
|
|
328
330
|
var margin = props.gutters ? polished.math("".concat(props.theme.space[props.gutters], " / 2")) : 0;
|
|
329
331
|
return styled.css(["margin-right:-", ";margin-left:-", ";"], margin, margin);
|
|
330
332
|
};
|
|
331
333
|
var StyledRow = styled__default["default"].div.attrs({
|
|
332
|
-
'data-garden-id': COMPONENT_ID$
|
|
333
|
-
'data-garden-version': '8.
|
|
334
|
+
'data-garden-id': COMPONENT_ID$4,
|
|
335
|
+
'data-garden-version': '8.53.2'
|
|
334
336
|
}).withConfig({
|
|
335
337
|
displayName: "StyledRow",
|
|
336
338
|
componentId: "sc-xjsdg1-0"
|
|
337
339
|
})(["display:flex;box-sizing:border-box;", " ", ";", ";", ";", ";", ";", ";", ";", ";"], function (props) {
|
|
338
340
|
return flexStyles(props.alignItems, props.justifyContent, props.wrapAll);
|
|
339
341
|
}, function (props) {
|
|
340
|
-
return sizeStyles$
|
|
342
|
+
return sizeStyles$2(props);
|
|
341
343
|
}, function (props) {
|
|
342
|
-
return props.debug && colorStyles$
|
|
344
|
+
return props.debug && colorStyles$2(props);
|
|
343
345
|
}, function (props) {
|
|
344
346
|
return mediaStyles(props.theme.breakpoints.xs, props.alignItemsXs, props.justifyContentXs, props.wrapXs);
|
|
345
347
|
}, function (props) {
|
|
@@ -351,51 +353,52 @@ var StyledRow = styled__default["default"].div.attrs({
|
|
|
351
353
|
}, function (props) {
|
|
352
354
|
return mediaStyles(props.theme.breakpoints.xl, props.alignItemsXl, props.justifyContentXl, props.wrapXl);
|
|
353
355
|
}, function (props) {
|
|
354
|
-
return reactTheming.retrieveComponentStyles(COMPONENT_ID$
|
|
356
|
+
return reactTheming.retrieveComponentStyles(COMPONENT_ID$4, props);
|
|
355
357
|
});
|
|
356
358
|
StyledRow.defaultProps = {
|
|
357
359
|
wrapAll: 'wrap',
|
|
358
360
|
theme: reactTheming.DEFAULT_THEME
|
|
359
361
|
};
|
|
360
362
|
|
|
361
|
-
var COMPONENT_ID$
|
|
363
|
+
var COMPONENT_ID$3 = 'pane';
|
|
362
364
|
var StyledPane = styled__default["default"].div.attrs({
|
|
363
|
-
'data-garden-id': COMPONENT_ID$
|
|
364
|
-
'data-garden-version': '8.
|
|
365
|
+
'data-garden-id': COMPONENT_ID$3,
|
|
366
|
+
'data-garden-version': '8.53.2'
|
|
365
367
|
}).withConfig({
|
|
366
368
|
displayName: "StyledPane",
|
|
367
369
|
componentId: "sc-1ltjst7-0"
|
|
368
370
|
})(["position:relative;min-width:0;min-height:0;", ";"], function (props) {
|
|
369
|
-
return reactTheming.retrieveComponentStyles(COMPONENT_ID$
|
|
371
|
+
return reactTheming.retrieveComponentStyles(COMPONENT_ID$3, props);
|
|
370
372
|
});
|
|
371
373
|
StyledPane.defaultProps = {
|
|
372
374
|
theme: reactTheming.DEFAULT_THEME
|
|
373
375
|
};
|
|
374
376
|
|
|
375
|
-
var COMPONENT_ID$
|
|
377
|
+
var COMPONENT_ID$2 = 'pane.content';
|
|
376
378
|
var StyledPaneContent = styled__default["default"].div.attrs({
|
|
377
|
-
'data-garden-id': COMPONENT_ID$
|
|
378
|
-
'data-garden-version': '8.
|
|
379
|
+
'data-garden-id': COMPONENT_ID$2,
|
|
380
|
+
'data-garden-version': '8.53.2'
|
|
379
381
|
}).withConfig({
|
|
380
382
|
displayName: "StyledPaneContent",
|
|
381
383
|
componentId: "sc-1b38mbh-0"
|
|
382
384
|
})(["height:100%;overflow:auto;", ";"], function (props) {
|
|
383
|
-
return reactTheming.retrieveComponentStyles(COMPONENT_ID$
|
|
385
|
+
return reactTheming.retrieveComponentStyles(COMPONENT_ID$2, props);
|
|
384
386
|
});
|
|
385
387
|
StyledPaneContent.defaultProps = {
|
|
386
388
|
theme: reactTheming.DEFAULT_THEME
|
|
387
389
|
};
|
|
388
390
|
|
|
389
|
-
var COMPONENT_ID = 'pane.splitter';
|
|
390
|
-
var colorStyles = function colorStyles(props) {
|
|
391
|
+
var COMPONENT_ID$1 = 'pane.splitter';
|
|
392
|
+
var colorStyles$1 = function colorStyles(props) {
|
|
391
393
|
var color = reactTheming.getColor('neutralHue', 300, props.theme);
|
|
392
394
|
var hoverColor = reactTheming.getColor('primaryHue', 600, props.theme);
|
|
393
395
|
var activeColor = reactTheming.getColor('primaryHue', 800, props.theme);
|
|
394
396
|
var boxShadow = props.theme.shadows.md(polished.rgba(hoverColor, 0.35));
|
|
395
|
-
return styled.css(["&::before{background-color:", ";}&:hover::before
|
|
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);
|
|
396
398
|
};
|
|
397
|
-
var sizeStyles = function sizeStyles(props) {
|
|
399
|
+
var sizeStyles$1 = function sizeStyles(props) {
|
|
398
400
|
var size = polished.math("".concat(props.theme.shadowWidths.md, " * 2"));
|
|
401
|
+
var separatorSize = polished.math("".concat(props.theme.borderWidths.sm, " * 2"));
|
|
399
402
|
var offset = polished.math("-".concat(size, " / 2"));
|
|
400
403
|
var cursor;
|
|
401
404
|
var top;
|
|
@@ -450,21 +453,90 @@ var sizeStyles = function sizeStyles(props) {
|
|
|
450
453
|
}
|
|
451
454
|
break;
|
|
452
455
|
}
|
|
453
|
-
|
|
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);
|
|
454
458
|
};
|
|
455
459
|
var StyledPaneSplitter = styled__default["default"].div.attrs({
|
|
456
|
-
'data-garden-id': COMPONENT_ID,
|
|
457
|
-
'data-garden-version': '8.
|
|
460
|
+
'data-garden-id': COMPONENT_ID$1,
|
|
461
|
+
'data-garden-version': '8.53.2'
|
|
458
462
|
}).withConfig({
|
|
459
463
|
displayName: "StyledPaneSplitter",
|
|
460
464
|
componentId: "sc-jylemn-0"
|
|
461
|
-
})(["position:absolute;z-index:1;user-select:none;", ";&:
|
|
462
|
-
return reactTheming.retrieveComponentStyles(COMPONENT_ID, 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) {
|
|
466
|
+
return reactTheming.retrieveComponentStyles(COMPONENT_ID$1, props);
|
|
463
467
|
});
|
|
464
468
|
StyledPaneSplitter.defaultProps = {
|
|
465
469
|
theme: reactTheming.DEFAULT_THEME
|
|
466
470
|
};
|
|
467
471
|
|
|
472
|
+
var COMPONENT_ID = 'pane.splitter_button';
|
|
473
|
+
var transformStyles = function transformStyles(props) {
|
|
474
|
+
var degrees = 0;
|
|
475
|
+
if (props.isRotated) {
|
|
476
|
+
degrees = props.theme.rtl ? -180 : 180;
|
|
477
|
+
}
|
|
478
|
+
if (props.orientation === 'end') {
|
|
479
|
+
degrees += props.theme.rtl ? -90 : 90;
|
|
480
|
+
} else if (props.orientation === 'start') {
|
|
481
|
+
degrees += props.theme.rtl ? 90 : -90;
|
|
482
|
+
} else if (props.orientation === 'bottom') {
|
|
483
|
+
degrees += 180;
|
|
484
|
+
}
|
|
485
|
+
return styled.css(["& > svg{transform:rotate(", "deg);}"], degrees);
|
|
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
|
+
};
|
|
493
|
+
var sizeStyles = function sizeStyles(props) {
|
|
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';
|
|
496
|
+
var isVertical = props.orientation === 'start' || props.orientation === 'end';
|
|
497
|
+
var top;
|
|
498
|
+
var left;
|
|
499
|
+
var right;
|
|
500
|
+
var bottom;
|
|
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
|
+
}
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
return styled.css(["display:", ";top:", ";right:", ";bottom:", ";left:", ";width:", ";min-width:", ";height:", ";"], display, top, right, bottom, left, size, size, size);
|
|
521
|
+
};
|
|
522
|
+
var StyledPaneSplitterButton = styled__default["default"](reactButtons.ChevronButton).attrs({
|
|
523
|
+
'data-garden-id': COMPONENT_ID,
|
|
524
|
+
'data-garden-version': '8.53.2',
|
|
525
|
+
isBasic: true,
|
|
526
|
+
isPill: true,
|
|
527
|
+
size: 'small'
|
|
528
|
+
}).withConfig({
|
|
529
|
+
displayName: "StyledPaneSplitterButton",
|
|
530
|
+
componentId: "sc-zh032e-0"
|
|
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) {
|
|
532
|
+
return props.theme.colors.background;
|
|
533
|
+
}, function (props) {
|
|
534
|
+
return reactTheming.retrieveComponentStyles(COMPONENT_ID, props);
|
|
535
|
+
});
|
|
536
|
+
StyledPaneSplitterButton.defaultProps = {
|
|
537
|
+
theme: reactTheming.DEFAULT_THEME
|
|
538
|
+
};
|
|
539
|
+
|
|
468
540
|
var GridContext = React.createContext({
|
|
469
541
|
gutters: 'md'
|
|
470
542
|
});
|
|
@@ -704,8 +776,8 @@ var PaneProvider = function PaneProvider(_ref3) {
|
|
|
704
776
|
var setColumnValue = React.useCallback(function (isStart, splitterId, value) {
|
|
705
777
|
var columns = layoutIndices.columns,
|
|
706
778
|
columnArray = layoutIndices.columnArray;
|
|
707
|
-
var stealFromTraversal = isStart ?
|
|
708
|
-
var addToTraversal =
|
|
779
|
+
var stealFromTraversal = isStart ? -1 : 1;
|
|
780
|
+
var addToTraversal = 0;
|
|
709
781
|
setColumnsTrack(function (state) {
|
|
710
782
|
var stealFromIndex = columns[splitterId] + stealFromTraversal;
|
|
711
783
|
var addToIndex = columns[splitterId] + addToTraversal;
|
|
@@ -803,9 +875,22 @@ var usePaneContext = function usePaneContext() {
|
|
|
803
875
|
return React.useContext(PaneContext);
|
|
804
876
|
};
|
|
805
877
|
|
|
878
|
+
var PaneSplitterContext = React.createContext({
|
|
879
|
+
orientation: 'start',
|
|
880
|
+
min: 0,
|
|
881
|
+
max: 0,
|
|
882
|
+
layoutKey: '',
|
|
883
|
+
valueNow: 0,
|
|
884
|
+
size: 0,
|
|
885
|
+
isRow: false
|
|
886
|
+
});
|
|
887
|
+
var usePaneSplitterContext = function usePaneSplitterContext() {
|
|
888
|
+
return React.useContext(PaneSplitterContext);
|
|
889
|
+
};
|
|
890
|
+
|
|
806
891
|
var _excluded$1 = ["providerId", "layoutKey", "min", "max", "orientation"];
|
|
807
892
|
var orientationToPosition = {
|
|
808
|
-
start: containerSplitter.SplitterPosition.
|
|
893
|
+
start: containerSplitter.SplitterPosition.LEADS,
|
|
809
894
|
end: containerSplitter.SplitterPosition.TRAILS,
|
|
810
895
|
top: containerSplitter.SplitterPosition.LEADS,
|
|
811
896
|
bottom: containerSplitter.SplitterPosition.TRAILS
|
|
@@ -823,6 +908,7 @@ var orientationToDimension = {
|
|
|
823
908
|
bottom: 'rows'
|
|
824
909
|
};
|
|
825
910
|
var SplitterComponent = React.forwardRef(function (_ref, ref) {
|
|
911
|
+
var _separatorProps$ref$c, _separatorProps$ref$c2;
|
|
826
912
|
var providerId = _ref.providerId,
|
|
827
913
|
layoutKey = _ref.layoutKey,
|
|
828
914
|
min = _ref.min,
|
|
@@ -832,10 +918,16 @@ var SplitterComponent = React.forwardRef(function (_ref, ref) {
|
|
|
832
918
|
var paneProviderContext = usePaneProviderContextData(providerId);
|
|
833
919
|
var paneContext = usePaneContext();
|
|
834
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];
|
|
835
925
|
var position = orientationToPosition[orientation];
|
|
836
926
|
var isRow = orientationToDimension[orientation] === 'rows';
|
|
837
927
|
var splitterOrientation = paneToSplitterOrientation[orientation];
|
|
838
928
|
var pixelsPerFr = paneProviderContext ? paneProviderContext.pixelsPerFr[orientationToDimension[orientation]] : 0;
|
|
929
|
+
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);
|
|
930
|
+
var valueInFr = isRow ? paneProviderContext === null || paneProviderContext === void 0 ? void 0 : paneProviderContext.getRowValue(layoutKey) : paneProviderContext === null || paneProviderContext === void 0 ? void 0 : paneProviderContext.getColumnValue(layoutKey);
|
|
839
931
|
var _useSplitter = containerSplitter.useSplitter({
|
|
840
932
|
type: containerSplitter.SplitterType.VARIABLE,
|
|
841
933
|
orientation: splitterOrientation,
|
|
@@ -846,11 +938,11 @@ var SplitterComponent = React.forwardRef(function (_ref, ref) {
|
|
|
846
938
|
environment: window,
|
|
847
939
|
onChange: function onChange(valueNow) {
|
|
848
940
|
if (isRow) {
|
|
849
|
-
return paneProviderContext
|
|
941
|
+
return paneProviderContext === null || paneProviderContext === void 0 ? void 0 : paneProviderContext.setRowValue(orientation === 'top', layoutKey, valueNow / pixelsPerFr);
|
|
850
942
|
}
|
|
851
|
-
return paneProviderContext
|
|
943
|
+
return paneProviderContext === null || paneProviderContext === void 0 ? void 0 : paneProviderContext.setColumnValue(orientation === 'start', layoutKey, valueNow / pixelsPerFr);
|
|
852
944
|
},
|
|
853
|
-
valueNow:
|
|
945
|
+
valueNow: value
|
|
854
946
|
}),
|
|
855
947
|
getSeparatorProps = _useSplitter.getSeparatorProps,
|
|
856
948
|
getPrimaryPaneProps = _useSplitter.getPrimaryPaneProps;
|
|
@@ -862,11 +954,31 @@ var SplitterComponent = React.forwardRef(function (_ref, ref) {
|
|
|
862
954
|
var separatorProps = getSeparatorProps({
|
|
863
955
|
'aria-controls': paneContext.id
|
|
864
956
|
});
|
|
865
|
-
|
|
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]);
|
|
963
|
+
return React__default["default"].createElement(PaneSplitterContext.Provider, {
|
|
964
|
+
value: React.useMemo(function () {
|
|
965
|
+
return {
|
|
966
|
+
orientation: orientation,
|
|
967
|
+
layoutKey: layoutKey,
|
|
968
|
+
min: min,
|
|
969
|
+
max: max,
|
|
970
|
+
valueNow: valueInFr,
|
|
971
|
+
size: size,
|
|
972
|
+
isRow: isRow
|
|
973
|
+
};
|
|
974
|
+
}, [orientation, layoutKey, min, max, valueInFr, size, isRow])
|
|
975
|
+
}, React__default["default"].createElement(StyledPaneSplitter, _extends({
|
|
976
|
+
isHovered: isHovered,
|
|
866
977
|
orientation: orientation
|
|
867
978
|
}, separatorProps, props, {
|
|
979
|
+
onMouseOver: onMouseOver,
|
|
868
980
|
ref: mergeRefs__default["default"]([separatorProps.ref, ref])
|
|
869
|
-
}));
|
|
981
|
+
})));
|
|
870
982
|
});
|
|
871
983
|
SplitterComponent.displayName = 'Pane.Splitter';
|
|
872
984
|
SplitterComponent.propTypes = {
|
|
@@ -888,6 +1000,76 @@ var ContentComponent = React.forwardRef(function (props, ref) {
|
|
|
888
1000
|
ContentComponent.displayName = 'Pane.Content';
|
|
889
1001
|
var Content = ContentComponent;
|
|
890
1002
|
|
|
1003
|
+
var SplitterButtonComponent = React.forwardRef(function (props, ref) {
|
|
1004
|
+
var label = props.label,
|
|
1005
|
+
defaultPlacement = props.placement;
|
|
1006
|
+
var _usePaneSplitterConte = usePaneSplitterContext(),
|
|
1007
|
+
orientation = _usePaneSplitterConte.orientation,
|
|
1008
|
+
layoutKey = _usePaneSplitterConte.layoutKey,
|
|
1009
|
+
min = _usePaneSplitterConte.min,
|
|
1010
|
+
max = _usePaneSplitterConte.max,
|
|
1011
|
+
isRow = _usePaneSplitterConte.isRow,
|
|
1012
|
+
valueNow = _usePaneSplitterConte.valueNow,
|
|
1013
|
+
size = _usePaneSplitterConte.size,
|
|
1014
|
+
providerId = _usePaneSplitterConte.providerId;
|
|
1015
|
+
var paneProviderContext = usePaneProviderContextData(providerId);
|
|
1016
|
+
var isTop = orientation === 'top';
|
|
1017
|
+
var isStart = orientation === 'start';
|
|
1018
|
+
var isMin = valueNow === min;
|
|
1019
|
+
var placement = defaultPlacement;
|
|
1020
|
+
if (!defaultPlacement) {
|
|
1021
|
+
if (isRow) {
|
|
1022
|
+
placement = 'center';
|
|
1023
|
+
} else {
|
|
1024
|
+
placement = 'start';
|
|
1025
|
+
}
|
|
1026
|
+
}
|
|
1027
|
+
var setValue = React.useCallback(function (value) {
|
|
1028
|
+
if (isRow) {
|
|
1029
|
+
paneProviderContext.setRowValue(isTop, layoutKey, value);
|
|
1030
|
+
} else {
|
|
1031
|
+
paneProviderContext.setColumnValue(isStart, layoutKey, value);
|
|
1032
|
+
}
|
|
1033
|
+
}, [isRow, isTop, isStart, layoutKey, paneProviderContext]);
|
|
1034
|
+
var onClick = containerUtilities.composeEventHandlers(props.onClick, function () {
|
|
1035
|
+
if (isMin) {
|
|
1036
|
+
setValue(max);
|
|
1037
|
+
} else {
|
|
1038
|
+
setValue(min);
|
|
1039
|
+
}
|
|
1040
|
+
});
|
|
1041
|
+
var onKeyDown = containerUtilities.composeEventHandlers(props.onKeyDown, function (event) {
|
|
1042
|
+
return event.stopPropagation();
|
|
1043
|
+
}
|
|
1044
|
+
);
|
|
1045
|
+
var onMouseDown = containerUtilities.composeEventHandlers(props.onMouseDown, function (event) {
|
|
1046
|
+
return event.stopPropagation();
|
|
1047
|
+
}
|
|
1048
|
+
);
|
|
1049
|
+
return React__default["default"].createElement(reactTooltips.Tooltip, {
|
|
1050
|
+
content: label,
|
|
1051
|
+
style: {
|
|
1052
|
+
cursor: 'default'
|
|
1053
|
+
},
|
|
1054
|
+
onMouseDown: function onMouseDown(e) {
|
|
1055
|
+
return e.stopPropagation();
|
|
1056
|
+
}
|
|
1057
|
+
}, React__default["default"].createElement(StyledPaneSplitterButton, _extends({
|
|
1058
|
+
"aria-label": label
|
|
1059
|
+
}, props, {
|
|
1060
|
+
placement: placement,
|
|
1061
|
+
orientation: orientation,
|
|
1062
|
+
isRotated: isMin,
|
|
1063
|
+
splitterSize: size || 0,
|
|
1064
|
+
ref: ref,
|
|
1065
|
+
onClick: onClick,
|
|
1066
|
+
onKeyDown: onKeyDown,
|
|
1067
|
+
onMouseDown: onMouseDown
|
|
1068
|
+
})));
|
|
1069
|
+
});
|
|
1070
|
+
SplitterButtonComponent.displayName = 'Pane.SplitterButton';
|
|
1071
|
+
var SplitterButton = SplitterButtonComponent;
|
|
1072
|
+
|
|
891
1073
|
var _excluded = ["children"];
|
|
892
1074
|
var PaneComponent = React.forwardRef(function (_ref, ref) {
|
|
893
1075
|
var children = _ref.children,
|
|
@@ -915,6 +1097,7 @@ PaneComponent.displayName = 'Pane';
|
|
|
915
1097
|
var Pane = PaneComponent;
|
|
916
1098
|
Pane.Content = Content;
|
|
917
1099
|
Pane.Splitter = Splitter;
|
|
1100
|
+
Pane.SplitterButton = SplitterButton;
|
|
918
1101
|
|
|
919
1102
|
exports.ARRAY_ALIGN_ITEMS = ALIGN_ITEMS;
|
|
920
1103
|
exports.ARRAY_ALIGN_SELF = ALIGN_SELF;
|
package/dist/index.esm.js
CHANGED
|
@@ -8,11 +8,13 @@
|
|
|
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
|
-
import {
|
|
13
|
+
import { ChevronButton } from '@zendeskgarden/react-buttons';
|
|
14
|
+
import { useId, composeEventHandlers } from '@zendeskgarden/container-utilities';
|
|
14
15
|
import mergeRefs from 'react-merge-refs';
|
|
15
16
|
import { SplitterPosition, SplitterOrientation, useSplitter, SplitterType } from '@zendeskgarden/container-splitter';
|
|
17
|
+
import { Tooltip } from '@zendeskgarden/react-tooltips';
|
|
16
18
|
|
|
17
19
|
function ownKeys(object, enumerableOnly) {
|
|
18
20
|
var keys = Object.keys(object);
|
|
@@ -177,8 +179,8 @@ var SPACE = [false, 'xxs', 'xs', 'sm', 'md', 'lg', 'xl', 'xxl'];
|
|
|
177
179
|
var WRAP = ['nowrap', 'wrap', 'wrap-reverse'];
|
|
178
180
|
var ORIENTATION = ['top', 'bottom', 'start', 'end'];
|
|
179
181
|
|
|
180
|
-
var COMPONENT_ID$
|
|
181
|
-
var colorStyles$
|
|
182
|
+
var COMPONENT_ID$6 = 'grid.col';
|
|
183
|
+
var colorStyles$4 = function colorStyles(props) {
|
|
182
184
|
var backgroundColor = getColor('primaryHue', 600, props.theme, 0.1);
|
|
183
185
|
return css(["background-clip:content-box;background-color:", ";"], backgroundColor);
|
|
184
186
|
};
|
|
@@ -223,22 +225,22 @@ var flexStyles$1 = function flexStyles(size, alignSelf, textAlign, offset, order
|
|
|
223
225
|
var mediaStyles$1 = function mediaStyles(minWidth, size, alignSelf, textAlign, offset, order, props) {
|
|
224
226
|
return css(["@media (min-width:", "){", ";}"], minWidth, flexStyles$1(size, alignSelf, textAlign, offset, order, props));
|
|
225
227
|
};
|
|
226
|
-
var sizeStyles$
|
|
228
|
+
var sizeStyles$4 = function sizeStyles(props) {
|
|
227
229
|
var padding = props.gutters ? math("".concat(props.theme.space[props.gutters], " / 2")) : 0;
|
|
228
230
|
return css(["padding-right:", ";padding-left:", ";"], padding, padding);
|
|
229
231
|
};
|
|
230
232
|
var StyledCol = styled.div.attrs({
|
|
231
|
-
'data-garden-id': COMPONENT_ID$
|
|
232
|
-
'data-garden-version': '8.
|
|
233
|
+
'data-garden-id': COMPONENT_ID$6,
|
|
234
|
+
'data-garden-version': '8.53.2'
|
|
233
235
|
}).withConfig({
|
|
234
236
|
displayName: "StyledCol",
|
|
235
237
|
componentId: "sc-inuw62-0"
|
|
236
238
|
})(["box-sizing:border-box;width:100%;", ";", ";", ";", ";", ";", ";", ";", ";", ";"], function (props) {
|
|
237
239
|
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);
|
|
238
240
|
}, function (props) {
|
|
239
|
-
return sizeStyles$
|
|
241
|
+
return sizeStyles$4(props);
|
|
240
242
|
}, function (props) {
|
|
241
|
-
return props.debug && colorStyles$
|
|
243
|
+
return props.debug && colorStyles$4(props);
|
|
242
244
|
}, function (props) {
|
|
243
245
|
return mediaStyles$1(props.theme.breakpoints.xs, props.xs, props.alignSelfXs, props.textAlignXs, props.offsetXs, props.orderXs, props);
|
|
244
246
|
}, function (props) {
|
|
@@ -250,45 +252,45 @@ var StyledCol = styled.div.attrs({
|
|
|
250
252
|
}, function (props) {
|
|
251
253
|
return mediaStyles$1(props.theme.breakpoints.xl, props.xl, props.alignSelfXl, props.textAlignXl, props.offsetXl, props.orderXl, props);
|
|
252
254
|
}, function (props) {
|
|
253
|
-
return retrieveComponentStyles(COMPONENT_ID$
|
|
255
|
+
return retrieveComponentStyles(COMPONENT_ID$6, props);
|
|
254
256
|
});
|
|
255
257
|
StyledCol.defaultProps = {
|
|
256
258
|
columns: 12,
|
|
257
259
|
theme: DEFAULT_THEME
|
|
258
260
|
};
|
|
259
261
|
|
|
260
|
-
var COMPONENT_ID$
|
|
261
|
-
var colorStyles$
|
|
262
|
+
var COMPONENT_ID$5 = 'grid.grid';
|
|
263
|
+
var colorStyles$3 = function colorStyles(props) {
|
|
262
264
|
var borderColor = getColor(props.theme.palette.crimson, 400, props.theme, 0.5);
|
|
263
265
|
var borderWidth = math("".concat(props.theme.borderWidths.sm, " * 2"));
|
|
264
266
|
return css(["box-shadow:-", " 0 0 0 ", ",", " 0 0 0 ", ";"], borderWidth, borderColor, borderWidth, borderColor);
|
|
265
267
|
};
|
|
266
|
-
var sizeStyles$
|
|
268
|
+
var sizeStyles$3 = function sizeStyles(props) {
|
|
267
269
|
var padding = props.gutters ? math("".concat(props.theme.space[props.gutters], " / 2")) : 0;
|
|
268
270
|
return css(["padding-right:", ";padding-left:", ";"], padding, padding);
|
|
269
271
|
};
|
|
270
272
|
var StyledGrid = styled.div.attrs({
|
|
271
|
-
'data-garden-id': COMPONENT_ID$
|
|
272
|
-
'data-garden-version': '8.
|
|
273
|
+
'data-garden-id': COMPONENT_ID$5,
|
|
274
|
+
'data-garden-version': '8.53.2'
|
|
273
275
|
}).withConfig({
|
|
274
276
|
displayName: "StyledGrid",
|
|
275
277
|
componentId: "sc-oxgg5i-0"
|
|
276
278
|
})(["direction:", ";margin-right:auto;margin-left:auto;width:100%;box-sizing:border-box;", ";", ";", ";"], function (props) {
|
|
277
279
|
return props.theme.rtl && 'rtl';
|
|
278
280
|
}, function (props) {
|
|
279
|
-
return sizeStyles$
|
|
281
|
+
return sizeStyles$3(props);
|
|
280
282
|
}, function (props) {
|
|
281
|
-
return props.debug && colorStyles$
|
|
283
|
+
return props.debug && colorStyles$3(props);
|
|
282
284
|
}, function (props) {
|
|
283
|
-
return retrieveComponentStyles(COMPONENT_ID$
|
|
285
|
+
return retrieveComponentStyles(COMPONENT_ID$5, props);
|
|
284
286
|
});
|
|
285
287
|
StyledGrid.defaultProps = {
|
|
286
288
|
gutters: 'md',
|
|
287
289
|
theme: DEFAULT_THEME
|
|
288
290
|
};
|
|
289
291
|
|
|
290
|
-
var COMPONENT_ID$
|
|
291
|
-
var colorStyles$
|
|
292
|
+
var COMPONENT_ID$4 = 'grid.row';
|
|
293
|
+
var colorStyles$2 = function colorStyles(props) {
|
|
292
294
|
var borderColor = getColor(props.theme.palette.mint, 600, props.theme, 0.5);
|
|
293
295
|
var borderWidth = props.theme.borderWidths.sm;
|
|
294
296
|
return css(["box-shadow:inset 0 ", " 0 0 ", ",inset 0 -", " 0 0 ", ";"], borderWidth, borderColor, borderWidth, borderColor);
|
|
@@ -313,22 +315,22 @@ var flexStyles = function flexStyles(alignItems, justifyContent, wrap) {
|
|
|
313
315
|
var mediaStyles = function mediaStyles(minWidth, alignItems, justifyContent, wrap) {
|
|
314
316
|
return css(["@media (min-width:", "){", ";}"], minWidth, flexStyles(alignItems, justifyContent, wrap));
|
|
315
317
|
};
|
|
316
|
-
var sizeStyles$
|
|
318
|
+
var sizeStyles$2 = function sizeStyles(props) {
|
|
317
319
|
var margin = props.gutters ? math("".concat(props.theme.space[props.gutters], " / 2")) : 0;
|
|
318
320
|
return css(["margin-right:-", ";margin-left:-", ";"], margin, margin);
|
|
319
321
|
};
|
|
320
322
|
var StyledRow = styled.div.attrs({
|
|
321
|
-
'data-garden-id': COMPONENT_ID$
|
|
322
|
-
'data-garden-version': '8.
|
|
323
|
+
'data-garden-id': COMPONENT_ID$4,
|
|
324
|
+
'data-garden-version': '8.53.2'
|
|
323
325
|
}).withConfig({
|
|
324
326
|
displayName: "StyledRow",
|
|
325
327
|
componentId: "sc-xjsdg1-0"
|
|
326
328
|
})(["display:flex;box-sizing:border-box;", " ", ";", ";", ";", ";", ";", ";", ";", ";"], function (props) {
|
|
327
329
|
return flexStyles(props.alignItems, props.justifyContent, props.wrapAll);
|
|
328
330
|
}, function (props) {
|
|
329
|
-
return sizeStyles$
|
|
331
|
+
return sizeStyles$2(props);
|
|
330
332
|
}, function (props) {
|
|
331
|
-
return props.debug && colorStyles$
|
|
333
|
+
return props.debug && colorStyles$2(props);
|
|
332
334
|
}, function (props) {
|
|
333
335
|
return mediaStyles(props.theme.breakpoints.xs, props.alignItemsXs, props.justifyContentXs, props.wrapXs);
|
|
334
336
|
}, function (props) {
|
|
@@ -340,51 +342,52 @@ var StyledRow = styled.div.attrs({
|
|
|
340
342
|
}, function (props) {
|
|
341
343
|
return mediaStyles(props.theme.breakpoints.xl, props.alignItemsXl, props.justifyContentXl, props.wrapXl);
|
|
342
344
|
}, function (props) {
|
|
343
|
-
return retrieveComponentStyles(COMPONENT_ID$
|
|
345
|
+
return retrieveComponentStyles(COMPONENT_ID$4, props);
|
|
344
346
|
});
|
|
345
347
|
StyledRow.defaultProps = {
|
|
346
348
|
wrapAll: 'wrap',
|
|
347
349
|
theme: DEFAULT_THEME
|
|
348
350
|
};
|
|
349
351
|
|
|
350
|
-
var COMPONENT_ID$
|
|
352
|
+
var COMPONENT_ID$3 = 'pane';
|
|
351
353
|
var StyledPane = styled.div.attrs({
|
|
352
|
-
'data-garden-id': COMPONENT_ID$
|
|
353
|
-
'data-garden-version': '8.
|
|
354
|
+
'data-garden-id': COMPONENT_ID$3,
|
|
355
|
+
'data-garden-version': '8.53.2'
|
|
354
356
|
}).withConfig({
|
|
355
357
|
displayName: "StyledPane",
|
|
356
358
|
componentId: "sc-1ltjst7-0"
|
|
357
359
|
})(["position:relative;min-width:0;min-height:0;", ";"], function (props) {
|
|
358
|
-
return retrieveComponentStyles(COMPONENT_ID$
|
|
360
|
+
return retrieveComponentStyles(COMPONENT_ID$3, props);
|
|
359
361
|
});
|
|
360
362
|
StyledPane.defaultProps = {
|
|
361
363
|
theme: DEFAULT_THEME
|
|
362
364
|
};
|
|
363
365
|
|
|
364
|
-
var COMPONENT_ID$
|
|
366
|
+
var COMPONENT_ID$2 = 'pane.content';
|
|
365
367
|
var StyledPaneContent = styled.div.attrs({
|
|
366
|
-
'data-garden-id': COMPONENT_ID$
|
|
367
|
-
'data-garden-version': '8.
|
|
368
|
+
'data-garden-id': COMPONENT_ID$2,
|
|
369
|
+
'data-garden-version': '8.53.2'
|
|
368
370
|
}).withConfig({
|
|
369
371
|
displayName: "StyledPaneContent",
|
|
370
372
|
componentId: "sc-1b38mbh-0"
|
|
371
373
|
})(["height:100%;overflow:auto;", ";"], function (props) {
|
|
372
|
-
return retrieveComponentStyles(COMPONENT_ID$
|
|
374
|
+
return retrieveComponentStyles(COMPONENT_ID$2, props);
|
|
373
375
|
});
|
|
374
376
|
StyledPaneContent.defaultProps = {
|
|
375
377
|
theme: DEFAULT_THEME
|
|
376
378
|
};
|
|
377
379
|
|
|
378
|
-
var COMPONENT_ID = 'pane.splitter';
|
|
379
|
-
var colorStyles = function colorStyles(props) {
|
|
380
|
+
var COMPONENT_ID$1 = 'pane.splitter';
|
|
381
|
+
var colorStyles$1 = function colorStyles(props) {
|
|
380
382
|
var color = getColor('neutralHue', 300, props.theme);
|
|
381
383
|
var hoverColor = getColor('primaryHue', 600, props.theme);
|
|
382
384
|
var activeColor = getColor('primaryHue', 800, props.theme);
|
|
383
385
|
var boxShadow = props.theme.shadows.md(rgba(hoverColor, 0.35));
|
|
384
|
-
return css(["&::before{background-color:", ";}&:hover::before
|
|
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);
|
|
385
387
|
};
|
|
386
|
-
var sizeStyles = function sizeStyles(props) {
|
|
388
|
+
var sizeStyles$1 = function sizeStyles(props) {
|
|
387
389
|
var size = math("".concat(props.theme.shadowWidths.md, " * 2"));
|
|
390
|
+
var separatorSize = math("".concat(props.theme.borderWidths.sm, " * 2"));
|
|
388
391
|
var offset = math("-".concat(size, " / 2"));
|
|
389
392
|
var cursor;
|
|
390
393
|
var top;
|
|
@@ -439,21 +442,90 @@ var sizeStyles = function sizeStyles(props) {
|
|
|
439
442
|
}
|
|
440
443
|
break;
|
|
441
444
|
}
|
|
442
|
-
|
|
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);
|
|
443
447
|
};
|
|
444
448
|
var StyledPaneSplitter = styled.div.attrs({
|
|
445
|
-
'data-garden-id': COMPONENT_ID,
|
|
446
|
-
'data-garden-version': '8.
|
|
449
|
+
'data-garden-id': COMPONENT_ID$1,
|
|
450
|
+
'data-garden-version': '8.53.2'
|
|
447
451
|
}).withConfig({
|
|
448
452
|
displayName: "StyledPaneSplitter",
|
|
449
453
|
componentId: "sc-jylemn-0"
|
|
450
|
-
})(["position:absolute;z-index:1;user-select:none;", ";&:
|
|
451
|
-
return retrieveComponentStyles(COMPONENT_ID, 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) {
|
|
455
|
+
return retrieveComponentStyles(COMPONENT_ID$1, props);
|
|
452
456
|
});
|
|
453
457
|
StyledPaneSplitter.defaultProps = {
|
|
454
458
|
theme: DEFAULT_THEME
|
|
455
459
|
};
|
|
456
460
|
|
|
461
|
+
var COMPONENT_ID = 'pane.splitter_button';
|
|
462
|
+
var transformStyles = function transformStyles(props) {
|
|
463
|
+
var degrees = 0;
|
|
464
|
+
if (props.isRotated) {
|
|
465
|
+
degrees = props.theme.rtl ? -180 : 180;
|
|
466
|
+
}
|
|
467
|
+
if (props.orientation === 'end') {
|
|
468
|
+
degrees += props.theme.rtl ? -90 : 90;
|
|
469
|
+
} else if (props.orientation === 'start') {
|
|
470
|
+
degrees += props.theme.rtl ? 90 : -90;
|
|
471
|
+
} else if (props.orientation === 'bottom') {
|
|
472
|
+
degrees += 180;
|
|
473
|
+
}
|
|
474
|
+
return css(["& > svg{transform:rotate(", "deg);}"], degrees);
|
|
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
|
+
};
|
|
482
|
+
var sizeStyles = function sizeStyles(props) {
|
|
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';
|
|
485
|
+
var isVertical = props.orientation === 'start' || props.orientation === 'end';
|
|
486
|
+
var top;
|
|
487
|
+
var left;
|
|
488
|
+
var right;
|
|
489
|
+
var bottom;
|
|
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
|
+
}
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
return css(["display:", ";top:", ";right:", ";bottom:", ";left:", ";width:", ";min-width:", ";height:", ";"], display, top, right, bottom, left, size, size, size);
|
|
510
|
+
};
|
|
511
|
+
var StyledPaneSplitterButton = styled(ChevronButton).attrs({
|
|
512
|
+
'data-garden-id': COMPONENT_ID,
|
|
513
|
+
'data-garden-version': '8.53.2',
|
|
514
|
+
isBasic: true,
|
|
515
|
+
isPill: true,
|
|
516
|
+
size: 'small'
|
|
517
|
+
}).withConfig({
|
|
518
|
+
displayName: "StyledPaneSplitterButton",
|
|
519
|
+
componentId: "sc-zh032e-0"
|
|
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) {
|
|
521
|
+
return props.theme.colors.background;
|
|
522
|
+
}, function (props) {
|
|
523
|
+
return retrieveComponentStyles(COMPONENT_ID, props);
|
|
524
|
+
});
|
|
525
|
+
StyledPaneSplitterButton.defaultProps = {
|
|
526
|
+
theme: DEFAULT_THEME
|
|
527
|
+
};
|
|
528
|
+
|
|
457
529
|
var GridContext = createContext({
|
|
458
530
|
gutters: 'md'
|
|
459
531
|
});
|
|
@@ -693,8 +765,8 @@ var PaneProvider = function PaneProvider(_ref3) {
|
|
|
693
765
|
var setColumnValue = useCallback(function (isStart, splitterId, value) {
|
|
694
766
|
var columns = layoutIndices.columns,
|
|
695
767
|
columnArray = layoutIndices.columnArray;
|
|
696
|
-
var stealFromTraversal = isStart ?
|
|
697
|
-
var addToTraversal =
|
|
768
|
+
var stealFromTraversal = isStart ? -1 : 1;
|
|
769
|
+
var addToTraversal = 0;
|
|
698
770
|
setColumnsTrack(function (state) {
|
|
699
771
|
var stealFromIndex = columns[splitterId] + stealFromTraversal;
|
|
700
772
|
var addToIndex = columns[splitterId] + addToTraversal;
|
|
@@ -792,9 +864,22 @@ var usePaneContext = function usePaneContext() {
|
|
|
792
864
|
return useContext(PaneContext);
|
|
793
865
|
};
|
|
794
866
|
|
|
867
|
+
var PaneSplitterContext = createContext({
|
|
868
|
+
orientation: 'start',
|
|
869
|
+
min: 0,
|
|
870
|
+
max: 0,
|
|
871
|
+
layoutKey: '',
|
|
872
|
+
valueNow: 0,
|
|
873
|
+
size: 0,
|
|
874
|
+
isRow: false
|
|
875
|
+
});
|
|
876
|
+
var usePaneSplitterContext = function usePaneSplitterContext() {
|
|
877
|
+
return useContext(PaneSplitterContext);
|
|
878
|
+
};
|
|
879
|
+
|
|
795
880
|
var _excluded$1 = ["providerId", "layoutKey", "min", "max", "orientation"];
|
|
796
881
|
var orientationToPosition = {
|
|
797
|
-
start: SplitterPosition.
|
|
882
|
+
start: SplitterPosition.LEADS,
|
|
798
883
|
end: SplitterPosition.TRAILS,
|
|
799
884
|
top: SplitterPosition.LEADS,
|
|
800
885
|
bottom: SplitterPosition.TRAILS
|
|
@@ -812,6 +897,7 @@ var orientationToDimension = {
|
|
|
812
897
|
bottom: 'rows'
|
|
813
898
|
};
|
|
814
899
|
var SplitterComponent = forwardRef(function (_ref, ref) {
|
|
900
|
+
var _separatorProps$ref$c, _separatorProps$ref$c2;
|
|
815
901
|
var providerId = _ref.providerId,
|
|
816
902
|
layoutKey = _ref.layoutKey,
|
|
817
903
|
min = _ref.min,
|
|
@@ -821,10 +907,16 @@ var SplitterComponent = forwardRef(function (_ref, ref) {
|
|
|
821
907
|
var paneProviderContext = usePaneProviderContextData(providerId);
|
|
822
908
|
var paneContext = usePaneContext();
|
|
823
909
|
var themeContext = useContext(ThemeContext);
|
|
910
|
+
var _useState = useState(false),
|
|
911
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
912
|
+
isHovered = _useState2[0],
|
|
913
|
+
setIsHovered = _useState2[1];
|
|
824
914
|
var position = orientationToPosition[orientation];
|
|
825
915
|
var isRow = orientationToDimension[orientation] === 'rows';
|
|
826
916
|
var splitterOrientation = paneToSplitterOrientation[orientation];
|
|
827
917
|
var pixelsPerFr = paneProviderContext ? paneProviderContext.pixelsPerFr[orientationToDimension[orientation]] : 0;
|
|
918
|
+
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);
|
|
919
|
+
var valueInFr = isRow ? paneProviderContext === null || paneProviderContext === void 0 ? void 0 : paneProviderContext.getRowValue(layoutKey) : paneProviderContext === null || paneProviderContext === void 0 ? void 0 : paneProviderContext.getColumnValue(layoutKey);
|
|
828
920
|
var _useSplitter = useSplitter({
|
|
829
921
|
type: SplitterType.VARIABLE,
|
|
830
922
|
orientation: splitterOrientation,
|
|
@@ -835,11 +927,11 @@ var SplitterComponent = forwardRef(function (_ref, ref) {
|
|
|
835
927
|
environment: window,
|
|
836
928
|
onChange: function onChange(valueNow) {
|
|
837
929
|
if (isRow) {
|
|
838
|
-
return paneProviderContext
|
|
930
|
+
return paneProviderContext === null || paneProviderContext === void 0 ? void 0 : paneProviderContext.setRowValue(orientation === 'top', layoutKey, valueNow / pixelsPerFr);
|
|
839
931
|
}
|
|
840
|
-
return paneProviderContext
|
|
932
|
+
return paneProviderContext === null || paneProviderContext === void 0 ? void 0 : paneProviderContext.setColumnValue(orientation === 'start', layoutKey, valueNow / pixelsPerFr);
|
|
841
933
|
},
|
|
842
|
-
valueNow:
|
|
934
|
+
valueNow: value
|
|
843
935
|
}),
|
|
844
936
|
getSeparatorProps = _useSplitter.getSeparatorProps,
|
|
845
937
|
getPrimaryPaneProps = _useSplitter.getPrimaryPaneProps;
|
|
@@ -851,11 +943,31 @@ var SplitterComponent = forwardRef(function (_ref, ref) {
|
|
|
851
943
|
var separatorProps = getSeparatorProps({
|
|
852
944
|
'aria-controls': paneContext.id
|
|
853
945
|
});
|
|
854
|
-
|
|
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]);
|
|
952
|
+
return React.createElement(PaneSplitterContext.Provider, {
|
|
953
|
+
value: useMemo(function () {
|
|
954
|
+
return {
|
|
955
|
+
orientation: orientation,
|
|
956
|
+
layoutKey: layoutKey,
|
|
957
|
+
min: min,
|
|
958
|
+
max: max,
|
|
959
|
+
valueNow: valueInFr,
|
|
960
|
+
size: size,
|
|
961
|
+
isRow: isRow
|
|
962
|
+
};
|
|
963
|
+
}, [orientation, layoutKey, min, max, valueInFr, size, isRow])
|
|
964
|
+
}, React.createElement(StyledPaneSplitter, _extends({
|
|
965
|
+
isHovered: isHovered,
|
|
855
966
|
orientation: orientation
|
|
856
967
|
}, separatorProps, props, {
|
|
968
|
+
onMouseOver: onMouseOver,
|
|
857
969
|
ref: mergeRefs([separatorProps.ref, ref])
|
|
858
|
-
}));
|
|
970
|
+
})));
|
|
859
971
|
});
|
|
860
972
|
SplitterComponent.displayName = 'Pane.Splitter';
|
|
861
973
|
SplitterComponent.propTypes = {
|
|
@@ -877,6 +989,76 @@ var ContentComponent = forwardRef(function (props, ref) {
|
|
|
877
989
|
ContentComponent.displayName = 'Pane.Content';
|
|
878
990
|
var Content = ContentComponent;
|
|
879
991
|
|
|
992
|
+
var SplitterButtonComponent = forwardRef(function (props, ref) {
|
|
993
|
+
var label = props.label,
|
|
994
|
+
defaultPlacement = props.placement;
|
|
995
|
+
var _usePaneSplitterConte = usePaneSplitterContext(),
|
|
996
|
+
orientation = _usePaneSplitterConte.orientation,
|
|
997
|
+
layoutKey = _usePaneSplitterConte.layoutKey,
|
|
998
|
+
min = _usePaneSplitterConte.min,
|
|
999
|
+
max = _usePaneSplitterConte.max,
|
|
1000
|
+
isRow = _usePaneSplitterConte.isRow,
|
|
1001
|
+
valueNow = _usePaneSplitterConte.valueNow,
|
|
1002
|
+
size = _usePaneSplitterConte.size,
|
|
1003
|
+
providerId = _usePaneSplitterConte.providerId;
|
|
1004
|
+
var paneProviderContext = usePaneProviderContextData(providerId);
|
|
1005
|
+
var isTop = orientation === 'top';
|
|
1006
|
+
var isStart = orientation === 'start';
|
|
1007
|
+
var isMin = valueNow === min;
|
|
1008
|
+
var placement = defaultPlacement;
|
|
1009
|
+
if (!defaultPlacement) {
|
|
1010
|
+
if (isRow) {
|
|
1011
|
+
placement = 'center';
|
|
1012
|
+
} else {
|
|
1013
|
+
placement = 'start';
|
|
1014
|
+
}
|
|
1015
|
+
}
|
|
1016
|
+
var setValue = useCallback(function (value) {
|
|
1017
|
+
if (isRow) {
|
|
1018
|
+
paneProviderContext.setRowValue(isTop, layoutKey, value);
|
|
1019
|
+
} else {
|
|
1020
|
+
paneProviderContext.setColumnValue(isStart, layoutKey, value);
|
|
1021
|
+
}
|
|
1022
|
+
}, [isRow, isTop, isStart, layoutKey, paneProviderContext]);
|
|
1023
|
+
var onClick = composeEventHandlers(props.onClick, function () {
|
|
1024
|
+
if (isMin) {
|
|
1025
|
+
setValue(max);
|
|
1026
|
+
} else {
|
|
1027
|
+
setValue(min);
|
|
1028
|
+
}
|
|
1029
|
+
});
|
|
1030
|
+
var onKeyDown = composeEventHandlers(props.onKeyDown, function (event) {
|
|
1031
|
+
return event.stopPropagation();
|
|
1032
|
+
}
|
|
1033
|
+
);
|
|
1034
|
+
var onMouseDown = composeEventHandlers(props.onMouseDown, function (event) {
|
|
1035
|
+
return event.stopPropagation();
|
|
1036
|
+
}
|
|
1037
|
+
);
|
|
1038
|
+
return React.createElement(Tooltip, {
|
|
1039
|
+
content: label,
|
|
1040
|
+
style: {
|
|
1041
|
+
cursor: 'default'
|
|
1042
|
+
},
|
|
1043
|
+
onMouseDown: function onMouseDown(e) {
|
|
1044
|
+
return e.stopPropagation();
|
|
1045
|
+
}
|
|
1046
|
+
}, React.createElement(StyledPaneSplitterButton, _extends({
|
|
1047
|
+
"aria-label": label
|
|
1048
|
+
}, props, {
|
|
1049
|
+
placement: placement,
|
|
1050
|
+
orientation: orientation,
|
|
1051
|
+
isRotated: isMin,
|
|
1052
|
+
splitterSize: size || 0,
|
|
1053
|
+
ref: ref,
|
|
1054
|
+
onClick: onClick,
|
|
1055
|
+
onKeyDown: onKeyDown,
|
|
1056
|
+
onMouseDown: onMouseDown
|
|
1057
|
+
})));
|
|
1058
|
+
});
|
|
1059
|
+
SplitterButtonComponent.displayName = 'Pane.SplitterButton';
|
|
1060
|
+
var SplitterButton = SplitterButtonComponent;
|
|
1061
|
+
|
|
880
1062
|
var _excluded = ["children"];
|
|
881
1063
|
var PaneComponent = forwardRef(function (_ref, ref) {
|
|
882
1064
|
var children = _ref.children,
|
|
@@ -904,5 +1086,6 @@ PaneComponent.displayName = 'Pane';
|
|
|
904
1086
|
var Pane = PaneComponent;
|
|
905
1087
|
Pane.Content = Content;
|
|
906
1088
|
Pane.Splitter = Splitter;
|
|
1089
|
+
Pane.SplitterButton = SplitterButton;
|
|
907
1090
|
|
|
908
1091
|
export { ALIGN_ITEMS as ARRAY_ALIGN_ITEMS, ALIGN_SELF as ARRAY_ALIGN_SELF, DIRECTION as ARRAY_DIRECTION, JUSTIFY_CONTENT as ARRAY_JUSTIFY_CONTENT, SPACE as ARRAY_SPACE, TEXT_ALIGN as ARRAY_TEXT_ALIGN, WRAP as ARRAY_WRAP, Col, Grid, Pane, PaneProvider, Row };
|
|
@@ -7,10 +7,12 @@
|
|
|
7
7
|
import React from 'react';
|
|
8
8
|
import { Splitter } from './components/Splitter';
|
|
9
9
|
import { Content } from './components/Content';
|
|
10
|
+
import { SplitterButton } from './components/SplitterButton';
|
|
10
11
|
/**
|
|
11
12
|
* @extends HTMLAttributes<HTMLDivElement>
|
|
12
13
|
*/
|
|
13
14
|
export declare const Pane: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>> & {
|
|
14
15
|
Content: typeof Content;
|
|
15
16
|
Splitter: typeof Splitter;
|
|
17
|
+
SplitterButton: typeof SplitterButton;
|
|
16
18
|
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
import React from 'react';
|
|
8
|
+
import { ISplitterButtonProps } from '../../../types';
|
|
9
|
+
/**
|
|
10
|
+
* @extends ButtonHTMLAttributes<HTMLButtonElement>
|
|
11
|
+
*/
|
|
12
|
+
export declare const SplitterButton: React.ForwardRefExoticComponent<ISplitterButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
package/dist/typings/index.d.ts
CHANGED
|
@@ -10,4 +10,4 @@ export { Row } from './elements/Row';
|
|
|
10
10
|
export { PaneProvider } from './elements/pane/PaneProvider';
|
|
11
11
|
export { Pane } from './elements/pane/Pane';
|
|
12
12
|
export { ALIGN_ITEMS as ARRAY_ALIGN_ITEMS, ALIGN_SELF as ARRAY_ALIGN_SELF, DIRECTION as ARRAY_DIRECTION, JUSTIFY_CONTENT as ARRAY_JUSTIFY_CONTENT, TEXT_ALIGN as ARRAY_TEXT_ALIGN, SPACE as ARRAY_SPACE, WRAP as ARRAY_WRAP } from './types';
|
|
13
|
-
export type { IPaneProviderProps, ISplitterProps, IColProps, IGridProps, IRowProps, AlignItems as ALIGN_ITEMS, AlignSelf as ALIGN_SELF, Direction as DIRECTION, JustifyContent as JUSTIFY_CONTENT, TextAlign as TEXT_ALIGN, GridNumber as GRID_NUMBER, Breakpoint as BREAKPOINT, Space as SPACE, Wrap as WRAP } from './types';
|
|
13
|
+
export type { IPaneProviderProps, ISplitterProps, ISplitterButtonProps, IColProps, IGridProps, IRowProps, AlignItems as ALIGN_ITEMS, AlignSelf as ALIGN_SELF, Direction as DIRECTION, JustifyContent as JUSTIFY_CONTENT, TextAlign as TEXT_ALIGN, GridNumber as GRID_NUMBER, Breakpoint as BREAKPOINT, Space as SPACE, Wrap as WRAP } from './types';
|
|
@@ -7,8 +7,13 @@
|
|
|
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
|
}
|
|
13
|
+
/**
|
|
14
|
+
* 1. Elevated initial context to pickup full-width hover
|
|
15
|
+
* 2. Stack below splitter button.
|
|
16
|
+
*/
|
|
12
17
|
export declare const StyledPaneSplitter: import("styled-components").StyledComponent<"div", DefaultTheme, {
|
|
13
18
|
'data-garden-id': string;
|
|
14
19
|
'data-garden-version': string;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
/// <reference types="react" />
|
|
8
|
+
import { DefaultTheme } from 'styled-components';
|
|
9
|
+
import { ISplitterButtonProps, Orientation, PLACEMENT } from '../../types';
|
|
10
|
+
interface IStyledSplitterButtonProps extends ISplitterButtonProps {
|
|
11
|
+
orientation: Orientation;
|
|
12
|
+
placement: typeof PLACEMENT[number];
|
|
13
|
+
isRotated: boolean;
|
|
14
|
+
splitterSize: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* 1. Opaque "dish" behind transparent button
|
|
18
|
+
*/
|
|
19
|
+
export declare const StyledPaneSplitterButton: import("styled-components").StyledComponent<import("react").ForwardRefExoticComponent<import("@zendeskgarden/react-buttons").IIconButtonProps & import("react").RefAttributes<HTMLButtonElement>>, DefaultTheme, IStyledSplitterButtonProps, never>;
|
|
20
|
+
export {};
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
5
|
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
6
|
*/
|
|
7
|
-
import { ReactNode, HTMLAttributes } from 'react';
|
|
7
|
+
import { ReactNode, HTMLAttributes, ButtonHTMLAttributes } from 'react';
|
|
8
8
|
export declare const ALIGN_ITEMS: readonly ["start", "end", "center", "baseline", "stretch"];
|
|
9
9
|
export declare const ALIGN_SELF: readonly ["auto", "start", "end", "center", "baseline", "stretch"];
|
|
10
10
|
export declare const DIRECTION: readonly ["row", "row-reverse", "column", "column-reverse"];
|
|
@@ -12,6 +12,7 @@ export declare const JUSTIFY_CONTENT: readonly ["start", "end", "center", "betwe
|
|
|
12
12
|
export declare const TEXT_ALIGN: readonly ["start", "end", "center", "justify"];
|
|
13
13
|
export declare const SPACE: readonly [false, "xxs", "xs", "sm", "md", "lg", "xl", "xxl"];
|
|
14
14
|
export declare const WRAP: readonly ["nowrap", "wrap", "wrap-reverse"];
|
|
15
|
+
export declare const PLACEMENT: readonly ["end", "start", "center"];
|
|
15
16
|
export declare type AlignItems = typeof ALIGN_ITEMS[number];
|
|
16
17
|
export declare type AlignSelf = typeof ALIGN_SELF[number];
|
|
17
18
|
export declare type Direction = typeof DIRECTION[number];
|
|
@@ -205,3 +206,9 @@ export interface ISplitterProps extends HTMLAttributes<HTMLDivElement> {
|
|
|
205
206
|
/** Determines splitter orientation within a pane */
|
|
206
207
|
orientation?: Orientation;
|
|
207
208
|
}
|
|
209
|
+
export interface ISplitterButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
210
|
+
/** Adjusts the placement of the splitter button. Assumes start when vertical and center when horizontal, by default. */
|
|
211
|
+
placement?: typeof PLACEMENT[number];
|
|
212
|
+
/** Renders the provided label text inside a tooltip */
|
|
213
|
+
label: string;
|
|
214
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Zendesk, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Use of this source code is governed under the Apache License, Version 2.0
|
|
5
|
+
* found at http://www.apache.org/licenses/LICENSE-2.0.
|
|
6
|
+
*/
|
|
7
|
+
/// <reference types="react" />
|
|
8
|
+
import { ISplitterProps, Orientation } from '../types';
|
|
9
|
+
interface IPaneSplitterContext {
|
|
10
|
+
orientation?: Orientation;
|
|
11
|
+
min: ISplitterProps['min'];
|
|
12
|
+
max: ISplitterProps['max'];
|
|
13
|
+
layoutKey: ISplitterProps['layoutKey'];
|
|
14
|
+
valueNow?: number;
|
|
15
|
+
size?: number;
|
|
16
|
+
isRow: boolean;
|
|
17
|
+
providerId?: ISplitterProps['providerId'];
|
|
18
|
+
}
|
|
19
|
+
export declare const PaneSplitterContext: import("react").Context<IPaneSplitterContext>;
|
|
20
|
+
/**
|
|
21
|
+
* Retrieve Pane Splitter component context
|
|
22
|
+
*/
|
|
23
|
+
declare const usePaneSplitterContext: () => IPaneSplitterContext;
|
|
24
|
+
export default usePaneSplitterContext;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zendeskgarden/react-grid",
|
|
3
|
-
"version": "8.
|
|
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,6 +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.2",
|
|
27
|
+
"@zendeskgarden/react-tooltips": "^8.53.2",
|
|
26
28
|
"polished": "^4.0.0",
|
|
27
29
|
"prop-types": "^15.5.7",
|
|
28
30
|
"react-merge-refs": "^1.1.0"
|
|
@@ -34,8 +36,8 @@
|
|
|
34
36
|
"styled-components": "^4.2.0 || ^5.0.0"
|
|
35
37
|
},
|
|
36
38
|
"devDependencies": {
|
|
37
|
-
"@zendeskgarden/react-theming": "^8.
|
|
38
|
-
"use-resize-observer": "
|
|
39
|
+
"@zendeskgarden/react-theming": "^8.53.2",
|
|
40
|
+
"use-resize-observer": "9.0.0"
|
|
39
41
|
},
|
|
40
42
|
"keywords": [
|
|
41
43
|
"components",
|
|
@@ -47,5 +49,5 @@
|
|
|
47
49
|
"access": "public"
|
|
48
50
|
},
|
|
49
51
|
"zendeskgarden:src": "src/index.ts",
|
|
50
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "b4ef84eb8f6606659aee9e689b8b44cb1feb0b87"
|
|
51
53
|
}
|