@superdispatch/ui 0.16.0 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,15 +6,15 @@ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'defau
6
6
 
7
7
  var _objectSpread = _interopDefault(require('@babel/runtime/helpers/objectSpread2'));
8
8
  var _objectWithoutProperties = _interopDefault(require('@babel/runtime/helpers/objectWithoutProperties'));
9
- var resizeObserver = require('@juggle/resize-observer');
10
9
  var core = require('@material-ui/core');
11
10
  var icons = require('@material-ui/icons');
12
11
  var styles = require('@material-ui/styles');
13
- var hooks = require('@superdispatch/hooks');
14
12
  var React = require('react');
15
13
  var jsxRuntime = require('react/jsx-runtime');
16
14
  var styled = require('styled-components');
17
15
  var styled__default = _interopDefault(styled);
16
+ var resizeObserver = require('@juggle/resize-observer');
17
+ var hooks = require('@superdispatch/hooks');
18
18
  var clsx = _interopDefault(require('clsx'));
19
19
  var flattenChildren = _interopDefault(require('react-keyed-flatten-children'));
20
20
  var createBreakpoints = _interopDefault(require('@material-ui/core/styles/createBreakpoints'));
@@ -152,8 +152,6 @@ var DropdownButton = /*#__PURE__*/React.forwardRef((_ref2, ref) => {
152
152
  });
153
153
  if (process.env.NODE_ENV !== "production") DropdownButton.displayName = "DropdownButton";
154
154
 
155
- var _excluded$2 = ["items"];
156
-
157
155
  function useResizeObserver(node, observer) {
158
156
  var handler = hooks.useEventHandler(observer);
159
157
  React.useLayoutEffect(() => {
@@ -172,6 +170,7 @@ function useResizeObserver(node, observer) {
172
170
  }, [node, handler]);
173
171
  }
174
172
 
173
+ var _excluded$2 = ["items"];
175
174
  var useStyles = /*#__PURE__*/styles.makeStyles({
176
175
  actions: {
177
176
  overflow: 'hidden'
@@ -311,6 +310,134 @@ var AdaptiveToolbar = /*#__PURE__*/React.forwardRef((_ref, ref) => {
311
310
  });
312
311
  if (process.env.NODE_ENV !== "production") AdaptiveToolbar.displayName = "AdaptiveToolbar";
313
312
 
313
+ function mergeRefs() {
314
+ for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {
315
+ refs[_key] = arguments[_key];
316
+ }
317
+
318
+ return node => {
319
+ refs.forEach(ref => {
320
+ assignRef(ref, node);
321
+ });
322
+ };
323
+ }
324
+ function assignRef(ref, value) {
325
+ if (ref) {
326
+ if (typeof ref === 'function') {
327
+ ref(value);
328
+ } else {
329
+ ref.current = value;
330
+ }
331
+ }
332
+ }
333
+
334
+ var useStyles$1 = /*#__PURE__*/styles.makeStyles({
335
+ root: {
336
+ overflow: 'hidden',
337
+ height: '100%'
338
+ }
339
+ }, {
340
+ name: 'SD-AdaptiveVerticalToolbar'
341
+ });
342
+
343
+ var defaultMoreElement = /*#__PURE__*/jsxRuntime.jsx(Button, {
344
+ type: "button",
345
+ children: /*#__PURE__*/jsxRuntime.jsx(icons.MoreHoriz, {})
346
+ });
347
+
348
+ var AdaptiveVerticalToolbar = /*#__PURE__*/React.forwardRef((_ref, ref) => {
349
+ var {
350
+ items,
351
+ moreElement = defaultMoreElement,
352
+ renderItem = item => item.label
353
+ } = _ref;
354
+ var styles = useStyles$1();
355
+ var itemNodes = React.useRef([]);
356
+ var optionsButtonRef = React.useRef(null);
357
+ var [firstHiddenIdx, setFirstHiddenIdx] = React.useState(-1);
358
+ var menuItems = firstHiddenIdx === -1 ? [] : items.slice(firstHiddenIdx);
359
+ var [menuButtonNode, setMenuButtonRef] = React.useState();
360
+ var [rootNode, setRootNode] = React.useState(null);
361
+ useResizeObserver(rootNode, node => {
362
+ var _optionsButtonRef$cur;
363
+
364
+ var rootRect = node.getBoundingClientRect();
365
+ var rootHeight = rootRect.bottom;
366
+ var optionsButtonRect = (_optionsButtonRef$cur = optionsButtonRef.current) === null || _optionsButtonRef$cur === void 0 ? void 0 : _optionsButtonRef$cur.getBoundingClientRect();
367
+ var optionsButtonWidth = (optionsButtonRect === null || optionsButtonRect === void 0 ? void 0 : optionsButtonRect.height) || 0;
368
+ var maxBottomPosition = rootHeight - optionsButtonWidth;
369
+ var mountedNodes = itemNodes.current.filter(x => x != null);
370
+ var hiddenIdx = mountedNodes.findIndex((itemNode, idx) => {
371
+ itemNode.removeAttribute('hidden');
372
+ var itemRect = itemNode.getBoundingClientRect(); // Ignore options button height when checking last item.
373
+
374
+ if (idx === mountedNodes.length - 1) {
375
+ return itemRect.bottom > rootHeight;
376
+ }
377
+
378
+ return itemRect.bottom > maxBottomPosition;
379
+ });
380
+
381
+ if (hiddenIdx !== -1) {
382
+ mountedNodes.slice(hiddenIdx).forEach(itemNode => {
383
+ itemNode.setAttribute('hidden', 'true');
384
+ });
385
+ }
386
+
387
+ setFirstHiddenIdx(hiddenIdx);
388
+ });
389
+ return /*#__PURE__*/jsxRuntime.jsxs(core.Grid, {
390
+ spacing: 1,
391
+ direction: "column",
392
+ container: true,
393
+ wrap: "nowrap",
394
+ className: styles.root,
395
+ ref: mergeRefs(ref, node => {
396
+ setRootNode(node);
397
+ }),
398
+ children: [items.map((item, idx) => /*#__PURE__*/jsxRuntime.jsx(core.Grid, {
399
+ item: true,
400
+ ref: node => {
401
+ itemNodes.current[idx] = node;
402
+ },
403
+ children: renderItem(item)
404
+ }, item.key)), menuItems.length > 0 && /*#__PURE__*/jsxRuntime.jsxs(core.Grid, {
405
+ item: true,
406
+ ref: optionsButtonRef,
407
+ component: "div",
408
+ children: [/*#__PURE__*/React.cloneElement(moreElement, {
409
+ onClick: _ref2 => {
410
+ var {
411
+ currentTarget
412
+ } = _ref2;
413
+ setMenuButtonRef(currentTarget);
414
+ }
415
+ }), /*#__PURE__*/jsxRuntime.jsx(core.Menu, {
416
+ open: !!menuButtonNode,
417
+ anchorEl: menuButtonNode,
418
+ onClose: () => {
419
+ setMenuButtonRef(undefined);
420
+ },
421
+ children: menuItems.map((item, index, arr) => {
422
+ var next = arr[index + 1];
423
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
424
+ children: [/*#__PURE__*/jsxRuntime.jsx(core.MenuItem, {
425
+ onClick: event => {
426
+ var _item$onClick;
427
+
428
+ (_item$onClick = item.onClick) === null || _item$onClick === void 0 ? void 0 : _item$onClick.call(item, event);
429
+ setMenuButtonRef(undefined);
430
+ },
431
+ children: item.label
432
+ }, item.key), next && next.menuGroupKey !== item.menuGroupKey && /*#__PURE__*/jsxRuntime.jsx(core.Divider, {})]
433
+ });
434
+ })
435
+ })]
436
+ })]
437
+ });
438
+ });
439
+ if (process.env.NODE_ENV !== "production") AdaptiveVerticalToolbar.displayName = "AdaptiveVerticalToolbar";
440
+
314
441
  (function (Color) {
315
442
  Color["White"] = "#fff";
316
443
  Color["White50"] = "rgba(255, 255, 255, 0.5)";
@@ -389,7 +516,7 @@ function isColorProp(name) {
389
516
 
390
517
  var _excluded$3 = ["size", "icon", "isLoading", "classes", "disabled", "avatarRef", "className", "alt", "imgProps", "sizes", "src", "srcSet", "variant", "children"],
391
518
  _excluded2 = ["button", "overlay", "progress", "withIcon", "sizeLarge"];
392
- var useStyles$1 = /*#__PURE__*/styles.makeStyles(theme => {
519
+ var useStyles$2 = /*#__PURE__*/styles.makeStyles(theme => {
393
520
  var sm = theme.breakpoints.up('sm');
394
521
  return {
395
522
  button: {
@@ -499,7 +626,7 @@ var AvatarButton = /*#__PURE__*/React.forwardRef((_ref, ref) => {
499
626
  } = _ref,
500
627
  props = _objectWithoutProperties(_ref, _excluded$3);
501
628
 
502
- var _useStyles = useStyles$1({
629
+ var _useStyles = useStyles$2({
503
630
  classes
504
631
  }),
505
632
  {
@@ -540,7 +667,7 @@ var AvatarButton = /*#__PURE__*/React.forwardRef((_ref, ref) => {
540
667
  if (process.env.NODE_ENV !== "production") AvatarButton.displayName = "AvatarButton";
541
668
 
542
669
  var _excluded$4 = ["hint", "size", "error", "classes", "className", "children", "endIcon", "startIcon", "disabled"];
543
- var useStyles$2 = /*#__PURE__*/styles.makeStyles(theme => ({
670
+ var useStyles$3 = /*#__PURE__*/styles.makeStyles(theme => ({
544
671
  root: {
545
672
  width: '100%',
546
673
  display: 'flex',
@@ -625,7 +752,7 @@ var CardButton = /*#__PURE__*/React.forwardRef((_ref, ref) => {
625
752
  } = _ref,
626
753
  props = _objectWithoutProperties(_ref, _excluded$4);
627
754
 
628
- var styles = useStyles$2({
755
+ var styles = useStyles$3({
629
756
  classes
630
757
  });
631
758
  return /*#__PURE__*/jsxRuntime.jsx(core.ButtonBase, _objectSpread(_objectSpread({}, props), {}, {
@@ -995,7 +1122,7 @@ function VisibilityObserver(_ref2) {
995
1122
 
996
1123
  var _excluded$8 = ["title", "enterDelay"],
997
1124
  _excluded2$1 = ["onClick", "children", "className", "disableUnderline", "TooltipProps"];
998
- var useStyles$3 = /*#__PURE__*/styles.makeStyles(theme => ({
1125
+ var useStyles$4 = /*#__PURE__*/styles.makeStyles(theme => ({
999
1126
  root: {
1000
1127
  marginBottom: -1,
1001
1128
  borderBottom: '1px dashed transparent',
@@ -1029,7 +1156,7 @@ var OverflowText = /*#__PURE__*/React.forwardRef((_ref, rootRef) => {
1029
1156
  props = _objectWithoutProperties(_ref, _excluded2$1);
1030
1157
 
1031
1158
  var [isOpen, setIsOpen] = React.useState(false);
1032
- var styles = useStyles$3();
1159
+ var styles = useStyles$4();
1033
1160
  return /*#__PURE__*/jsxRuntime.jsx(VisibilityObserver, {
1034
1161
  render: _ref2 => {
1035
1162
  var {
@@ -1092,7 +1219,7 @@ function sizeVariant(theme, mobileSpacing, desktopSpacing) {
1092
1219
  };
1093
1220
  }
1094
1221
 
1095
- var useStyles$4 = /*#__PURE__*/styles.makeStyles(theme => ({
1222
+ var useStyles$5 = /*#__PURE__*/styles.makeStyles(theme => ({
1096
1223
  list: sizeVariant(theme, 2, 1),
1097
1224
  listSmall: sizeVariant(theme, 1, 0.5),
1098
1225
  listLarge: sizeVariant(theme, 3, 2),
@@ -1123,7 +1250,7 @@ var DescriptionList = /*#__PURE__*/React.forwardRef((_ref, ref) => {
1123
1250
  } = _ref,
1124
1251
  props = _objectWithoutProperties(_ref, _excluded$9);
1125
1252
 
1126
- var styles = useStyles$4();
1253
+ var styles = useStyles$5();
1127
1254
  return /*#__PURE__*/jsxRuntime.jsx("div", _objectSpread(_objectSpread({}, props), {}, {
1128
1255
  ref: ref,
1129
1256
  "data-size": size,
@@ -1149,7 +1276,7 @@ var DescriptionListItem = /*#__PURE__*/React.forwardRef((_ref2, ref) => {
1149
1276
  contentTypographyProps,
1150
1277
  fallback
1151
1278
  } = _ref2;
1152
- var styles = useStyles$4();
1279
+ var styles = useStyles$5();
1153
1280
  var labelID = useUID(labelTypographyProps === null || labelTypographyProps === void 0 ? void 0 : labelTypographyProps.id);
1154
1281
  var shouldRenderFallback = isEmptyReactNode(content);
1155
1282
  return /*#__PURE__*/jsxRuntime.jsxs("div", {
@@ -1178,7 +1305,7 @@ var DescriptionListItem = /*#__PURE__*/React.forwardRef((_ref2, ref) => {
1178
1305
  if (process.env.NODE_ENV !== "production") DescriptionListItem.displayName = "DescriptionListItem";
1179
1306
 
1180
1307
  var _excluded$a = ["children", "className"];
1181
- var useStyles$5 = /*#__PURE__*/styles.makeStyles(theme => ({
1308
+ var useStyles$6 = /*#__PURE__*/styles.makeStyles(theme => ({
1182
1309
  appBar: {
1183
1310
  '&&': {
1184
1311
  bottom: 0,
@@ -1213,7 +1340,7 @@ var DrawerActions = /*#__PURE__*/React.forwardRef((_ref, appBarRef) => {
1213
1340
  } = _ref,
1214
1341
  props = _objectWithoutProperties(_ref, _excluded$a);
1215
1342
 
1216
- var styles = useStyles$5();
1343
+ var styles = useStyles$6();
1217
1344
  return /*#__PURE__*/jsxRuntime.jsx(VisibilityObserver, {
1218
1345
  render: _ref2 => {
1219
1346
  var {
@@ -1239,7 +1366,7 @@ var DrawerActions = /*#__PURE__*/React.forwardRef((_ref, appBarRef) => {
1239
1366
  if (process.env.NODE_ENV !== "production") DrawerActions.displayName = "DrawerActions";
1240
1367
 
1241
1368
  var _excluded$b = ["className"];
1242
- var useStyles$6 = /*#__PURE__*/styles.makeStyles(theme => ({
1369
+ var useStyles$7 = /*#__PURE__*/styles.makeStyles(theme => ({
1243
1370
  root: {
1244
1371
  maxWidth: '100%',
1245
1372
  padding: theme.spacing(2, 3),
@@ -1256,7 +1383,7 @@ var DrawerContent = /*#__PURE__*/React.forwardRef((_ref, ref) => {
1256
1383
  } = _ref,
1257
1384
  props = _objectWithoutProperties(_ref, _excluded$b);
1258
1385
 
1259
- var styles = useStyles$6();
1386
+ var styles = useStyles$7();
1260
1387
  return /*#__PURE__*/jsxRuntime.jsx("div", _objectSpread(_objectSpread({}, props), {}, {
1261
1388
  ref: ref,
1262
1389
  className: clsx(styles.root, className)
@@ -1284,7 +1411,7 @@ function listItemMixins(theme, space) {
1284
1411
  };
1285
1412
  }
1286
1413
 
1287
- var useStyles$7 = /*#__PURE__*/styles.makeStyles(theme => ({
1414
+ var useStyles$8 = /*#__PURE__*/styles.makeStyles(theme => ({
1288
1415
  root: _objectSpread(_objectSpread({
1289
1416
  maxWidth: '100%'
1290
1417
  }, listItemMixins(theme, 3)), {}, {
@@ -1299,7 +1426,7 @@ var DrawerList = /*#__PURE__*/React.forwardRef((_ref, ref) => {
1299
1426
  } = _ref,
1300
1427
  props = _objectWithoutProperties(_ref, _excluded$c);
1301
1428
 
1302
- var styles = useStyles$7();
1429
+ var styles = useStyles$8();
1303
1430
  return /*#__PURE__*/jsxRuntime.jsx(core.List, _objectSpread(_objectSpread({}, props), {}, {
1304
1431
  ref: ref,
1305
1432
  component: "div",
@@ -1309,7 +1436,7 @@ var DrawerList = /*#__PURE__*/React.forwardRef((_ref, ref) => {
1309
1436
  if (process.env.NODE_ENV !== "production") DrawerList.displayName = "DrawerList";
1310
1437
 
1311
1438
  var _excluded$d = ["title", "titleTypographyProps", "subtitle", "subtitleTypographyProps", "startAction", "endAction", "className"];
1312
- var useStyles$8 = /*#__PURE__*/styles.makeStyles(theme => ({
1439
+ var useStyles$9 = /*#__PURE__*/styles.makeStyles(theme => ({
1313
1440
  appBar: {
1314
1441
  '&&': {
1315
1442
  borderTop: 'none',
@@ -1359,7 +1486,7 @@ var DrawerTitle = /*#__PURE__*/React.forwardRef((_ref, appBarRef) => {
1359
1486
  } = _ref,
1360
1487
  props = _objectWithoutProperties(_ref, _excluded$d);
1361
1488
 
1362
- var styles = useStyles$8();
1489
+ var styles = useStyles$9();
1363
1490
  return /*#__PURE__*/jsxRuntime.jsx(VisibilityObserver, {
1364
1491
  render: _ref2 => {
1365
1492
  var {
@@ -1470,30 +1597,9 @@ var InlineGrid = /*#__PURE__*/React.forwardRef((_ref, ref) => {
1470
1597
  });
1471
1598
  if (process.env.NODE_ENV !== "production") InlineGrid.displayName = "InlineGrid";
1472
1599
 
1473
- function mergeRefs() {
1474
- for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {
1475
- refs[_key] = arguments[_key];
1476
- }
1477
-
1478
- return node => {
1479
- refs.forEach(ref => {
1480
- assignRef(ref, node);
1481
- });
1482
- };
1483
- }
1484
- function assignRef(ref, value) {
1485
- if (ref) {
1486
- if (typeof ref === 'function') {
1487
- ref(value);
1488
- } else {
1489
- ref.current = value;
1490
- }
1491
- }
1492
- }
1493
-
1494
1600
  var _excluded$g = ["size", "square", "classes", "children", "className", "CardContentProps"],
1495
1601
  _excluded2$2 = ["content", "sizeLarge", "fullWidth"];
1496
- var useStyles$9 = /*#__PURE__*/styles.makeStyles(theme => ({
1602
+ var useStyles$a = /*#__PURE__*/styles.makeStyles(theme => ({
1497
1603
  root: {
1498
1604
  '&$fullWidth': {
1499
1605
  borderRadius: 0,
@@ -1525,7 +1631,7 @@ var InfoCard = /*#__PURE__*/React.forwardRef((_ref, _ref2) => {
1525
1631
  } = _ref,
1526
1632
  props = _objectWithoutProperties(_ref, _excluded$g);
1527
1633
 
1528
- var _useStyles = useStyles$9({
1634
+ var _useStyles = useStyles$a({
1529
1635
  classes
1530
1636
  }),
1531
1637
  {
@@ -1683,7 +1789,7 @@ function useCollapseBreakpoint(collapseBreakpoint) {
1683
1789
 
1684
1790
  var _excluded$j = ["action", "children", "onClose", "className", "classes", "variant"],
1685
1791
  _excluded2$3 = ["icon", "closeButton", "variantError", "variantSuccess"];
1686
- var useStyles$a = /*#__PURE__*/styles.makeStyles(theme => ({
1792
+ var useStyles$b = /*#__PURE__*/styles.makeStyles(theme => ({
1687
1793
  root: {
1688
1794
  color: exports.Color.White,
1689
1795
  backgroundColor: exports.Color.Dark500,
@@ -1728,7 +1834,7 @@ var SnackbarContent = /*#__PURE__*/React.forwardRef((_ref, ref) => {
1728
1834
  } = _ref,
1729
1835
  props = _objectWithoutProperties(_ref, _excluded$j);
1730
1836
 
1731
- var _useStyles = useStyles$a({
1837
+ var _useStyles = useStyles$b({
1732
1838
  classes
1733
1839
  }),
1734
1840
  {
@@ -1968,7 +2074,7 @@ var Stack = /*#__PURE__*/React.forwardRef((_ref2, ref) => {
1968
2074
  if (process.env.NODE_ENV !== "production") Stack.displayName = "Stack";
1969
2075
 
1970
2076
  var _excluded$m = ["color", "variant", "children", "classes", "className", "noWrap", "fontWeight", "component"];
1971
- var useStyles$b = /*#__PURE__*/styles.makeStyles(theme => ({
2077
+ var useStyles$c = /*#__PURE__*/styles.makeStyles(theme => ({
1972
2078
  root: {
1973
2079
  maxWidth: '100%',
1974
2080
  alignItems: 'center',
@@ -2053,7 +2159,7 @@ var Tag = /*#__PURE__*/React.forwardRef((_ref, ref) => {
2053
2159
  } = _ref,
2054
2160
  props = _objectWithoutProperties(_ref, _excluded$m);
2055
2161
 
2056
- var styles = useStyles$b({
2162
+ var styles = useStyles$c({
2057
2163
  classes
2058
2164
  });
2059
2165
  return /*#__PURE__*/jsxRuntime.jsx(core.Typography, _objectSpread(_objectSpread({}, props), {}, {
@@ -3500,7 +3606,7 @@ function columnVariant(columns) {
3500
3606
  };
3501
3607
  }
3502
3608
 
3503
- var useStyles$c = /*#__PURE__*/styles.makeStyles(theme => ({
3609
+ var useStyles$d = /*#__PURE__*/styles.makeStyles(theme => ({
3504
3610
  root: {
3505
3611
  paddingTop: PREVENT_COLLAPSE,
3506
3612
  '&:before': {
@@ -3544,7 +3650,7 @@ var Tiles = /*#__PURE__*/React.forwardRef((_ref, ref) => {
3544
3650
  space: spaceProp = 1,
3545
3651
  columns: columnsProp = 1
3546
3652
  } = _ref;
3547
- var styles = useStyles$c({});
3653
+ var styles = useStyles$d({});
3548
3654
  var space = useResponsivePropRecord(spaceProp);
3549
3655
  var columns = useResponsivePropRecord(columnsProp);
3550
3656
  return /*#__PURE__*/jsxRuntime.jsx("div", {
@@ -3565,6 +3671,7 @@ var Tiles = /*#__PURE__*/React.forwardRef((_ref, ref) => {
3565
3671
  if (process.env.NODE_ENV !== "production") Tiles.displayName = "Tiles";
3566
3672
 
3567
3673
  exports.AdaptiveToolbar = AdaptiveToolbar;
3674
+ exports.AdaptiveVerticalToolbar = AdaptiveVerticalToolbar;
3568
3675
  exports.AvatarButton = AvatarButton;
3569
3676
  exports.Button = Button;
3570
3677
  exports.CardButton = CardButton;
@@ -3606,6 +3713,7 @@ exports.parseResponsiveProp = parseResponsiveProp;
3606
3713
  exports.parseSpaceProp = parseSpaceProp;
3607
3714
  exports.renderChildren = renderChildren;
3608
3715
  exports.useCollapseBreakpoint = useCollapseBreakpoint;
3716
+ exports.useResizeObserver = useResizeObserver;
3609
3717
  exports.useResponsiveContext = useResponsiveContext;
3610
3718
  exports.useResponsiveProp = useResponsiveProp;
3611
3719
  exports.useResponsivePropRecord = useResponsivePropRecord;