@contentful/f36-autocomplete 4.13.0 → 4.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +44 -0
- package/dist/main.js +86 -91
- package/dist/main.js.map +1 -1
- package/dist/module.js +86 -91
- package/dist/module.js.map +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +9 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,49 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
+
## 4.15.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#2165](https://github.com/contentful/forma-36/pull/2165) [`5582f33c`](https://github.com/contentful/forma-36/commit/5582f33c0674850a30cc2a1792aad72fa219f7de) Thanks [@loweisz](https://github.com/loweisz)! - fix(autocomplete): hide list component when when items and search value are empty
|
|
8
|
+
|
|
9
|
+
- Updated dependencies []:
|
|
10
|
+
- @contentful/f36-button@4.15.1
|
|
11
|
+
- @contentful/f36-forms@4.15.1
|
|
12
|
+
- @contentful/f36-icons@4.15.1
|
|
13
|
+
- @contentful/f36-popover@4.15.1
|
|
14
|
+
- @contentful/f36-skeleton@4.15.1
|
|
15
|
+
- @contentful/f36-typography@4.15.1
|
|
16
|
+
- @contentful/f36-utils@4.15.1
|
|
17
|
+
- @contentful/f36-core@4.15.1
|
|
18
|
+
|
|
19
|
+
## 4.15.0
|
|
20
|
+
|
|
21
|
+
### Patch Changes
|
|
22
|
+
|
|
23
|
+
- Updated dependencies []:
|
|
24
|
+
- @contentful/f36-button@4.15.0
|
|
25
|
+
- @contentful/f36-forms@4.15.0
|
|
26
|
+
- @contentful/f36-icons@4.15.0
|
|
27
|
+
- @contentful/f36-popover@4.15.0
|
|
28
|
+
- @contentful/f36-skeleton@4.15.0
|
|
29
|
+
- @contentful/f36-typography@4.15.0
|
|
30
|
+
- @contentful/f36-utils@4.15.0
|
|
31
|
+
- @contentful/f36-core@4.15.0
|
|
32
|
+
|
|
33
|
+
## 4.14.0
|
|
34
|
+
|
|
35
|
+
### Patch Changes
|
|
36
|
+
|
|
37
|
+
- Updated dependencies []:
|
|
38
|
+
- @contentful/f36-button@4.14.0
|
|
39
|
+
- @contentful/f36-forms@4.14.0
|
|
40
|
+
- @contentful/f36-icons@4.14.0
|
|
41
|
+
- @contentful/f36-popover@4.14.0
|
|
42
|
+
- @contentful/f36-skeleton@4.14.0
|
|
43
|
+
- @contentful/f36-typography@4.14.0
|
|
44
|
+
- @contentful/f36-utils@4.14.0
|
|
45
|
+
- @contentful/f36-core@4.14.0
|
|
46
|
+
|
|
3
47
|
## 4.13.0
|
|
4
48
|
|
|
5
49
|
### Patch Changes
|
package/dist/main.js
CHANGED
|
@@ -36,73 +36,72 @@ $parcel$export(module.exports, "Autocomplete", () => $56e6e764f18116b7$export$2f
|
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
const $e938248654439d1d$export$71b73d9f7d678746 = (listMaxHeight)=>({
|
|
39
|
-
autocomplete: /*#__PURE__*/ $hVoOH$emotion.css({
|
|
39
|
+
autocomplete: /*#__PURE__*/ (0, $hVoOH$emotion.css)({
|
|
40
40
|
name: "1jke4yk",
|
|
41
41
|
styles: "position:relative;width:100%;"
|
|
42
42
|
}),
|
|
43
|
-
combobox: /*#__PURE__*/ $hVoOH$emotion.css({
|
|
43
|
+
combobox: /*#__PURE__*/ (0, $hVoOH$emotion.css)({
|
|
44
44
|
name: "79elbk",
|
|
45
45
|
styles: "position:relative;"
|
|
46
46
|
}),
|
|
47
|
-
inputField: /*#__PURE__*/ $hVoOH$emotion.css({
|
|
48
|
-
paddingRight: ($parcel$interopDefault($hVoOH$contentfulf36tokens)).spacingXl,
|
|
49
|
-
textOverflow:
|
|
50
|
-
whiteSpace:
|
|
47
|
+
inputField: /*#__PURE__*/ (0, $hVoOH$emotion.css)({
|
|
48
|
+
paddingRight: (0, ($parcel$interopDefault($hVoOH$contentfulf36tokens))).spacingXl,
|
|
49
|
+
textOverflow: "ellipsis",
|
|
50
|
+
whiteSpace: "nowrap"
|
|
51
51
|
}),
|
|
52
|
-
toggleButton: /*#__PURE__*/ $hVoOH$emotion.css({
|
|
53
|
-
position:
|
|
54
|
-
top:
|
|
55
|
-
right:
|
|
52
|
+
toggleButton: /*#__PURE__*/ (0, $hVoOH$emotion.css)({
|
|
53
|
+
position: "absolute",
|
|
54
|
+
top: "1px",
|
|
55
|
+
right: "1px",
|
|
56
56
|
zIndex: 1,
|
|
57
|
-
padding: ($parcel$interopDefault($hVoOH$contentfulf36tokens)).spacing2Xs,
|
|
58
|
-
height:
|
|
57
|
+
padding: (0, ($parcel$interopDefault($hVoOH$contentfulf36tokens))).spacing2Xs,
|
|
58
|
+
height: "38px"
|
|
59
59
|
}),
|
|
60
|
-
content: /*#__PURE__*/ $hVoOH$emotion.css({
|
|
61
|
-
overflow:
|
|
60
|
+
content: /*#__PURE__*/ (0, $hVoOH$emotion.css)({
|
|
61
|
+
overflow: "auto",
|
|
62
62
|
maxHeight: `${listMaxHeight}px`
|
|
63
63
|
}),
|
|
64
|
-
list: /*#__PURE__*/ $hVoOH$emotion.css({
|
|
65
|
-
listStyle:
|
|
66
|
-
padding: `${($parcel$interopDefault($hVoOH$contentfulf36tokens)).spacingXs} 0`,
|
|
64
|
+
list: /*#__PURE__*/ (0, $hVoOH$emotion.css)({
|
|
65
|
+
listStyle: "none",
|
|
66
|
+
padding: `${(0, ($parcel$interopDefault($hVoOH$contentfulf36tokens))).spacingXs} 0`,
|
|
67
67
|
margin: 0
|
|
68
68
|
}),
|
|
69
|
-
groupTitle: /*#__PURE__*/ $hVoOH$emotion.css({
|
|
70
|
-
padding: `${($parcel$interopDefault($hVoOH$contentfulf36tokens)).spacingXs} ${($parcel$interopDefault($hVoOH$contentfulf36tokens)).spacingM}`,
|
|
71
|
-
lineHeight: ($parcel$interopDefault($hVoOH$contentfulf36tokens)).lineHeightM
|
|
69
|
+
groupTitle: /*#__PURE__*/ (0, $hVoOH$emotion.css)({
|
|
70
|
+
padding: `${(0, ($parcel$interopDefault($hVoOH$contentfulf36tokens))).spacingXs} ${(0, ($parcel$interopDefault($hVoOH$contentfulf36tokens))).spacingM}`,
|
|
71
|
+
lineHeight: (0, ($parcel$interopDefault($hVoOH$contentfulf36tokens))).lineHeightM
|
|
72
72
|
}),
|
|
73
|
-
noMatchesTitle: /*#__PURE__*/ $hVoOH$emotion.css({
|
|
74
|
-
color: ($parcel$interopDefault($hVoOH$contentfulf36tokens)).gray500,
|
|
75
|
-
margin: `${($parcel$interopDefault($hVoOH$contentfulf36tokens)).spacingM} 0 ${($parcel$interopDefault($hVoOH$contentfulf36tokens)).spacingM} 0`
|
|
73
|
+
noMatchesTitle: /*#__PURE__*/ (0, $hVoOH$emotion.css)({
|
|
74
|
+
color: (0, ($parcel$interopDefault($hVoOH$contentfulf36tokens))).gray500,
|
|
75
|
+
margin: `${(0, ($parcel$interopDefault($hVoOH$contentfulf36tokens))).spacingM} 0 ${(0, ($parcel$interopDefault($hVoOH$contentfulf36tokens))).spacingM} 0`
|
|
76
76
|
}),
|
|
77
|
-
item: /*#__PURE__*/ $hVoOH$emotion.css({
|
|
78
|
-
display:
|
|
79
|
-
padding: `${($parcel$interopDefault($hVoOH$contentfulf36tokens)).spacingXs} ${($parcel$interopDefault($hVoOH$contentfulf36tokens)).spacingM}`,
|
|
80
|
-
wordBreak:
|
|
81
|
-
whiteSpace:
|
|
82
|
-
cursor:
|
|
83
|
-
hyphens:
|
|
84
|
-
|
|
85
|
-
backgroundColor: ($parcel$interopDefault($hVoOH$contentfulf36tokens)).gray100
|
|
77
|
+
item: /*#__PURE__*/ (0, $hVoOH$emotion.css)({
|
|
78
|
+
display: "block",
|
|
79
|
+
padding: `${(0, ($parcel$interopDefault($hVoOH$contentfulf36tokens))).spacingXs} ${(0, ($parcel$interopDefault($hVoOH$contentfulf36tokens))).spacingM}`,
|
|
80
|
+
wordBreak: "break-word",
|
|
81
|
+
whiteSpace: "break-spaces",
|
|
82
|
+
cursor: "pointer",
|
|
83
|
+
hyphens: "auto",
|
|
84
|
+
"&:focus, &:hover": {
|
|
85
|
+
backgroundColor: (0, ($parcel$interopDefault($hVoOH$contentfulf36tokens))).gray100
|
|
86
86
|
},
|
|
87
|
-
|
|
88
|
-
backgroundColor: ($parcel$interopDefault($hVoOH$contentfulf36tokens)).gray200
|
|
87
|
+
"&:active": {
|
|
88
|
+
backgroundColor: (0, ($parcel$interopDefault($hVoOH$contentfulf36tokens))).gray200
|
|
89
89
|
}
|
|
90
90
|
}),
|
|
91
|
-
disabled: /*#__PURE__*/ $hVoOH$emotion.css({
|
|
91
|
+
disabled: /*#__PURE__*/ (0, $hVoOH$emotion.css)({
|
|
92
92
|
name: "1e07izz",
|
|
93
93
|
styles: "opacity:0.5;pointer-events:none;"
|
|
94
94
|
}),
|
|
95
|
-
highlighted: /*#__PURE__*/ $hVoOH$emotion.css({
|
|
96
|
-
backgroundColor: ($parcel$interopDefault($hVoOH$contentfulf36tokens)).gray100
|
|
95
|
+
highlighted: /*#__PURE__*/ (0, $hVoOH$emotion.css)({
|
|
96
|
+
backgroundColor: (0, ($parcel$interopDefault($hVoOH$contentfulf36tokens))).gray100
|
|
97
97
|
})
|
|
98
|
-
})
|
|
99
|
-
;
|
|
98
|
+
});
|
|
100
99
|
|
|
101
100
|
|
|
102
101
|
const $26b30f0765231b47$export$4db5c29873bb228f = (props)=>{
|
|
103
102
|
const { items: items , elementStartIndex: elementStartIndex , highlightedIndex: highlightedIndex , getItemProps: getItemProps , renderItem: renderItem , inputValue: inputValue , listMaxHeight: listMaxHeight = 180 } = props;
|
|
104
|
-
const styles = $e938248654439d1d$export$71b73d9f7d678746(listMaxHeight);
|
|
105
|
-
return /*#__PURE__*/ ($parcel$interopDefault($hVoOH$react)).createElement("ul", {
|
|
103
|
+
const styles = (0, $e938248654439d1d$export$71b73d9f7d678746)(listMaxHeight);
|
|
104
|
+
return /*#__PURE__*/ (0, ($parcel$interopDefault($hVoOH$react))).createElement("ul", {
|
|
106
105
|
className: styles.list,
|
|
107
106
|
"data-test-id": "cf-autocomplete-list"
|
|
108
107
|
}, items.map((item, index)=>{
|
|
@@ -111,44 +110,43 @@ const $26b30f0765231b47$export$4db5c29873bb228f = (props)=>{
|
|
|
111
110
|
item: item,
|
|
112
111
|
index: itemIndex
|
|
113
112
|
});
|
|
114
|
-
return /*#__PURE__*/ ($parcel$interopDefault($hVoOH$react)).createElement($hVoOH$contentfulf36typography.Text, {
|
|
113
|
+
return /*#__PURE__*/ (0, ($parcel$interopDefault($hVoOH$react))).createElement((0, $hVoOH$contentfulf36typography.Text), {
|
|
115
114
|
...itemProps,
|
|
116
115
|
as: "li",
|
|
117
116
|
key: itemIndex,
|
|
118
|
-
className: $hVoOH$emotion.cx([
|
|
117
|
+
className: (0, $hVoOH$emotion.cx)([
|
|
119
118
|
styles.item,
|
|
120
119
|
highlightedIndex === itemIndex && styles.highlighted
|
|
121
120
|
]),
|
|
122
121
|
"data-test-id": `cf-autocomplete-list-item-${itemIndex}`
|
|
123
|
-
}, renderItem ? renderItem(item, inputValue) : typeof item ===
|
|
122
|
+
}, renderItem ? renderItem(item, inputValue) : typeof item === "string" ? /*#__PURE__*/ (0, ($parcel$interopDefault($hVoOH$react))).createElement($26b30f0765231b47$var$HighlightedItem, {
|
|
124
123
|
item: item,
|
|
125
124
|
inputValue: inputValue
|
|
126
125
|
}) : item);
|
|
127
126
|
}));
|
|
128
127
|
};
|
|
129
|
-
$26b30f0765231b47$export$4db5c29873bb228f.displayName =
|
|
128
|
+
$26b30f0765231b47$export$4db5c29873bb228f.displayName = "AutocompleteItems";
|
|
130
129
|
function $26b30f0765231b47$var$HighlightedItem({ item: item , inputValue: inputValue }) {
|
|
131
|
-
const { before: before , match: match , after: after } = $hVoOH$contentfulf36utils.getStringMatch(item, inputValue);
|
|
132
|
-
return /*#__PURE__*/ ($parcel$interopDefault($hVoOH$react)).createElement(($parcel$interopDefault($hVoOH$react)).Fragment, null, before, /*#__PURE__*/ ($parcel$interopDefault($hVoOH$react)).createElement("b", null, match), after);
|
|
130
|
+
const { before: before , match: match , after: after } = (0, $hVoOH$contentfulf36utils.getStringMatch)(item, inputValue);
|
|
131
|
+
return /*#__PURE__*/ (0, ($parcel$interopDefault($hVoOH$react))).createElement((0, ($parcel$interopDefault($hVoOH$react))).Fragment, null, before, /*#__PURE__*/ (0, ($parcel$interopDefault($hVoOH$react))).createElement("b", null, match), after);
|
|
133
132
|
}
|
|
134
|
-
$26b30f0765231b47$var$HighlightedItem.displayName =
|
|
133
|
+
$26b30f0765231b47$var$HighlightedItem.displayName = "HighlightedItem";
|
|
135
134
|
|
|
136
135
|
|
|
137
136
|
|
|
138
137
|
function $56e6e764f18116b7$var$_Autocomplete(props, ref) {
|
|
139
|
-
const { id: id , className: className , clearAfterSelect: clearAfterSelect = false , closeAfterSelect: closeAfterSelect = true , defaultValue: defaultValue =
|
|
138
|
+
const { id: id , className: className , clearAfterSelect: clearAfterSelect = false , closeAfterSelect: closeAfterSelect = true , defaultValue: defaultValue = "" , selectedItem: selectedItem1 , items: items , onInputValueChange: onInputValueChange , onSelectItem: onSelectItem , renderItem: renderItem , icon: icon = /*#__PURE__*/ (0, ($parcel$interopDefault($hVoOH$react))).createElement((0, $hVoOH$contentfulf36icons.ChevronDownIcon), {
|
|
140
139
|
variant: "muted"
|
|
141
|
-
}) , itemToString: itemToString = (item)=>item
|
|
142
|
-
|
|
143
|
-
const
|
|
144
|
-
const
|
|
145
|
-
const handleInputValueChange = $hVoOH$react.useCallback((value)=>{
|
|
140
|
+
}) , itemToString: itemToString = (item)=>item , isInvalid: isInvalid , isDisabled: isDisabled , isRequired: isRequired , isReadOnly: isReadOnly , noMatchesMessage: noMatchesMessage = "No matches found" , placeholder: placeholder = "Search" , inputRef: inputRef , toggleRef: toggleRef , listRef: listRef , listWidth: listWidth = "auto" , listMaxHeight: listMaxHeight = 180 , isGrouped: isGrouped = false , isLoading: isLoading = false , usePortal: usePortal = false , testId: testId = "cf-autocomplete" } = props;
|
|
141
|
+
const styles = (0, $e938248654439d1d$export$71b73d9f7d678746)(listMaxHeight);
|
|
142
|
+
const [inputValue1, setInputValue] = (0, $hVoOH$react.useState)(defaultValue);
|
|
143
|
+
const handleInputValueChange = (0, $hVoOH$react.useCallback)((value)=>{
|
|
146
144
|
setInputValue(value);
|
|
147
145
|
onInputValueChange === null || onInputValueChange === void 0 ? void 0 : onInputValueChange(value);
|
|
148
146
|
}, [
|
|
149
147
|
onInputValueChange
|
|
150
148
|
]); // Handle manually to avoid a jumping cursor, see https://github.com/downshift-js/downshift/issues/1108#issuecomment-842407759
|
|
151
|
-
const handleNativeChangeEvent = $hVoOH$react.useCallback((event)=>{
|
|
149
|
+
const handleNativeChangeEvent = (0, $hVoOH$react.useCallback)((event)=>{
|
|
152
150
|
const value = event.target.value;
|
|
153
151
|
handleInputValueChange(value);
|
|
154
152
|
}, [
|
|
@@ -157,24 +155,22 @@ function $56e6e764f18116b7$var$_Autocomplete(props, ref) {
|
|
|
157
155
|
const flattenItems = $56e6e764f18116b7$var$isUsingGroups(isGrouped, items) ? items.reduce((acc, group)=>[
|
|
158
156
|
...acc,
|
|
159
157
|
...group.options
|
|
160
|
-
]
|
|
161
|
-
,
|
|
162
|
-
const
|
|
163
|
-
) : items.length === 0;
|
|
164
|
-
const { getComboboxProps: getComboboxProps , getInputProps: getInputProps , getItemProps: getItemProps , getMenuProps: getMenuProps , getToggleButtonProps: getToggleButtonProps , highlightedIndex: highlightedIndex , isOpen: isOpen , toggleMenu: toggleMenu } = $hVoOH$downshift.useCombobox({
|
|
158
|
+
], []) : items;
|
|
159
|
+
const isShowingNoMatches = $56e6e764f18116b7$var$isUsingGroups(isGrouped, items) ? items.every((group)=>group.options.length === 0) : items.length === 0;
|
|
160
|
+
const { getComboboxProps: getComboboxProps , getInputProps: getInputProps , getItemProps: getItemProps , getMenuProps: getMenuProps , getToggleButtonProps: getToggleButtonProps , highlightedIndex: highlightedIndex , isOpen: isOpen , toggleMenu: toggleMenu } = (0, $hVoOH$downshift.useCombobox)({
|
|
165
161
|
items: flattenItems,
|
|
166
162
|
selectedItem: selectedItem1,
|
|
167
163
|
inputValue: inputValue1,
|
|
168
164
|
itemToString: itemToString,
|
|
169
165
|
onInputValueChange: ({ type: type , inputValue: inputValue })=>{
|
|
170
|
-
if (type !==
|
|
166
|
+
if (type !== "__input_change__") handleInputValueChange(inputValue);
|
|
171
167
|
},
|
|
172
168
|
onStateChange: ({ type: type , selectedItem: selectedItem })=>{
|
|
173
169
|
switch(type){
|
|
174
|
-
case $hVoOH$downshift.useCombobox.stateChangeTypes.InputKeyDownEnter:
|
|
175
|
-
case $hVoOH$downshift.useCombobox.stateChangeTypes.ItemClick:
|
|
170
|
+
case (0, $hVoOH$downshift.useCombobox).stateChangeTypes.InputKeyDownEnter:
|
|
171
|
+
case (0, $hVoOH$downshift.useCombobox).stateChangeTypes.ItemClick:
|
|
176
172
|
if (selectedItem) onSelectItem(selectedItem);
|
|
177
|
-
if (clearAfterSelect) handleInputValueChange(
|
|
173
|
+
if (clearAfterSelect) handleInputValueChange("");
|
|
178
174
|
if (!closeAfterSelect) toggleMenu();
|
|
179
175
|
break;
|
|
180
176
|
default:
|
|
@@ -182,28 +178,28 @@ function $56e6e764f18116b7$var$_Autocomplete(props, ref) {
|
|
|
182
178
|
}
|
|
183
179
|
}
|
|
184
180
|
});
|
|
185
|
-
const {
|
|
181
|
+
const { "aria-labelledby": _labelledby , id: _inputId , ...inputProps } = getInputProps();
|
|
186
182
|
const comboboxProps = getComboboxProps();
|
|
187
183
|
const toggleProps = getToggleButtonProps();
|
|
188
184
|
const menuProps = getMenuProps();
|
|
189
185
|
let elementStartIndex = 0;
|
|
190
|
-
return /*#__PURE__*/ ($parcel$interopDefault($hVoOH$react)).createElement("div", {
|
|
186
|
+
return /*#__PURE__*/ (0, ($parcel$interopDefault($hVoOH$react))).createElement("div", {
|
|
191
187
|
"data-test-id": testId,
|
|
192
|
-
className: $hVoOH$emotion.cx(styles.autocomplete, className),
|
|
188
|
+
className: (0, $hVoOH$emotion.cx)(styles.autocomplete, className),
|
|
193
189
|
ref: ref
|
|
194
|
-
}, /*#__PURE__*/ ($parcel$interopDefault($hVoOH$react)).createElement($hVoOH$contentfulf36popover.Popover, {
|
|
190
|
+
}, /*#__PURE__*/ (0, ($parcel$interopDefault($hVoOH$react))).createElement((0, $hVoOH$contentfulf36popover.Popover), {
|
|
195
191
|
usePortal: usePortal,
|
|
196
192
|
isOpen: isOpen,
|
|
197
|
-
isFullWidth: listWidth ===
|
|
193
|
+
isFullWidth: listWidth === "full",
|
|
198
194
|
renderOnlyWhenOpen: false,
|
|
199
195
|
// and the user won't be able to type in the input
|
|
200
196
|
// eslint-disable-next-line jsx-a11y/no-autofocus
|
|
201
197
|
autoFocus: false,
|
|
202
198
|
id: menuProps.id
|
|
203
|
-
}, /*#__PURE__*/ ($parcel$interopDefault($hVoOH$react)).createElement($hVoOH$contentfulf36popover.Popover.Trigger, null, /*#__PURE__*/ ($parcel$interopDefault($hVoOH$react)).createElement("div", {
|
|
199
|
+
}, /*#__PURE__*/ (0, ($parcel$interopDefault($hVoOH$react))).createElement((0, $hVoOH$contentfulf36popover.Popover).Trigger, null, /*#__PURE__*/ (0, ($parcel$interopDefault($hVoOH$react))).createElement("div", {
|
|
204
200
|
...comboboxProps,
|
|
205
201
|
className: styles.combobox
|
|
206
|
-
}, /*#__PURE__*/ ($parcel$interopDefault($hVoOH$react)).createElement($hVoOH$contentfulf36forms.TextInput, {
|
|
202
|
+
}, /*#__PURE__*/ (0, ($parcel$interopDefault($hVoOH$react))).createElement((0, $hVoOH$contentfulf36forms.TextInput), {
|
|
207
203
|
className: styles.inputField,
|
|
208
204
|
...inputProps,
|
|
209
205
|
onFocus: ()=>{
|
|
@@ -214,53 +210,52 @@ function $56e6e764f18116b7$var$_Autocomplete(props, ref) {
|
|
|
214
210
|
isDisabled: isDisabled,
|
|
215
211
|
isRequired: isRequired,
|
|
216
212
|
isReadOnly: isReadOnly,
|
|
217
|
-
ref: $hVoOH$contentfulf36core.mergeRefs(inputProps.ref, inputRef),
|
|
213
|
+
ref: (0, $hVoOH$contentfulf36core.mergeRefs)(inputProps.ref, inputRef),
|
|
218
214
|
testId: "cf-autocomplete-input",
|
|
219
215
|
placeholder: placeholder,
|
|
220
216
|
onChange: (event)=>{
|
|
221
217
|
inputProps.onChange(event);
|
|
222
218
|
handleNativeChangeEvent(event);
|
|
223
219
|
}
|
|
224
|
-
}), /*#__PURE__*/ ($parcel$interopDefault($hVoOH$react)).createElement($hVoOH$contentfulf36button.IconButton, {
|
|
220
|
+
}), /*#__PURE__*/ (0, ($parcel$interopDefault($hVoOH$react))).createElement((0, $hVoOH$contentfulf36button.IconButton), {
|
|
225
221
|
...toggleProps,
|
|
226
|
-
ref: $hVoOH$contentfulf36core.mergeRefs(toggleProps.ref, toggleRef),
|
|
227
|
-
"aria-label": inputValue1 ?
|
|
222
|
+
ref: (0, $hVoOH$contentfulf36core.mergeRefs)(toggleProps.ref, toggleRef),
|
|
223
|
+
"aria-label": inputValue1 ? "Clear" : "Show list",
|
|
228
224
|
className: styles.toggleButton,
|
|
229
225
|
variant: "transparent",
|
|
230
|
-
icon: inputValue1 ? /*#__PURE__*/ ($parcel$interopDefault($hVoOH$react)).createElement($hVoOH$contentfulf36icons.CloseIcon, {
|
|
226
|
+
icon: inputValue1 ? /*#__PURE__*/ (0, ($parcel$interopDefault($hVoOH$react))).createElement((0, $hVoOH$contentfulf36icons.CloseIcon), {
|
|
231
227
|
variant: "muted"
|
|
232
228
|
}) : icon,
|
|
233
229
|
onClick: ()=>{
|
|
234
|
-
if (inputValue1) handleInputValueChange(
|
|
230
|
+
if (inputValue1) handleInputValueChange("");
|
|
235
231
|
else toggleMenu();
|
|
236
232
|
},
|
|
237
233
|
isDisabled: isDisabled,
|
|
238
234
|
size: "small"
|
|
239
|
-
}))), /*#__PURE__*/ ($parcel$interopDefault($hVoOH$react)).createElement($hVoOH$contentfulf36popover.Popover.Content, {
|
|
235
|
+
}))), (items.length > 0 || inputValue1.length > 0) && /*#__PURE__*/ (0, ($parcel$interopDefault($hVoOH$react))).createElement((0, $hVoOH$contentfulf36popover.Popover).Content, {
|
|
240
236
|
...menuProps,
|
|
241
|
-
ref: $hVoOH$contentfulf36core.mergeRefs(menuProps.ref, listRef),
|
|
237
|
+
ref: (0, $hVoOH$contentfulf36core.mergeRefs)(menuProps.ref, listRef),
|
|
242
238
|
className: styles.content,
|
|
243
239
|
testId: "cf-autocomplete-container"
|
|
244
240
|
}, isLoading && [
|
|
245
241
|
...Array(3)
|
|
246
|
-
].map((_, index)=>/*#__PURE__*/ ($parcel$interopDefault($hVoOH$react)).createElement("div", {
|
|
242
|
+
].map((_, index)=>/*#__PURE__*/ (0, ($parcel$interopDefault($hVoOH$react))).createElement("div", {
|
|
247
243
|
key: index,
|
|
248
|
-
className: $hVoOH$emotion.cx(styles.item, styles.disabled)
|
|
249
|
-
}, /*#__PURE__*/ ($parcel$interopDefault($hVoOH$react)).createElement($56e6e764f18116b7$var$ListItemLoadingState, null))
|
|
250
|
-
), !isLoading && isShowingNoMatches && /*#__PURE__*/ ($parcel$interopDefault($hVoOH$react)).createElement("div", {
|
|
244
|
+
className: (0, $hVoOH$emotion.cx)(styles.item, styles.disabled)
|
|
245
|
+
}, /*#__PURE__*/ (0, ($parcel$interopDefault($hVoOH$react))).createElement($56e6e764f18116b7$var$ListItemLoadingState, null))), !isLoading && isShowingNoMatches && /*#__PURE__*/ (0, ($parcel$interopDefault($hVoOH$react))).createElement("div", {
|
|
251
246
|
className: styles.item
|
|
252
|
-
}, /*#__PURE__*/ ($parcel$interopDefault($hVoOH$react)).createElement($hVoOH$contentfulf36typography.Subheading, {
|
|
247
|
+
}, /*#__PURE__*/ (0, ($parcel$interopDefault($hVoOH$react))).createElement((0, $hVoOH$contentfulf36typography.Subheading), {
|
|
253
248
|
className: styles.noMatchesTitle
|
|
254
249
|
}, noMatchesMessage)), !isLoading && $56e6e764f18116b7$var$isUsingGroups(isGrouped, items) && items.map((group, index)=>{
|
|
255
250
|
if (group.options.length < 1) return;
|
|
256
|
-
const render = /*#__PURE__*/ ($parcel$interopDefault($hVoOH$react)).createElement("div", {
|
|
251
|
+
const render = /*#__PURE__*/ (0, ($parcel$interopDefault($hVoOH$react))).createElement("div", {
|
|
257
252
|
key: index
|
|
258
|
-
}, /*#__PURE__*/ ($parcel$interopDefault($hVoOH$react)).createElement($hVoOH$contentfulf36typography.SectionHeading, {
|
|
253
|
+
}, /*#__PURE__*/ (0, ($parcel$interopDefault($hVoOH$react))).createElement((0, $hVoOH$contentfulf36typography.SectionHeading), {
|
|
259
254
|
key: index,
|
|
260
255
|
"data-test-id": "cf-autocomplete-grouptitle",
|
|
261
256
|
marginBottom: "none",
|
|
262
257
|
className: styles.groupTitle
|
|
263
|
-
}, group.groupTitle), /*#__PURE__*/ ($parcel$interopDefault($hVoOH$react)).createElement($26b30f0765231b47$export$4db5c29873bb228f, {
|
|
258
|
+
}, group.groupTitle), /*#__PURE__*/ (0, ($parcel$interopDefault($hVoOH$react))).createElement((0, $26b30f0765231b47$export$4db5c29873bb228f), {
|
|
264
259
|
items: group.options,
|
|
265
260
|
highlightedIndex: highlightedIndex,
|
|
266
261
|
getItemProps: getItemProps,
|
|
@@ -270,7 +265,7 @@ function $56e6e764f18116b7$var$_Autocomplete(props, ref) {
|
|
|
270
265
|
}));
|
|
271
266
|
elementStartIndex += group.options.length;
|
|
272
267
|
return render;
|
|
273
|
-
}), !isLoading && !$56e6e764f18116b7$var$isUsingGroups(isGrouped, items) && items.length > 0 && /*#__PURE__*/ ($parcel$interopDefault($hVoOH$react)).createElement($26b30f0765231b47$export$4db5c29873bb228f, {
|
|
268
|
+
}), !isLoading && !$56e6e764f18116b7$var$isUsingGroups(isGrouped, items) && items.length > 0 && /*#__PURE__*/ (0, ($parcel$interopDefault($hVoOH$react))).createElement((0, $26b30f0765231b47$export$4db5c29873bb228f), {
|
|
274
269
|
items: items,
|
|
275
270
|
elementStartIndex: elementStartIndex,
|
|
276
271
|
highlightedIndex: highlightedIndex,
|
|
@@ -280,16 +275,16 @@ function $56e6e764f18116b7$var$_Autocomplete(props, ref) {
|
|
|
280
275
|
}))));
|
|
281
276
|
}
|
|
282
277
|
const $56e6e764f18116b7$var$ListItemLoadingState = ()=>{
|
|
283
|
-
return /*#__PURE__*/ ($parcel$interopDefault($hVoOH$react)).createElement($hVoOH$contentfulf36skeleton.SkeletonContainer, {
|
|
278
|
+
return /*#__PURE__*/ (0, ($parcel$interopDefault($hVoOH$react))).createElement((0, $hVoOH$contentfulf36skeleton.SkeletonContainer), {
|
|
284
279
|
svgHeight: 16
|
|
285
|
-
}, /*#__PURE__*/ ($parcel$interopDefault($hVoOH$react)).createElement($hVoOH$contentfulf36skeleton.SkeletonBodyText, {
|
|
280
|
+
}, /*#__PURE__*/ (0, ($parcel$interopDefault($hVoOH$react))).createElement((0, $hVoOH$contentfulf36skeleton.SkeletonBodyText), {
|
|
286
281
|
numberOfLines: 1
|
|
287
282
|
}));
|
|
288
283
|
}; // This is required to infer correct typings when differentiating groups and items
|
|
289
284
|
function $56e6e764f18116b7$var$isUsingGroups(isGrouped, items) {
|
|
290
285
|
return isGrouped;
|
|
291
286
|
}
|
|
292
|
-
const $56e6e764f18116b7$export$2f2b9559550c7bbc = /*#__PURE__*/ ($parcel$interopDefault($hVoOH$react)).forwardRef($56e6e764f18116b7$var$_Autocomplete);
|
|
287
|
+
const $56e6e764f18116b7$export$2f2b9559550c7bbc = /*#__PURE__*/ (0, ($parcel$interopDefault($hVoOH$react))).forwardRef($56e6e764f18116b7$var$_Autocomplete);
|
|
293
288
|
|
|
294
289
|
|
|
295
290
|
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["packages/components/autocomplete/src/index.ts","packages/components/autocomplete/src/Autocomplete.tsx","packages/components/autocomplete/src/AutocompleteItems.tsx","packages/components/autocomplete/src/Autocomplete.styles.ts"],"sourcesContent":["export { Autocomplete } from './Autocomplete';\nexport type { AutocompleteProps } from './Autocomplete';\n","import React, { useCallback, useState } from 'react';\nimport { cx } from 'emotion';\nimport { useCombobox } from 'downshift';\n\nimport { mergeRefs } from '@contentful/f36-core';\nimport type { CommonProps, ExpandProps } from '@contentful/f36-core';\nimport { IconButton } from '@contentful/f36-button';\nimport { TextInput } from '@contentful/f36-forms';\nimport type { TextInputProps } from '@contentful/f36-forms';\nimport { CloseIcon, ChevronDownIcon } from '@contentful/f36-icons';\nimport { SkeletonContainer, SkeletonBodyText } from '@contentful/f36-skeleton';\nimport { Popover } from '@contentful/f36-popover';\nimport { Subheading, SectionHeading } from '@contentful/f36-typography';\n\nimport { AutocompleteItems } from './AutocompleteItems';\nimport { getAutocompleteStyles } from './Autocomplete.styles';\n\nexport interface GenericGroupType<ItemType> {\n groupTitle: string;\n options: ItemType[];\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface AutocompleteProps<ItemType>\n extends CommonProps,\n Pick<\n TextInputProps,\n | 'isDisabled'\n | 'isInvalid'\n | 'isReadOnly'\n | 'isRequired'\n | 'id'\n | 'defaultValue'\n > {\n /**\n * It’s an array of data to be used as \"options\" by the autocomplete component.\n * This can either be a plain list of items or a list of groups of items.\n */\n items: ItemType[] | GenericGroupType<ItemType>[];\n\n /**\n * Set a custom icon for the text input\n */\n icon?: React.ReactElement;\n\n /**\n * Tells if the item is a object with groups\n */\n isGrouped?: boolean;\n\n /**\n * Function called whenever the input value changes\n */\n onInputValueChange?: (value: string) => void;\n /**\n * This is the function that will be called when the user selects one of the \"options\" in the list.\n * The component will pass the selected \"item\" as an argument to the function..\n */\n onSelectItem: (item: ItemType) => void;\n\n /**\n * Applying the selectedItem property turns autocomplete into a controlled component.\n * Can be used to display e.g. previously selected element. If it is an object the itemToString function will apply to it.\n */\n selectedItem?: ItemType;\n\n /**\n * This is the function that will be called for each \"item\" passed in the `items` prop.\n * It receives the \"item\" and \"inputValue\" as arguments and returns a ReactNode.\n * The inputValue is passed in case you want to highlight the match on the render.\n */\n renderItem?: (item: ItemType, inputValue: string) => React.ReactNode;\n /**\n * When using objects as `items`, we recommend passing a function that tells Downshift how to extract a string\n * from those objetcs to be used as inputValue\n */\n itemToString?: (item: ItemType) => string;\n /**\n * If this is set to `true` the text input will be cleared after an item is selected\n * @default false\n */\n clearAfterSelect?: boolean;\n /**\n * If this is set to `false` the dropdown menu will stay open after selecting an item\n * @default true\n */\n closeAfterSelect?: boolean;\n /**\n * This is the value will be passed to the `placeholder` prop of the input.\n * @default \"Search\"\n */\n placeholder?: string;\n /**\n * A message that will be shown when it is not possible to find any option that matches the input value\n * @default \"No matches\"\n */\n noMatchesMessage?: string;\n /**\n * Use this prop to get a ref to the input element of the component\n */\n inputRef?: React.Ref<HTMLInputElement>;\n /**\n * Use this prop to get a ref to the toggle button of the component\n */\n toggleRef?: React.Ref<HTMLButtonElement>;\n /**\n * Use this prop to get a ref to the list of items of the component\n */\n listRef?: React.Ref<HTMLUListElement>;\n /**\n * It sets the width of the list\n * @default \"auto\"\n */\n listWidth?: 'auto' | 'full';\n /**\n * It sets the max-height, in pixels, of the list\n * The default value is the height of 5 single line items\n * @default 180\n */\n listMaxHeight?: number;\n /**\n * Sets the list to show its loading state\n * @default false\n */\n isLoading?: boolean;\n /**\n * Boolean to control whether or not to render the suggestions box in a React Portal.\n * Rendering content inside a Portal allows the suggestions box to escape the bounds\n * of its parent while still being positioned correctly.\n * Defaults to `false`\n */\n usePortal?: boolean;\n}\n\nfunction _Autocomplete<ItemType>(\n props: AutocompleteProps<ItemType>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {\n id,\n className,\n clearAfterSelect = false,\n closeAfterSelect = true,\n defaultValue = '',\n selectedItem,\n items,\n onInputValueChange,\n onSelectItem,\n renderItem,\n icon = <ChevronDownIcon variant=\"muted\" />,\n itemToString = (item: ItemType) => (item as unknown) as string,\n isInvalid,\n isDisabled,\n isRequired,\n isReadOnly,\n noMatchesMessage = 'No matches found',\n placeholder = 'Search',\n inputRef,\n toggleRef,\n listRef,\n listWidth = 'auto',\n listMaxHeight = 180,\n isGrouped = false,\n isLoading = false,\n usePortal = false,\n testId = 'cf-autocomplete',\n } = props;\n\n type GroupType = GenericGroupType<ItemType>;\n\n const styles = getAutocompleteStyles(listMaxHeight);\n\n const [inputValue, setInputValue] = useState(defaultValue);\n\n const handleInputValueChange = useCallback(\n (value: string) => {\n setInputValue(value);\n\n onInputValueChange?.(value);\n },\n [onInputValueChange],\n );\n\n // Handle manually to avoid a jumping cursor, see https://github.com/downshift-js/downshift/issues/1108#issuecomment-842407759\n const handleNativeChangeEvent = useCallback(\n (event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n const value = event.target.value;\n handleInputValueChange(value);\n },\n [handleInputValueChange],\n );\n\n const flattenItems = isUsingGroups(isGrouped, items)\n ? items.reduce(\n (acc: ItemType[], group: GroupType) => [...acc, ...group.options],\n [],\n )\n : items;\n\n const isShowingNoMatches = isUsingGroups(isGrouped, items)\n ? items.every((group: GroupType) => group.options.length === 0)\n : items.length === 0;\n\n const {\n getComboboxProps,\n getInputProps,\n getItemProps,\n getMenuProps,\n getToggleButtonProps,\n highlightedIndex,\n isOpen,\n toggleMenu,\n } = useCombobox({\n items: flattenItems,\n selectedItem,\n inputValue,\n itemToString,\n onInputValueChange: ({ type, inputValue }) => {\n if (type !== '__input_change__') {\n handleInputValueChange(inputValue);\n }\n },\n onStateChange: ({ type, selectedItem }) => {\n switch (type) {\n case useCombobox.stateChangeTypes.InputKeyDownEnter:\n case useCombobox.stateChangeTypes.ItemClick:\n if (selectedItem) {\n onSelectItem(selectedItem);\n }\n if (clearAfterSelect) {\n handleInputValueChange('');\n }\n if (!closeAfterSelect) {\n toggleMenu();\n }\n break;\n default:\n break;\n }\n },\n });\n\n const {\n 'aria-labelledby': _labelledby,\n id: _inputId,\n ...inputProps\n } = getInputProps();\n const comboboxProps = getComboboxProps();\n const toggleProps = getToggleButtonProps();\n const menuProps = getMenuProps();\n let elementStartIndex = 0;\n\n return (\n <div\n data-test-id={testId}\n className={cx(styles.autocomplete, className)}\n ref={ref}\n >\n <Popover\n usePortal={usePortal}\n isOpen={isOpen}\n isFullWidth={listWidth === 'full'}\n renderOnlyWhenOpen={false}\n // This is necessary, otherwise the focus will change from the input to the Popover\n // and the user won't be able to type in the input\n // eslint-disable-next-line jsx-a11y/no-autofocus\n autoFocus={false}\n id={menuProps.id}\n >\n <Popover.Trigger>\n <div {...comboboxProps} className={styles.combobox}>\n <TextInput\n className={styles.inputField}\n {...inputProps}\n onFocus={() => {\n if (!isOpen) {\n toggleMenu();\n }\n }}\n id={id}\n isInvalid={isInvalid}\n isDisabled={isDisabled}\n isRequired={isRequired}\n isReadOnly={isReadOnly}\n ref={mergeRefs(inputProps.ref, inputRef)}\n testId=\"cf-autocomplete-input\"\n placeholder={placeholder}\n onChange={(event) => {\n inputProps.onChange(event);\n handleNativeChangeEvent(event);\n }}\n />\n <IconButton\n {...toggleProps}\n ref={mergeRefs(toggleProps.ref, toggleRef)}\n aria-label={inputValue ? 'Clear' : 'Show list'}\n className={styles.toggleButton}\n variant=\"transparent\"\n icon={inputValue ? <CloseIcon variant=\"muted\" /> : icon}\n onClick={() => {\n if (inputValue) {\n handleInputValueChange('');\n } else {\n toggleMenu();\n }\n }}\n isDisabled={isDisabled}\n size=\"small\"\n />\n </div>\n </Popover.Trigger>\n\n <Popover.Content\n {...menuProps}\n ref={mergeRefs(menuProps.ref, listRef)}\n className={styles.content}\n testId=\"cf-autocomplete-container\"\n >\n {isLoading &&\n [...Array(3)].map((_, index) => (\n <div key={index} className={cx(styles.item, styles.disabled)}>\n <ListItemLoadingState />\n </div>\n ))}\n\n {!isLoading && isShowingNoMatches && (\n <div className={styles.item}>\n <Subheading className={styles.noMatchesTitle}>\n {noMatchesMessage}\n </Subheading>\n </div>\n )}\n\n {!isLoading &&\n isUsingGroups(isGrouped, items) &&\n items.map((group: GroupType, index: number) => {\n if (group.options.length < 1) {\n return;\n }\n const render = (\n <div key={index}>\n <SectionHeading\n key={index}\n data-test-id=\"cf-autocomplete-grouptitle\"\n marginBottom=\"none\"\n className={styles.groupTitle}\n >\n {group.groupTitle}\n </SectionHeading>\n <AutocompleteItems<ItemType>\n items={group.options}\n highlightedIndex={highlightedIndex}\n getItemProps={getItemProps}\n renderItem={renderItem}\n inputValue={inputValue}\n elementStartIndex={elementStartIndex}\n />\n </div>\n );\n elementStartIndex += group.options.length;\n return render;\n })}\n\n {!isLoading &&\n !isUsingGroups(isGrouped, items) &&\n items.length > 0 && (\n <AutocompleteItems<ItemType>\n items={items}\n elementStartIndex={elementStartIndex}\n highlightedIndex={highlightedIndex}\n getItemProps={getItemProps}\n renderItem={renderItem}\n inputValue={inputValue}\n />\n )}\n </Popover.Content>\n </Popover>\n </div>\n );\n}\n\nconst ListItemLoadingState = () => {\n return (\n <SkeletonContainer svgHeight={16}>\n <SkeletonBodyText numberOfLines={1} />\n </SkeletonContainer>\n );\n};\n\n// This is required to infer correct typings when differentiating groups and items\nfunction isUsingGroups<ItemType>(\n isGrouped: boolean,\n items: ItemType[] | GenericGroupType<ItemType>[],\n): items is GenericGroupType<ItemType>[] {\n return isGrouped;\n}\n\n/**\n * The Autocomplete is a component that will show a `TextInput` where a user can type any word which will be used\n * to filter a list of items. That list of filtered items will be shown to the user as possible options for the input.\n * Once one of the options is selected, that option becomes the value of the `TextInput`.\n */\nexport const Autocomplete = React.forwardRef(_Autocomplete) as <T>(\n props: ExpandProps<AutocompleteProps<T>> & {\n ref?: React.Ref<HTMLDivElement>;\n },\n) => ReturnType<typeof _Autocomplete>;\n","import React, { HTMLAttributes } from 'react';\nimport { cx } from 'emotion';\n\nimport { getStringMatch } from '@contentful/f36-utils';\nimport { Text } from '@contentful/f36-typography';\nimport { getAutocompleteStyles } from './Autocomplete.styles';\nimport type { UseComboboxGetItemPropsOptions } from 'downshift';\n\ninterface AutocompleteItemsProps<ItemType> {\n items: ItemType[];\n elementStartIndex: number;\n highlightedIndex: number;\n getItemProps: (\n options: UseComboboxGetItemPropsOptions<ItemType>,\n ) => HTMLAttributes<HTMLLIElement>;\n renderItem: (item: ItemType, inputValue: string) => React.ReactNode;\n inputValue: string;\n listMaxHeight?: number;\n}\n\nexport const AutocompleteItems = <ItemType,>(\n props: AutocompleteItemsProps<ItemType>,\n) => {\n const {\n items,\n elementStartIndex,\n highlightedIndex,\n getItemProps,\n renderItem,\n inputValue,\n listMaxHeight = 180,\n } = props;\n\n const styles = getAutocompleteStyles(listMaxHeight);\n\n return (\n <ul className={styles.list} data-test-id=\"cf-autocomplete-list\">\n {items.map((item: ItemType, index: number) => {\n const itemIndex = elementStartIndex + index;\n const itemProps = getItemProps({ item, index: itemIndex });\n return (\n <Text\n {...itemProps}\n as=\"li\"\n key={itemIndex}\n className={cx([\n styles.item,\n highlightedIndex === itemIndex && styles.highlighted,\n ])}\n data-test-id={`cf-autocomplete-list-item-${itemIndex}`}\n >\n {renderItem ? (\n renderItem(item, inputValue)\n ) : typeof item === 'string' ? (\n <HighlightedItem item={item} inputValue={inputValue} />\n ) : (\n item\n )}\n </Text>\n );\n })}\n </ul>\n );\n};\n\nAutocompleteItems.displayName = 'AutocompleteItems';\n\nfunction HighlightedItem({\n item,\n inputValue,\n}: {\n item: string;\n inputValue: string;\n}) {\n const { before, match, after } = getStringMatch(item, inputValue);\n\n return (\n <>\n {before}\n <b>{match}</b>\n {after}\n </>\n );\n}\n\nHighlightedItem.displayName = 'HighlightedItem';\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getAutocompleteStyles = (listMaxHeight: number) => ({\n autocomplete: css({\n position: 'relative',\n width: '100%',\n }),\n combobox: css({\n position: 'relative',\n }),\n inputField: css({\n paddingRight: tokens.spacingXl,\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }),\n toggleButton: css({\n position: 'absolute',\n top: '1px',\n right: '1px',\n zIndex: 1,\n padding: tokens.spacing2Xs,\n height: '38px',\n }),\n content: css({\n overflow: 'auto',\n maxHeight: `${listMaxHeight}px`,\n }),\n list: css({\n listStyle: 'none',\n padding: `${tokens.spacingXs} 0`,\n margin: 0,\n }),\n groupTitle: css({\n padding: `${tokens.spacingXs} ${tokens.spacingM}`,\n lineHeight: tokens.lineHeightM,\n }),\n noMatchesTitle: css({\n color: tokens.gray500,\n margin: `${tokens.spacingM} 0 ${tokens.spacingM} 0`,\n }),\n item: css({\n display: 'block',\n padding: `${tokens.spacingXs} ${tokens.spacingM}`,\n wordBreak: 'break-word',\n whiteSpace: 'break-spaces',\n cursor: 'pointer',\n hyphens: 'auto',\n\n '&:focus, &:hover': {\n backgroundColor: tokens.gray100,\n },\n '&:active': {\n backgroundColor: tokens.gray200,\n },\n }),\n disabled: css({\n opacity: 0.5,\n pointerEvents: 'none',\n }),\n highlighted: css({\n backgroundColor: tokens.gray100,\n }),\n});\n"],"names":["Autocomplete","AutocompleteProps","React","useCallback","useState","useCombobox","mergeRefs","CommonProps","ExpandProps","IconButton","TextInput","TextInputProps","CloseIcon","ChevronDownIcon","SkeletonContainer","SkeletonBodyText","Popover","Subheading","SectionHeading","AutocompleteItems","getAutocompleteStyles","GenericGroupType","groupTitle","options","ItemType","Pick","items","icon","ReactElement","isGrouped","onInputValueChange","value","onSelectItem","item","selectedItem","renderItem","inputValue","ReactNode","itemToString","clearAfterSelect","closeAfterSelect","placeholder","noMatchesMessage","inputRef","Ref","HTMLInputElement","toggleRef","HTMLButtonElement","listRef","HTMLUListElement","listWidth","listMaxHeight","isLoading","usePortal","_Autocomplete","props","ref","HTMLDivElement","id","className","defaultValue","isInvalid","isDisabled","isRequired","isReadOnly","testId","GroupType","styles","setInputValue","handleInputValueChange","handleNativeChangeEvent","event","ChangeEvent","HTMLTextAreaElement","target","flattenItems","isUsingGroups","reduce","acc","group","isShowingNoMatches","every","length","getComboboxProps","getInputProps","getItemProps","getMenuProps","getToggleButtonProps","highlightedIndex","isOpen","toggleMenu","type","onStateChange","stateChangeTypes","InputKeyDownEnter","ItemClick","_labelledby","_inputId","inputProps","comboboxProps","toggleProps","menuProps","elementStartIndex","autocomplete","combobox","inputField","onChange","toggleButton","content","Array","map","_","index","disabled","noMatchesTitle","render","ListItemLoadingState","forwardRef","T","ReturnType","HTMLAttributes","getStringMatch","Text","UseComboboxGetItemPropsOptions","AutocompleteItemsProps","HTMLLIElement","list","itemIndex","itemProps","highlighted","displayName","HighlightedItem","before","match","after","tokens","paddingRight","spacingXl","textOverflow","whiteSpace","position","top","right","zIndex","padding","spacing2Xs","height","overflow","maxHeight","listStyle","spacingXs","margin","spacingM","lineHeight","lineHeightM","color","gray500","display","wordBreak","cursor","hyphens","backgroundColor","gray100","gray200"],"version":3,"file":"main.js.map"}
|
|
1
|
+
{"mappings":"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","sources":["packages/components/autocomplete/src/index.ts","packages/components/autocomplete/src/Autocomplete.tsx","packages/components/autocomplete/src/AutocompleteItems.tsx","packages/components/autocomplete/src/Autocomplete.styles.ts"],"sourcesContent":["export { Autocomplete } from './Autocomplete';\nexport type { AutocompleteProps } from './Autocomplete';\n","import React, { useCallback, useState } from 'react';\nimport { cx } from 'emotion';\nimport { useCombobox } from 'downshift';\n\nimport { mergeRefs } from '@contentful/f36-core';\nimport type { CommonProps, ExpandProps } from '@contentful/f36-core';\nimport { IconButton } from '@contentful/f36-button';\nimport { TextInput } from '@contentful/f36-forms';\nimport type { TextInputProps } from '@contentful/f36-forms';\nimport { CloseIcon, ChevronDownIcon } from '@contentful/f36-icons';\nimport { SkeletonContainer, SkeletonBodyText } from '@contentful/f36-skeleton';\nimport { Popover } from '@contentful/f36-popover';\nimport { Subheading, SectionHeading } from '@contentful/f36-typography';\n\nimport { AutocompleteItems } from './AutocompleteItems';\nimport { getAutocompleteStyles } from './Autocomplete.styles';\n\nexport interface GenericGroupType<ItemType> {\n groupTitle: string;\n options: ItemType[];\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface AutocompleteProps<ItemType>\n extends CommonProps,\n Pick<\n TextInputProps,\n | 'isDisabled'\n | 'isInvalid'\n | 'isReadOnly'\n | 'isRequired'\n | 'id'\n | 'defaultValue'\n > {\n /**\n * It’s an array of data to be used as \"options\" by the autocomplete component.\n * This can either be a plain list of items or a list of groups of items.\n */\n items: ItemType[] | GenericGroupType<ItemType>[];\n\n /**\n * Set a custom icon for the text input\n */\n icon?: React.ReactElement;\n\n /**\n * Tells if the item is a object with groups\n */\n isGrouped?: boolean;\n\n /**\n * Function called whenever the input value changes\n */\n onInputValueChange?: (value: string) => void;\n /**\n * This is the function that will be called when the user selects one of the \"options\" in the list.\n * The component will pass the selected \"item\" as an argument to the function..\n */\n onSelectItem: (item: ItemType) => void;\n\n /**\n * Applying the selectedItem property turns autocomplete into a controlled component.\n * Can be used to display e.g. previously selected element. If it is an object the itemToString function will apply to it.\n */\n selectedItem?: ItemType;\n\n /**\n * This is the function that will be called for each \"item\" passed in the `items` prop.\n * It receives the \"item\" and \"inputValue\" as arguments and returns a ReactNode.\n * The inputValue is passed in case you want to highlight the match on the render.\n */\n renderItem?: (item: ItemType, inputValue: string) => React.ReactNode;\n /**\n * When using objects as `items`, we recommend passing a function that tells Downshift how to extract a string\n * from those objetcs to be used as inputValue\n */\n itemToString?: (item: ItemType) => string;\n /**\n * If this is set to `true` the text input will be cleared after an item is selected\n * @default false\n */\n clearAfterSelect?: boolean;\n /**\n * If this is set to `false` the dropdown menu will stay open after selecting an item\n * @default true\n */\n closeAfterSelect?: boolean;\n /**\n * This is the value will be passed to the `placeholder` prop of the input.\n * @default \"Search\"\n */\n placeholder?: string;\n /**\n * A message that will be shown when it is not possible to find any option that matches the input value\n * @default \"No matches\"\n */\n noMatchesMessage?: string;\n /**\n * Use this prop to get a ref to the input element of the component\n */\n inputRef?: React.Ref<HTMLInputElement>;\n /**\n * Use this prop to get a ref to the toggle button of the component\n */\n toggleRef?: React.Ref<HTMLButtonElement>;\n /**\n * Use this prop to get a ref to the list of items of the component\n */\n listRef?: React.Ref<HTMLUListElement>;\n /**\n * It sets the width of the list\n * @default \"auto\"\n */\n listWidth?: 'auto' | 'full';\n /**\n * It sets the max-height, in pixels, of the list\n * The default value is the height of 5 single line items\n * @default 180\n */\n listMaxHeight?: number;\n /**\n * Sets the list to show its loading state\n * @default false\n */\n isLoading?: boolean;\n /**\n * Boolean to control whether or not to render the suggestions box in a React Portal.\n * Rendering content inside a Portal allows the suggestions box to escape the bounds\n * of its parent while still being positioned correctly.\n * Defaults to `false`\n */\n usePortal?: boolean;\n}\n\nfunction _Autocomplete<ItemType>(\n props: AutocompleteProps<ItemType>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {\n id,\n className,\n clearAfterSelect = false,\n closeAfterSelect = true,\n defaultValue = '',\n selectedItem,\n items,\n onInputValueChange,\n onSelectItem,\n renderItem,\n icon = <ChevronDownIcon variant=\"muted\" />,\n itemToString = (item: ItemType) => (item as unknown) as string,\n isInvalid,\n isDisabled,\n isRequired,\n isReadOnly,\n noMatchesMessage = 'No matches found',\n placeholder = 'Search',\n inputRef,\n toggleRef,\n listRef,\n listWidth = 'auto',\n listMaxHeight = 180,\n isGrouped = false,\n isLoading = false,\n usePortal = false,\n testId = 'cf-autocomplete',\n } = props;\n\n type GroupType = GenericGroupType<ItemType>;\n\n const styles = getAutocompleteStyles(listMaxHeight);\n\n const [inputValue, setInputValue] = useState(defaultValue);\n\n const handleInputValueChange = useCallback(\n (value: string) => {\n setInputValue(value);\n\n onInputValueChange?.(value);\n },\n [onInputValueChange],\n );\n\n // Handle manually to avoid a jumping cursor, see https://github.com/downshift-js/downshift/issues/1108#issuecomment-842407759\n const handleNativeChangeEvent = useCallback(\n (event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n const value = event.target.value;\n handleInputValueChange(value);\n },\n [handleInputValueChange],\n );\n\n const flattenItems = isUsingGroups(isGrouped, items)\n ? items.reduce(\n (acc: ItemType[], group: GroupType) => [...acc, ...group.options],\n [],\n )\n : items;\n\n const isShowingNoMatches = isUsingGroups(isGrouped, items)\n ? items.every((group: GroupType) => group.options.length === 0)\n : items.length === 0;\n\n const {\n getComboboxProps,\n getInputProps,\n getItemProps,\n getMenuProps,\n getToggleButtonProps,\n highlightedIndex,\n isOpen,\n toggleMenu,\n } = useCombobox({\n items: flattenItems,\n selectedItem,\n inputValue,\n itemToString,\n onInputValueChange: ({ type, inputValue }) => {\n if (type !== '__input_change__') {\n handleInputValueChange(inputValue);\n }\n },\n onStateChange: ({ type, selectedItem }) => {\n switch (type) {\n case useCombobox.stateChangeTypes.InputKeyDownEnter:\n case useCombobox.stateChangeTypes.ItemClick:\n if (selectedItem) {\n onSelectItem(selectedItem);\n }\n if (clearAfterSelect) {\n handleInputValueChange('');\n }\n if (!closeAfterSelect) {\n toggleMenu();\n }\n break;\n default:\n break;\n }\n },\n });\n\n const {\n 'aria-labelledby': _labelledby,\n id: _inputId,\n ...inputProps\n } = getInputProps();\n const comboboxProps = getComboboxProps();\n const toggleProps = getToggleButtonProps();\n const menuProps = getMenuProps();\n let elementStartIndex = 0;\n\n return (\n <div\n data-test-id={testId}\n className={cx(styles.autocomplete, className)}\n ref={ref}\n >\n <Popover\n usePortal={usePortal}\n isOpen={isOpen}\n isFullWidth={listWidth === 'full'}\n renderOnlyWhenOpen={false}\n // This is necessary, otherwise the focus will change from the input to the Popover\n // and the user won't be able to type in the input\n // eslint-disable-next-line jsx-a11y/no-autofocus\n autoFocus={false}\n id={menuProps.id}\n >\n <Popover.Trigger>\n <div {...comboboxProps} className={styles.combobox}>\n <TextInput\n className={styles.inputField}\n {...inputProps}\n onFocus={() => {\n if (!isOpen) {\n toggleMenu();\n }\n }}\n id={id}\n isInvalid={isInvalid}\n isDisabled={isDisabled}\n isRequired={isRequired}\n isReadOnly={isReadOnly}\n ref={mergeRefs(inputProps.ref, inputRef)}\n testId=\"cf-autocomplete-input\"\n placeholder={placeholder}\n onChange={(event) => {\n inputProps.onChange(event);\n handleNativeChangeEvent(event);\n }}\n />\n <IconButton\n {...toggleProps}\n ref={mergeRefs(toggleProps.ref, toggleRef)}\n aria-label={inputValue ? 'Clear' : 'Show list'}\n className={styles.toggleButton}\n variant=\"transparent\"\n icon={inputValue ? <CloseIcon variant=\"muted\" /> : icon}\n onClick={() => {\n if (inputValue) {\n handleInputValueChange('');\n } else {\n toggleMenu();\n }\n }}\n isDisabled={isDisabled}\n size=\"small\"\n />\n </div>\n </Popover.Trigger>\n\n {(items.length > 0 || inputValue.length > 0) && (\n <Popover.Content\n {...menuProps}\n ref={mergeRefs(menuProps.ref, listRef)}\n className={styles.content}\n testId=\"cf-autocomplete-container\"\n >\n {isLoading &&\n [...Array(3)].map((_, index) => (\n <div key={index} className={cx(styles.item, styles.disabled)}>\n <ListItemLoadingState />\n </div>\n ))}\n\n {!isLoading && isShowingNoMatches && (\n <div className={styles.item}>\n <Subheading className={styles.noMatchesTitle}>\n {noMatchesMessage}\n </Subheading>\n </div>\n )}\n\n {!isLoading &&\n isUsingGroups(isGrouped, items) &&\n items.map((group: GroupType, index: number) => {\n if (group.options.length < 1) {\n return;\n }\n const render = (\n <div key={index}>\n <SectionHeading\n key={index}\n data-test-id=\"cf-autocomplete-grouptitle\"\n marginBottom=\"none\"\n className={styles.groupTitle}\n >\n {group.groupTitle}\n </SectionHeading>\n <AutocompleteItems<ItemType>\n items={group.options}\n highlightedIndex={highlightedIndex}\n getItemProps={getItemProps}\n renderItem={renderItem}\n inputValue={inputValue}\n elementStartIndex={elementStartIndex}\n />\n </div>\n );\n elementStartIndex += group.options.length;\n return render;\n })}\n\n {!isLoading &&\n !isUsingGroups(isGrouped, items) &&\n items.length > 0 && (\n <AutocompleteItems<ItemType>\n items={items}\n elementStartIndex={elementStartIndex}\n highlightedIndex={highlightedIndex}\n getItemProps={getItemProps}\n renderItem={renderItem}\n inputValue={inputValue}\n />\n )}\n </Popover.Content>\n )}\n </Popover>\n </div>\n );\n}\n\nconst ListItemLoadingState = () => {\n return (\n <SkeletonContainer svgHeight={16}>\n <SkeletonBodyText numberOfLines={1} />\n </SkeletonContainer>\n );\n};\n\n// This is required to infer correct typings when differentiating groups and items\nfunction isUsingGroups<ItemType>(\n isGrouped: boolean,\n items: ItemType[] | GenericGroupType<ItemType>[],\n): items is GenericGroupType<ItemType>[] {\n return isGrouped;\n}\n\n/**\n * The Autocomplete is a component that will show a `TextInput` where a user can type any word which will be used\n * to filter a list of items. That list of filtered items will be shown to the user as possible options for the input.\n * Once one of the options is selected, that option becomes the value of the `TextInput`.\n */\nexport const Autocomplete = React.forwardRef(_Autocomplete) as <T>(\n props: ExpandProps<AutocompleteProps<T>> & {\n ref?: React.Ref<HTMLDivElement>;\n },\n) => ReturnType<typeof _Autocomplete>;\n","import React, { HTMLAttributes } from 'react';\nimport { cx } from 'emotion';\n\nimport { getStringMatch } from '@contentful/f36-utils';\nimport { Text } from '@contentful/f36-typography';\nimport { getAutocompleteStyles } from './Autocomplete.styles';\nimport type { UseComboboxGetItemPropsOptions } from 'downshift';\n\ninterface AutocompleteItemsProps<ItemType> {\n items: ItemType[];\n elementStartIndex: number;\n highlightedIndex: number;\n getItemProps: (\n options: UseComboboxGetItemPropsOptions<ItemType>,\n ) => HTMLAttributes<HTMLLIElement>;\n renderItem: (item: ItemType, inputValue: string) => React.ReactNode;\n inputValue: string;\n listMaxHeight?: number;\n}\n\nexport const AutocompleteItems = <ItemType,>(\n props: AutocompleteItemsProps<ItemType>,\n) => {\n const {\n items,\n elementStartIndex,\n highlightedIndex,\n getItemProps,\n renderItem,\n inputValue,\n listMaxHeight = 180,\n } = props;\n\n const styles = getAutocompleteStyles(listMaxHeight);\n\n return (\n <ul className={styles.list} data-test-id=\"cf-autocomplete-list\">\n {items.map((item: ItemType, index: number) => {\n const itemIndex = elementStartIndex + index;\n const itemProps = getItemProps({ item, index: itemIndex });\n return (\n <Text\n {...itemProps}\n as=\"li\"\n key={itemIndex}\n className={cx([\n styles.item,\n highlightedIndex === itemIndex && styles.highlighted,\n ])}\n data-test-id={`cf-autocomplete-list-item-${itemIndex}`}\n >\n {renderItem ? (\n renderItem(item, inputValue)\n ) : typeof item === 'string' ? (\n <HighlightedItem item={item} inputValue={inputValue} />\n ) : (\n item\n )}\n </Text>\n );\n })}\n </ul>\n );\n};\n\nAutocompleteItems.displayName = 'AutocompleteItems';\n\nfunction HighlightedItem({\n item,\n inputValue,\n}: {\n item: string;\n inputValue: string;\n}) {\n const { before, match, after } = getStringMatch(item, inputValue);\n\n return (\n <>\n {before}\n <b>{match}</b>\n {after}\n </>\n );\n}\n\nHighlightedItem.displayName = 'HighlightedItem';\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getAutocompleteStyles = (listMaxHeight: number) => ({\n autocomplete: css({\n position: 'relative',\n width: '100%',\n }),\n combobox: css({\n position: 'relative',\n }),\n inputField: css({\n paddingRight: tokens.spacingXl,\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }),\n toggleButton: css({\n position: 'absolute',\n top: '1px',\n right: '1px',\n zIndex: 1,\n padding: tokens.spacing2Xs,\n height: '38px',\n }),\n content: css({\n overflow: 'auto',\n maxHeight: `${listMaxHeight}px`,\n }),\n list: css({\n listStyle: 'none',\n padding: `${tokens.spacingXs} 0`,\n margin: 0,\n }),\n groupTitle: css({\n padding: `${tokens.spacingXs} ${tokens.spacingM}`,\n lineHeight: tokens.lineHeightM,\n }),\n noMatchesTitle: css({\n color: tokens.gray500,\n margin: `${tokens.spacingM} 0 ${tokens.spacingM} 0`,\n }),\n item: css({\n display: 'block',\n padding: `${tokens.spacingXs} ${tokens.spacingM}`,\n wordBreak: 'break-word',\n whiteSpace: 'break-spaces',\n cursor: 'pointer',\n hyphens: 'auto',\n\n '&:focus, &:hover': {\n backgroundColor: tokens.gray100,\n },\n '&:active': {\n backgroundColor: tokens.gray200,\n },\n }),\n disabled: css({\n opacity: 0.5,\n pointerEvents: 'none',\n }),\n highlighted: css({\n backgroundColor: tokens.gray100,\n }),\n});\n"],"names":["Autocomplete","AutocompleteProps","React","useCallback","useState","useCombobox","mergeRefs","CommonProps","ExpandProps","IconButton","TextInput","TextInputProps","CloseIcon","ChevronDownIcon","SkeletonContainer","SkeletonBodyText","Popover","Subheading","SectionHeading","AutocompleteItems","getAutocompleteStyles","GenericGroupType","groupTitle","options","ItemType","Pick","items","icon","ReactElement","isGrouped","onInputValueChange","value","onSelectItem","item","selectedItem","renderItem","inputValue","ReactNode","itemToString","clearAfterSelect","closeAfterSelect","placeholder","noMatchesMessage","inputRef","Ref","HTMLInputElement","toggleRef","HTMLButtonElement","listRef","HTMLUListElement","listWidth","listMaxHeight","isLoading","usePortal","_Autocomplete","props","ref","HTMLDivElement","id","className","defaultValue","isInvalid","isDisabled","isRequired","isReadOnly","testId","GroupType","styles","setInputValue","handleInputValueChange","handleNativeChangeEvent","event","ChangeEvent","HTMLTextAreaElement","target","flattenItems","isUsingGroups","reduce","acc","group","isShowingNoMatches","every","length","getComboboxProps","getInputProps","getItemProps","getMenuProps","getToggleButtonProps","highlightedIndex","isOpen","toggleMenu","type","onStateChange","stateChangeTypes","InputKeyDownEnter","ItemClick","_labelledby","_inputId","inputProps","comboboxProps","toggleProps","menuProps","elementStartIndex","autocomplete","combobox","inputField","onChange","toggleButton","content","Array","map","_","index","disabled","noMatchesTitle","render","ListItemLoadingState","forwardRef","T","ReturnType","HTMLAttributes","getStringMatch","Text","UseComboboxGetItemPropsOptions","AutocompleteItemsProps","HTMLLIElement","list","itemIndex","itemProps","highlighted","displayName","HighlightedItem","before","match","after","tokens","paddingRight","spacingXl","textOverflow","whiteSpace","position","top","right","zIndex","padding","spacing2Xs","height","overflow","maxHeight","listStyle","spacingXs","margin","spacingM","lineHeight","lineHeightM","color","gray500","display","wordBreak","cursor","hyphens","backgroundColor","gray100","gray200"],"version":3,"file":"main.js.map"}
|
package/dist/module.js
CHANGED
|
@@ -28,73 +28,72 @@ import $7oe8x$contentfulf36tokens from "@contentful/f36-tokens";
|
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
const $b76be67e84921f58$export$71b73d9f7d678746 = (listMaxHeight)=>({
|
|
31
|
-
autocomplete: /*#__PURE__*/ $7oe8x$css({
|
|
31
|
+
autocomplete: /*#__PURE__*/ (0, $7oe8x$css)({
|
|
32
32
|
name: "1jke4yk",
|
|
33
33
|
styles: "position:relative;width:100%;"
|
|
34
34
|
}),
|
|
35
|
-
combobox: /*#__PURE__*/ $7oe8x$css({
|
|
35
|
+
combobox: /*#__PURE__*/ (0, $7oe8x$css)({
|
|
36
36
|
name: "79elbk",
|
|
37
37
|
styles: "position:relative;"
|
|
38
38
|
}),
|
|
39
|
-
inputField: /*#__PURE__*/ $7oe8x$css({
|
|
40
|
-
paddingRight: $7oe8x$contentfulf36tokens.spacingXl,
|
|
41
|
-
textOverflow:
|
|
42
|
-
whiteSpace:
|
|
39
|
+
inputField: /*#__PURE__*/ (0, $7oe8x$css)({
|
|
40
|
+
paddingRight: (0, $7oe8x$contentfulf36tokens).spacingXl,
|
|
41
|
+
textOverflow: "ellipsis",
|
|
42
|
+
whiteSpace: "nowrap"
|
|
43
43
|
}),
|
|
44
|
-
toggleButton: /*#__PURE__*/ $7oe8x$css({
|
|
45
|
-
position:
|
|
46
|
-
top:
|
|
47
|
-
right:
|
|
44
|
+
toggleButton: /*#__PURE__*/ (0, $7oe8x$css)({
|
|
45
|
+
position: "absolute",
|
|
46
|
+
top: "1px",
|
|
47
|
+
right: "1px",
|
|
48
48
|
zIndex: 1,
|
|
49
|
-
padding: $7oe8x$contentfulf36tokens.spacing2Xs,
|
|
50
|
-
height:
|
|
49
|
+
padding: (0, $7oe8x$contentfulf36tokens).spacing2Xs,
|
|
50
|
+
height: "38px"
|
|
51
51
|
}),
|
|
52
|
-
content: /*#__PURE__*/ $7oe8x$css({
|
|
53
|
-
overflow:
|
|
52
|
+
content: /*#__PURE__*/ (0, $7oe8x$css)({
|
|
53
|
+
overflow: "auto",
|
|
54
54
|
maxHeight: `${listMaxHeight}px`
|
|
55
55
|
}),
|
|
56
|
-
list: /*#__PURE__*/ $7oe8x$css({
|
|
57
|
-
listStyle:
|
|
58
|
-
padding: `${$7oe8x$contentfulf36tokens.spacingXs} 0`,
|
|
56
|
+
list: /*#__PURE__*/ (0, $7oe8x$css)({
|
|
57
|
+
listStyle: "none",
|
|
58
|
+
padding: `${(0, $7oe8x$contentfulf36tokens).spacingXs} 0`,
|
|
59
59
|
margin: 0
|
|
60
60
|
}),
|
|
61
|
-
groupTitle: /*#__PURE__*/ $7oe8x$css({
|
|
62
|
-
padding: `${$7oe8x$contentfulf36tokens.spacingXs} ${$7oe8x$contentfulf36tokens.spacingM}`,
|
|
63
|
-
lineHeight: $7oe8x$contentfulf36tokens.lineHeightM
|
|
61
|
+
groupTitle: /*#__PURE__*/ (0, $7oe8x$css)({
|
|
62
|
+
padding: `${(0, $7oe8x$contentfulf36tokens).spacingXs} ${(0, $7oe8x$contentfulf36tokens).spacingM}`,
|
|
63
|
+
lineHeight: (0, $7oe8x$contentfulf36tokens).lineHeightM
|
|
64
64
|
}),
|
|
65
|
-
noMatchesTitle: /*#__PURE__*/ $7oe8x$css({
|
|
66
|
-
color: $7oe8x$contentfulf36tokens.gray500,
|
|
67
|
-
margin: `${$7oe8x$contentfulf36tokens.spacingM} 0 ${$7oe8x$contentfulf36tokens.spacingM} 0`
|
|
65
|
+
noMatchesTitle: /*#__PURE__*/ (0, $7oe8x$css)({
|
|
66
|
+
color: (0, $7oe8x$contentfulf36tokens).gray500,
|
|
67
|
+
margin: `${(0, $7oe8x$contentfulf36tokens).spacingM} 0 ${(0, $7oe8x$contentfulf36tokens).spacingM} 0`
|
|
68
68
|
}),
|
|
69
|
-
item: /*#__PURE__*/ $7oe8x$css({
|
|
70
|
-
display:
|
|
71
|
-
padding: `${$7oe8x$contentfulf36tokens.spacingXs} ${$7oe8x$contentfulf36tokens.spacingM}`,
|
|
72
|
-
wordBreak:
|
|
73
|
-
whiteSpace:
|
|
74
|
-
cursor:
|
|
75
|
-
hyphens:
|
|
76
|
-
|
|
77
|
-
backgroundColor: $7oe8x$contentfulf36tokens.gray100
|
|
69
|
+
item: /*#__PURE__*/ (0, $7oe8x$css)({
|
|
70
|
+
display: "block",
|
|
71
|
+
padding: `${(0, $7oe8x$contentfulf36tokens).spacingXs} ${(0, $7oe8x$contentfulf36tokens).spacingM}`,
|
|
72
|
+
wordBreak: "break-word",
|
|
73
|
+
whiteSpace: "break-spaces",
|
|
74
|
+
cursor: "pointer",
|
|
75
|
+
hyphens: "auto",
|
|
76
|
+
"&:focus, &:hover": {
|
|
77
|
+
backgroundColor: (0, $7oe8x$contentfulf36tokens).gray100
|
|
78
78
|
},
|
|
79
|
-
|
|
80
|
-
backgroundColor: $7oe8x$contentfulf36tokens.gray200
|
|
79
|
+
"&:active": {
|
|
80
|
+
backgroundColor: (0, $7oe8x$contentfulf36tokens).gray200
|
|
81
81
|
}
|
|
82
82
|
}),
|
|
83
|
-
disabled: /*#__PURE__*/ $7oe8x$css({
|
|
83
|
+
disabled: /*#__PURE__*/ (0, $7oe8x$css)({
|
|
84
84
|
name: "1e07izz",
|
|
85
85
|
styles: "opacity:0.5;pointer-events:none;"
|
|
86
86
|
}),
|
|
87
|
-
highlighted: /*#__PURE__*/ $7oe8x$css({
|
|
88
|
-
backgroundColor: $7oe8x$contentfulf36tokens.gray100
|
|
87
|
+
highlighted: /*#__PURE__*/ (0, $7oe8x$css)({
|
|
88
|
+
backgroundColor: (0, $7oe8x$contentfulf36tokens).gray100
|
|
89
89
|
})
|
|
90
|
-
})
|
|
91
|
-
;
|
|
90
|
+
});
|
|
92
91
|
|
|
93
92
|
|
|
94
93
|
const $641c6dc49f14cfd8$export$4db5c29873bb228f = (props)=>{
|
|
95
94
|
const { items: items , elementStartIndex: elementStartIndex , highlightedIndex: highlightedIndex , getItemProps: getItemProps , renderItem: renderItem , inputValue: inputValue , listMaxHeight: listMaxHeight = 180 } = props;
|
|
96
|
-
const styles = $b76be67e84921f58$export$71b73d9f7d678746(listMaxHeight);
|
|
97
|
-
return /*#__PURE__*/ $7oe8x$react.createElement("ul", {
|
|
95
|
+
const styles = (0, $b76be67e84921f58$export$71b73d9f7d678746)(listMaxHeight);
|
|
96
|
+
return /*#__PURE__*/ (0, $7oe8x$react).createElement("ul", {
|
|
98
97
|
className: styles.list,
|
|
99
98
|
"data-test-id": "cf-autocomplete-list"
|
|
100
99
|
}, items.map((item, index)=>{
|
|
@@ -103,44 +102,43 @@ const $641c6dc49f14cfd8$export$4db5c29873bb228f = (props)=>{
|
|
|
103
102
|
item: item,
|
|
104
103
|
index: itemIndex
|
|
105
104
|
});
|
|
106
|
-
return /*#__PURE__*/ $7oe8x$react.createElement($7oe8x$Text, {
|
|
105
|
+
return /*#__PURE__*/ (0, $7oe8x$react).createElement((0, $7oe8x$Text), {
|
|
107
106
|
...itemProps,
|
|
108
107
|
as: "li",
|
|
109
108
|
key: itemIndex,
|
|
110
|
-
className: $7oe8x$cx([
|
|
109
|
+
className: (0, $7oe8x$cx)([
|
|
111
110
|
styles.item,
|
|
112
111
|
highlightedIndex === itemIndex && styles.highlighted
|
|
113
112
|
]),
|
|
114
113
|
"data-test-id": `cf-autocomplete-list-item-${itemIndex}`
|
|
115
|
-
}, renderItem ? renderItem(item, inputValue) : typeof item ===
|
|
114
|
+
}, renderItem ? renderItem(item, inputValue) : typeof item === "string" ? /*#__PURE__*/ (0, $7oe8x$react).createElement($641c6dc49f14cfd8$var$HighlightedItem, {
|
|
116
115
|
item: item,
|
|
117
116
|
inputValue: inputValue
|
|
118
117
|
}) : item);
|
|
119
118
|
}));
|
|
120
119
|
};
|
|
121
|
-
$641c6dc49f14cfd8$export$4db5c29873bb228f.displayName =
|
|
120
|
+
$641c6dc49f14cfd8$export$4db5c29873bb228f.displayName = "AutocompleteItems";
|
|
122
121
|
function $641c6dc49f14cfd8$var$HighlightedItem({ item: item , inputValue: inputValue }) {
|
|
123
|
-
const { before: before , match: match , after: after } = $7oe8x$getStringMatch(item, inputValue);
|
|
124
|
-
return /*#__PURE__*/ $7oe8x$react.createElement($7oe8x$react.Fragment, null, before, /*#__PURE__*/ $7oe8x$react.createElement("b", null, match), after);
|
|
122
|
+
const { before: before , match: match , after: after } = (0, $7oe8x$getStringMatch)(item, inputValue);
|
|
123
|
+
return /*#__PURE__*/ (0, $7oe8x$react).createElement((0, $7oe8x$react).Fragment, null, before, /*#__PURE__*/ (0, $7oe8x$react).createElement("b", null, match), after);
|
|
125
124
|
}
|
|
126
|
-
$641c6dc49f14cfd8$var$HighlightedItem.displayName =
|
|
125
|
+
$641c6dc49f14cfd8$var$HighlightedItem.displayName = "HighlightedItem";
|
|
127
126
|
|
|
128
127
|
|
|
129
128
|
|
|
130
129
|
function $7cd5ba9838c72bf9$var$_Autocomplete(props, ref) {
|
|
131
|
-
const { id: id , className: className , clearAfterSelect: clearAfterSelect = false , closeAfterSelect: closeAfterSelect = true , defaultValue: defaultValue =
|
|
130
|
+
const { id: id , className: className , clearAfterSelect: clearAfterSelect = false , closeAfterSelect: closeAfterSelect = true , defaultValue: defaultValue = "" , selectedItem: selectedItem1 , items: items , onInputValueChange: onInputValueChange , onSelectItem: onSelectItem , renderItem: renderItem , icon: icon = /*#__PURE__*/ (0, $7oe8x$react).createElement((0, $7oe8x$ChevronDownIcon), {
|
|
132
131
|
variant: "muted"
|
|
133
|
-
}) , itemToString: itemToString = (item)=>item
|
|
134
|
-
|
|
135
|
-
const
|
|
136
|
-
const
|
|
137
|
-
const handleInputValueChange = $7oe8x$useCallback((value)=>{
|
|
132
|
+
}) , itemToString: itemToString = (item)=>item , isInvalid: isInvalid , isDisabled: isDisabled , isRequired: isRequired , isReadOnly: isReadOnly , noMatchesMessage: noMatchesMessage = "No matches found" , placeholder: placeholder = "Search" , inputRef: inputRef , toggleRef: toggleRef , listRef: listRef , listWidth: listWidth = "auto" , listMaxHeight: listMaxHeight = 180 , isGrouped: isGrouped = false , isLoading: isLoading = false , usePortal: usePortal = false , testId: testId = "cf-autocomplete" } = props;
|
|
133
|
+
const styles = (0, $b76be67e84921f58$export$71b73d9f7d678746)(listMaxHeight);
|
|
134
|
+
const [inputValue1, setInputValue] = (0, $7oe8x$useState)(defaultValue);
|
|
135
|
+
const handleInputValueChange = (0, $7oe8x$useCallback)((value)=>{
|
|
138
136
|
setInputValue(value);
|
|
139
137
|
onInputValueChange === null || onInputValueChange === void 0 ? void 0 : onInputValueChange(value);
|
|
140
138
|
}, [
|
|
141
139
|
onInputValueChange
|
|
142
140
|
]); // Handle manually to avoid a jumping cursor, see https://github.com/downshift-js/downshift/issues/1108#issuecomment-842407759
|
|
143
|
-
const handleNativeChangeEvent = $7oe8x$useCallback((event)=>{
|
|
141
|
+
const handleNativeChangeEvent = (0, $7oe8x$useCallback)((event)=>{
|
|
144
142
|
const value = event.target.value;
|
|
145
143
|
handleInputValueChange(value);
|
|
146
144
|
}, [
|
|
@@ -149,24 +147,22 @@ function $7cd5ba9838c72bf9$var$_Autocomplete(props, ref) {
|
|
|
149
147
|
const flattenItems = $7cd5ba9838c72bf9$var$isUsingGroups(isGrouped, items) ? items.reduce((acc, group)=>[
|
|
150
148
|
...acc,
|
|
151
149
|
...group.options
|
|
152
|
-
]
|
|
153
|
-
,
|
|
154
|
-
const
|
|
155
|
-
) : items.length === 0;
|
|
156
|
-
const { getComboboxProps: getComboboxProps , getInputProps: getInputProps , getItemProps: getItemProps , getMenuProps: getMenuProps , getToggleButtonProps: getToggleButtonProps , highlightedIndex: highlightedIndex , isOpen: isOpen , toggleMenu: toggleMenu } = $7oe8x$useCombobox({
|
|
150
|
+
], []) : items;
|
|
151
|
+
const isShowingNoMatches = $7cd5ba9838c72bf9$var$isUsingGroups(isGrouped, items) ? items.every((group)=>group.options.length === 0) : items.length === 0;
|
|
152
|
+
const { getComboboxProps: getComboboxProps , getInputProps: getInputProps , getItemProps: getItemProps , getMenuProps: getMenuProps , getToggleButtonProps: getToggleButtonProps , highlightedIndex: highlightedIndex , isOpen: isOpen , toggleMenu: toggleMenu } = (0, $7oe8x$useCombobox)({
|
|
157
153
|
items: flattenItems,
|
|
158
154
|
selectedItem: selectedItem1,
|
|
159
155
|
inputValue: inputValue1,
|
|
160
156
|
itemToString: itemToString,
|
|
161
157
|
onInputValueChange: ({ type: type , inputValue: inputValue })=>{
|
|
162
|
-
if (type !==
|
|
158
|
+
if (type !== "__input_change__") handleInputValueChange(inputValue);
|
|
163
159
|
},
|
|
164
160
|
onStateChange: ({ type: type , selectedItem: selectedItem })=>{
|
|
165
161
|
switch(type){
|
|
166
|
-
case $7oe8x$useCombobox.stateChangeTypes.InputKeyDownEnter:
|
|
167
|
-
case $7oe8x$useCombobox.stateChangeTypes.ItemClick:
|
|
162
|
+
case (0, $7oe8x$useCombobox).stateChangeTypes.InputKeyDownEnter:
|
|
163
|
+
case (0, $7oe8x$useCombobox).stateChangeTypes.ItemClick:
|
|
168
164
|
if (selectedItem) onSelectItem(selectedItem);
|
|
169
|
-
if (clearAfterSelect) handleInputValueChange(
|
|
165
|
+
if (clearAfterSelect) handleInputValueChange("");
|
|
170
166
|
if (!closeAfterSelect) toggleMenu();
|
|
171
167
|
break;
|
|
172
168
|
default:
|
|
@@ -174,28 +170,28 @@ function $7cd5ba9838c72bf9$var$_Autocomplete(props, ref) {
|
|
|
174
170
|
}
|
|
175
171
|
}
|
|
176
172
|
});
|
|
177
|
-
const {
|
|
173
|
+
const { "aria-labelledby": _labelledby , id: _inputId , ...inputProps } = getInputProps();
|
|
178
174
|
const comboboxProps = getComboboxProps();
|
|
179
175
|
const toggleProps = getToggleButtonProps();
|
|
180
176
|
const menuProps = getMenuProps();
|
|
181
177
|
let elementStartIndex = 0;
|
|
182
|
-
return /*#__PURE__*/ $7oe8x$react.createElement("div", {
|
|
178
|
+
return /*#__PURE__*/ (0, $7oe8x$react).createElement("div", {
|
|
183
179
|
"data-test-id": testId,
|
|
184
|
-
className: $7oe8x$cx(styles.autocomplete, className),
|
|
180
|
+
className: (0, $7oe8x$cx)(styles.autocomplete, className),
|
|
185
181
|
ref: ref
|
|
186
|
-
}, /*#__PURE__*/ $7oe8x$react.createElement($7oe8x$Popover, {
|
|
182
|
+
}, /*#__PURE__*/ (0, $7oe8x$react).createElement((0, $7oe8x$Popover), {
|
|
187
183
|
usePortal: usePortal,
|
|
188
184
|
isOpen: isOpen,
|
|
189
|
-
isFullWidth: listWidth ===
|
|
185
|
+
isFullWidth: listWidth === "full",
|
|
190
186
|
renderOnlyWhenOpen: false,
|
|
191
187
|
// and the user won't be able to type in the input
|
|
192
188
|
// eslint-disable-next-line jsx-a11y/no-autofocus
|
|
193
189
|
autoFocus: false,
|
|
194
190
|
id: menuProps.id
|
|
195
|
-
}, /*#__PURE__*/ $7oe8x$react.createElement($7oe8x$Popover.Trigger, null, /*#__PURE__*/ $7oe8x$react.createElement("div", {
|
|
191
|
+
}, /*#__PURE__*/ (0, $7oe8x$react).createElement((0, $7oe8x$Popover).Trigger, null, /*#__PURE__*/ (0, $7oe8x$react).createElement("div", {
|
|
196
192
|
...comboboxProps,
|
|
197
193
|
className: styles.combobox
|
|
198
|
-
}, /*#__PURE__*/ $7oe8x$react.createElement($7oe8x$TextInput, {
|
|
194
|
+
}, /*#__PURE__*/ (0, $7oe8x$react).createElement((0, $7oe8x$TextInput), {
|
|
199
195
|
className: styles.inputField,
|
|
200
196
|
...inputProps,
|
|
201
197
|
onFocus: ()=>{
|
|
@@ -206,53 +202,52 @@ function $7cd5ba9838c72bf9$var$_Autocomplete(props, ref) {
|
|
|
206
202
|
isDisabled: isDisabled,
|
|
207
203
|
isRequired: isRequired,
|
|
208
204
|
isReadOnly: isReadOnly,
|
|
209
|
-
ref: $7oe8x$mergeRefs(inputProps.ref, inputRef),
|
|
205
|
+
ref: (0, $7oe8x$mergeRefs)(inputProps.ref, inputRef),
|
|
210
206
|
testId: "cf-autocomplete-input",
|
|
211
207
|
placeholder: placeholder,
|
|
212
208
|
onChange: (event)=>{
|
|
213
209
|
inputProps.onChange(event);
|
|
214
210
|
handleNativeChangeEvent(event);
|
|
215
211
|
}
|
|
216
|
-
}), /*#__PURE__*/ $7oe8x$react.createElement($7oe8x$IconButton, {
|
|
212
|
+
}), /*#__PURE__*/ (0, $7oe8x$react).createElement((0, $7oe8x$IconButton), {
|
|
217
213
|
...toggleProps,
|
|
218
|
-
ref: $7oe8x$mergeRefs(toggleProps.ref, toggleRef),
|
|
219
|
-
"aria-label": inputValue1 ?
|
|
214
|
+
ref: (0, $7oe8x$mergeRefs)(toggleProps.ref, toggleRef),
|
|
215
|
+
"aria-label": inputValue1 ? "Clear" : "Show list",
|
|
220
216
|
className: styles.toggleButton,
|
|
221
217
|
variant: "transparent",
|
|
222
|
-
icon: inputValue1 ? /*#__PURE__*/ $7oe8x$react.createElement($7oe8x$CloseIcon, {
|
|
218
|
+
icon: inputValue1 ? /*#__PURE__*/ (0, $7oe8x$react).createElement((0, $7oe8x$CloseIcon), {
|
|
223
219
|
variant: "muted"
|
|
224
220
|
}) : icon,
|
|
225
221
|
onClick: ()=>{
|
|
226
|
-
if (inputValue1) handleInputValueChange(
|
|
222
|
+
if (inputValue1) handleInputValueChange("");
|
|
227
223
|
else toggleMenu();
|
|
228
224
|
},
|
|
229
225
|
isDisabled: isDisabled,
|
|
230
226
|
size: "small"
|
|
231
|
-
}))), /*#__PURE__*/ $7oe8x$react.createElement($7oe8x$Popover.Content, {
|
|
227
|
+
}))), (items.length > 0 || inputValue1.length > 0) && /*#__PURE__*/ (0, $7oe8x$react).createElement((0, $7oe8x$Popover).Content, {
|
|
232
228
|
...menuProps,
|
|
233
|
-
ref: $7oe8x$mergeRefs(menuProps.ref, listRef),
|
|
229
|
+
ref: (0, $7oe8x$mergeRefs)(menuProps.ref, listRef),
|
|
234
230
|
className: styles.content,
|
|
235
231
|
testId: "cf-autocomplete-container"
|
|
236
232
|
}, isLoading && [
|
|
237
233
|
...Array(3)
|
|
238
|
-
].map((_, index)=>/*#__PURE__*/ $7oe8x$react.createElement("div", {
|
|
234
|
+
].map((_, index)=>/*#__PURE__*/ (0, $7oe8x$react).createElement("div", {
|
|
239
235
|
key: index,
|
|
240
|
-
className: $7oe8x$cx(styles.item, styles.disabled)
|
|
241
|
-
}, /*#__PURE__*/ $7oe8x$react.createElement($7cd5ba9838c72bf9$var$ListItemLoadingState, null))
|
|
242
|
-
), !isLoading && isShowingNoMatches && /*#__PURE__*/ $7oe8x$react.createElement("div", {
|
|
236
|
+
className: (0, $7oe8x$cx)(styles.item, styles.disabled)
|
|
237
|
+
}, /*#__PURE__*/ (0, $7oe8x$react).createElement($7cd5ba9838c72bf9$var$ListItemLoadingState, null))), !isLoading && isShowingNoMatches && /*#__PURE__*/ (0, $7oe8x$react).createElement("div", {
|
|
243
238
|
className: styles.item
|
|
244
|
-
}, /*#__PURE__*/ $7oe8x$react.createElement($7oe8x$Subheading, {
|
|
239
|
+
}, /*#__PURE__*/ (0, $7oe8x$react).createElement((0, $7oe8x$Subheading), {
|
|
245
240
|
className: styles.noMatchesTitle
|
|
246
241
|
}, noMatchesMessage)), !isLoading && $7cd5ba9838c72bf9$var$isUsingGroups(isGrouped, items) && items.map((group, index)=>{
|
|
247
242
|
if (group.options.length < 1) return;
|
|
248
|
-
const render = /*#__PURE__*/ $7oe8x$react.createElement("div", {
|
|
243
|
+
const render = /*#__PURE__*/ (0, $7oe8x$react).createElement("div", {
|
|
249
244
|
key: index
|
|
250
|
-
}, /*#__PURE__*/ $7oe8x$react.createElement($7oe8x$SectionHeading, {
|
|
245
|
+
}, /*#__PURE__*/ (0, $7oe8x$react).createElement((0, $7oe8x$SectionHeading), {
|
|
251
246
|
key: index,
|
|
252
247
|
"data-test-id": "cf-autocomplete-grouptitle",
|
|
253
248
|
marginBottom: "none",
|
|
254
249
|
className: styles.groupTitle
|
|
255
|
-
}, group.groupTitle), /*#__PURE__*/ $7oe8x$react.createElement($641c6dc49f14cfd8$export$4db5c29873bb228f, {
|
|
250
|
+
}, group.groupTitle), /*#__PURE__*/ (0, $7oe8x$react).createElement((0, $641c6dc49f14cfd8$export$4db5c29873bb228f), {
|
|
256
251
|
items: group.options,
|
|
257
252
|
highlightedIndex: highlightedIndex,
|
|
258
253
|
getItemProps: getItemProps,
|
|
@@ -262,7 +257,7 @@ function $7cd5ba9838c72bf9$var$_Autocomplete(props, ref) {
|
|
|
262
257
|
}));
|
|
263
258
|
elementStartIndex += group.options.length;
|
|
264
259
|
return render;
|
|
265
|
-
}), !isLoading && !$7cd5ba9838c72bf9$var$isUsingGroups(isGrouped, items) && items.length > 0 && /*#__PURE__*/ $7oe8x$react.createElement($641c6dc49f14cfd8$export$4db5c29873bb228f, {
|
|
260
|
+
}), !isLoading && !$7cd5ba9838c72bf9$var$isUsingGroups(isGrouped, items) && items.length > 0 && /*#__PURE__*/ (0, $7oe8x$react).createElement((0, $641c6dc49f14cfd8$export$4db5c29873bb228f), {
|
|
266
261
|
items: items,
|
|
267
262
|
elementStartIndex: elementStartIndex,
|
|
268
263
|
highlightedIndex: highlightedIndex,
|
|
@@ -272,16 +267,16 @@ function $7cd5ba9838c72bf9$var$_Autocomplete(props, ref) {
|
|
|
272
267
|
}))));
|
|
273
268
|
}
|
|
274
269
|
const $7cd5ba9838c72bf9$var$ListItemLoadingState = ()=>{
|
|
275
|
-
return /*#__PURE__*/ $7oe8x$react.createElement($7oe8x$SkeletonContainer, {
|
|
270
|
+
return /*#__PURE__*/ (0, $7oe8x$react).createElement((0, $7oe8x$SkeletonContainer), {
|
|
276
271
|
svgHeight: 16
|
|
277
|
-
}, /*#__PURE__*/ $7oe8x$react.createElement($7oe8x$SkeletonBodyText, {
|
|
272
|
+
}, /*#__PURE__*/ (0, $7oe8x$react).createElement((0, $7oe8x$SkeletonBodyText), {
|
|
278
273
|
numberOfLines: 1
|
|
279
274
|
}));
|
|
280
275
|
}; // This is required to infer correct typings when differentiating groups and items
|
|
281
276
|
function $7cd5ba9838c72bf9$var$isUsingGroups(isGrouped, items) {
|
|
282
277
|
return isGrouped;
|
|
283
278
|
}
|
|
284
|
-
const $7cd5ba9838c72bf9$export$2f2b9559550c7bbc = /*#__PURE__*/ $7oe8x$react.forwardRef($7cd5ba9838c72bf9$var$_Autocomplete);
|
|
279
|
+
const $7cd5ba9838c72bf9$export$2f2b9559550c7bbc = /*#__PURE__*/ (0, $7oe8x$react).forwardRef($7cd5ba9838c72bf9$var$_Autocomplete);
|
|
285
280
|
|
|
286
281
|
|
|
287
282
|
|
package/dist/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["packages/components/autocomplete/src/index.ts","packages/components/autocomplete/src/Autocomplete.tsx","packages/components/autocomplete/src/AutocompleteItems.tsx","packages/components/autocomplete/src/Autocomplete.styles.ts"],"sourcesContent":["export { Autocomplete } from './Autocomplete';\nexport type { AutocompleteProps } from './Autocomplete';\n","import React, { useCallback, useState } from 'react';\nimport { cx } from 'emotion';\nimport { useCombobox } from 'downshift';\n\nimport { mergeRefs } from '@contentful/f36-core';\nimport type { CommonProps, ExpandProps } from '@contentful/f36-core';\nimport { IconButton } from '@contentful/f36-button';\nimport { TextInput } from '@contentful/f36-forms';\nimport type { TextInputProps } from '@contentful/f36-forms';\nimport { CloseIcon, ChevronDownIcon } from '@contentful/f36-icons';\nimport { SkeletonContainer, SkeletonBodyText } from '@contentful/f36-skeleton';\nimport { Popover } from '@contentful/f36-popover';\nimport { Subheading, SectionHeading } from '@contentful/f36-typography';\n\nimport { AutocompleteItems } from './AutocompleteItems';\nimport { getAutocompleteStyles } from './Autocomplete.styles';\n\nexport interface GenericGroupType<ItemType> {\n groupTitle: string;\n options: ItemType[];\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface AutocompleteProps<ItemType>\n extends CommonProps,\n Pick<\n TextInputProps,\n | 'isDisabled'\n | 'isInvalid'\n | 'isReadOnly'\n | 'isRequired'\n | 'id'\n | 'defaultValue'\n > {\n /**\n * It’s an array of data to be used as \"options\" by the autocomplete component.\n * This can either be a plain list of items or a list of groups of items.\n */\n items: ItemType[] | GenericGroupType<ItemType>[];\n\n /**\n * Set a custom icon for the text input\n */\n icon?: React.ReactElement;\n\n /**\n * Tells if the item is a object with groups\n */\n isGrouped?: boolean;\n\n /**\n * Function called whenever the input value changes\n */\n onInputValueChange?: (value: string) => void;\n /**\n * This is the function that will be called when the user selects one of the \"options\" in the list.\n * The component will pass the selected \"item\" as an argument to the function..\n */\n onSelectItem: (item: ItemType) => void;\n\n /**\n * Applying the selectedItem property turns autocomplete into a controlled component.\n * Can be used to display e.g. previously selected element. If it is an object the itemToString function will apply to it.\n */\n selectedItem?: ItemType;\n\n /**\n * This is the function that will be called for each \"item\" passed in the `items` prop.\n * It receives the \"item\" and \"inputValue\" as arguments and returns a ReactNode.\n * The inputValue is passed in case you want to highlight the match on the render.\n */\n renderItem?: (item: ItemType, inputValue: string) => React.ReactNode;\n /**\n * When using objects as `items`, we recommend passing a function that tells Downshift how to extract a string\n * from those objetcs to be used as inputValue\n */\n itemToString?: (item: ItemType) => string;\n /**\n * If this is set to `true` the text input will be cleared after an item is selected\n * @default false\n */\n clearAfterSelect?: boolean;\n /**\n * If this is set to `false` the dropdown menu will stay open after selecting an item\n * @default true\n */\n closeAfterSelect?: boolean;\n /**\n * This is the value will be passed to the `placeholder` prop of the input.\n * @default \"Search\"\n */\n placeholder?: string;\n /**\n * A message that will be shown when it is not possible to find any option that matches the input value\n * @default \"No matches\"\n */\n noMatchesMessage?: string;\n /**\n * Use this prop to get a ref to the input element of the component\n */\n inputRef?: React.Ref<HTMLInputElement>;\n /**\n * Use this prop to get a ref to the toggle button of the component\n */\n toggleRef?: React.Ref<HTMLButtonElement>;\n /**\n * Use this prop to get a ref to the list of items of the component\n */\n listRef?: React.Ref<HTMLUListElement>;\n /**\n * It sets the width of the list\n * @default \"auto\"\n */\n listWidth?: 'auto' | 'full';\n /**\n * It sets the max-height, in pixels, of the list\n * The default value is the height of 5 single line items\n * @default 180\n */\n listMaxHeight?: number;\n /**\n * Sets the list to show its loading state\n * @default false\n */\n isLoading?: boolean;\n /**\n * Boolean to control whether or not to render the suggestions box in a React Portal.\n * Rendering content inside a Portal allows the suggestions box to escape the bounds\n * of its parent while still being positioned correctly.\n * Defaults to `false`\n */\n usePortal?: boolean;\n}\n\nfunction _Autocomplete<ItemType>(\n props: AutocompleteProps<ItemType>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {\n id,\n className,\n clearAfterSelect = false,\n closeAfterSelect = true,\n defaultValue = '',\n selectedItem,\n items,\n onInputValueChange,\n onSelectItem,\n renderItem,\n icon = <ChevronDownIcon variant=\"muted\" />,\n itemToString = (item: ItemType) => (item as unknown) as string,\n isInvalid,\n isDisabled,\n isRequired,\n isReadOnly,\n noMatchesMessage = 'No matches found',\n placeholder = 'Search',\n inputRef,\n toggleRef,\n listRef,\n listWidth = 'auto',\n listMaxHeight = 180,\n isGrouped = false,\n isLoading = false,\n usePortal = false,\n testId = 'cf-autocomplete',\n } = props;\n\n type GroupType = GenericGroupType<ItemType>;\n\n const styles = getAutocompleteStyles(listMaxHeight);\n\n const [inputValue, setInputValue] = useState(defaultValue);\n\n const handleInputValueChange = useCallback(\n (value: string) => {\n setInputValue(value);\n\n onInputValueChange?.(value);\n },\n [onInputValueChange],\n );\n\n // Handle manually to avoid a jumping cursor, see https://github.com/downshift-js/downshift/issues/1108#issuecomment-842407759\n const handleNativeChangeEvent = useCallback(\n (event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n const value = event.target.value;\n handleInputValueChange(value);\n },\n [handleInputValueChange],\n );\n\n const flattenItems = isUsingGroups(isGrouped, items)\n ? items.reduce(\n (acc: ItemType[], group: GroupType) => [...acc, ...group.options],\n [],\n )\n : items;\n\n const isShowingNoMatches = isUsingGroups(isGrouped, items)\n ? items.every((group: GroupType) => group.options.length === 0)\n : items.length === 0;\n\n const {\n getComboboxProps,\n getInputProps,\n getItemProps,\n getMenuProps,\n getToggleButtonProps,\n highlightedIndex,\n isOpen,\n toggleMenu,\n } = useCombobox({\n items: flattenItems,\n selectedItem,\n inputValue,\n itemToString,\n onInputValueChange: ({ type, inputValue }) => {\n if (type !== '__input_change__') {\n handleInputValueChange(inputValue);\n }\n },\n onStateChange: ({ type, selectedItem }) => {\n switch (type) {\n case useCombobox.stateChangeTypes.InputKeyDownEnter:\n case useCombobox.stateChangeTypes.ItemClick:\n if (selectedItem) {\n onSelectItem(selectedItem);\n }\n if (clearAfterSelect) {\n handleInputValueChange('');\n }\n if (!closeAfterSelect) {\n toggleMenu();\n }\n break;\n default:\n break;\n }\n },\n });\n\n const {\n 'aria-labelledby': _labelledby,\n id: _inputId,\n ...inputProps\n } = getInputProps();\n const comboboxProps = getComboboxProps();\n const toggleProps = getToggleButtonProps();\n const menuProps = getMenuProps();\n let elementStartIndex = 0;\n\n return (\n <div\n data-test-id={testId}\n className={cx(styles.autocomplete, className)}\n ref={ref}\n >\n <Popover\n usePortal={usePortal}\n isOpen={isOpen}\n isFullWidth={listWidth === 'full'}\n renderOnlyWhenOpen={false}\n // This is necessary, otherwise the focus will change from the input to the Popover\n // and the user won't be able to type in the input\n // eslint-disable-next-line jsx-a11y/no-autofocus\n autoFocus={false}\n id={menuProps.id}\n >\n <Popover.Trigger>\n <div {...comboboxProps} className={styles.combobox}>\n <TextInput\n className={styles.inputField}\n {...inputProps}\n onFocus={() => {\n if (!isOpen) {\n toggleMenu();\n }\n }}\n id={id}\n isInvalid={isInvalid}\n isDisabled={isDisabled}\n isRequired={isRequired}\n isReadOnly={isReadOnly}\n ref={mergeRefs(inputProps.ref, inputRef)}\n testId=\"cf-autocomplete-input\"\n placeholder={placeholder}\n onChange={(event) => {\n inputProps.onChange(event);\n handleNativeChangeEvent(event);\n }}\n />\n <IconButton\n {...toggleProps}\n ref={mergeRefs(toggleProps.ref, toggleRef)}\n aria-label={inputValue ? 'Clear' : 'Show list'}\n className={styles.toggleButton}\n variant=\"transparent\"\n icon={inputValue ? <CloseIcon variant=\"muted\" /> : icon}\n onClick={() => {\n if (inputValue) {\n handleInputValueChange('');\n } else {\n toggleMenu();\n }\n }}\n isDisabled={isDisabled}\n size=\"small\"\n />\n </div>\n </Popover.Trigger>\n\n <Popover.Content\n {...menuProps}\n ref={mergeRefs(menuProps.ref, listRef)}\n className={styles.content}\n testId=\"cf-autocomplete-container\"\n >\n {isLoading &&\n [...Array(3)].map((_, index) => (\n <div key={index} className={cx(styles.item, styles.disabled)}>\n <ListItemLoadingState />\n </div>\n ))}\n\n {!isLoading && isShowingNoMatches && (\n <div className={styles.item}>\n <Subheading className={styles.noMatchesTitle}>\n {noMatchesMessage}\n </Subheading>\n </div>\n )}\n\n {!isLoading &&\n isUsingGroups(isGrouped, items) &&\n items.map((group: GroupType, index: number) => {\n if (group.options.length < 1) {\n return;\n }\n const render = (\n <div key={index}>\n <SectionHeading\n key={index}\n data-test-id=\"cf-autocomplete-grouptitle\"\n marginBottom=\"none\"\n className={styles.groupTitle}\n >\n {group.groupTitle}\n </SectionHeading>\n <AutocompleteItems<ItemType>\n items={group.options}\n highlightedIndex={highlightedIndex}\n getItemProps={getItemProps}\n renderItem={renderItem}\n inputValue={inputValue}\n elementStartIndex={elementStartIndex}\n />\n </div>\n );\n elementStartIndex += group.options.length;\n return render;\n })}\n\n {!isLoading &&\n !isUsingGroups(isGrouped, items) &&\n items.length > 0 && (\n <AutocompleteItems<ItemType>\n items={items}\n elementStartIndex={elementStartIndex}\n highlightedIndex={highlightedIndex}\n getItemProps={getItemProps}\n renderItem={renderItem}\n inputValue={inputValue}\n />\n )}\n </Popover.Content>\n </Popover>\n </div>\n );\n}\n\nconst ListItemLoadingState = () => {\n return (\n <SkeletonContainer svgHeight={16}>\n <SkeletonBodyText numberOfLines={1} />\n </SkeletonContainer>\n );\n};\n\n// This is required to infer correct typings when differentiating groups and items\nfunction isUsingGroups<ItemType>(\n isGrouped: boolean,\n items: ItemType[] | GenericGroupType<ItemType>[],\n): items is GenericGroupType<ItemType>[] {\n return isGrouped;\n}\n\n/**\n * The Autocomplete is a component that will show a `TextInput` where a user can type any word which will be used\n * to filter a list of items. That list of filtered items will be shown to the user as possible options for the input.\n * Once one of the options is selected, that option becomes the value of the `TextInput`.\n */\nexport const Autocomplete = React.forwardRef(_Autocomplete) as <T>(\n props: ExpandProps<AutocompleteProps<T>> & {\n ref?: React.Ref<HTMLDivElement>;\n },\n) => ReturnType<typeof _Autocomplete>;\n","import React, { HTMLAttributes } from 'react';\nimport { cx } from 'emotion';\n\nimport { getStringMatch } from '@contentful/f36-utils';\nimport { Text } from '@contentful/f36-typography';\nimport { getAutocompleteStyles } from './Autocomplete.styles';\nimport type { UseComboboxGetItemPropsOptions } from 'downshift';\n\ninterface AutocompleteItemsProps<ItemType> {\n items: ItemType[];\n elementStartIndex: number;\n highlightedIndex: number;\n getItemProps: (\n options: UseComboboxGetItemPropsOptions<ItemType>,\n ) => HTMLAttributes<HTMLLIElement>;\n renderItem: (item: ItemType, inputValue: string) => React.ReactNode;\n inputValue: string;\n listMaxHeight?: number;\n}\n\nexport const AutocompleteItems = <ItemType,>(\n props: AutocompleteItemsProps<ItemType>,\n) => {\n const {\n items,\n elementStartIndex,\n highlightedIndex,\n getItemProps,\n renderItem,\n inputValue,\n listMaxHeight = 180,\n } = props;\n\n const styles = getAutocompleteStyles(listMaxHeight);\n\n return (\n <ul className={styles.list} data-test-id=\"cf-autocomplete-list\">\n {items.map((item: ItemType, index: number) => {\n const itemIndex = elementStartIndex + index;\n const itemProps = getItemProps({ item, index: itemIndex });\n return (\n <Text\n {...itemProps}\n as=\"li\"\n key={itemIndex}\n className={cx([\n styles.item,\n highlightedIndex === itemIndex && styles.highlighted,\n ])}\n data-test-id={`cf-autocomplete-list-item-${itemIndex}`}\n >\n {renderItem ? (\n renderItem(item, inputValue)\n ) : typeof item === 'string' ? (\n <HighlightedItem item={item} inputValue={inputValue} />\n ) : (\n item\n )}\n </Text>\n );\n })}\n </ul>\n );\n};\n\nAutocompleteItems.displayName = 'AutocompleteItems';\n\nfunction HighlightedItem({\n item,\n inputValue,\n}: {\n item: string;\n inputValue: string;\n}) {\n const { before, match, after } = getStringMatch(item, inputValue);\n\n return (\n <>\n {before}\n <b>{match}</b>\n {after}\n </>\n );\n}\n\nHighlightedItem.displayName = 'HighlightedItem';\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getAutocompleteStyles = (listMaxHeight: number) => ({\n autocomplete: css({\n position: 'relative',\n width: '100%',\n }),\n combobox: css({\n position: 'relative',\n }),\n inputField: css({\n paddingRight: tokens.spacingXl,\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }),\n toggleButton: css({\n position: 'absolute',\n top: '1px',\n right: '1px',\n zIndex: 1,\n padding: tokens.spacing2Xs,\n height: '38px',\n }),\n content: css({\n overflow: 'auto',\n maxHeight: `${listMaxHeight}px`,\n }),\n list: css({\n listStyle: 'none',\n padding: `${tokens.spacingXs} 0`,\n margin: 0,\n }),\n groupTitle: css({\n padding: `${tokens.spacingXs} ${tokens.spacingM}`,\n lineHeight: tokens.lineHeightM,\n }),\n noMatchesTitle: css({\n color: tokens.gray500,\n margin: `${tokens.spacingM} 0 ${tokens.spacingM} 0`,\n }),\n item: css({\n display: 'block',\n padding: `${tokens.spacingXs} ${tokens.spacingM}`,\n wordBreak: 'break-word',\n whiteSpace: 'break-spaces',\n cursor: 'pointer',\n hyphens: 'auto',\n\n '&:focus, &:hover': {\n backgroundColor: tokens.gray100,\n },\n '&:active': {\n backgroundColor: tokens.gray200,\n },\n }),\n disabled: css({\n opacity: 0.5,\n pointerEvents: 'none',\n }),\n highlighted: css({\n backgroundColor: tokens.gray100,\n }),\n});\n"],"names":["Autocomplete","AutocompleteProps","React","useCallback","useState","useCombobox","mergeRefs","CommonProps","ExpandProps","IconButton","TextInput","TextInputProps","CloseIcon","ChevronDownIcon","SkeletonContainer","SkeletonBodyText","Popover","Subheading","SectionHeading","AutocompleteItems","getAutocompleteStyles","GenericGroupType","groupTitle","options","ItemType","Pick","items","icon","ReactElement","isGrouped","onInputValueChange","value","onSelectItem","item","selectedItem","renderItem","inputValue","ReactNode","itemToString","clearAfterSelect","closeAfterSelect","placeholder","noMatchesMessage","inputRef","Ref","HTMLInputElement","toggleRef","HTMLButtonElement","listRef","HTMLUListElement","listWidth","listMaxHeight","isLoading","usePortal","_Autocomplete","props","ref","HTMLDivElement","id","className","defaultValue","isInvalid","isDisabled","isRequired","isReadOnly","testId","GroupType","styles","setInputValue","handleInputValueChange","handleNativeChangeEvent","event","ChangeEvent","HTMLTextAreaElement","target","flattenItems","isUsingGroups","reduce","acc","group","isShowingNoMatches","every","length","getComboboxProps","getInputProps","getItemProps","getMenuProps","getToggleButtonProps","highlightedIndex","isOpen","toggleMenu","type","onStateChange","stateChangeTypes","InputKeyDownEnter","ItemClick","_labelledby","_inputId","inputProps","comboboxProps","toggleProps","menuProps","elementStartIndex","autocomplete","combobox","inputField","onChange","toggleButton","content","Array","map","_","index","disabled","noMatchesTitle","render","ListItemLoadingState","forwardRef","T","ReturnType","HTMLAttributes","getStringMatch","Text","UseComboboxGetItemPropsOptions","AutocompleteItemsProps","HTMLLIElement","list","itemIndex","itemProps","highlighted","displayName","HighlightedItem","before","match","after","tokens","paddingRight","spacingXl","textOverflow","whiteSpace","position","top","right","zIndex","padding","spacing2Xs","height","overflow","maxHeight","listStyle","spacingXs","margin","spacingM","lineHeight","lineHeightM","color","gray500","display","wordBreak","cursor","hyphens","backgroundColor","gray100","gray200"],"version":3,"file":"module.js.map"}
|
|
1
|
+
{"mappings":";;;;;;;;;;;;;A;;;;;;;;;;A;;;;A;;AGGO,MAAMoB,yCAAqB,GAAG,CAAC+B,aAAD,GAA4B,CAAA;QAC/DoD,YAAY,EAAA,aAAE,CAAA,CAAA,GAAA,UAAdA,CAAAA,CAAAA;YAAc,IAAA,EAAA,SAAA;YAAA,MAAA,EAAA,+BAAA;SAAA,CADiD;QAK/DC,QAAQ,EAAA,aAAE,CAAA,CAAA,GAAA,UAAVA,CAAAA,CAAAA;YAAU,IAAA,EAAA,QAAA;YAAA,MAAA,EAAA,oBAAA;SAAA,CALqD;QAQ/DC,UAAU,EAAA,aAAE,CAAA,CAAA,GAAA,UAAA,CAAA,CAAI;YACd+B,YAAY,EAAED,CAAAA,GAAAA,0BAAM,CAAA,CAACE,SADP;YAEdC,YAAY,EAAE,UAFA;YAGdC,UAAU,EAAE,QAAZA;SAHU,CARmD;QAa/DhC,YAAY,EAAA,aAAE,CAAA,CAAA,GAAA,UAAA,CAAA,CAAI;YAChBiC,QAAQ,EAAE,UADM;YAEhBC,GAAG,EAAE,KAFW;YAGhBC,KAAK,EAAE,KAHS;YAIhBC,MAAM,EAAE,CAJQ;YAKhBC,OAAO,EAAET,CAAAA,GAAAA,0BAAM,CAAA,CAACU,UALA;YAMhBC,MAAM,EAAE,MAARA;SANY,CAbiD;QAqB/DtC,OAAO,EAAA,aAAE,CAAA,CAAA,GAAA,UAAA,CAAA,CAAI;YACXuC,QAAQ,EAAE,MADC;YAEXC,SAAS,EAAG,CAAA,EAAEjG,aAAc,CAA5BiG,EAAAA,CAAAA;SAFO,CArBsD;QAyB/DtB,IAAI,EAAA,aAAE,CAAA,CAAA,GAAA,UAAA,CAAA,CAAI;YACRuB,SAAS,EAAE,MADH;YAERL,OAAO,EAAG,CAAA,EAAET,CAAAA,GAAAA,0BAAM,CAAA,CAACe,SAAU,CAAA,EAAA,CAFrB;YAGRC,MAAM,EAAE,CAARA;SAHI,CAzByD;QA8B/DjI,UAAU,EAAA,aAAE,CAAA,CAAA,GAAA,UAAA,CAAA,CAAI;YACd0H,OAAO,EAAG,CAAA,EAAET,CAAAA,GAAAA,0BAAM,CAAA,CAACe,SAAU,CAAA,CAAA,EAAGf,CAAAA,GAAAA,0BAAM,CAAA,CAACiB,QAAS,CAAA,CADlC;YAEdC,UAAU,EAAElB,CAAAA,GAAAA,0BAAM,CAAA,CAACmB,WAAnBD;SAFU,CA9BmD;QAkC/DvC,cAAc,EAAA,aAAE,CAAA,CAAA,GAAA,UAAA,CAAA,CAAI;YAClByC,KAAK,EAAEpB,CAAAA,GAAAA,0BAAM,CAAA,CAACqB,OADI;YAElBL,MAAM,EAAG,CAAA,EAAEhB,CAAAA,GAAAA,0BAAM,CAAA,CAACiB,QAAS,CAAA,GAAA,EAAKjB,CAAAA,GAAAA,0BAAM,CAAA,CAACiB,QAAS,CAAhDD,EAAAA,CAAAA;SAFc,CAlC+C;QAsC/DtH,IAAI,EAAA,aAAE,CAAA,CAAA,GAAA,UAAA,CAAA,CAAI;YACR4H,OAAO,EAAE,OADD;YAERb,OAAO,EAAG,CAAA,EAAET,CAAAA,GAAAA,0BAAM,CAAA,CAACe,SAAU,CAAA,CAAA,EAAGf,CAAAA,GAAAA,0BAAM,CAAA,CAACiB,QAAS,CAAA,CAFxC;YAGRM,SAAS,EAAE,YAHH;YAIRnB,UAAU,EAAE,cAJJ;YAKRoB,MAAM,EAAE,SALA;YAMRC,OAAO,EAAE,MAND;YAQR,kBAAA,EAAoB;gBAClBC,eAAe,EAAE1B,CAAAA,GAAAA,0BAAM,CAAA,CAAC2B,OAAxBD;aATM;YAWR,UAAA,EAAY;gBACVA,eAAe,EAAE1B,CAAAA,GAAAA,0BAAM,CAAA,CAAC4B,OAAxBF;aADU;SAXR,CAtCyD;QAqD/DhD,QAAQ,EAAA,aAAE,CAAA,CAAA,GAAA,UAAVA,CAAAA,CAAAA;YAAU,IAAA,EAAA,SAAA;YAAA,MAAA,EAAA,kCAAA;SAAA,CArDqD;QAyD/DgB,WAAW,EAAA,aAAE,CAAA,CAAA,GAAA,UAAA,CAAA,CAAI;YACfgC,eAAe,EAAE1B,CAAAA,GAAAA,0BAAM,CAAA,CAAC2B,OAAxBD;SADW,CAAI;KAzDkB,CAAA,AAA9B,AAA0D;;;ADiB1D,MAAM9I,yCAAiB,GAAG,CAC/BoC,KAD+B,GAE5B;IACH,MAAM,SACJ7B,KADI,CAAA,qBAEJ4E,iBAFI,CAAA,oBAGJd,gBAHI,CAAA,gBAIJH,YAJI,CAAA,cAKJlD,UALI,CAAA,cAMJC,UANI,CAAA,iBAOJe,aAAa,GAAG,GAAhBA,GAPI,GAQFI,KARJ,AAAM;IAUN,MAAMY,MAAM,GAAG/C,CAAAA,GAAAA,yCAAqB,CAAA,CAAC+B,aAAD,CAApC,AAAA;IAEA,qBACE,gCAAC,IAAD;QAAI,SAAA,EAAWgB,MAAM,CAAC2D,IAAR;QAAc,cAAA,EAAa,sBAAzC;OACGpG,KAAK,CAACoF,GAAN,CAAU,CAAC7E,IAAD,EAAiB+E,KAAjB,GAAmC;QAC5C,MAAMe,SAAS,GAAGzB,iBAAiB,GAAGU,KAAtC,AAAA;QACA,MAAMgB,SAAS,GAAG3C,YAAY,CAAC;kBAAEpD,IAAF;YAAQ+E,KAAK,EAAEe,SAAPf;SAAT,CAA9B,AAA+B;QAC/B,qBACE,gCAAC,CAAA,GAAA,WAAD,CAAA;YACE,GAAIgB,SAAJ;YACA,EAAA,EAAG,IAFL;YAGE,GAAA,EAAKD,SAAD;YACJ,SAAA,EAAW,CAAA,GAAA,SAAA,CAAA,CAAG;gBACZ5D,MAAM,CAAClC,IADK;gBAEZuD,gBAAgB,KAAKuC,SAArB,IAAkC5D,MAAM,CAAC8D,WAF7B;aAAH,CAAD;YAIV,cAAA,EAAe,CAAA,0BAAA,EAA4BF,SAAU,CAAA,CAAxC;WAEZ5F,UAAU,GACTA,UAAU,CAACF,IAAD,EAAOG,UAAP,CADD,GAEP,OAAOH,IAAP,KAAgB,QAAhB,iBACF,gCAAC,qCAAD;YAAiB,IAAA,EAAMA,IAAD;YAAO,UAAA,EAAYG,UAAD;UADtC,GAGFH,IALF,CAXJ,CAkBR;KArBO,CAAD,CAFJ,CA0BF;CAzCO,AA2CN;AAEDd,yCAAiB,CAAC+G,WAAlB,GAAgC,mBAAhC,CAAA/G;AAEA,SAASgH,qCAAT,CAAyB,QACvBlG,IADuB,CAAA,cAEvBG,UAAAA,CAAAA,EAFF,EAMG;IACD,MAAM,UAAEgG,MAAF,CAAA,SAAUC,KAAV,CAAA,SAAiBC,KAAAA,CAAAA,EAAjB,GAA2Bb,CAAAA,GAAAA,qBAAc,CAAA,CAACxF,IAAD,EAAOG,UAAP,CAA/C,AAAM;IAEN,qBACE,kEACGgG,MAAD,gBACA,gCAAC,GAAD,QAAIC,KAAD,CAAT,EACOC,KAAD,CAJJ,CAKF;CAEC;AAEDH,qCAAe,CAACD,WAAhB,GAA8B,iBAA9B,CAAAC;;;;ADiDA,SAAS7E,mCAAa,CACpBC,KADF,EAEEC,GAFF,EAGE;IACA,MAAM,MACJE,EADI,CAAA,aAEJC,SAFI,CAAA,oBAGJpB,gBAAgB,GAAG,KAHf,qBAIJC,gBAAgB,GAAG,IAJf,iBAKJoB,YAAY,GAAG,EALX,GAMJ1B,YANI,EAMJA,aANI,CAAA,SAOJR,KAPI,CAAA,sBAQJI,kBARI,CAAA,gBASJE,YATI,CAAA,cAUJG,UAVI,CAAA,QAWJR,IAAI,iBAAG,gCAAC,CAAA,GAAA,sBAAD,CAAA;QAAiB,OAAA,EAAQ,OAAzB;MAXH,iBAYJW,YAAY,GAAG,CAACL,IAAD,GAAqBA,IAAI,AAZpC,cAaJ4B,SAbI,CAAA,cAcJC,UAdI,CAAA,cAeJC,UAfI,CAAA,cAgBJC,UAhBI,CAAA,oBAiBJtB,gBAAgB,GAAG,kBAjBf,gBAkBJD,WAAW,GAAG,QAlBV,aAmBJE,QAnBI,CAAA,aAoBJG,SApBI,CAAA,WAqBJE,OArBI,CAAA,aAsBJE,SAAS,GAAG,MAtBR,kBAuBJC,aAAa,GAAG,GAvBZ,cAwBJtB,SAAS,GAAG,KAxBR,cAyBJuB,SAAS,GAAG,KAzBR,cA0BJC,SAAS,GAAG,KA1BR,WA2BJY,MAAM,GAAG,iBAATA,GA3BI,GA4BFV,KA5BJ,AAAM;IAgCN,MAAMY,MAAM,GAAG/C,CAAAA,GAAAA,yCAAqB,CAAA,CAAC+B,aAAD,CAApC,AAAA;IAEA,MAAM,CAACf,WAAD,EAAagC,aAAb,CAAA,GAA8BhE,CAAAA,GAAAA,eAAQ,CAAA,CAACwD,YAAD,CAA5C,AAAA;IAEA,MAAMS,sBAAsB,GAAGlE,CAAAA,GAAAA,kBAAW,CAAA,CACxC,CAAC4B,KAAD,GAAmB;QACjBqC,aAAa,CAACrC,KAAD,CAAb,CAAAqC;QAEAtC,kBAAkB,aAAlBA,kBAAkB,WAAlB,GAAAA,KAAAA,CAAA,GAAAA,kBAAkB,CAAGC,KAAH,CAAlB,CAAAD;KAJsC,EAMxC;QAACA,kBAAD;KANwC,CAA1C,AArCA,EA8CA,8HAJG;IAKH,MAAMwC,uBAAuB,GAAGnE,CAAAA,GAAAA,kBAAW,CAAA,CACzC,CAACoE,KAAD,GAAsE;QACpE,MAAMxC,KAAK,GAAGwC,KAAK,CAACG,MAAN,CAAa3C,KAA3B,AAAA;QACAsC,sBAAsB,CAACtC,KAAD,CAAtB,CAAAsC;KAHuC,EAKzC;QAACA,sBAAD;KALyC,CAA3C,AAIG;IAIH,MAAMM,YAAY,GAAGC,mCAAa,CAAC/C,SAAD,EAAYH,KAAZ,CAAb,GACjBA,KAAK,CAACmD,MAAN,CACE,CAACC,GAAD,EAAkBC,KAAlB,GAAuC;eAAID,GAAJ;eAAYC,KAAK,CAACxD,OAAlB;SADzC,EAEE,EAFF,CADiB,GAKjBG,KALJ,AAAA;IAOA,MAAMsD,kBAAkB,GAAGJ,mCAAa,CAAC/C,SAAD,EAAYH,KAAZ,CAAb,GACvBA,KAAK,CAACuD,KAAN,CAAY,CAACF,KAAD,GAAsBA,KAAK,CAACxD,OAAN,CAAc2D,MAAd,KAAyB,CAA3D,CADuB,GAEvBxD,KAAK,CAACwD,MAAN,KAAiB,CAFrB,AAAA;IAIA,MAAM,oBACJC,gBADI,CAAA,iBAEJC,aAFI,CAAA,gBAGJC,YAHI,CAAA,gBAIJC,YAJI,CAAA,wBAKJC,oBALI,CAAA,oBAMJC,gBANI,CAAA,UAOJC,MAPI,CAAA,cAQJC,UAAAA,CAAAA,EARI,GASFrF,CAAAA,GAAAA,kBAAW,CAAA,CAAC;QACdqB,KAAK,EAAEiD,YADO;QAEdzC,YAFc,EAEdA,aAFc;QAGdE,UAHc,EAGdA,WAHc;sBAIdE,YAJc;QAKdR,kBAAkB,EAAE,CAAC,QAAE6D,IAAF,CAAA,cAAQvD,UAAAA,CAAAA,EAAT,GAA0B;YAC5C,IAAIuD,IAAI,KAAK,kBAAb,EACEtB,sBAAsB,CAACjC,UAAD,CAAtB,CAAAiC;SAPU;QAUduB,aAAa,EAAE,CAAC,QAAED,IAAF,CAAA,gBAAQzD,YAAAA,CAAAA,EAAT,GAA4B;YACzC,OAAQyD,IAAR;gBACE,KAAKtF,CAAAA,GAAAA,kBAAW,CAAA,CAACwF,gBAAZ,CAA6BC,iBAAlC,CAAA;gBACA,KAAKzF,CAAAA,GAAAA,kBAAW,CAAA,CAACwF,gBAAZ,CAA6BE,SAAlC;oBACE,IAAI7D,YAAJ,EACEF,YAAY,CAACE,YAAD,CAAZ,CAAAF;oBAEF,IAAIO,gBAAJ,EACE8B,sBAAsB,CAAC,EAAD,CAAtB,CAAAA;oBAEF,IAAI,CAAC7B,gBAAL,EACEkD,UAAU,EAAVA,CAAAA;oBAEF,MAAA;gBACF;oBACE,MAAA;aAdJ;SAgBD;KA3BY,CATf,AASgB;IA8BhB,MAAM,EACJ,iBAAA,EAAmBM,WADf,CAAA,EAEJtC,EAAE,EAAEuC,QAFA,CAAA,EAGJ,GAAGC,UAAH,EAHI,GAIFd,aAAa,EAJjB,AAAM;IAKN,MAAMe,aAAa,GAAGhB,gBAAgB,EAAtC,AAAA;IACA,MAAMiB,WAAW,GAAGb,oBAAoB,EAAxC,AAAA;IACA,MAAMc,SAAS,GAAGf,YAAY,EAA9B,AAAA;IACA,IAAIgB,iBAAiB,GAAG,CAAxB,AAAA;IAEA,qBACE,gCAAC,KAAD;QACE,cAAA,EAAcrC,MAAD;QACb,SAAA,EAAW,CAAA,GAAA,SAAA,CAAA,CAAGE,MAAM,CAACoC,YAAV,EAAwB5C,SAAxB,CAAD;QACV,GAAA,EAAKH,GAAD;qBAEJ,gCAAC,CAAA,GAAA,cAAD,CAAA;QACE,SAAA,EAAWH,SAAD;QACV,MAAA,EAAQoC,MAAD;QACP,WAAA,EAAavC,SAAS,KAAK,MAAf;QACZ,kBAAA,EAAoB,KAAD;QAEnB,kDAAA;QACA,iDAAA;QACA,SAAA,EAAW,KAAD;QACV,EAAA,EAAImD,SAAS,CAAC3C,EAAX;qBAEH,gCAAC,CAAA,GAAA,cAAA,CAAA,CAAQ,OAAT,sBACE,gCAAC,KAAD;QAAK,GAAIyC,aAAJ;QAAmB,SAAA,EAAWhC,MAAM,CAACqC,QAAR;qBAChC,gCAAC,CAAA,GAAA,gBAAD,CAAA;QACE,SAAA,EAAWrC,MAAM,CAACsC,UAAR;QACV,GAAIP,UAAJ;QACA,OAAA,EAAS,IAAM;YACb,IAAI,CAACT,MAAL,EACEC,UAAU,EAAVA,CAAAA;SAFI;QAKR,EAAA,EAAIhC,EAAD;QACH,SAAA,EAAWG,SAAD;QACV,UAAA,EAAYC,UAAD;QACX,UAAA,EAAYC,UAAD;QACX,UAAA,EAAYC,UAAD;QACX,GAAA,EAAK1D,CAAAA,GAAAA,gBAAS,CAAA,CAAC4F,UAAU,CAAC1C,GAAZ,EAAiBb,QAAjB,CAAV;QACJ,MAAA,EAAO,uBAdT;QAeE,WAAA,EAAaF,WAAD;QACZ,QAAA,EAAW8B,CAAAA,KAAD,GAAW;YACnB2B,UAAU,CAACQ,QAAX,CAAoBnC,KAApB,CAAA2B,CAAAA;YACA5B,uBAAuB,CAACC,KAAD,CAAvB,CAAAD;SAFO;MAGR,gBAEH,gCAAC,CAAA,GAAA,iBAAD,CAAA;QACE,GAAI8B,WAAJ;QACA,GAAA,EAAK9F,CAAAA,GAAAA,gBAAS,CAAA,CAAC8F,WAAW,CAAC5C,GAAb,EAAkBV,SAAlB,CAAV;QACJ,YAAA,EAAYV,WAAU,GAAG,OAAH,GAAa,WAAxB;QACX,SAAA,EAAW+B,MAAM,CAACwC,YAAR;QACV,OAAA,EAAQ,aALV;QAME,IAAA,EAAMvE,WAAU,iBAAG,gCAAC,CAAA,GAAA,gBAAD,CAAA;YAAW,OAAA,EAAQ,OAAnB;UAAH,GAAmCT,IAA9C;QACL,OAAA,EAAS,IAAM;YACb,IAAIS,WAAJ,EACEiC,sBAAsB,CAAC,EAAD,CAAtB,CAAAA;iBAEAqB,UAAU,EAAVA,CAAAA;SAJI;QAOR,UAAA,EAAY5B,UAAD;QACX,IAAA,EAAK,OAfP;MAaG,CAIf,CACA,EAES,AAACpC,CAAAA,KAAK,CAACwD,MAAN,GAAe,CAAf,IAAoB9C,WAAU,CAAC8C,MAAX,GAAoB,CAAzC,CAAA,kBACC,gCAAC,CAAA,GAAA,cAAA,CAAA,CAAQ,OAAT;QACE,GAAImB,SAAJ;QACA,GAAA,EAAK/F,CAAAA,GAAAA,gBAAS,CAAA,CAAC+F,SAAS,CAAC7C,GAAX,EAAgBR,OAAhB,CAAV;QACJ,SAAA,EAAWmB,MAAM,CAACyC,OAAR;QACV,MAAA,EAAO,2BAJT;OAMGxD,SAAS,IACR;WAAIyD,KAAK,CAAC,CAAD,CAAT;KAAA,CAAcC,GAAd,CAAkB,CAACC,CAAD,EAAIC,KAAJ,iBAChB,gCAAC,KAAD;YAAK,GAAA,EAAKA,KAAD;YAAQ,SAAA,EAAW,CAAA,GAAA,SAAA,CAAA,CAAG7C,MAAM,CAAClC,IAAV,EAAgBkC,MAAM,CAAC8C,QAAvB,CAAD;yBACzB,gCAAC,0CAAD,OAAlB,CAFc,CADF,EAOC,CAAC7D,SAAD,IAAc4B,kBAAd,kBACC,gCAAC,KAAD;QAAK,SAAA,EAAWb,MAAM,CAAClC,IAAR;qBACb,gCAAC,CAAA,GAAA,iBAAD,CAAA;QAAY,SAAA,EAAWkC,MAAM,CAAC+C,cAAR;OACnBxE,gBAAD,CAClB,CAJY,EAQC,CAACU,SAAD,IACCwB,mCAAa,CAAC/C,SAAD,EAAYH,KAAZ,CADd,IAECA,KAAK,CAACoF,GAAN,CAAU,CAAC/B,KAAD,EAAmBiC,KAAnB,GAAqC;QAC7C,IAAIjC,KAAK,CAACxD,OAAN,CAAc2D,MAAd,GAAuB,CAA3B,EACE,OAAA;QAEF,MAAMiC,MAAM,iBACV,gCAAC,KAAD;YAAK,GAAA,EAAKH,KAAD;yBACP,gCAAC,CAAA,GAAA,qBAAD,CAAA;YACE,GAAA,EAAKA,KAAD;YACJ,cAAA,EAAa,4BAFf;YAGE,YAAA,EAAa,MAHf;YAIE,SAAA,EAAW7C,MAAM,CAAC7C,UAAR;WAETyD,KAAK,CAACzD,UAAP,CACtB,gBACoB,gCAAC,CAAA,GAAA,yCAAiB,CAAA;YAChB,KAAA,EAAOyD,KAAK,CAACxD,OAAP;YACN,gBAAA,EAAkBiE,gBAAD;YACjB,YAAA,EAAcH,YAAD;YACb,UAAA,EAAYlD,UAAD;YACX,UAAA,EAAYC,WAAD;YACX,iBAAA,EAAmBkE,iBAAD;UANxC,CAVgB,AAkBhB;QAEgBA,iBAAiB,IAAIvB,KAAK,CAACxD,OAAN,CAAc2D,MAAnC,CAAAoB;QACA,OAAOa,MAAP,CAAA;KAzBF,CAFF,EA8BC,CAAC/D,SAAD,IACC,CAACwB,mCAAa,CAAC/C,SAAD,EAAYH,KAAZ,CADf,IAECA,KAAK,CAACwD,MAAN,GAAe,CAFhB,kBAGG,gCAAC,CAAA,GAAA,yCAAiB,CAAA;QAChB,KAAA,EAAOxD,KAAD;QACN,iBAAA,EAAmB4E,iBAAD;QAClB,gBAAA,EAAkBd,gBAAD;QACjB,YAAA,EAAcH,YAAD;QACb,UAAA,EAAYlD,UAAD;QACX,UAAA,EAAYC,WAAD;MATjB,CApDJ,CAkER,CA9HE,CA+HF;CAEC;AAED,MAAMgF,0CAAoB,GAAG,IAAM;IACjC,qBACE,gCAAC,CAAA,GAAA,wBAAD,CAAA;QAAmB,SAAA,EAAW,EAAD;qBAC3B,gCAAC,CAAA,GAAA,uBAAD,CAAA;QAAkB,aAAA,EAAe,CAAD;MAAtC,CAFE,CAGF;CAJA,A,EAQA,kFAFC;AAGD,SAASxC,mCAAa,CACpB/C,SADF,EAEEH,KAFF,EAGyC;IACvC,OAAOG,SAAP,CAAA;CACD;AAOM,MAAM7B,yCAAY,iBAAGE,CAAAA,GAAAA,YAAK,CAAA,CAACmH,UAAN,CAAiB/D,mCAAjB,CAAA,AAArB,AACsC;;ADrZ7C","sources":["packages/components/autocomplete/src/index.ts","packages/components/autocomplete/src/Autocomplete.tsx","packages/components/autocomplete/src/AutocompleteItems.tsx","packages/components/autocomplete/src/Autocomplete.styles.ts"],"sourcesContent":["export { Autocomplete } from './Autocomplete';\nexport type { AutocompleteProps } from './Autocomplete';\n","import React, { useCallback, useState } from 'react';\nimport { cx } from 'emotion';\nimport { useCombobox } from 'downshift';\n\nimport { mergeRefs } from '@contentful/f36-core';\nimport type { CommonProps, ExpandProps } from '@contentful/f36-core';\nimport { IconButton } from '@contentful/f36-button';\nimport { TextInput } from '@contentful/f36-forms';\nimport type { TextInputProps } from '@contentful/f36-forms';\nimport { CloseIcon, ChevronDownIcon } from '@contentful/f36-icons';\nimport { SkeletonContainer, SkeletonBodyText } from '@contentful/f36-skeleton';\nimport { Popover } from '@contentful/f36-popover';\nimport { Subheading, SectionHeading } from '@contentful/f36-typography';\n\nimport { AutocompleteItems } from './AutocompleteItems';\nimport { getAutocompleteStyles } from './Autocomplete.styles';\n\nexport interface GenericGroupType<ItemType> {\n groupTitle: string;\n options: ItemType[];\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface AutocompleteProps<ItemType>\n extends CommonProps,\n Pick<\n TextInputProps,\n | 'isDisabled'\n | 'isInvalid'\n | 'isReadOnly'\n | 'isRequired'\n | 'id'\n | 'defaultValue'\n > {\n /**\n * It’s an array of data to be used as \"options\" by the autocomplete component.\n * This can either be a plain list of items or a list of groups of items.\n */\n items: ItemType[] | GenericGroupType<ItemType>[];\n\n /**\n * Set a custom icon for the text input\n */\n icon?: React.ReactElement;\n\n /**\n * Tells if the item is a object with groups\n */\n isGrouped?: boolean;\n\n /**\n * Function called whenever the input value changes\n */\n onInputValueChange?: (value: string) => void;\n /**\n * This is the function that will be called when the user selects one of the \"options\" in the list.\n * The component will pass the selected \"item\" as an argument to the function..\n */\n onSelectItem: (item: ItemType) => void;\n\n /**\n * Applying the selectedItem property turns autocomplete into a controlled component.\n * Can be used to display e.g. previously selected element. If it is an object the itemToString function will apply to it.\n */\n selectedItem?: ItemType;\n\n /**\n * This is the function that will be called for each \"item\" passed in the `items` prop.\n * It receives the \"item\" and \"inputValue\" as arguments and returns a ReactNode.\n * The inputValue is passed in case you want to highlight the match on the render.\n */\n renderItem?: (item: ItemType, inputValue: string) => React.ReactNode;\n /**\n * When using objects as `items`, we recommend passing a function that tells Downshift how to extract a string\n * from those objetcs to be used as inputValue\n */\n itemToString?: (item: ItemType) => string;\n /**\n * If this is set to `true` the text input will be cleared after an item is selected\n * @default false\n */\n clearAfterSelect?: boolean;\n /**\n * If this is set to `false` the dropdown menu will stay open after selecting an item\n * @default true\n */\n closeAfterSelect?: boolean;\n /**\n * This is the value will be passed to the `placeholder` prop of the input.\n * @default \"Search\"\n */\n placeholder?: string;\n /**\n * A message that will be shown when it is not possible to find any option that matches the input value\n * @default \"No matches\"\n */\n noMatchesMessage?: string;\n /**\n * Use this prop to get a ref to the input element of the component\n */\n inputRef?: React.Ref<HTMLInputElement>;\n /**\n * Use this prop to get a ref to the toggle button of the component\n */\n toggleRef?: React.Ref<HTMLButtonElement>;\n /**\n * Use this prop to get a ref to the list of items of the component\n */\n listRef?: React.Ref<HTMLUListElement>;\n /**\n * It sets the width of the list\n * @default \"auto\"\n */\n listWidth?: 'auto' | 'full';\n /**\n * It sets the max-height, in pixels, of the list\n * The default value is the height of 5 single line items\n * @default 180\n */\n listMaxHeight?: number;\n /**\n * Sets the list to show its loading state\n * @default false\n */\n isLoading?: boolean;\n /**\n * Boolean to control whether or not to render the suggestions box in a React Portal.\n * Rendering content inside a Portal allows the suggestions box to escape the bounds\n * of its parent while still being positioned correctly.\n * Defaults to `false`\n */\n usePortal?: boolean;\n}\n\nfunction _Autocomplete<ItemType>(\n props: AutocompleteProps<ItemType>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const {\n id,\n className,\n clearAfterSelect = false,\n closeAfterSelect = true,\n defaultValue = '',\n selectedItem,\n items,\n onInputValueChange,\n onSelectItem,\n renderItem,\n icon = <ChevronDownIcon variant=\"muted\" />,\n itemToString = (item: ItemType) => (item as unknown) as string,\n isInvalid,\n isDisabled,\n isRequired,\n isReadOnly,\n noMatchesMessage = 'No matches found',\n placeholder = 'Search',\n inputRef,\n toggleRef,\n listRef,\n listWidth = 'auto',\n listMaxHeight = 180,\n isGrouped = false,\n isLoading = false,\n usePortal = false,\n testId = 'cf-autocomplete',\n } = props;\n\n type GroupType = GenericGroupType<ItemType>;\n\n const styles = getAutocompleteStyles(listMaxHeight);\n\n const [inputValue, setInputValue] = useState(defaultValue);\n\n const handleInputValueChange = useCallback(\n (value: string) => {\n setInputValue(value);\n\n onInputValueChange?.(value);\n },\n [onInputValueChange],\n );\n\n // Handle manually to avoid a jumping cursor, see https://github.com/downshift-js/downshift/issues/1108#issuecomment-842407759\n const handleNativeChangeEvent = useCallback(\n (event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n const value = event.target.value;\n handleInputValueChange(value);\n },\n [handleInputValueChange],\n );\n\n const flattenItems = isUsingGroups(isGrouped, items)\n ? items.reduce(\n (acc: ItemType[], group: GroupType) => [...acc, ...group.options],\n [],\n )\n : items;\n\n const isShowingNoMatches = isUsingGroups(isGrouped, items)\n ? items.every((group: GroupType) => group.options.length === 0)\n : items.length === 0;\n\n const {\n getComboboxProps,\n getInputProps,\n getItemProps,\n getMenuProps,\n getToggleButtonProps,\n highlightedIndex,\n isOpen,\n toggleMenu,\n } = useCombobox({\n items: flattenItems,\n selectedItem,\n inputValue,\n itemToString,\n onInputValueChange: ({ type, inputValue }) => {\n if (type !== '__input_change__') {\n handleInputValueChange(inputValue);\n }\n },\n onStateChange: ({ type, selectedItem }) => {\n switch (type) {\n case useCombobox.stateChangeTypes.InputKeyDownEnter:\n case useCombobox.stateChangeTypes.ItemClick:\n if (selectedItem) {\n onSelectItem(selectedItem);\n }\n if (clearAfterSelect) {\n handleInputValueChange('');\n }\n if (!closeAfterSelect) {\n toggleMenu();\n }\n break;\n default:\n break;\n }\n },\n });\n\n const {\n 'aria-labelledby': _labelledby,\n id: _inputId,\n ...inputProps\n } = getInputProps();\n const comboboxProps = getComboboxProps();\n const toggleProps = getToggleButtonProps();\n const menuProps = getMenuProps();\n let elementStartIndex = 0;\n\n return (\n <div\n data-test-id={testId}\n className={cx(styles.autocomplete, className)}\n ref={ref}\n >\n <Popover\n usePortal={usePortal}\n isOpen={isOpen}\n isFullWidth={listWidth === 'full'}\n renderOnlyWhenOpen={false}\n // This is necessary, otherwise the focus will change from the input to the Popover\n // and the user won't be able to type in the input\n // eslint-disable-next-line jsx-a11y/no-autofocus\n autoFocus={false}\n id={menuProps.id}\n >\n <Popover.Trigger>\n <div {...comboboxProps} className={styles.combobox}>\n <TextInput\n className={styles.inputField}\n {...inputProps}\n onFocus={() => {\n if (!isOpen) {\n toggleMenu();\n }\n }}\n id={id}\n isInvalid={isInvalid}\n isDisabled={isDisabled}\n isRequired={isRequired}\n isReadOnly={isReadOnly}\n ref={mergeRefs(inputProps.ref, inputRef)}\n testId=\"cf-autocomplete-input\"\n placeholder={placeholder}\n onChange={(event) => {\n inputProps.onChange(event);\n handleNativeChangeEvent(event);\n }}\n />\n <IconButton\n {...toggleProps}\n ref={mergeRefs(toggleProps.ref, toggleRef)}\n aria-label={inputValue ? 'Clear' : 'Show list'}\n className={styles.toggleButton}\n variant=\"transparent\"\n icon={inputValue ? <CloseIcon variant=\"muted\" /> : icon}\n onClick={() => {\n if (inputValue) {\n handleInputValueChange('');\n } else {\n toggleMenu();\n }\n }}\n isDisabled={isDisabled}\n size=\"small\"\n />\n </div>\n </Popover.Trigger>\n\n {(items.length > 0 || inputValue.length > 0) && (\n <Popover.Content\n {...menuProps}\n ref={mergeRefs(menuProps.ref, listRef)}\n className={styles.content}\n testId=\"cf-autocomplete-container\"\n >\n {isLoading &&\n [...Array(3)].map((_, index) => (\n <div key={index} className={cx(styles.item, styles.disabled)}>\n <ListItemLoadingState />\n </div>\n ))}\n\n {!isLoading && isShowingNoMatches && (\n <div className={styles.item}>\n <Subheading className={styles.noMatchesTitle}>\n {noMatchesMessage}\n </Subheading>\n </div>\n )}\n\n {!isLoading &&\n isUsingGroups(isGrouped, items) &&\n items.map((group: GroupType, index: number) => {\n if (group.options.length < 1) {\n return;\n }\n const render = (\n <div key={index}>\n <SectionHeading\n key={index}\n data-test-id=\"cf-autocomplete-grouptitle\"\n marginBottom=\"none\"\n className={styles.groupTitle}\n >\n {group.groupTitle}\n </SectionHeading>\n <AutocompleteItems<ItemType>\n items={group.options}\n highlightedIndex={highlightedIndex}\n getItemProps={getItemProps}\n renderItem={renderItem}\n inputValue={inputValue}\n elementStartIndex={elementStartIndex}\n />\n </div>\n );\n elementStartIndex += group.options.length;\n return render;\n })}\n\n {!isLoading &&\n !isUsingGroups(isGrouped, items) &&\n items.length > 0 && (\n <AutocompleteItems<ItemType>\n items={items}\n elementStartIndex={elementStartIndex}\n highlightedIndex={highlightedIndex}\n getItemProps={getItemProps}\n renderItem={renderItem}\n inputValue={inputValue}\n />\n )}\n </Popover.Content>\n )}\n </Popover>\n </div>\n );\n}\n\nconst ListItemLoadingState = () => {\n return (\n <SkeletonContainer svgHeight={16}>\n <SkeletonBodyText numberOfLines={1} />\n </SkeletonContainer>\n );\n};\n\n// This is required to infer correct typings when differentiating groups and items\nfunction isUsingGroups<ItemType>(\n isGrouped: boolean,\n items: ItemType[] | GenericGroupType<ItemType>[],\n): items is GenericGroupType<ItemType>[] {\n return isGrouped;\n}\n\n/**\n * The Autocomplete is a component that will show a `TextInput` where a user can type any word which will be used\n * to filter a list of items. That list of filtered items will be shown to the user as possible options for the input.\n * Once one of the options is selected, that option becomes the value of the `TextInput`.\n */\nexport const Autocomplete = React.forwardRef(_Autocomplete) as <T>(\n props: ExpandProps<AutocompleteProps<T>> & {\n ref?: React.Ref<HTMLDivElement>;\n },\n) => ReturnType<typeof _Autocomplete>;\n","import React, { HTMLAttributes } from 'react';\nimport { cx } from 'emotion';\n\nimport { getStringMatch } from '@contentful/f36-utils';\nimport { Text } from '@contentful/f36-typography';\nimport { getAutocompleteStyles } from './Autocomplete.styles';\nimport type { UseComboboxGetItemPropsOptions } from 'downshift';\n\ninterface AutocompleteItemsProps<ItemType> {\n items: ItemType[];\n elementStartIndex: number;\n highlightedIndex: number;\n getItemProps: (\n options: UseComboboxGetItemPropsOptions<ItemType>,\n ) => HTMLAttributes<HTMLLIElement>;\n renderItem: (item: ItemType, inputValue: string) => React.ReactNode;\n inputValue: string;\n listMaxHeight?: number;\n}\n\nexport const AutocompleteItems = <ItemType,>(\n props: AutocompleteItemsProps<ItemType>,\n) => {\n const {\n items,\n elementStartIndex,\n highlightedIndex,\n getItemProps,\n renderItem,\n inputValue,\n listMaxHeight = 180,\n } = props;\n\n const styles = getAutocompleteStyles(listMaxHeight);\n\n return (\n <ul className={styles.list} data-test-id=\"cf-autocomplete-list\">\n {items.map((item: ItemType, index: number) => {\n const itemIndex = elementStartIndex + index;\n const itemProps = getItemProps({ item, index: itemIndex });\n return (\n <Text\n {...itemProps}\n as=\"li\"\n key={itemIndex}\n className={cx([\n styles.item,\n highlightedIndex === itemIndex && styles.highlighted,\n ])}\n data-test-id={`cf-autocomplete-list-item-${itemIndex}`}\n >\n {renderItem ? (\n renderItem(item, inputValue)\n ) : typeof item === 'string' ? (\n <HighlightedItem item={item} inputValue={inputValue} />\n ) : (\n item\n )}\n </Text>\n );\n })}\n </ul>\n );\n};\n\nAutocompleteItems.displayName = 'AutocompleteItems';\n\nfunction HighlightedItem({\n item,\n inputValue,\n}: {\n item: string;\n inputValue: string;\n}) {\n const { before, match, after } = getStringMatch(item, inputValue);\n\n return (\n <>\n {before}\n <b>{match}</b>\n {after}\n </>\n );\n}\n\nHighlightedItem.displayName = 'HighlightedItem';\n","import { css } from 'emotion';\nimport tokens from '@contentful/f36-tokens';\n\nexport const getAutocompleteStyles = (listMaxHeight: number) => ({\n autocomplete: css({\n position: 'relative',\n width: '100%',\n }),\n combobox: css({\n position: 'relative',\n }),\n inputField: css({\n paddingRight: tokens.spacingXl,\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }),\n toggleButton: css({\n position: 'absolute',\n top: '1px',\n right: '1px',\n zIndex: 1,\n padding: tokens.spacing2Xs,\n height: '38px',\n }),\n content: css({\n overflow: 'auto',\n maxHeight: `${listMaxHeight}px`,\n }),\n list: css({\n listStyle: 'none',\n padding: `${tokens.spacingXs} 0`,\n margin: 0,\n }),\n groupTitle: css({\n padding: `${tokens.spacingXs} ${tokens.spacingM}`,\n lineHeight: tokens.lineHeightM,\n }),\n noMatchesTitle: css({\n color: tokens.gray500,\n margin: `${tokens.spacingM} 0 ${tokens.spacingM} 0`,\n }),\n item: css({\n display: 'block',\n padding: `${tokens.spacingXs} ${tokens.spacingM}`,\n wordBreak: 'break-word',\n whiteSpace: 'break-spaces',\n cursor: 'pointer',\n hyphens: 'auto',\n\n '&:focus, &:hover': {\n backgroundColor: tokens.gray100,\n },\n '&:active': {\n backgroundColor: tokens.gray200,\n },\n }),\n disabled: css({\n opacity: 0.5,\n pointerEvents: 'none',\n }),\n highlighted: css({\n backgroundColor: tokens.gray100,\n }),\n});\n"],"names":["Autocomplete","AutocompleteProps","React","useCallback","useState","useCombobox","mergeRefs","CommonProps","ExpandProps","IconButton","TextInput","TextInputProps","CloseIcon","ChevronDownIcon","SkeletonContainer","SkeletonBodyText","Popover","Subheading","SectionHeading","AutocompleteItems","getAutocompleteStyles","GenericGroupType","groupTitle","options","ItemType","Pick","items","icon","ReactElement","isGrouped","onInputValueChange","value","onSelectItem","item","selectedItem","renderItem","inputValue","ReactNode","itemToString","clearAfterSelect","closeAfterSelect","placeholder","noMatchesMessage","inputRef","Ref","HTMLInputElement","toggleRef","HTMLButtonElement","listRef","HTMLUListElement","listWidth","listMaxHeight","isLoading","usePortal","_Autocomplete","props","ref","HTMLDivElement","id","className","defaultValue","isInvalid","isDisabled","isRequired","isReadOnly","testId","GroupType","styles","setInputValue","handleInputValueChange","handleNativeChangeEvent","event","ChangeEvent","HTMLTextAreaElement","target","flattenItems","isUsingGroups","reduce","acc","group","isShowingNoMatches","every","length","getComboboxProps","getInputProps","getItemProps","getMenuProps","getToggleButtonProps","highlightedIndex","isOpen","toggleMenu","type","onStateChange","stateChangeTypes","InputKeyDownEnter","ItemClick","_labelledby","_inputId","inputProps","comboboxProps","toggleProps","menuProps","elementStartIndex","autocomplete","combobox","inputField","onChange","toggleButton","content","Array","map","_","index","disabled","noMatchesTitle","render","ListItemLoadingState","forwardRef","T","ReturnType","HTMLAttributes","getStringMatch","Text","UseComboboxGetItemPropsOptions","AutocompleteItemsProps","HTMLLIElement","list","itemIndex","itemProps","highlighted","displayName","HighlightedItem","before","match","after","tokens","paddingRight","spacingXl","textOverflow","whiteSpace","position","top","right","zIndex","padding","spacing2Xs","height","overflow","maxHeight","listStyle","spacingXs","margin","spacingM","lineHeight","lineHeightM","color","gray500","display","wordBreak","cursor","hyphens","backgroundColor","gray100","gray200"],"version":3,"file":"module.js.map"}
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":";;;AEiBA,2BAAkC,QAAQ;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,QAAQ,EAAE,CAAC;CACrB;AAGD,mCAAmC,QAAQ,CACzC,SAAQ,WAAW,EACjB,IAAI,CACF,cAAc,EACZ,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,YAAY,GACZ,IAAI,GACJ,cAAc,CACjB;IACH;;;OAGG;IACH,KAAK,EAAE,QAAQ,EAAE,GAAG,iBAAiB,QAAQ,CAAC,EAAE,CAAC;IAEjD;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,YAAY,CAAC;IAE1B;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C;;;OAGG;IACH,YAAY,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IAEvC;;;OAGG;IACH,YAAY,CAAC,EAAE,QAAQ,CAAC;IAExB;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,KAAK,MAAM,SAAS,CAAC;IACrE;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,MAAM,CAAC;IAC1C;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACvC;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACzC;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACtC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,+BAAuB,QAAQ,EAC7B,KAAK,EAAE,kBAAkB,QAAQ,CAAC,EAClC,GAAG,EAAE,MAAM,GAAG,CAAC,cAAc,CAAC,
|
|
1
|
+
{"mappings":";;;AEiBA,2BAAkC,QAAQ;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,QAAQ,EAAE,CAAC;CACrB;AAGD,mCAAmC,QAAQ,CACzC,SAAQ,WAAW,EACjB,IAAI,CACF,cAAc,EACZ,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,YAAY,GACZ,IAAI,GACJ,cAAc,CACjB;IACH;;;OAGG;IACH,KAAK,EAAE,QAAQ,EAAE,GAAG,iBAAiB,QAAQ,CAAC,EAAE,CAAC;IAEjD;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,YAAY,CAAC;IAE1B;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C;;;OAGG;IACH,YAAY,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IAEvC;;;OAGG;IACH,YAAY,CAAC,EAAE,QAAQ,CAAC;IAExB;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,KAAK,MAAM,SAAS,CAAC;IACrE;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,MAAM,CAAC;IAC1C;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACvC;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACzC;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACtC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,+BAAuB,QAAQ,EAC7B,KAAK,EAAE,kBAAkB,QAAQ,CAAC,EAClC,GAAG,EAAE,MAAM,GAAG,CAAC,cAAc,CAAC,eAqP/B;AAkBD;;;;GAIG;AACH,OAAO,MAAM;UAEH,MAAM,GAAG,CAAC,cAAc,CAAC;MAE9B,WAAW,oBAAoB,CAAC,CAAC","sources":["packages/components/autocomplete/src/src/Autocomplete.styles.ts","packages/components/autocomplete/src/src/AutocompleteItems.tsx","packages/components/autocomplete/src/src/Autocomplete.tsx","packages/components/autocomplete/src/src/index.ts","packages/components/autocomplete/src/index.ts"],"sourcesContent":[null,null,null,null,"export { Autocomplete } from './Autocomplete';\nexport type { AutocompleteProps } from './Autocomplete';\n"],"names":[],"version":3,"file":"types.d.ts.map"}
|
package/package.json
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contentful/f36-autocomplete",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.15.1",
|
|
4
4
|
"description": "Forma 36: Autocomplete component",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "parcel build"
|
|
7
7
|
},
|
|
8
8
|
"dependencies": {
|
|
9
9
|
"@babel/runtime": "^7.6.2",
|
|
10
|
-
"@contentful/f36-button": "^4.
|
|
11
|
-
"@contentful/f36-core": "^4.
|
|
12
|
-
"@contentful/f36-forms": "^4.
|
|
13
|
-
"@contentful/f36-icons": "^4.
|
|
14
|
-
"@contentful/f36-popover": "^4.
|
|
15
|
-
"@contentful/f36-skeleton": "^4.
|
|
10
|
+
"@contentful/f36-button": "^4.15.1",
|
|
11
|
+
"@contentful/f36-core": "^4.15.1",
|
|
12
|
+
"@contentful/f36-forms": "^4.15.1",
|
|
13
|
+
"@contentful/f36-icons": "^4.15.1",
|
|
14
|
+
"@contentful/f36-popover": "^4.15.1",
|
|
15
|
+
"@contentful/f36-skeleton": "^4.15.1",
|
|
16
16
|
"@contentful/f36-tokens": "^4.0.1",
|
|
17
|
-
"@contentful/f36-typography": "^4.
|
|
18
|
-
"@contentful/f36-utils": "^4.
|
|
17
|
+
"@contentful/f36-typography": "^4.15.1",
|
|
18
|
+
"@contentful/f36-utils": "^4.15.1",
|
|
19
19
|
"downshift": "^6.1.7",
|
|
20
20
|
"emotion": "^10.0.17"
|
|
21
21
|
},
|