baseui 10.0.0 → 10.3.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.
Files changed (162) hide show
  1. package/app-nav-bar/index.d.ts +24 -0
  2. package/app-nav-bar/mobile-menu.js +5 -3
  3. package/app-nav-bar/mobile-menu.js.flow +3 -2
  4. package/app-nav-bar/user-menu.js +5 -3
  5. package/app-nav-bar/user-menu.js.flow +3 -2
  6. package/block/index.d.ts +7 -0
  7. package/combobox/combobox.js +4 -9
  8. package/combobox/combobox.js.flow +4 -3
  9. package/combobox/index.d.ts +1 -1
  10. package/data-table/filter-menu.js +5 -3
  11. package/data-table/filter-menu.js.flow +3 -2
  12. package/data-table/header-cell.js +1 -1
  13. package/data-table/header-cell.js.flow +1 -1
  14. package/datepicker/calendar.js +6 -1
  15. package/datepicker/calendar.js.flow +4 -0
  16. package/datepicker/datepicker.js +1 -1
  17. package/datepicker/datepicker.js.flow +5 -2
  18. package/datepicker/index.d.ts +9 -1
  19. package/datepicker/month.js +2 -1
  20. package/datepicker/month.js.flow +8 -1
  21. package/datepicker/types.js.flow +13 -6
  22. package/es/app-nav-bar/mobile-menu.js +5 -5
  23. package/es/app-nav-bar/user-menu.js +5 -5
  24. package/es/combobox/combobox.js +4 -3
  25. package/es/data-table/filter-menu.js +3 -2
  26. package/es/data-table/header-cell.js +1 -1
  27. package/es/datepicker/calendar.js +6 -1
  28. package/es/datepicker/datepicker.js +1 -1
  29. package/es/datepicker/month.js +2 -1
  30. package/es/form-control/form-control.js +6 -14
  31. package/es/helper/helper.js +10 -6
  32. package/es/helpers/base-provider.js +4 -1
  33. package/es/input/input.js +9 -5
  34. package/es/layer/layer.js +5 -1
  35. package/es/layout-grid/grid.js +16 -10
  36. package/es/layout-grid/styled-components.js +24 -12
  37. package/es/list/index.js +1 -0
  38. package/es/list/list-heading.js +77 -0
  39. package/es/list/list-item.js +1 -1
  40. package/es/list/menu-adapter.js +4 -2
  41. package/es/list/styled-components.js +101 -4
  42. package/es/menu/stateful-container.js +41 -27
  43. package/es/phone-input/base-country-picker.js +2 -0
  44. package/es/popover/popover.js +21 -10
  45. package/es/select/select-component.js +34 -22
  46. package/es/table-semantic/styled-components.js +8 -10
  47. package/es/table-semantic/table-builder.js +3 -2
  48. package/es/table-semantic/table.js +1 -0
  49. package/es/tag/index.js +1 -1
  50. package/es/tag/styled-components.js +2 -4
  51. package/es/tag/tag.js +16 -16
  52. package/es/textarea/textarea.js +1 -2
  53. package/es/themes/dark-theme/color-semantic-tokens.js +18 -8
  54. package/es/themes/light-theme/color-semantic-tokens.js +14 -4
  55. package/es/tokens/colors.js +3 -3
  56. package/es/tree-view/tree-view.js +0 -2
  57. package/esm/app-nav-bar/mobile-menu.js +5 -3
  58. package/esm/app-nav-bar/user-menu.js +5 -3
  59. package/esm/combobox/combobox.js +4 -7
  60. package/esm/data-table/filter-menu.js +4 -3
  61. package/esm/data-table/header-cell.js +1 -1
  62. package/esm/datepicker/calendar.js +6 -1
  63. package/esm/datepicker/datepicker.js +1 -1
  64. package/esm/datepicker/month.js +2 -1
  65. package/esm/form-control/form-control.js +21 -33
  66. package/esm/helper/helper.js +10 -6
  67. package/esm/helpers/base-provider.js +4 -1
  68. package/esm/input/input.js +9 -5
  69. package/esm/layer/layer.js +5 -1
  70. package/esm/layout-grid/grid.js +20 -10
  71. package/esm/layout-grid/styled-components.js +52 -35
  72. package/esm/list/index.js +1 -0
  73. package/esm/list/list-heading.js +116 -0
  74. package/esm/list/list-item.js +1 -1
  75. package/esm/list/menu-adapter.js +4 -2
  76. package/esm/list/styled-components.js +99 -3
  77. package/esm/menu/stateful-container.js +56 -40
  78. package/esm/phone-input/base-country-picker.js +2 -0
  79. package/esm/popover/popover.js +25 -16
  80. package/esm/select/select-component.js +87 -79
  81. package/esm/table-semantic/styled-components.js +8 -10
  82. package/esm/table-semantic/table-builder.js +3 -2
  83. package/esm/table-semantic/table.js +1 -0
  84. package/esm/tag/index.js +1 -1
  85. package/esm/tag/styled-components.js +2 -4
  86. package/esm/tag/tag.js +18 -16
  87. package/esm/textarea/textarea.js +1 -2
  88. package/esm/themes/dark-theme/color-semantic-tokens.js +18 -8
  89. package/esm/themes/light-theme/color-semantic-tokens.js +14 -4
  90. package/esm/tokens/colors.js +3 -3
  91. package/esm/tree-view/tree-view.js +0 -2
  92. package/form-control/form-control.js +21 -35
  93. package/form-control/form-control.js.flow +37 -35
  94. package/helper/helper.js +10 -6
  95. package/helper/helper.js.flow +1 -0
  96. package/helpers/base-provider.js +5 -1
  97. package/helpers/base-provider.js.flow +4 -1
  98. package/index.d.ts +1 -0
  99. package/input/input.js +9 -5
  100. package/input/input.js.flow +9 -5
  101. package/layer/layer.js +5 -1
  102. package/layer/layer.js.flow +3 -1
  103. package/layer/types.js.flow +4 -0
  104. package/layout-grid/grid.js +19 -9
  105. package/layout-grid/grid.js.flow +52 -26
  106. package/layout-grid/index.d.ts +1 -0
  107. package/layout-grid/styled-components.js +54 -36
  108. package/layout-grid/styled-components.js.flow +48 -24
  109. package/layout-grid/types.js.flow +12 -0
  110. package/list/index.js +9 -0
  111. package/list/index.js.flow +1 -0
  112. package/list/list-heading.js +124 -0
  113. package/list/list-heading.js.flow +138 -0
  114. package/list/list-item.js +1 -1
  115. package/list/list-item.js.flow +1 -1
  116. package/list/menu-adapter.js +5 -2
  117. package/list/menu-adapter.js.flow +21 -11
  118. package/list/styled-components.js +108 -5
  119. package/list/styled-components.js.flow +103 -2
  120. package/list/types.js.flow +22 -0
  121. package/menu/stateful-container.js +57 -42
  122. package/menu/stateful-container.js.flow +38 -26
  123. package/package.json +1 -1
  124. package/phone-input/base-country-picker.js +2 -0
  125. package/phone-input/base-country-picker.js.flow +2 -0
  126. package/popover/popover.js +26 -17
  127. package/popover/popover.js.flow +19 -7
  128. package/select/select-component.js +87 -79
  129. package/select/select-component.js.flow +119 -103
  130. package/snackbar/index.d.ts +3 -3
  131. package/snackbar/types.js.flow +1 -1
  132. package/table-semantic/index.d.ts +1 -0
  133. package/table-semantic/styled-components.js +8 -10
  134. package/table-semantic/styled-components.js.flow +20 -20
  135. package/table-semantic/table-builder.js +3 -2
  136. package/table-semantic/table-builder.js.flow +3 -2
  137. package/table-semantic/table.js +1 -0
  138. package/table-semantic/table.js.flow +1 -0
  139. package/tag/index.d.ts +0 -1
  140. package/tag/index.js +0 -6
  141. package/tag/index.js.flow +0 -1
  142. package/tag/styled-components.js +3 -6
  143. package/tag/styled-components.js.flow +0 -2
  144. package/tag/tag.js +19 -14
  145. package/tag/tag.js.flow +13 -19
  146. package/textarea/textarea.js +1 -2
  147. package/textarea/textarea.js.flow +0 -1
  148. package/theme.ts +12 -0
  149. package/themes/dark-theme/color-semantic-tokens.js +18 -8
  150. package/themes/dark-theme/color-semantic-tokens.js.flow +18 -7
  151. package/themes/light-theme/color-semantic-tokens.js +14 -4
  152. package/themes/light-theme/color-semantic-tokens.js.flow +14 -3
  153. package/themes/types.js.flow +11 -0
  154. package/toast/index.d.ts +1 -0
  155. package/tokens/colors.js +3 -3
  156. package/tokens/colors.js.flow +3 -3
  157. package/tree-view/tree-view.js +0 -2
  158. package/tree-view/tree-view.js.flow +0 -1
  159. package/es/utils/get-bui-id.js +0 -33
  160. package/esm/utils/get-bui-id.js +0 -33
  161. package/utils/get-bui-id.js +0 -41
  162. package/utils/get-bui-id.js.flow +0 -39
@@ -93,7 +93,7 @@ class Input extends React.Component<InputPropsT, InternalStateT> {
93
93
  $adjoined={getAdjoinedProp(startEnhancer, endEnhancer)}
94
94
  $hasIconTrailing={this.props.clearable || this.props.type == 'password'}
95
95
  >
96
- {startEnhancer && (
96
+ {isEnhancer(startEnhancer) && (
97
97
  <StartEnhancer
98
98
  {...sharedProps}
99
99
  {...startEnhancerProps}
@@ -111,7 +111,7 @@ class Input extends React.Component<InputPropsT, InternalStateT> {
111
111
  onFocus={this.onFocus}
112
112
  onBlur={this.onBlur}
113
113
  />
114
- {endEnhancer && (
114
+ {isEnhancer(endEnhancer) && (
115
115
  <EndEnhancer
116
116
  {...sharedProps}
117
117
  {...endEnhancerProps}
@@ -128,16 +128,20 @@ class Input extends React.Component<InputPropsT, InternalStateT> {
128
128
  }
129
129
 
130
130
  function getAdjoinedProp(startEnhancer, endEnhancer): AdjoinedT {
131
- if (startEnhancer && endEnhancer) {
131
+ if (isEnhancer(startEnhancer) && isEnhancer(endEnhancer)) {
132
132
  return ADJOINED.both;
133
- } else if (startEnhancer) {
133
+ } else if (isEnhancer(startEnhancer)) {
134
134
  return ADJOINED.left;
135
- } else if (endEnhancer) {
135
+ } else if (isEnhancer(endEnhancer)) {
136
136
  return ADJOINED.right;
137
137
  }
138
138
  return ADJOINED.none;
139
139
  }
140
140
 
141
+ function isEnhancer(enhancer): boolean {
142
+ return Boolean(enhancer || enhancer === 0);
143
+ }
144
+
141
145
  export default Input;
142
146
 
143
147
  declare var __DEV__: boolean;
package/layer/layer.js CHANGED
@@ -96,7 +96,11 @@ var LayerComponent = /*#__PURE__*/function (_React$Component) {
96
96
  key: "componentDidMount",
97
97
  value: function componentDidMount() {
98
98
  this.context.addEscapeHandler(this.onEscape);
99
- this.context.addDocClickHandler(this.onDocumentClick);
99
+
100
+ if (!this.props.isHoverLayer) {
101
+ this.context.addDocClickHandler(this.onDocumentClick);
102
+ }
103
+
100
104
  var _this$props = this.props,
101
105
  onMount = _this$props.onMount,
102
106
  mountNode = _this$props.mountNode,
@@ -30,7 +30,9 @@ class LayerComponent extends React.Component<
30
30
 
31
31
  componentDidMount() {
32
32
  this.context.addEscapeHandler(this.onEscape);
33
- this.context.addDocClickHandler(this.onDocumentClick);
33
+ if (!this.props.isHoverLayer) {
34
+ this.context.addDocClickHandler(this.onDocumentClick);
35
+ }
34
36
 
35
37
  const {onMount, mountNode, host: layersManagerHost} = this.props;
36
38
  if (mountNode) {
@@ -47,6 +47,9 @@ export type LayerPropsT = {
47
47
  /** Defines the location (child order) at which the layer will be inserted in
48
48
  the `host` element. */
49
49
  index?: number,
50
+ /** Identifies if this layer is a hover layer (and subsequent document clicks
51
+ should be triggered on the last registered non-hover layer. */
52
+ isHoverLayer?: boolean,
50
53
  /** A custom DOM element where the layer is inserted to as a child.
51
54
  Note that the `index` prop does not work with a custom `mountNode`. */
52
55
  mountNode?: HTMLElement,
@@ -69,6 +72,7 @@ export type LayerComponentPropsT = {
69
72
  children: React.Node,
70
73
  host: ?HTMLElement,
71
74
  index?: number,
75
+ isHoverLayer?: boolean,
72
76
  mountNode?: HTMLElement,
73
77
  onEscape?: () => mixed,
74
78
  onDocumentClick?: (event: MouseEvent) => mixed,
@@ -63,32 +63,42 @@ function Grid(_ref) {
63
63
  StyledGrid = _getOverrides2[0],
64
64
  overrideProps = _getOverrides2[1];
65
65
 
66
+ var _getOverrides3 = (0, _overrides.getOverrides)(overrides.GridWrapper, _styledComponents.StyledGridWrapper),
67
+ _getOverrides4 = _slicedToArray(_getOverrides3, 2),
68
+ StyledGridWrapper = _getOverrides4[0],
69
+ wrapperProps = _getOverrides4[1];
70
+
66
71
  var presetStyleValues = _constants.STYLE_VALUES[gridStyle];
67
- var gridStyleValues = presetStyleValues && {
72
+ var gridStyleValues = presetStyleValues ? {
68
73
  $gridGutters: presetStyleValues.gutters,
69
74
  $gridMargins: presetStyleValues.margins,
70
75
  $gridMaxWidth: presetStyleValues.maxWidth,
71
76
  $gridUnit: presetStyleValues.unit
72
- };
77
+ } : {};
73
78
  var gridContextStyleValues = presetStyleValues && {
74
79
  gridColumns: presetStyleValues.columns,
75
80
  gridGaps: presetStyleValues.gaps,
76
81
  gridGutters: presetStyleValues.gutters,
77
82
  gridUnit: presetStyleValues.unit
78
83
  };
79
- return /*#__PURE__*/React.createElement(StyledGrid, _extends({
84
+ return /*#__PURE__*/React.createElement(StyledGridWrapper, _extends({
85
+ $behavior: behavior,
86
+ $gridMargins: gridMargins != null ? gridMargins : gridStyleValues.$gridMargins,
87
+ $gridMaxWidth: gridMaxWidth != null ? gridMaxWidth : gridStyleValues.$gridMaxWidth,
88
+ $gridUnit: gridUnit != null ? gridUnit : gridStyleValues.$gridUnit
89
+ }, wrapperProps), /*#__PURE__*/React.createElement(StyledGrid, _extends({
80
90
  $align: align,
81
91
  $behavior: behavior,
82
- $gridGutters: gridGutters,
83
- $gridMargins: gridMargins,
84
- $gridMaxWidth: gridMaxWidth,
85
- $gridUnit: gridUnit
86
- }, gridStyleValues, overrideProps), /*#__PURE__*/React.createElement(GridContext.Provider, {
92
+ $gridGutters: gridGutters != null ? gridGutters : gridStyleValues.$gridGutters,
93
+ $gridMargins: gridMargins != null ? gridMargins : gridStyleValues.$gridMargins,
94
+ $gridMaxWidth: gridMaxWidth != null ? gridMaxWidth : gridStyleValues.$gridMaxWidth,
95
+ $gridUnit: gridUnit != null ? gridUnit : gridStyleValues.$gridUnit
96
+ }, overrideProps), /*#__PURE__*/React.createElement(GridContext.Provider, {
87
97
  value: _objectSpread({
88
98
  gridColumns: gridColumns,
89
99
  gridGaps: gridGaps,
90
100
  gridGutters: gridGutters,
91
101
  gridUnit: gridUnit
92
102
  }, gridContextStyleValues)
93
- }, children));
103
+ }, children)));
94
104
  }
@@ -8,7 +8,10 @@ LICENSE file in the root directory of this source tree.
8
8
  import * as React from 'react';
9
9
  import {getOverrides} from '../helpers/overrides.js';
10
10
  import {STYLE, STYLE_VALUES} from './constants.js';
11
- import {StyledGrid as DefaultStyledGrid} from './styled-components.js';
11
+ import {
12
+ StyledGrid as DefaultStyledGrid,
13
+ StyledGridWrapper as DefaultStyledGridWrapper,
14
+ } from './styled-components.js';
12
15
 
13
16
  import type {GridPropsT, SharedGridPropsT} from './types.js';
14
17
 
@@ -33,13 +36,19 @@ export default function Grid({
33
36
  overrides.Grid,
34
37
  DefaultStyledGrid,
35
38
  );
39
+ const [StyledGridWrapper, wrapperProps] = getOverrides(
40
+ overrides.GridWrapper,
41
+ DefaultStyledGridWrapper,
42
+ );
36
43
  const presetStyleValues = STYLE_VALUES[gridStyle];
37
- const gridStyleValues = presetStyleValues && {
38
- $gridGutters: presetStyleValues.gutters,
39
- $gridMargins: presetStyleValues.margins,
40
- $gridMaxWidth: presetStyleValues.maxWidth,
41
- $gridUnit: presetStyleValues.unit,
42
- };
44
+ const gridStyleValues = presetStyleValues
45
+ ? {
46
+ $gridGutters: presetStyleValues.gutters,
47
+ $gridMargins: presetStyleValues.margins,
48
+ $gridMaxWidth: presetStyleValues.maxWidth,
49
+ $gridUnit: presetStyleValues.unit,
50
+ }
51
+ : {};
43
52
  const gridContextStyleValues = presetStyleValues && {
44
53
  gridColumns: presetStyleValues.columns,
45
54
  gridGaps: presetStyleValues.gaps,
@@ -48,28 +57,45 @@ export default function Grid({
48
57
  };
49
58
 
50
59
  return (
51
- <StyledGrid
52
- $align={align}
60
+ <StyledGridWrapper
53
61
  $behavior={behavior}
54
- $gridGutters={gridGutters}
55
- $gridMargins={gridMargins}
56
- $gridMaxWidth={gridMaxWidth}
57
- $gridUnit={gridUnit}
58
- {...gridStyleValues}
59
- {...overrideProps}
62
+ $gridMargins={
63
+ gridMargins != null ? gridMargins : gridStyleValues.$gridMargins
64
+ }
65
+ $gridMaxWidth={
66
+ gridMaxWidth != null ? gridMaxWidth : gridStyleValues.$gridMaxWidth
67
+ }
68
+ $gridUnit={gridUnit != null ? gridUnit : gridStyleValues.$gridUnit}
69
+ {...wrapperProps}
60
70
  >
61
- <GridContext.Provider
62
- value={{
63
- gridColumns,
64
- gridGaps,
65
- gridGutters,
66
- gridUnit,
67
- ...gridContextStyleValues,
68
- }}
71
+ <StyledGrid
72
+ $align={align}
73
+ $behavior={behavior}
74
+ $gridGutters={
75
+ gridGutters != null ? gridGutters : gridStyleValues.$gridGutters
76
+ }
77
+ $gridMargins={
78
+ gridMargins != null ? gridMargins : gridStyleValues.$gridMargins
79
+ }
80
+ $gridMaxWidth={
81
+ gridMaxWidth != null ? gridMaxWidth : gridStyleValues.$gridMaxWidth
82
+ }
83
+ $gridUnit={gridUnit != null ? gridUnit : gridStyleValues.$gridUnit}
84
+ {...overrideProps}
69
85
  >
70
- {children}
71
- </GridContext.Provider>
72
- </StyledGrid>
86
+ <GridContext.Provider
87
+ value={{
88
+ gridColumns,
89
+ gridGaps,
90
+ gridGutters,
91
+ gridUnit,
92
+ ...gridContextStyleValues,
93
+ }}
94
+ >
95
+ {children}
96
+ </GridContext.Provider>
97
+ </StyledGrid>
98
+ </StyledGridWrapper>
73
99
  );
74
100
  }
75
101
 
@@ -23,6 +23,7 @@ export type Responsive<T> = T | T[];
23
23
 
24
24
  export interface GridOverrides {
25
25
  Grid?: Override<any>;
26
+ GridWrapper?: Override<any>;
26
27
  }
27
28
 
28
29
  export interface CellOverrides {
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.StyledCell = exports.StyledGrid = void 0;
6
+ exports.StyledCell = exports.StyledGrid = exports.StyledGridWrapper = void 0;
7
7
 
8
8
  var _index = require("../styles/index.js");
9
9
 
@@ -17,61 +17,80 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
17
17
 
18
18
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
19
19
 
20
- var StyledGrid = (0, _index.styled)('div', function (_ref) {
20
+ var StyledGridWrapper = (0, _index.styled)('div', function (_ref) {
21
21
  var $theme = _ref.$theme,
22
- _ref$$align = _ref.$align,
23
- $align = _ref$$align === void 0 ? null : _ref$$align,
24
22
  _ref$$behavior = _ref.$behavior,
25
23
  $behavior = _ref$$behavior === void 0 ? _constants.BEHAVIOR.fixed : _ref$$behavior,
26
- _ref$$gridGutters = _ref.$gridGutters,
27
- $gridGutters = _ref$$gridGutters === void 0 ? $theme.grid.gutters : _ref$$gridGutters,
28
24
  _ref$$gridMargins = _ref.$gridMargins,
29
25
  $gridMargins = _ref$$gridMargins === void 0 ? $theme.grid.margins : _ref$$gridMargins,
30
26
  _ref$$gridMaxWidth = _ref.$gridMaxWidth,
31
27
  $gridMaxWidth = _ref$$gridMaxWidth === void 0 ? $theme.grid.maxWidth : _ref$$gridMaxWidth,
32
28
  _ref$$gridUnit = _ref.$gridUnit,
33
29
  $gridUnit = _ref$$gridUnit === void 0 ? $theme.grid.unit : _ref$$gridUnit;
30
+ return {
31
+ margin: 'auto',
32
+ maxWidth: $behavior === _constants.BEHAVIOR.fixed ? "".concat($gridMaxWidth + 2 * getResponsiveNumber($gridMargins, Infinity) - 1).concat($gridUnit) : null
33
+ };
34
+ });
35
+ exports.StyledGridWrapper = StyledGridWrapper;
36
+ StyledGridWrapper.displayName = "StyledGridWrapper";
37
+ var StyledGrid = (0, _index.styled)('div', function (_ref2) {
38
+ var $theme = _ref2.$theme,
39
+ _ref2$$align = _ref2.$align,
40
+ $align = _ref2$$align === void 0 ? null : _ref2$$align,
41
+ _ref2$$behavior = _ref2.$behavior,
42
+ $behavior = _ref2$$behavior === void 0 ? _constants.BEHAVIOR.fixed : _ref2$$behavior,
43
+ _ref2$$gridGutters = _ref2.$gridGutters,
44
+ $gridGutters = _ref2$$gridGutters === void 0 ? $theme.grid.gutters : _ref2$$gridGutters,
45
+ _ref2$$gridMargins = _ref2.$gridMargins,
46
+ $gridMargins = _ref2$$gridMargins === void 0 ? $theme.grid.margins : _ref2$$gridMargins,
47
+ _ref2$$gridMaxWidth = _ref2.$gridMaxWidth,
48
+ $gridMaxWidth = _ref2$$gridMaxWidth === void 0 ? $theme.grid.maxWidth : _ref2$$gridMaxWidth,
49
+ _ref2$$gridUnit = _ref2.$gridUnit,
50
+ $gridUnit = _ref2$$gridUnit === void 0 ? $theme.grid.unit : _ref2$$gridUnit;
34
51
  var mediaQueries = (0, _responsiveHelpers.getMediaQueries)($theme.breakpoints);
35
52
  var gridStyles = mediaQueries.reduce(function (acc, cur, idx) {
36
53
  return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, cur, {
37
- paddingLeft: "".concat(getResponsiveNumber($gridMargins, idx) - getResponsiveNumber($gridGutters, idx) / 2 - 0.5).concat($gridUnit),
38
- paddingRight: "".concat(getResponsiveNumber($gridMargins, idx) - getResponsiveNumber($gridGutters, idx) / 2 - 0.5).concat($gridUnit),
54
+ paddingLeft: "".concat(getResponsiveNumber($gridMargins, idx)).concat($gridUnit),
55
+ paddingRight: "".concat(getResponsiveNumber($gridMargins, idx)).concat($gridUnit),
56
+ marginLeft: "-".concat(getResponsiveNumber($gridGutters, idx) / 2).concat($gridUnit),
57
+ marginRight: "-".concat(getResponsiveNumber($gridGutters, idx) / 2).concat($gridUnit),
39
58
  alignItems: getResponsiveValue($align, idx)
40
59
  }));
41
60
  }, {
42
- paddingLeft: "".concat(getResponsiveNumber($gridMargins, 0) - getResponsiveNumber($gridGutters, 0) / 2 - 0.5).concat($gridUnit),
43
- paddingRight: "".concat(getResponsiveNumber($gridMargins, 0) - getResponsiveNumber($gridGutters, 0) / 2 - 0.5).concat($gridUnit),
61
+ paddingLeft: "".concat(getResponsiveNumber($gridMargins, 0)).concat($gridUnit),
62
+ paddingRight: "".concat(getResponsiveNumber($gridMargins, 0)).concat($gridUnit),
63
+ marginLeft: "-".concat(getResponsiveNumber($gridGutters, 0) / 2).concat($gridUnit),
64
+ marginRight: "-".concat(getResponsiveNumber($gridGutters, 0) / 2).concat($gridUnit),
44
65
  alignItems: getResponsiveValue($align, 0)
45
66
  });
46
67
  return _objectSpread({
47
68
  boxSizing: 'border-box',
48
69
  display: 'flex',
49
70
  flexWrap: 'wrap',
50
- marginLeft: 'auto',
51
- marginRight: 'auto',
52
71
  maxWidth: $behavior === _constants.BEHAVIOR.fixed ? "".concat($gridMaxWidth + 2 * getResponsiveNumber($gridMargins, Infinity) - 1).concat($gridUnit) : null
53
72
  }, gridStyles);
54
73
  });
55
74
  exports.StyledGrid = StyledGrid;
56
75
  StyledGrid.displayName = "StyledGrid";
57
- var StyledCell = (0, _index.styled)('div', function (_ref2) {
58
- var $theme = _ref2.$theme,
59
- _ref2$$align = _ref2.$align,
60
- $align = _ref2$$align === void 0 ? null : _ref2$$align,
61
- _ref2$$order = _ref2.$order,
62
- $order = _ref2$$order === void 0 ? null : _ref2$$order,
63
- _ref2$$gridColumns = _ref2.$gridColumns,
64
- $gridColumns = _ref2$$gridColumns === void 0 ? $theme.grid.columns : _ref2$$gridColumns,
65
- _ref2$$gridGaps = _ref2.$gridGaps,
66
- $gridGaps = _ref2$$gridGaps === void 0 ? $theme.grid.gaps : _ref2$$gridGaps,
67
- _ref2$$gridGutters = _ref2.$gridGutters,
68
- $gridGutters = _ref2$$gridGutters === void 0 ? $theme.grid.gutters : _ref2$$gridGutters,
69
- _ref2$$gridUnit = _ref2.$gridUnit,
70
- $gridUnit = _ref2$$gridUnit === void 0 ? $theme.grid.unit : _ref2$$gridUnit,
71
- _ref2$$skip = _ref2.$skip,
72
- $skip = _ref2$$skip === void 0 ? [0, 0, 0] : _ref2$$skip,
73
- _ref2$$span = _ref2.$span,
74
- $span = _ref2$$span === void 0 ? [1, 1, 1] : _ref2$$span;
76
+ var StyledCell = (0, _index.styled)('div', function (_ref3) {
77
+ var $theme = _ref3.$theme,
78
+ _ref3$$align = _ref3.$align,
79
+ $align = _ref3$$align === void 0 ? null : _ref3$$align,
80
+ _ref3$$order = _ref3.$order,
81
+ $order = _ref3$$order === void 0 ? null : _ref3$$order,
82
+ _ref3$$gridColumns = _ref3.$gridColumns,
83
+ $gridColumns = _ref3$$gridColumns === void 0 ? $theme.grid.columns : _ref3$$gridColumns,
84
+ _ref3$$gridGaps = _ref3.$gridGaps,
85
+ $gridGaps = _ref3$$gridGaps === void 0 ? $theme.grid.gaps : _ref3$$gridGaps,
86
+ _ref3$$gridGutters = _ref3.$gridGutters,
87
+ $gridGutters = _ref3$$gridGutters === void 0 ? $theme.grid.gutters : _ref3$$gridGutters,
88
+ _ref3$$gridUnit = _ref3.$gridUnit,
89
+ $gridUnit = _ref3$$gridUnit === void 0 ? $theme.grid.unit : _ref3$$gridUnit,
90
+ _ref3$$skip = _ref3.$skip,
91
+ $skip = _ref3$$skip === void 0 ? [0, 0, 0] : _ref3$$skip,
92
+ _ref3$$span = _ref3.$span,
93
+ $span = _ref3$$span === void 0 ? [1, 1, 1] : _ref3$$span;
75
94
  var mediaQueries = (0, _responsiveHelpers.getMediaQueries)($theme.breakpoints);
76
95
  var cellStyles = mediaQueries.reduce(function (acc, cur, idx) {
77
96
  if (getResponsiveNumber($span, idx) === 0) {
@@ -87,18 +106,17 @@ var StyledCell = (0, _index.styled)('div', function (_ref2) {
87
106
 
88
107
  return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, cur, {
89
108
  display: 'block',
90
- width: "".concat(100 / getResponsiveNumber($gridColumns, idx) * Math.min(getResponsiveNumber($span, idx), getResponsiveNumber($gridColumns, idx)), "%"),
91
- marginLeft: "".concat(100 / getResponsiveNumber($gridColumns, idx) * Math.min(getResponsiveNumber($skip, idx), getResponsiveNumber($gridColumns, idx) - 1), "%"),
92
- paddingLeft: "".concat(getResponsiveNumber($gridGutters, idx) / 2).concat($gridUnit),
93
- paddingRight: "".concat(getResponsiveNumber($gridGutters, idx) / 2).concat($gridUnit),
109
+ width: "calc(".concat(100 / getResponsiveNumber($gridColumns, idx) * Math.min(getResponsiveNumber($span, idx), getResponsiveNumber($gridColumns, idx)), "% - ").concat(getResponsiveNumber($gridGutters, idx)).concat($gridUnit, ")"),
110
+ marginLeft: "calc(".concat(100 / getResponsiveNumber($gridColumns, idx) * Math.min(getResponsiveNumber($skip, idx), getResponsiveNumber($gridColumns, idx) - 1), "% + ").concat(getResponsiveNumber($gridGutters, idx) / 2).concat($gridUnit, ")"),
111
+ marginRight: "".concat(getResponsiveNumber($gridGutters, idx) / 2).concat($gridUnit),
94
112
  marginBottom: "".concat(getResponsiveNumber($gridGaps, idx)).concat($gridUnit),
95
113
  alignSelf: getResponsiveValue($align, idx),
96
114
  order: getResponsiveNumber($order, idx)
97
115
  }));
98
116
  }, {
99
117
  width: '100%',
100
- paddingLeft: "".concat(getResponsiveNumber($gridGutters, 0) / 2).concat($gridUnit),
101
- paddingRight: "".concat(getResponsiveNumber($gridGutters, 0) / 2).concat($gridUnit),
118
+ marginLeft: "".concat(getResponsiveNumber($gridGutters, 0) / 2).concat($gridUnit),
119
+ marginRight: "".concat(getResponsiveNumber($gridGutters, 0) / 2).concat($gridUnit),
102
120
  marginBottom: "".concat(getResponsiveNumber($gridGaps, 0)).concat($gridUnit),
103
121
  alignSelf: getResponsiveValue($align, 0),
104
122
  order: getResponsiveNumber($order, 0)
@@ -9,7 +9,31 @@ LICENSE file in the root directory of this source tree.
9
9
  import {styled} from '../styles/index.js';
10
10
  import {getMediaQueries} from '../helpers/responsive-helpers.js';
11
11
  import {BEHAVIOR} from './constants.js';
12
- import type {ResponsiveT, StyledGridPropsT, StyledCellPropsT} from './types.js';
12
+ import type {
13
+ ResponsiveT,
14
+ StyledGridPropsT,
15
+ StyledGridWrapperPropsT,
16
+ StyledCellPropsT,
17
+ } from './types.js';
18
+
19
+ export const StyledGridWrapper = styled<StyledGridWrapperPropsT>(
20
+ 'div',
21
+ ({
22
+ $theme,
23
+ $behavior = BEHAVIOR.fixed,
24
+ $gridMargins = $theme.grid.margins,
25
+ $gridMaxWidth = $theme.grid.maxWidth,
26
+ $gridUnit = $theme.grid.unit,
27
+ }) => ({
28
+ margin: 'auto',
29
+ maxWidth:
30
+ $behavior === BEHAVIOR.fixed
31
+ ? `${$gridMaxWidth +
32
+ 2 * getResponsiveNumber($gridMargins, Infinity) -
33
+ 1}${$gridUnit}`
34
+ : null,
35
+ }),
36
+ );
13
37
 
14
38
  export const StyledGrid = styled<StyledGridPropsT>(
15
39
  'div',
@@ -28,23 +52,27 @@ export const StyledGrid = styled<StyledGridPropsT>(
28
52
  return {
29
53
  ...acc,
30
54
  [cur]: {
31
- paddingLeft: `${getResponsiveNumber($gridMargins, idx) -
32
- getResponsiveNumber($gridGutters, idx) / 2 -
33
- 0.5}${$gridUnit}`,
34
- paddingRight: `${getResponsiveNumber($gridMargins, idx) -
35
- getResponsiveNumber($gridGutters, idx) / 2 -
36
- 0.5}${$gridUnit}`,
55
+ paddingLeft: `${getResponsiveNumber(
56
+ $gridMargins,
57
+ idx,
58
+ )}${$gridUnit}`,
59
+ paddingRight: `${getResponsiveNumber(
60
+ $gridMargins,
61
+ idx,
62
+ )}${$gridUnit}`,
63
+ marginLeft: `-${getResponsiveNumber($gridGutters, idx) /
64
+ 2}${$gridUnit}`,
65
+ marginRight: `-${getResponsiveNumber($gridGutters, idx) /
66
+ 2}${$gridUnit}`,
37
67
  alignItems: getResponsiveValue($align, idx),
38
68
  },
39
69
  };
40
70
  },
41
71
  {
42
- paddingLeft: `${getResponsiveNumber($gridMargins, 0) -
43
- getResponsiveNumber($gridGutters, 0) / 2 -
44
- 0.5}${$gridUnit}`,
45
- paddingRight: `${getResponsiveNumber($gridMargins, 0) -
46
- getResponsiveNumber($gridGutters, 0) / 2 -
47
- 0.5}${$gridUnit}`,
72
+ paddingLeft: `${getResponsiveNumber($gridMargins, 0)}${$gridUnit}`,
73
+ paddingRight: `${getResponsiveNumber($gridMargins, 0)}${$gridUnit}`,
74
+ marginLeft: `-${getResponsiveNumber($gridGutters, 0) / 2}${$gridUnit}`,
75
+ marginRight: `-${getResponsiveNumber($gridGutters, 0) / 2}${$gridUnit}`,
48
76
  alignItems: getResponsiveValue($align, 0),
49
77
  },
50
78
  );
@@ -52,8 +80,6 @@ export const StyledGrid = styled<StyledGridPropsT>(
52
80
  boxSizing: 'border-box',
53
81
  display: 'flex',
54
82
  flexWrap: 'wrap',
55
- marginLeft: 'auto',
56
- marginRight: 'auto',
57
83
  maxWidth:
58
84
  $behavior === BEHAVIOR.fixed
59
85
  ? `${$gridMaxWidth +
@@ -98,19 +124,17 @@ export const StyledCell = styled<StyledCellPropsT>(
98
124
  ...acc,
99
125
  [cur]: {
100
126
  display: 'block',
101
- width: `${(100 / getResponsiveNumber($gridColumns, idx)) *
127
+ width: `calc(${(100 / getResponsiveNumber($gridColumns, idx)) *
102
128
  Math.min(
103
129
  getResponsiveNumber($span, idx),
104
130
  getResponsiveNumber($gridColumns, idx),
105
- )}%`,
106
- marginLeft: `${(100 / getResponsiveNumber($gridColumns, idx)) *
131
+ )}% - ${getResponsiveNumber($gridGutters, idx)}${$gridUnit})`,
132
+ marginLeft: `calc(${(100 / getResponsiveNumber($gridColumns, idx)) *
107
133
  Math.min(
108
134
  getResponsiveNumber($skip, idx),
109
135
  getResponsiveNumber($gridColumns, idx) - 1,
110
- )}%`,
111
- paddingLeft: `${getResponsiveNumber($gridGutters, idx) /
112
- 2}${$gridUnit}`,
113
- paddingRight: `${getResponsiveNumber($gridGutters, idx) /
136
+ )}% + ${getResponsiveNumber($gridGutters, idx) / 2}${$gridUnit})`,
137
+ marginRight: `${getResponsiveNumber($gridGutters, idx) /
114
138
  2}${$gridUnit}`,
115
139
  marginBottom: `${getResponsiveNumber($gridGaps, idx)}${$gridUnit}`,
116
140
  alignSelf: getResponsiveValue($align, idx),
@@ -120,8 +144,8 @@ export const StyledCell = styled<StyledCellPropsT>(
120
144
  },
121
145
  {
122
146
  width: '100%',
123
- paddingLeft: `${getResponsiveNumber($gridGutters, 0) / 2}${$gridUnit}`,
124
- paddingRight: `${getResponsiveNumber($gridGutters, 0) / 2}${$gridUnit}`,
147
+ marginLeft: `${getResponsiveNumber($gridGutters, 0) / 2}${$gridUnit}`,
148
+ marginRight: `${getResponsiveNumber($gridGutters, 0) / 2}${$gridUnit}`,
125
149
  marginBottom: `${getResponsiveNumber($gridGaps, 0)}${$gridUnit}`,
126
150
  alignSelf: getResponsiveValue($align, 0),
127
151
  order: getResponsiveNumber($order, 0),
@@ -67,9 +67,21 @@ export type GridPropsT = {
67
67
  /** Overrides for your grid. */
68
68
  overrides?: {
69
69
  Grid?: OverrideT,
70
+ GridWrapper?: OverrideT,
70
71
  },
71
72
  };
72
73
 
74
+ export type StyledGridWrapperPropsT = {
75
+ /** Grid container behavior beyond max width. Fluid will continue to expand. Fixed will limit grid container to max width and center the container horizontally within parent element. */
76
+ $behavior?: BehaviorT,
77
+ /** Gap on either side of grid container at each breakpoint. */
78
+ $gridMargins?: ResponsiveT<number>,
79
+ /** Maximum width of the grid container. Does not include Margins. Only applies when `behavior` is `fluid`. */
80
+ $gridMaxWidth?: number,
81
+ /** Modify the CSS length unit used to measure columns and rows. Defaults to theme value. */
82
+ $gridUnit?: CSSLengthUnitT,
83
+ };
84
+
73
85
  export type StyledGridPropsT = {
74
86
  /** Control vertical alignment of cells at each breakpoint. */
75
87
  $align?: ResponsiveT<AlignmentT>,
package/list/index.js CHANGED
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  var _exportNames = {
7
7
  ListItem: true,
8
8
  ListItemLabel: true,
9
+ ListHeading: true,
9
10
  MenuAdapter: true,
10
11
  ARTWORK_SIZES: true,
11
12
  SHAPE: true
@@ -22,6 +23,12 @@ Object.defineProperty(exports, "ListItemLabel", {
22
23
  return _listItemLabel.default;
23
24
  }
24
25
  });
26
+ Object.defineProperty(exports, "ListHeading", {
27
+ enumerable: true,
28
+ get: function get() {
29
+ return _listHeading.default;
30
+ }
31
+ });
25
32
  Object.defineProperty(exports, "MenuAdapter", {
26
33
  enumerable: true,
27
34
  get: function get() {
@@ -45,6 +52,8 @@ var _listItem = _interopRequireDefault(require("./list-item.js"));
45
52
 
46
53
  var _listItemLabel = _interopRequireDefault(require("./list-item-label.js"));
47
54
 
55
+ var _listHeading = _interopRequireDefault(require("./list-heading.js"));
56
+
48
57
  var _menuAdapter = _interopRequireDefault(require("./menu-adapter.js"));
49
58
 
50
59
  var _constants = require("./constants.js");
@@ -8,6 +8,7 @@ LICENSE file in the root directory of this source tree.
8
8
 
9
9
  export {default as ListItem} from './list-item.js';
10
10
  export {default as ListItemLabel} from './list-item-label.js';
11
+ export {default as ListHeading} from './list-heading.js';
11
12
  export {default as MenuAdapter} from './menu-adapter.js';
12
13
 
13
14
  export {ARTWORK_SIZES, SHAPE} from './constants.js';