@planningcenter/tapestry-react 2.1.2 → 2.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 (88) hide show
  1. package/dist/cjs/Badge/Badge.js +5 -1
  2. package/dist/cjs/Button/Button.js +6 -3
  3. package/dist/cjs/Card/Card.js +5 -2
  4. package/dist/cjs/Combobox/Combobox.js +16 -43
  5. package/dist/cjs/Combobox/ComboboxInput.js +112 -146
  6. package/dist/cjs/Combobox/ComboboxItem.js +38 -53
  7. package/dist/cjs/Combobox/ComboboxItems.js +41 -58
  8. package/dist/cjs/Combobox/index.js +12 -0
  9. package/dist/cjs/DateField/DateField.js +109 -128
  10. package/dist/cjs/Field/Field.js +80 -106
  11. package/dist/cjs/Menu/Item.js +1 -0
  12. package/dist/cjs/Popover/utils.js +1 -0
  13. package/dist/cjs/SegmentedControl/SegmentedControl.js +89 -111
  14. package/dist/cjs/SegmentedTabs/SegmentedTabs.js +54 -84
  15. package/dist/cjs/Tabs/Tab.js +9 -6
  16. package/dist/cjs/Tabs/TabList.js +49 -64
  17. package/dist/cjs/Tabs/TabPanel.js +6 -2
  18. package/dist/cjs/Tabs/TabPanels.js +14 -27
  19. package/dist/cjs/Tabs/Tabs.js +72 -106
  20. package/dist/cjs/Tabs/index.js +12 -0
  21. package/dist/cjs/ThemeProvider/ThemeProvider.js +1 -1
  22. package/dist/cjs/Tooltip/Tooltip.js +158 -182
  23. package/dist/cjs/Wizard/Wizard.js +143 -193
  24. package/dist/cjs/Wizard/index.js +3 -0
  25. package/dist/esm/Badge/Badge.js +5 -1
  26. package/dist/esm/Button/Button.js +6 -3
  27. package/dist/esm/Card/Card.js +5 -2
  28. package/dist/esm/Combobox/Combobox.js +18 -43
  29. package/dist/esm/Combobox/ComboboxInput.js +111 -149
  30. package/dist/esm/Combobox/ComboboxItem.js +38 -52
  31. package/dist/esm/Combobox/ComboboxItems.js +38 -56
  32. package/dist/esm/Combobox/index.js +8 -0
  33. package/dist/esm/DateField/DateField.js +106 -133
  34. package/dist/esm/Field/Field.js +76 -103
  35. package/dist/esm/Menu/Item.js +1 -0
  36. package/dist/esm/Popover/utils.js +1 -0
  37. package/dist/esm/SegmentedControl/SegmentedControl.js +90 -114
  38. package/dist/esm/SegmentedTabs/SegmentedTabs.js +51 -83
  39. package/dist/esm/Tabs/Tab.js +8 -6
  40. package/dist/esm/Tabs/TabList.js +49 -66
  41. package/dist/esm/Tabs/TabPanel.js +4 -2
  42. package/dist/esm/Tabs/TabPanels.js +14 -28
  43. package/dist/esm/Tabs/Tabs.js +76 -120
  44. package/dist/esm/Tabs/index.js +8 -0
  45. package/dist/esm/ThemeProvider/ThemeProvider.js +1 -1
  46. package/dist/esm/Tooltip/Tooltip.js +154 -195
  47. package/dist/esm/Wizard/Wizard.js +144 -201
  48. package/dist/esm/Wizard/index.js +2 -0
  49. package/dist/types/Popover/utils.d.ts +3 -0
  50. package/package.json +1 -1
  51. package/src/.DS_Store +0 -0
  52. package/src/Badge/Badge.js +5 -0
  53. package/src/Button/Button.tsx +6 -3
  54. package/src/Card/Card.tsx +22 -1
  55. package/src/Combobox/Combobox.js +18 -32
  56. package/src/Combobox/Combobox.mdx +1 -0
  57. package/src/Combobox/Combobox.test.js +1 -1
  58. package/src/Combobox/ComboboxInput.js +111 -105
  59. package/src/Combobox/ComboboxItem.js +27 -27
  60. package/src/Combobox/ComboboxItems.js +38 -60
  61. package/src/Combobox/index.js +8 -0
  62. package/src/DateField/DateField.js +109 -105
  63. package/src/DateField/DateField.mdx +1 -0
  64. package/src/Field/Field.js +85 -93
  65. package/src/Field/Field.mdx +1 -0
  66. package/src/Menu/Heading.js +5 -1
  67. package/src/Menu/Heading.mdx +20 -0
  68. package/src/Menu/Item.js +13 -1
  69. package/src/Menu/Item.mdx +18 -0
  70. package/src/Menu/Menu.mdx +1 -0
  71. package/src/Popover/utils.ts +1 -0
  72. package/src/SegmentedControl/SegmentedControl.js +88 -92
  73. package/src/SegmentedControl/SegmentedControl.mdx +1 -0
  74. package/src/SegmentedTabs/SegmentedTabs.js +51 -71
  75. package/src/SegmentedTabs/SegmentedTabs.mdx +1 -0
  76. package/src/Tabs/Tab.js +3 -1
  77. package/src/Tabs/TabList.js +56 -62
  78. package/src/Tabs/TabPanel.js +2 -1
  79. package/src/Tabs/TabPanels.js +14 -15
  80. package/src/Tabs/Tabs.js +63 -84
  81. package/src/Tabs/Tabs.mdx +16 -17
  82. package/src/Tabs/index.js +8 -0
  83. package/src/ThemeProvider/ThemeProvider.tsx +1 -1
  84. package/src/Tooltip/Tooltip.js +142 -160
  85. package/src/Tooltip/Tooltip.mdx +1 -0
  86. package/src/Wizard/Wizard.js +141 -170
  87. package/src/Wizard/Wizard.mdx +3 -2
  88. package/src/Wizard/index.js +2 -0
@@ -89,7 +89,11 @@ function Badge(_ref) {
89
89
  }
90
90
 
91
91
  badgeProps.paddingLeft = renderLeft ? boxSize + 0.5 : badgeProps.radius === 'pill' ? paddingHorizontal : paddingHorizontalDense;
92
- badgeProps.paddingRight = renderRight ? boxSize + 0.5 : badgeProps.radius === 'pill' ? paddingHorizontal : paddingHorizontalDense;
92
+ badgeProps.paddingRight = renderRight ? boxSize + 0.5 : badgeProps.radius === 'pill' ? paddingHorizontal : paddingHorizontalDense; // The `square` prop is no longer needed and should not get
93
+ // passed to `<StackView>` since it's not one of its props
94
+ // or a standard HTML attribute.
95
+
96
+ delete badgeProps.square;
93
97
  return /*#__PURE__*/_react["default"].createElement(_StackView["default"], (0, _extends2["default"])({
94
98
  inline: true,
95
99
  axis: "horizontal",
@@ -68,7 +68,7 @@ function Button(_ref) {
68
68
 
69
69
  var buttonProps = {
70
70
  alignment: 'center',
71
- as: restProps.href || to ? 'a' : 'div',
71
+ as: restProps.href || to ? 'a' : 'button',
72
72
  axis: 'horizontal',
73
73
  distribution: 'center',
74
74
  fontSize: fontSize,
@@ -77,7 +77,6 @@ function Button(_ref) {
77
77
  lineHeight: lineHeight,
78
78
  position: 'relative',
79
79
  radius: 3,
80
- role: 'button',
81
80
  strokeAlign: 'inside',
82
81
  strokeWeight: 1,
83
82
  userSelect: 'none',
@@ -192,7 +191,6 @@ function Button(_ref) {
192
191
  };
193
192
  buttonProps.cursor = 'pointer';
194
193
  buttonProps.touchAction = 'manipulation';
195
- buttonProps.tabIndex = 0;
196
194
  buttonProps.onClick = onClick;
197
195
 
198
196
  buttonProps.onKeyDown = function (event) {
@@ -232,6 +230,11 @@ function Button(_ref) {
232
230
 
233
231
  if (restProps.as) {
234
232
  buttonProps.to = to;
233
+ } // set button type to prevent nested buttons from unintentionally submiting forms
234
+
235
+
236
+ if (buttonProps.as === "button") {
237
+ buttonProps.type = "button";
235
238
  }
236
239
 
237
240
  if (process.env.NODE_ENV !== 'production') {
@@ -27,7 +27,10 @@ function Card(_ref) {
27
27
  _ref$radius = _ref.radius,
28
28
  radius = _ref$radius === void 0 ? 3 : _ref$radius,
29
29
  restProps = (0, _objectWithoutPropertiesLoose2["default"])(_ref, ["children", "subdued", "radius"]);
30
- var cardTheme = (0, _system.useThemeValue)('card');
30
+ var cardTheme = (0, _system.useThemeValue)('card'); // List of component types to ignore when setting the radius
31
+ // for first & last child elements
32
+
33
+ var ignoreRadiusTypes = ['Avatar', 'Badge', 'Button', 'Calendar', 'ChurchCenterStatus', 'Group', 'Inline', 'Input', 'InputBox', 'Modal', 'Progress', 'Spinner', 'Status', 'Tab', 'Tooltip'];
31
34
  return /*#__PURE__*/React.createElement(_StackView.StackView, (0, _extends2["default"])({
32
35
  width: "100%",
33
36
  lineHeight: 2.5,
@@ -42,7 +45,7 @@ function Card(_ref) {
42
45
 
43
46
  var firstChild = _ref2.firstChild,
44
47
  lastChild = _ref2.lastChild;
45
- return child.props.radius === undefined ? firstChild ? (_ref3 = {}, _ref3["radius" + (restProps.axis === 'horizontal' ? 'Left' : 'Top')] = radius - 1, _ref3) : lastChild ? (_ref4 = {}, _ref4["radius" + (restProps.axis === 'horizontal' ? 'Right' : 'Bottom')] = radius - 1, _ref4) : {} : {};
48
+ return child.props.radius === undefined && !ignoreRadiusTypes.includes(child.type.name) ? firstChild ? (_ref3 = {}, _ref3["radius" + (restProps.axis === 'horizontal' ? 'Left' : 'Top')] = radius - 1, _ref3) : lastChild ? (_ref4 = {}, _ref4["radius" + (restProps.axis === 'horizontal' ? 'Right' : 'Bottom')] = radius - 1, _ref4) : {} : {};
46
49
  }) : children);
47
50
  }
48
51
 
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
-
5
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
4
 
7
5
  exports.__esModule = true;
@@ -9,54 +7,29 @@ exports["default"] = void 0;
9
7
 
10
8
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
11
9
 
12
- var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
13
-
14
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
-
16
- var _react = _interopRequireWildcard(require("react"));
10
+ var _react = _interopRequireDefault(require("react"));
17
11
 
18
12
  var _Box = _interopRequireDefault(require("../Box"));
19
13
 
20
14
  var _ItemList = require("../ItemList");
21
15
 
22
- var _ComboboxInput = _interopRequireDefault(require("./ComboboxInput"));
23
-
24
- var _ComboboxItem = _interopRequireDefault(require("./ComboboxItem"));
25
-
26
- var _ComboboxItems = _interopRequireDefault(require("./ComboboxItems"));
27
-
28
- var _ComboboxPopover = _interopRequireDefault(require("./ComboboxPopover"));
29
-
30
- var Combobox = /*#__PURE__*/function (_Component) {
31
- (0, _inheritsLoose2["default"])(Combobox, _Component);
32
-
33
- function Combobox() {
34
- return _Component.apply(this, arguments) || this;
35
- }
36
-
37
- var _proto = Combobox.prototype;
16
+ var _system = require("../system");
38
17
 
39
- _proto.render = function render() {
40
- var _this$props = this.props,
41
- children = _this$props.children,
42
- multiple = _this$props.multiple,
43
- onSelect = _this$props.onSelect,
44
- selectedValue = _this$props.selectedValue,
45
- restProps = (0, _objectWithoutPropertiesLoose2["default"])(_this$props, ["children", "multiple", "onSelect", "selectedValue"]);
46
- return /*#__PURE__*/_react["default"].createElement(_ItemList.ItemList, {
47
- selected: function selected(item) {
48
- return item.value === selectedValue;
49
- },
50
- onSelect: onSelect
51
- }, /*#__PURE__*/_react["default"].createElement(_Box["default"], restProps, children));
52
- };
18
+ function Combobox(props) {
19
+ var _useThemeProps = (0, _system.useThemeProps)('combobox', props),
20
+ children = _useThemeProps.children,
21
+ multiple = _useThemeProps.multiple,
22
+ onSelect = _useThemeProps.onSelect,
23
+ selectedValue = _useThemeProps.selectedValue,
24
+ restProps = (0, _objectWithoutPropertiesLoose2["default"])(_useThemeProps, ["children", "multiple", "onSelect", "selectedValue"]);
53
25
 
54
- return Combobox;
55
- }(_react.Component);
26
+ return /*#__PURE__*/_react["default"].createElement(_ItemList.ItemList, {
27
+ selected: function selected(item) {
28
+ return item.value === selectedValue;
29
+ },
30
+ onSelect: onSelect
31
+ }, /*#__PURE__*/_react["default"].createElement(_Box["default"], restProps, children));
32
+ }
56
33
 
57
- (0, _defineProperty2["default"])(Combobox, "Input", _ComboboxInput["default"]);
58
- (0, _defineProperty2["default"])(Combobox, "Item", _ComboboxItem["default"]);
59
- (0, _defineProperty2["default"])(Combobox, "Items", _ComboboxItems["default"]);
60
- (0, _defineProperty2["default"])(Combobox, "Popover", _ComboboxPopover["default"]);
61
34
  var _default = Combobox;
62
35
  exports["default"] = _default;
@@ -11,161 +11,127 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
11
11
 
12
12
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
13
13
 
14
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
-
16
- var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
17
-
18
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
19
-
20
14
  var _react = _interopRequireWildcard(require("react"));
21
15
 
22
16
  var _Input = _interopRequireDefault(require("../Input"));
23
17
 
24
- var _ItemList = require("../ItemList");
25
-
26
- var ComboboxInput = /*#__PURE__*/function (_Component) {
27
- (0, _inheritsLoose2["default"])(ComboboxInput, _Component);
28
-
29
- function ComboboxInput() {
30
- var _this;
31
-
32
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
33
- args[_key] = arguments[_key];
34
- }
35
-
36
- _this = _Component.call.apply(_Component, [this].concat(args)) || this;
37
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "setInputNode", function (node) {
38
- _this.inputNode = node;
18
+ var _ItemListContext = _interopRequireDefault(require("../ItemList/ItemListContext"));
19
+
20
+ var _system = require("../system");
21
+
22
+ function ComboboxInput(props, ref) {
23
+ var _useThemeProps = (0, _system.useThemeProps)('combobox.input', props),
24
+ autoFocus = _useThemeProps.autoFocus,
25
+ defaultValue = _useThemeProps.defaultValue,
26
+ disabled = _useThemeProps.disabled,
27
+ innerRef = _useThemeProps.innerRef,
28
+ isOpen = _useThemeProps.isOpen,
29
+ isLoading = _useThemeProps.isLoading,
30
+ name = _useThemeProps.name,
31
+ onBlur = _useThemeProps.onBlur,
32
+ onChange = _useThemeProps.onChange,
33
+ onFocus = _useThemeProps.onFocus,
34
+ onClear = _useThemeProps.onClear,
35
+ onClose = _useThemeProps.onClose,
36
+ onKeyDown = _useThemeProps.onKeyDown,
37
+ onKeyUp = _useThemeProps.onKeyUp,
38
+ placeholder = _useThemeProps.placeholder,
39
+ readOnly = _useThemeProps.readOnly,
40
+ size = _useThemeProps.size,
41
+ type = _useThemeProps.type,
42
+ value = _useThemeProps.value,
43
+ restProps = (0, _objectWithoutPropertiesLoose2["default"])(_useThemeProps, ["autoFocus", "defaultValue", "disabled", "innerRef", "isOpen", "isLoading", "name", "onBlur", "onChange", "onFocus", "onClear", "onClose", "onKeyDown", "onKeyUp", "placeholder", "readOnly", "size", "type", "value"]);
44
+
45
+ var inputNode = (0, _react.useRef)(null);
46
+ var focus = (0, _react.useCallback)(function () {
47
+ inputNode.current.focus();
48
+ }, [inputNode]);
49
+ var blur = (0, _react.useCallback)(function () {
50
+ inputNode.current.blur();
51
+ }, [inputNode]);
52
+ (0, _react.useImperativeHandle)(ref, function () {
53
+ return {
54
+ focus: focus,
55
+ blur: blur
56
+ };
57
+ });
58
+ var itemList = (0, _react.useContext)(_ItemListContext["default"]);
59
+ var highlightedItemId = itemList.highlightedItemId,
60
+ id = itemList.id;
61
+ (0, _react.useEffect)(function () {
62
+ setTimeout(function () {
63
+ itemList.setHighlightedIndex(0);
39
64
  });
40
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleKeyDown", function (e) {
41
- if (e.key === 'ArrowUp') {
42
- e.preventDefault();
43
-
44
- _this.itemList.moveHighlightedIndex(-1, {
45
- contain: false
46
- });
47
- }
48
-
49
- if (e.key === 'ArrowDown') {
50
- e.preventDefault();
51
-
52
- _this.itemList.moveHighlightedIndex(1, {
53
- contain: false
54
- });
55
- }
56
-
57
- if (e.key === 'Enter') {
58
- e.preventDefault();
59
-
60
- _this.itemList.selectHighlightedItem();
61
- }
62
-
63
- if (_this.props.onKeyDown) {
64
- _this.props.onKeyDown(e);
65
- }
66
-
67
- if (_this.props.onClose && e.key === 'Tab') {
68
- _this.props.onClose();
69
- }
70
- });
71
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleDocumentKeyDown", function (e) {
72
- if (_this.props.onClear && e.key === 'Escape') {
73
- _this.props.onClear();
74
- }
75
- });
76
- return _this;
77
- }
78
-
79
- var _proto = ComboboxInput.prototype;
80
-
81
- _proto.componentDidUpdate = function componentDidUpdate(lastProps) {
82
- var _this2 = this;
65
+ }, [itemList.items]);
66
+ var handleKeyDown = (0, _react.useCallback)(function (e) {
67
+ if (e.key === 'ArrowUp') {
68
+ e.preventDefault();
69
+ itemList.moveHighlightedIndex(-1, {
70
+ contain: false
71
+ });
72
+ }
83
73
 
84
- if (lastProps.value !== this.props.value) {
85
- // needs to be called after items have been sorted, there's probably a better way to fix this
86
- setTimeout(function () {
87
- _this2.itemList.setHighlightedIndex(0);
74
+ if (e.key === 'ArrowDown') {
75
+ e.preventDefault();
76
+ itemList.moveHighlightedIndex(1, {
77
+ contain: false
88
78
  });
89
79
  }
90
- };
91
-
92
- _proto.focus = function focus() {
93
- this.inputNode.focus();
94
- };
95
-
96
- _proto.blur = function blur() {
97
- this.inputNode.blur();
98
- };
99
-
100
- _proto.render = function render() {
101
- var _this3 = this;
102
-
103
- var _this$props = this.props,
104
- autoFocus = _this$props.autoFocus,
105
- defaultValue = _this$props.defaultValue,
106
- disabled = _this$props.disabled,
107
- innerRef = _this$props.innerRef,
108
- isOpen = _this$props.isOpen,
109
- isLoading = _this$props.isLoading,
110
- name = _this$props.name,
111
- onBlur = _this$props.onBlur,
112
- onChange = _this$props.onChange,
113
- onFocus = _this$props.onFocus,
114
- onClear = _this$props.onClear,
115
- onClose = _this$props.onClose,
116
- onKeyDown = _this$props.onKeyDown,
117
- onKeyUp = _this$props.onKeyUp,
118
- placeholder = _this$props.placeholder,
119
- readOnly = _this$props.readOnly,
120
- size = _this$props.size,
121
- type = _this$props.type,
122
- value = _this$props.value,
123
- restProps = (0, _objectWithoutPropertiesLoose2["default"])(_this$props, ["autoFocus", "defaultValue", "disabled", "innerRef", "isOpen", "isLoading", "name", "onBlur", "onChange", "onFocus", "onClear", "onClose", "onKeyDown", "onKeyUp", "placeholder", "readOnly", "size", "type", "value"]);
124
- return /*#__PURE__*/_react["default"].createElement(_ItemList.ItemListController, null, function (itemList) {
125
- var highlightedItemId = itemList.highlightedItemId,
126
- id = itemList.id;
127
-
128
- if (!_this3.itemList) {
129
- _this3.itemList = itemList;
130
- }
131
-
132
- return /*#__PURE__*/_react["default"].createElement(_Input["default"].InputBox, (0, _extends2["default"])({
133
- innerRef: innerRef,
134
- size: size,
135
- disabled: disabled,
136
- isLoading: isLoading,
137
- onClear: onClear
138
- }, restProps, {
139
- grow: 1
140
- }), /*#__PURE__*/_react["default"].createElement(_Input["default"].InputField, {
141
- innerRef: _this3.setInputNode,
142
- grow: 1,
143
- role: "combobox",
144
- autoComplete: "off",
145
- "aria-autocomplete": "list",
146
- "aria-controls": id,
147
- "aria-expanded": isOpen,
148
- "aria-activedescendant": highlightedItemId,
149
- autoFocus: autoFocus,
150
- type: type,
151
- name: name,
152
- disabled: disabled,
153
- readOnly: readOnly,
154
- placeholder: placeholder,
155
- defaultValue: defaultValue,
156
- value: value,
157
- onChange: onChange,
158
- onFocus: onFocus,
159
- onBlur: onBlur,
160
- onKeyDown: _this3.handleKeyDown,
161
- onKeyUp: onKeyUp
162
- }));
163
- });
164
- };
165
80
 
166
- return ComboboxInput;
167
- }(_react.Component);
81
+ if (e.key === 'Enter') {
82
+ e.preventDefault();
83
+ itemList.selectHighlightedItem();
84
+ }
85
+
86
+ if (onKeyDown) {
87
+ onKeyDown(e);
88
+ }
168
89
 
169
- (0, _defineProperty2["default"])(ComboboxInput, "displayName", 'Combobox.Input');
90
+ if (onClose && e.key === 'Tab') {
91
+ onClose();
92
+ }
93
+ });
94
+ var handleDocumentKeyDown = (0, _react.useCallback)(function (e) {
95
+ if (onClear && e.key === 'Escape') {
96
+ onClear();
97
+ }
98
+ });
99
+ return /*#__PURE__*/_react["default"].createElement(_Input["default"].InputBox, (0, _extends2["default"])({
100
+ innerRef: innerRef,
101
+ size: size,
102
+ disabled: disabled,
103
+ isLoading: isLoading,
104
+ onClear: onClear
105
+ }, restProps, {
106
+ grow: 1
107
+ }), /*#__PURE__*/_react["default"].createElement(_Input["default"].InputField, {
108
+ innerRef: function innerRef(node) {
109
+ inputNode.current = node;
110
+ },
111
+ grow: 1,
112
+ role: "combobox",
113
+ autoComplete: "off",
114
+ "aria-autocomplete": "list",
115
+ "aria-controls": id,
116
+ "aria-expanded": isOpen,
117
+ "aria-activedescendant": highlightedItemId,
118
+ autoFocus: autoFocus,
119
+ type: type,
120
+ name: name,
121
+ disabled: disabled,
122
+ readOnly: readOnly,
123
+ placeholder: placeholder,
124
+ defaultValue: defaultValue,
125
+ value: value,
126
+ onChange: onChange,
127
+ onFocus: onFocus,
128
+ onBlur: onBlur,
129
+ onKeyDown: handleKeyDown,
130
+ onKeyUp: onKeyUp
131
+ }));
132
+ }
133
+
134
+ ComboboxInput = /*#__PURE__*/(0, _react.forwardRef)(ComboboxInput);
135
+ ComboboxInput.displayName = 'Combobox.Input';
170
136
  var _default = ComboboxInput;
171
137
  exports["default"] = _default;
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
-
5
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
4
 
7
5
  exports.__esModule = true;
@@ -11,62 +9,49 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
11
9
 
12
10
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
13
11
 
14
- var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
15
-
16
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
-
18
- var _react = _interopRequireWildcard(require("react"));
12
+ var _react = _interopRequireDefault(require("react"));
19
13
 
20
14
  var _ItemList = require("../ItemList");
21
15
 
22
16
  var _Menu = _interopRequireDefault(require("../Menu"));
23
17
 
24
- var ComboboxItem = /*#__PURE__*/function (_Component) {
25
- (0, _inheritsLoose2["default"])(ComboboxItem, _Component);
26
-
27
- function ComboboxItem() {
28
- return _Component.apply(this, arguments) || this;
29
- }
30
-
31
- var _proto = ComboboxItem.prototype;
32
-
33
- _proto.render = function render() {
34
- var _this$props = this.props,
35
- value = _this$props.value,
36
- index = _this$props.index,
37
- text = _this$props.text,
38
- _this$props$disabled = _this$props.disabled,
39
- disabled = _this$props$disabled === void 0 ? false : _this$props$disabled,
40
- restProps = (0, _objectWithoutPropertiesLoose2["default"])(_this$props, ["value", "index", "text", "disabled"]);
41
- return /*#__PURE__*/_react["default"].createElement(_ItemList.ItemListItem, {
42
- data: value,
18
+ var _system = require("../system");
19
+
20
+ function ComboboxItem(props) {
21
+ var _useThemeProps = (0, _system.useThemeProps)('combobox.item', props),
22
+ value = _useThemeProps.value,
23
+ index = _useThemeProps.index,
24
+ text = _useThemeProps.text,
25
+ _useThemeProps$disabl = _useThemeProps.disabled,
26
+ disabled = _useThemeProps$disabl === void 0 ? false : _useThemeProps$disabl,
27
+ restProps = (0, _objectWithoutPropertiesLoose2["default"])(_useThemeProps, ["value", "index", "text", "disabled"]);
28
+
29
+ return /*#__PURE__*/_react["default"].createElement(_ItemList.ItemListItem, {
30
+ data: value,
31
+ disabled: disabled,
32
+ index: index,
33
+ text: text
34
+ }, function (_ref) {
35
+ var id = _ref.id,
36
+ highlight = _ref.highlight,
37
+ highlighted = _ref.highlighted,
38
+ clearHighlight = _ref.clearHighlight,
39
+ select = _ref.select;
40
+ return /*#__PURE__*/_react["default"].createElement(_Menu["default"].Item, (0, _extends2["default"])({
43
41
  disabled: disabled,
44
- index: index,
45
- text: text
46
- }, function (_ref) {
47
- var id = _ref.id,
48
- highlight = _ref.highlight,
49
- highlighted = _ref.highlighted,
50
- clearHighlight = _ref.clearHighlight,
51
- select = _ref.select;
52
- return /*#__PURE__*/_react["default"].createElement(_Menu["default"].Item, (0, _extends2["default"])({
53
- disabled: disabled,
54
- id: id,
55
- isHighlighted: highlighted,
56
- onMouseOver: highlight,
57
- onMouseOut: clearHighlight,
58
- onClick: function onClick(event) {
59
- event.stopPropagation();
60
- event.nativeEvent.stopImmediatePropagation();
61
- select();
62
- }
63
- }, restProps));
64
- });
65
- };
66
-
67
- return ComboboxItem;
68
- }(_react.Component);
69
-
70
- (0, _defineProperty2["default"])(ComboboxItem, "displayName", 'Combobox.Item');
42
+ id: id,
43
+ isHighlighted: highlighted,
44
+ onMouseOver: highlight,
45
+ onMouseOut: clearHighlight,
46
+ onClick: function onClick(event) {
47
+ event.stopPropagation();
48
+ event.nativeEvent.stopImmediatePropagation();
49
+ select();
50
+ }
51
+ }, restProps));
52
+ });
53
+ }
54
+
55
+ ComboboxItem.displayName = 'Combobox.Item';
71
56
  var _default = ComboboxItem;
72
57
  exports["default"] = _default;
@@ -9,10 +9,6 @@ exports["default"] = void 0;
9
9
 
10
10
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
11
11
 
12
- var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
13
-
14
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
-
16
12
  var _react = _interopRequireWildcard(require("react"));
17
13
 
18
14
  var _matchSorter = require("match-sorter");
@@ -27,7 +23,7 @@ var _StackView = _interopRequireDefault(require("../StackView"));
27
23
 
28
24
  var _Text = _interopRequireDefault(require("../Text"));
29
25
 
30
- var _utils = require("../utils");
26
+ var _system = require("../system");
31
27
 
32
28
  var _ComboboxItem = _interopRequireDefault(require("./ComboboxItem"));
33
29
 
@@ -46,62 +42,49 @@ var defaultRenderItem = function defaultRenderItem(item) {
46
42
  });
47
43
  };
48
44
 
49
- var ComboboxItems = /*#__PURE__*/function (_Component) {
50
- (0, _inheritsLoose2["default"])(ComboboxItems, _Component);
51
-
52
- function ComboboxItems(props) {
53
- var _this;
54
-
55
- _this = _Component.call(this, props) || this;
56
- _this.state = {
57
- sortedItems: _this.getSortedItems(props)
58
- };
59
- return _this;
60
- }
61
-
62
- var _proto = ComboboxItems.prototype;
63
-
64
- _proto.componentDidUpdate = function componentDidUpdate(lastProps) {
65
- if (lastProps.value !== this.props.value || !(0, _utils.shallowEqual)(lastProps.items, this.props.items) || !(0, _utils.shallowEqual)(lastProps.filter, this.props.filter)) {
66
- this.setState({
67
- sortedItems: this.getSortedItems(this.props)
68
- });
69
- }
70
- };
71
-
72
- _proto.getSortedItems = function getSortedItems(_ref) {
45
+ function ComboboxItems(props) {
46
+ var _useThemeProps = (0, _system.useThemeProps)('combobox.items', props),
47
+ filter = _useThemeProps.filter,
48
+ items = _useThemeProps.items,
49
+ _useThemeProps$render = _useThemeProps.renderEmpty,
50
+ renderEmpty = _useThemeProps$render === void 0 ? defaultRenderEmpty : _useThemeProps$render,
51
+ _useThemeProps$render2 = _useThemeProps.renderItem,
52
+ renderItem = _useThemeProps$render2 === void 0 ? defaultRenderItem : _useThemeProps$render2,
53
+ title = _useThemeProps.title,
54
+ _useThemeProps$value = _useThemeProps.value,
55
+ value = _useThemeProps$value === void 0 ? '' : _useThemeProps$value,
56
+ restProps = (0, _objectWithoutPropertiesLoose2["default"])(_useThemeProps, ["filter", "items", "renderEmpty", "renderItem", "title", "value"]);
57
+
58
+ var _useState = (0, _react.useState)(getSortedItems({
59
+ items: items,
60
+ value: value,
61
+ filter: filter
62
+ })),
63
+ sortedItems = _useState[0],
64
+ setSortedItems = _useState[1];
65
+
66
+ function getSortedItems(_ref) {
73
67
  var items = _ref.items,
74
68
  value = _ref.value,
75
69
  filter = _ref.filter;
76
70
  return (0, _matchSorter.matchSorter)(items, value.length > 0 ? value : '', filter);
77
- };
78
-
79
- _proto.render = function render() {
80
- var _this$props = this.props,
81
- filter = _this$props.filter,
82
- items = _this$props.items,
83
- renderEmpty = _this$props.renderEmpty,
84
- renderItem = _this$props.renderItem,
85
- title = _this$props.title,
86
- value = _this$props.value,
87
- restProps = (0, _objectWithoutPropertiesLoose2["default"])(_this$props, ["filter", "items", "renderEmpty", "renderItem", "title", "value"]);
88
- var sortedItems = this.state.sortedItems;
89
- return /*#__PURE__*/_react["default"].createElement(_Box["default"], restProps, title && /*#__PURE__*/_react["default"].createElement(_StackView["default"], {
90
- paddingHorizontal: 1,
91
- paddingVertical: 0.5
92
- }, /*#__PURE__*/_react["default"].createElement(_HeadingUppercase["default"], null, title)), _react.Children.toArray(sortedItems.length > 0 ? sortedItems.map(function (item, index) {
93
- return renderItem(item, index);
94
- }) : typeof renderEmpty === 'function' ? renderEmpty(value) : renderEmpty));
95
- };
96
-
97
- return ComboboxItems;
98
- }(_react.Component);
99
-
100
- (0, _defineProperty2["default"])(ComboboxItems, "displayName", 'Combobox.Items');
101
- (0, _defineProperty2["default"])(ComboboxItems, "defaultProps", {
102
- value: '',
103
- renderEmpty: defaultRenderEmpty,
104
- renderItem: defaultRenderItem
105
- });
71
+ }
72
+
73
+ (0, _react.useEffect)(function () {
74
+ setSortedItems(getSortedItems({
75
+ items: items,
76
+ value: value,
77
+ filter: filter
78
+ }));
79
+ }, [items, value, filter]);
80
+ return /*#__PURE__*/_react["default"].createElement(_Box["default"], restProps, title && /*#__PURE__*/_react["default"].createElement(_StackView["default"], {
81
+ paddingHorizontal: 1,
82
+ paddingVertical: 0.5
83
+ }, /*#__PURE__*/_react["default"].createElement(_HeadingUppercase["default"], null, title)), _react.Children.toArray(sortedItems.length > 0 ? sortedItems.map(function (item, index) {
84
+ return renderItem(item, index);
85
+ }) : typeof renderEmpty === 'function' ? renderEmpty(value) : renderEmpty));
86
+ }
87
+
88
+ ComboboxItems.displayName = 'Combobox.Items';
106
89
  var _default = ComboboxItems;
107
90
  exports["default"] = _default;