@deephaven/components 0.22.3-embed-pandas.11 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/dist/AutoCompleteInput.js +12 -85
  2. package/dist/AutoCompleteInput.js.map +1 -1
  3. package/dist/AutoResizeTextarea.d.ts +5 -5
  4. package/dist/AutoResizeTextarea.d.ts.map +1 -1
  5. package/dist/AutoResizeTextarea.js +8 -23
  6. package/dist/AutoResizeTextarea.js.map +1 -1
  7. package/dist/BasicModal.d.ts +28 -1
  8. package/dist/BasicModal.d.ts.map +1 -1
  9. package/dist/BasicModal.js +2 -8
  10. package/dist/BasicModal.js.map +1 -1
  11. package/dist/Button.d.ts +9 -9
  12. package/dist/Button.d.ts.map +1 -1
  13. package/dist/Button.js +8 -34
  14. package/dist/Button.js.map +1 -1
  15. package/dist/ButtonGroup.d.ts +7 -7
  16. package/dist/ButtonGroup.d.ts.map +1 -1
  17. package/dist/ButtonGroup.js +2 -4
  18. package/dist/ButtonGroup.js.map +1 -1
  19. package/dist/ButtonOld.js.map +1 -1
  20. package/dist/CardFlip.d.ts +2 -2
  21. package/dist/CardFlip.d.ts.map +1 -1
  22. package/dist/CardFlip.js +2 -7
  23. package/dist/CardFlip.js.map +1 -1
  24. package/dist/Checkbox.js +3 -14
  25. package/dist/Checkbox.js.map +1 -1
  26. package/dist/Collapse.d.ts +1 -1
  27. package/dist/Collapse.js +0 -15
  28. package/dist/Collapse.js.map +1 -1
  29. package/dist/ComboBox.js +4 -83
  30. package/dist/ComboBox.js.map +1 -1
  31. package/dist/CopyButton.d.ts +22 -0
  32. package/dist/CopyButton.d.ts.map +1 -0
  33. package/dist/CopyButton.js +30 -0
  34. package/dist/CopyButton.js.map +1 -0
  35. package/dist/CustomTimeSelect.d.ts +3 -3
  36. package/dist/CustomTimeSelect.d.ts.map +1 -1
  37. package/dist/CustomTimeSelect.js +2 -86
  38. package/dist/CustomTimeSelect.js.map +1 -1
  39. package/dist/DateInput.d.ts +1 -1
  40. package/dist/DateInput.d.ts.map +1 -1
  41. package/dist/DateInput.js.map +1 -1
  42. package/dist/DateInputUtils.js +0 -7
  43. package/dist/DateInputUtils.js.map +1 -1
  44. package/dist/DateTimeInput.d.ts +1 -1
  45. package/dist/DateTimeInput.d.ts.map +1 -1
  46. package/dist/DateTimeInput.js +7 -10
  47. package/dist/DateTimeInput.js.map +1 -1
  48. package/dist/DebouncedSearchInput.js +0 -14
  49. package/dist/DebouncedSearchInput.js.map +1 -1
  50. package/dist/DragUtils.d.ts +1 -1
  51. package/dist/DragUtils.d.ts.map +1 -1
  52. package/dist/DragUtils.js +4 -16
  53. package/dist/DragUtils.js.map +1 -1
  54. package/dist/DraggableItemList.d.ts +4 -4
  55. package/dist/DraggableItemList.d.ts.map +1 -1
  56. package/dist/DraggableItemList.js +22 -44
  57. package/dist/DraggableItemList.js.map +1 -1
  58. package/dist/EditableItemList.d.ts +1 -1
  59. package/dist/EditableItemList.d.ts.map +1 -1
  60. package/dist/EditableItemList.js +2 -6
  61. package/dist/EditableItemList.js.map +1 -1
  62. package/dist/HierarchicalCheckboxMenu.d.ts +3 -3
  63. package/dist/HierarchicalCheckboxMenu.d.ts.map +1 -1
  64. package/dist/HierarchicalCheckboxMenu.js +6 -28
  65. package/dist/HierarchicalCheckboxMenu.js.map +1 -1
  66. package/dist/ItemList.d.ts +5 -5
  67. package/dist/ItemList.d.ts.map +1 -1
  68. package/dist/ItemList.js +22 -115
  69. package/dist/ItemList.js.map +1 -1
  70. package/dist/ItemListItem.d.ts +0 -1
  71. package/dist/ItemListItem.d.ts.map +1 -1
  72. package/dist/ItemListItem.js +26 -50
  73. package/dist/ItemListItem.js.map +1 -1
  74. package/dist/LoadingOverlay.d.ts +2 -2
  75. package/dist/LoadingOverlay.d.ts.map +1 -1
  76. package/dist/LoadingOverlay.js +3 -5
  77. package/dist/LoadingOverlay.js.map +1 -1
  78. package/dist/LoadingSpinner.d.ts +2 -2
  79. package/dist/LoadingSpinner.d.ts.map +1 -1
  80. package/dist/LoadingSpinner.js +2 -4
  81. package/dist/LoadingSpinner.js.map +1 -1
  82. package/dist/MaskedInput.d.ts +2 -2
  83. package/dist/MaskedInput.d.ts.map +1 -1
  84. package/dist/MaskedInput.js +26 -85
  85. package/dist/MaskedInput.js.map +1 -1
  86. package/dist/Option.d.ts +2 -2
  87. package/dist/Option.d.ts.map +1 -1
  88. package/dist/Option.js +2 -4
  89. package/dist/Option.js.map +1 -1
  90. package/dist/RadioGroup.d.ts +2 -2
  91. package/dist/RadioGroup.d.ts.map +1 -1
  92. package/dist/RadioGroup.js +4 -6
  93. package/dist/RadioGroup.js.map +1 -1
  94. package/dist/RadioItem.d.ts +1 -1
  95. package/dist/RadioItem.d.ts.map +1 -1
  96. package/dist/RadioItem.js +0 -1
  97. package/dist/RadioItem.js.map +1 -1
  98. package/dist/SearchInput.js +2 -13
  99. package/dist/SearchInput.js.map +1 -1
  100. package/dist/Select.d.ts +2 -2
  101. package/dist/Select.d.ts.map +1 -1
  102. package/dist/Select.js +2 -4
  103. package/dist/Select.js.map +1 -1
  104. package/dist/SelectValueList.d.ts +1 -1
  105. package/dist/SelectValueList.d.ts.map +1 -1
  106. package/dist/SelectValueList.js +0 -28
  107. package/dist/SelectValueList.js.map +1 -1
  108. package/dist/SocketedButton.d.ts +1 -1
  109. package/dist/SocketedButton.d.ts.map +1 -1
  110. package/dist/SocketedButton.js.map +1 -1
  111. package/dist/ThemeExport.d.ts +4 -4
  112. package/dist/ThemeExport.js +0 -4
  113. package/dist/ThemeExport.js.map +1 -1
  114. package/dist/TimeInput.d.ts +2 -2
  115. package/dist/TimeInput.d.ts.map +1 -1
  116. package/dist/TimeInput.js +2 -12
  117. package/dist/TimeInput.js.map +1 -1
  118. package/dist/TimeSlider.d.ts +2 -2
  119. package/dist/TimeSlider.d.ts.map +1 -1
  120. package/dist/TimeSlider.js +19 -33
  121. package/dist/TimeSlider.js.map +1 -1
  122. package/dist/ToastNotification.d.ts +6 -6
  123. package/dist/ToastNotification.d.ts.map +1 -1
  124. package/dist/ToastNotification.js +2 -4
  125. package/dist/ToastNotification.js.map +1 -1
  126. package/dist/UISwitch.d.ts +2 -2
  127. package/dist/UISwitch.d.ts.map +1 -1
  128. package/dist/UISwitch.js +2 -4
  129. package/dist/UISwitch.js.map +1 -1
  130. package/dist/ValidateLabelInput.d.ts +1 -1
  131. package/dist/ValidateLabelInput.d.ts.map +1 -1
  132. package/dist/ValidateLabelInput.js +3 -3
  133. package/dist/ValidateLabelInput.js.map +1 -1
  134. package/dist/context-actions/ContextActionUtils.d.ts +3 -15
  135. package/dist/context-actions/ContextActionUtils.d.ts.map +1 -1
  136. package/dist/context-actions/ContextActionUtils.js +8 -85
  137. package/dist/context-actions/ContextActionUtils.js.map +1 -1
  138. package/dist/context-actions/ContextActions.js +1 -34
  139. package/dist/context-actions/ContextActions.js.map +1 -1
  140. package/dist/context-actions/ContextMenu.js +29 -110
  141. package/dist/context-actions/ContextMenu.js.map +1 -1
  142. package/dist/context-actions/ContextMenuItem.d.ts.map +1 -1
  143. package/dist/context-actions/ContextMenuItem.js +3 -19
  144. package/dist/context-actions/ContextMenuItem.js.map +1 -1
  145. package/dist/context-actions/ContextMenuRoot.d.ts +1 -1
  146. package/dist/context-actions/ContextMenuRoot.d.ts.map +1 -1
  147. package/dist/context-actions/ContextMenuRoot.js +7 -26
  148. package/dist/context-actions/ContextMenuRoot.js.map +1 -1
  149. package/dist/context-actions/GlobalContextAction.js +0 -15
  150. package/dist/context-actions/GlobalContextAction.js.map +1 -1
  151. package/dist/context-actions/GlobalContextActions.js +0 -6
  152. package/dist/context-actions/GlobalContextActions.js.map +1 -1
  153. package/dist/context-actions/index.js.map +1 -1
  154. package/dist/index.d.ts +1 -0
  155. package/dist/index.d.ts.map +1 -1
  156. package/dist/index.js +1 -0
  157. package/dist/index.js.map +1 -1
  158. package/dist/menu-actions/DropdownMenu.d.ts +3 -3
  159. package/dist/menu-actions/DropdownMenu.d.ts.map +1 -1
  160. package/dist/menu-actions/DropdownMenu.js +4 -32
  161. package/dist/menu-actions/DropdownMenu.js.map +1 -1
  162. package/dist/menu-actions/Menu.d.ts +3 -3
  163. package/dist/menu-actions/Menu.d.ts.map +1 -1
  164. package/dist/menu-actions/Menu.js +7 -52
  165. package/dist/menu-actions/Menu.js.map +1 -1
  166. package/dist/menu-actions/index.d.ts +2 -1
  167. package/dist/menu-actions/index.d.ts.map +1 -1
  168. package/dist/menu-actions/index.js +2 -2
  169. package/dist/menu-actions/index.js.map +1 -1
  170. package/dist/modal/Modal.d.ts +2 -2
  171. package/dist/modal/Modal.d.ts.map +1 -1
  172. package/dist/modal/Modal.js +3 -9
  173. package/dist/modal/Modal.js.map +1 -1
  174. package/dist/modal/ModalBody.d.ts +1 -1
  175. package/dist/modal/ModalBody.d.ts.map +1 -1
  176. package/dist/modal/ModalBody.js +2 -4
  177. package/dist/modal/ModalBody.js.map +1 -1
  178. package/dist/modal/ModalFooter.d.ts +1 -1
  179. package/dist/modal/ModalFooter.d.ts.map +1 -1
  180. package/dist/modal/ModalFooter.js +2 -4
  181. package/dist/modal/ModalFooter.js.map +1 -1
  182. package/dist/modal/ModalHeader.d.ts +1 -1
  183. package/dist/modal/ModalHeader.d.ts.map +1 -1
  184. package/dist/modal/ModalHeader.js +2 -4
  185. package/dist/modal/ModalHeader.js.map +1 -1
  186. package/dist/modal/index.js.map +1 -1
  187. package/dist/navigation/Menu.d.ts +3 -3
  188. package/dist/navigation/Menu.d.ts.map +1 -1
  189. package/dist/navigation/Menu.js +2 -2
  190. package/dist/navigation/Menu.js.map +1 -1
  191. package/dist/navigation/MenuItem.d.ts +4 -4
  192. package/dist/navigation/MenuItem.d.ts.map +1 -1
  193. package/dist/navigation/MenuItem.js +4 -7
  194. package/dist/navigation/MenuItem.js.map +1 -1
  195. package/dist/navigation/Page.d.ts +2 -2
  196. package/dist/navigation/Page.d.ts.map +1 -1
  197. package/dist/navigation/Page.js +2 -3
  198. package/dist/navigation/Page.js.map +1 -1
  199. package/dist/navigation/Stack.d.ts +2 -2
  200. package/dist/navigation/Stack.d.ts.map +1 -1
  201. package/dist/navigation/Stack.js +3 -6
  202. package/dist/navigation/Stack.js.map +1 -1
  203. package/dist/navigation/index.js.map +1 -1
  204. package/dist/popper/Popper.d.ts +2 -2
  205. package/dist/popper/Popper.d.ts.map +1 -1
  206. package/dist/popper/Popper.js +13 -46
  207. package/dist/popper/Popper.js.map +1 -1
  208. package/dist/popper/Tooltip.d.ts +1 -1
  209. package/dist/popper/Tooltip.d.ts.map +1 -1
  210. package/dist/popper/Tooltip.js +0 -56
  211. package/dist/popper/Tooltip.js.map +1 -1
  212. package/dist/popper/index.js.map +1 -1
  213. package/dist/shortcuts/GlobalShortcuts.js.map +1 -1
  214. package/dist/shortcuts/Shortcut.d.ts +2 -2
  215. package/dist/shortcuts/Shortcut.d.ts.map +1 -1
  216. package/dist/shortcuts/Shortcut.js +19 -76
  217. package/dist/shortcuts/Shortcut.js.map +1 -1
  218. package/dist/shortcuts/ShortcutRegistry.d.ts +1 -1
  219. package/dist/shortcuts/ShortcutRegistry.d.ts.map +1 -1
  220. package/dist/shortcuts/ShortcutRegistry.js +3 -18
  221. package/dist/shortcuts/ShortcutRegistry.js.map +1 -1
  222. package/dist/shortcuts/index.js.map +1 -1
  223. package/package.json +8 -8
@@ -1,9 +1,6 @@
1
1
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
-
3
2
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
-
5
3
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
-
7
4
  /**
8
5
  * An Input component that pops and filters auto complete options as you type.
9
6
  *
@@ -31,27 +28,20 @@ import { Popper } from "./popper/index.js";
31
28
  import "./AutoCompleteInput.css";
32
29
  var DEBOUNCE_DELAY = 100;
33
30
  var MENU_NAVIGATION_DIRECTION;
34
-
35
31
  (function (MENU_NAVIGATION_DIRECTION) {
36
32
  MENU_NAVIGATION_DIRECTION["UP"] = "UP";
37
33
  MENU_NAVIGATION_DIRECTION["DOWN"] = "DOWN";
38
34
  })(MENU_NAVIGATION_DIRECTION || (MENU_NAVIGATION_DIRECTION = {}));
39
-
40
35
  class AutoCompleteInput extends Component {
41
36
  constructor(props) {
42
37
  super(props);
43
-
44
38
  _defineProperty(this, "popper", void 0);
45
-
46
39
  _defineProperty(this, "cbContainer", void 0);
47
-
48
40
  _defineProperty(this, "menuContainer", void 0);
49
-
50
41
  _defineProperty(this, "input", void 0);
51
-
52
- _defineProperty(this, "getCachedFilteredOptions", memoize((options, input) => options.filter( // supports partial match
42
+ _defineProperty(this, "getCachedFilteredOptions", memoize((options, input) => options.filter(
43
+ // supports partial match
53
44
  option => option.title.toLowerCase().indexOf(input.toLowerCase()) >= 0)));
54
-
55
45
  var {
56
46
  popperOptions
57
47
  } = this.props;
@@ -88,7 +78,6 @@ class AutoCompleteInput extends Component {
88
78
  this.menuContainer = /*#__PURE__*/React.createRef();
89
79
  this.input = /*#__PURE__*/React.createRef();
90
80
  }
91
-
92
81
  setInputWidth() {
93
82
  if (this.cbContainer.current) {
94
83
  this.setState({
@@ -96,7 +85,6 @@ class AutoCompleteInput extends Component {
96
85
  });
97
86
  }
98
87
  }
99
-
100
88
  // validation needs to be an exact case-sensitve match on value
101
89
  getValueAndValidate(title) {
102
90
  if (!title) {
@@ -107,14 +95,13 @@ class AutoCompleteInput extends Component {
107
95
  value: title,
108
96
  isValid: false
109
97
  };
110
- } // validate
111
-
98
+ }
112
99
 
100
+ // validate
113
101
  var {
114
102
  options
115
103
  } = this.props;
116
104
  var result = options.filter(option => option.title.toLowerCase() === title.toLowerCase());
117
-
118
105
  if (result.length < 1) {
119
106
  this.setState({
120
107
  invalid: true
@@ -124,7 +111,6 @@ class AutoCompleteInput extends Component {
124
111
  isValid: false
125
112
  };
126
113
  }
127
-
128
114
  this.setState({
129
115
  invalid: false
130
116
  });
@@ -132,9 +118,9 @@ class AutoCompleteInput extends Component {
132
118
  value: result[0].value,
133
119
  isValid: true
134
120
  };
135
- } // validate typed entries emit change event using value
136
-
121
+ }
137
122
 
123
+ // validate typed entries emit change event using value
138
124
  updateInputValue(title) {
139
125
  var {
140
126
  menuIsOpen
@@ -146,7 +132,6 @@ class AutoCompleteInput extends Component {
146
132
  if (menuIsOpen) this.processFilterChange(title);
147
133
  this.fireOnChange(value, isValid);
148
134
  }
149
-
150
135
  fireOnChange(value) {
151
136
  var isValid = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
152
137
  var {
@@ -154,10 +139,8 @@ class AutoCompleteInput extends Component {
154
139
  } = this.props;
155
140
  onChange(value, isValid);
156
141
  }
157
-
158
142
  processFilterChange(filter) {
159
143
  var _this$popper$current;
160
-
161
144
  var {
162
145
  options
163
146
  } = this.props;
@@ -170,12 +153,10 @@ class AutoCompleteInput extends Component {
170
153
  filteredOptions,
171
154
  keyboardOptionIndex: 0
172
155
  });
173
-
174
156
  if (perfectMatch && menuIsOpen) {
175
157
  this.closeMenu();
176
158
  return;
177
159
  }
178
-
179
160
  (_this$popper$current = this.popper.current) === null || _this$popper$current === void 0 ? void 0 : _this$popper$current.scheduleUpdate(); // filtered options list can change size, may need to be repositioned
180
161
  }
181
162
 
@@ -185,26 +166,21 @@ class AutoCompleteInput extends Component {
185
166
  });
186
167
  this.fireOnChange('');
187
168
  }
188
-
189
169
  handleResize() {
190
170
  this.setInputWidth();
191
171
  }
192
-
193
172
  handleMenuKeyDown(event) {
194
173
  var _this$input$current;
195
-
196
174
  var {
197
175
  filteredOptions,
198
176
  keyboardOptionIndex
199
177
  } = this.state;
200
178
  var option = filteredOptions[keyboardOptionIndex];
201
-
202
179
  switch (event.key) {
203
180
  case 'Enter':
204
181
  case 'ArrowRight':
205
182
  event.stopPropagation();
206
183
  event.preventDefault();
207
-
208
184
  if (option != null) {
209
185
  this.setState({
210
186
  title: option.title,
@@ -212,53 +188,43 @@ class AutoCompleteInput extends Component {
212
188
  });
213
189
  this.fireOnChange(option.value);
214
190
  }
215
-
216
191
  this.closeMenu();
217
192
  (_this$input$current = this.input.current) === null || _this$input$current === void 0 ? void 0 : _this$input$current.focus();
218
193
  break;
219
-
220
194
  case 'ArrowUp':
221
195
  event.stopPropagation();
222
196
  event.preventDefault();
223
197
  this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.UP);
224
198
  break;
225
-
226
199
  case 'ArrowDown':
227
200
  event.stopPropagation();
228
201
  event.preventDefault();
229
202
  this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.DOWN);
230
203
  break;
231
-
232
204
  case 'Tab':
233
205
  event.stopPropagation();
234
206
  event.preventDefault();
235
-
236
207
  if (event.shiftKey) {
237
208
  this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.UP);
238
209
  break;
239
210
  }
240
-
241
211
  this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.DOWN);
242
212
  break;
243
-
244
213
  case 'Escape':
245
214
  event.preventDefault();
246
215
  event.stopPropagation();
247
216
  this.closeMenu();
248
217
  break;
249
-
250
218
  default:
251
219
  break;
252
220
  }
253
221
  }
254
-
255
222
  navigateMenu(direction) {
256
223
  var {
257
224
  filteredOptions,
258
225
  keyboardOptionIndex
259
226
  } = this.state;
260
227
  var newKeyboardOptionIndex = keyboardOptionIndex;
261
-
262
228
  if (direction === AutoCompleteInput.MENU_NAVIGATION_DIRECTION.UP) {
263
229
  if (keyboardOptionIndex > 0) {
264
230
  newKeyboardOptionIndex = (newKeyboardOptionIndex - 1) % filteredOptions.length;
@@ -279,10 +245,8 @@ class AutoCompleteInput extends Component {
279
245
  });
280
246
  }
281
247
  }
282
-
283
248
  this.scrollOptionIntoView(newKeyboardOptionIndex);
284
249
  }
285
-
286
250
  handleInputKeyDown(event) {
287
251
  var {
288
252
  onEnter
@@ -290,7 +254,6 @@ class AutoCompleteInput extends Component {
290
254
  var {
291
255
  menuIsOpen
292
256
  } = this.state;
293
-
294
257
  if (menuIsOpen) {
295
258
  this.handleMenuKeyDown(event);
296
259
  } else if (event.key === 'Enter') {
@@ -303,17 +266,14 @@ class AutoCompleteInput extends Component {
303
266
  this.openMenu();
304
267
  }
305
268
  }
306
-
307
269
  handleInputChange(event) {
308
270
  this.setState({
309
271
  title: event.target.value
310
272
  });
311
273
  this.updateInputValue(event.target.value);
312
274
  }
313
-
314
275
  handleOptionClick(option) {
315
276
  var _this$input$current2;
316
-
317
277
  this.setState({
318
278
  title: option.title,
319
279
  invalid: false
@@ -322,59 +282,46 @@ class AutoCompleteInput extends Component {
322
282
  this.closeMenu();
323
283
  (_this$input$current2 = this.input.current) === null || _this$input$current2 === void 0 ? void 0 : _this$input$current2.focus();
324
284
  }
325
-
326
285
  handelInputFocus() {
327
286
  var {
328
287
  menuIsOpen
329
288
  } = this.state;
330
-
331
289
  if (!menuIsOpen) {
332
290
  this.openMenu();
333
291
  }
334
292
  }
335
-
336
293
  handleInputClick() {
337
294
  var {
338
295
  menuIsOpen
339
296
  } = this.state;
340
-
341
297
  if (!menuIsOpen) {
342
298
  this.openMenu();
343
299
  }
344
300
  }
345
-
346
301
  handleInputBlur(event) {
347
302
  var {
348
303
  menuIsOpen
349
304
  } = this.state;
350
-
351
305
  if (menuIsOpen && event.relatedTarget instanceof Element && this.popper.current !== null && this.popper.current.element.contains(event.relatedTarget)) {
352
306
  return;
353
307
  }
354
-
355
308
  this.closeMenu(false);
356
309
  }
357
-
358
310
  handleMenuBlur(event) {
359
311
  // if blur event is caused by focusing on the input or focus on options don't close menu
360
312
  if (event.relatedTarget === this.input.current || event.relatedTarget instanceof Element && this.popper.current !== null && this.popper.current.element.contains(event.relatedTarget)) {
361
313
  return;
362
314
  }
363
-
364
315
  this.closeMenu(false);
365
316
  }
366
-
367
317
  handleMenuOpened() {
368
318
  var _this$input$current3;
369
-
370
319
  (_this$input$current3 = this.input.current) === null || _this$input$current3 === void 0 ? void 0 : _this$input$current3.focus();
371
320
  }
372
-
373
321
  handleMenuExited() {
374
322
  var {
375
323
  menuIsOpen
376
324
  } = this.state;
377
-
378
325
  if (menuIsOpen) {
379
326
  this.setState({
380
327
  menuIsOpen: false,
@@ -382,7 +329,6 @@ class AutoCompleteInput extends Component {
382
329
  });
383
330
  }
384
331
  }
385
-
386
332
  openMenu() {
387
333
  var {
388
334
  title
@@ -391,44 +337,36 @@ class AutoCompleteInput extends Component {
391
337
  this.setInputWidth();
392
338
  this.setState({
393
339
  menuIsOpen: true
394
- }); // https://github.com/reactjs/react-transition-group/issues/382
340
+ });
395
341
 
342
+ // https://github.com/reactjs/react-transition-group/issues/382
396
343
  window.requestAnimationFrame(() => {
397
344
  var _this$popper$current2;
398
-
399
345
  (_this$popper$current2 = this.popper.current) === null || _this$popper$current2 === void 0 ? void 0 : _this$popper$current2.show();
400
346
  });
401
347
  }
402
-
403
348
  closeMenu() {
404
349
  var _this$popper$current3;
405
-
406
350
  var focusInput = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
407
351
  this.setState({
408
352
  menuIsOpen: false,
409
353
  keyboardOptionIndex: 0
410
354
  });
411
-
412
355
  if (focusInput) {
413
356
  var _this$input$current4;
414
-
415
357
  (_this$input$current4 = this.input.current) === null || _this$input$current4 === void 0 ? void 0 : _this$input$current4.focus();
416
358
  }
417
-
418
359
  (_this$popper$current3 = this.popper.current) === null || _this$popper$current3 === void 0 ? void 0 : _this$popper$current3.hide();
419
360
  }
420
-
421
361
  scrollOptionIntoView(index) {
422
362
  if (this.menuContainer.current) {
423
363
  var _this$menuContainer$c;
424
-
425
364
  (_this$menuContainer$c = this.menuContainer.current.children.item(index)) === null || _this$menuContainer$c === void 0 ? void 0 : _this$menuContainer$c.scrollIntoView({
426
365
  behavior: 'smooth',
427
366
  block: 'nearest'
428
367
  });
429
368
  }
430
369
  }
431
-
432
370
  renderMenuElement() {
433
371
  var {
434
372
  inputWidth
@@ -444,7 +382,6 @@ class AutoCompleteInput extends Component {
444
382
  onBlur: this.handleMenuBlur
445
383
  }, this.renderOptions());
446
384
  }
447
-
448
385
  renderOptions() {
449
386
  var {
450
387
  noMatchText
@@ -453,16 +390,13 @@ class AutoCompleteInput extends Component {
453
390
  title,
454
391
  filteredOptions
455
392
  } = this.state;
456
-
457
393
  if (title && filteredOptions.length === 0) {
458
394
  return /*#__PURE__*/React.createElement("div", {
459
395
  className: "no-match"
460
396
  }, noMatchText);
461
397
  }
462
-
463
398
  return filteredOptions.map((option, index) => this.renderOption(option, index));
464
399
  }
465
-
466
400
  renderOption(option, index) {
467
401
  var {
468
402
  keyboardOptionIndex
@@ -480,7 +414,6 @@ class AutoCompleteInput extends Component {
480
414
  })
481
415
  }, option.title);
482
416
  }
483
-
484
417
  render() {
485
418
  var {
486
419
  options,
@@ -523,9 +456,7 @@ class AutoCompleteInput extends Component {
523
456
  onExited: this.handleMenuExited
524
457
  }, this.renderMenuElement()));
525
458
  }
526
-
527
459
  }
528
-
529
460
  _defineProperty(AutoCompleteInput, "propTypes", {
530
461
  options: PropTypes.arrayOf(PropTypes.shape({
531
462
  title: PropTypes.string.isRequired,
@@ -542,26 +473,22 @@ _defineProperty(AutoCompleteInput, "propTypes", {
542
473
  noMatchText: PropTypes.string,
543
474
  'data-testid': PropTypes.string
544
475
  });
545
-
546
476
  _defineProperty(AutoCompleteInput, "defaultProps", {
547
- onChange() {// no-op
477
+ onChange() {
478
+ // no-op
548
479
  },
549
-
550
480
  inputPlaceholder: '',
551
481
  disabled: false,
552
482
  className: '',
553
483
  defaultTitle: '',
554
484
  popperOptions: null,
555
485
  spellCheck: true,
556
-
557
- onEnter() {// no-op
486
+ onEnter() {
487
+ // no-op
558
488
  },
559
-
560
489
  noMatchText: 'No matching items found',
561
490
  'data-testid': undefined
562
491
  });
563
-
564
492
  _defineProperty(AutoCompleteInput, "MENU_NAVIGATION_DIRECTION", MENU_NAVIGATION_DIRECTION);
565
-
566
493
  export default AutoCompleteInput;
567
494
  //# sourceMappingURL=AutoCompleteInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AutoCompleteInput.js","names":["React","Component","PropTypes","memoize","classNames","debounce","Popper","DEBOUNCE_DELAY","MENU_NAVIGATION_DIRECTION","AutoCompleteInput","constructor","props","options","input","filter","option","title","toLowerCase","indexOf","popperOptions","placement","modifiers","preventOverflow","enabled","state","filteredOptions","keyboardOptionIndex","menuIsOpen","inputWidth","invalid","handleMenuKeyDown","bind","handleMenuBlur","handleInputChange","handleInputKeyDown","handleInputBlur","handelInputFocus","handleInputClick","updateInputValue","handleOptionClick","handleMenuOpened","handleMenuExited","popper","createRef","cbContainer","menuContainer","setInputWidth","current","setState","getBoundingClientRect","width","getValueAndValidate","value","isValid","result","length","processFilterChange","fireOnChange","onChange","getCachedFilteredOptions","perfectMatch","closeMenu","scheduleUpdate","resetValue","handleResize","event","key","stopPropagation","preventDefault","focus","navigateMenu","UP","DOWN","shiftKey","direction","newKeyboardOptionIndex","scrollOptionIntoView","onEnter","openMenu","target","relatedTarget","Element","element","contains","window","requestAnimationFrame","show","focusInput","hide","index","children","item","scrollIntoView","behavior","block","renderMenuElement","renderOptions","noMatchText","map","renderOption","render","inputPlaceholder","disabled","className","defaultTitle","spellCheck","dataTestId","arrayOf","shape","string","isRequired","func","bool","undefined"],"sources":["../src/AutoCompleteInput.tsx"],"sourcesContent":["/**\n * An Input component that pops and filters auto complete options as you type.\n *\n * props:\n * @param options :[{\n * title: 'option title for display',\n * value: 'option value' //option value\n * }]\n * @param popperOptions options for the Popper\n * @param onChange called when the value is changed from the pulldown\n * @param inputPlaceholder place holder for the input box\n * @param disabled disable both input & drop down\n * @param className an optional class name applied to the input element\n * @param defaultTitle the default title to display\n * @param spellCheck flag to disable spell checking, defaults to true\n * @param onEnter called when the Enter key is typed in the input element\n *\n */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport memoize from 'memoizee';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport { PopperOptions } from 'popper.js';\nimport { Popper } from './popper';\n\nimport './AutoCompleteInput.scss';\n\nconst DEBOUNCE_DELAY = 100;\n\nenum MENU_NAVIGATION_DIRECTION {\n UP = 'UP',\n DOWN = 'DOWN',\n}\n\ninterface AutoCompleteOption {\n title: string;\n value: string;\n}\n\ninterface AutoCompleteInputProps {\n options: AutoCompleteOption[];\n popperOptions: PopperOptions;\n onChange(value: string, isValid: boolean): void;\n inputPlaceholder: string;\n disabled: boolean;\n className: string;\n defaultTitle: string;\n spellCheck: boolean;\n onEnter(): void;\n noMatchText: string;\n 'data-testid'?: string;\n}\n\ninterface AutoCompleteInputState {\n title: string;\n filteredOptions: AutoCompleteOption[];\n keyboardOptionIndex: number;\n menuIsOpen: boolean;\n inputWidth: number;\n invalid: boolean;\n popperOptions: PopperOptions;\n}\n\nclass AutoCompleteInput extends Component<\n AutoCompleteInputProps,\n AutoCompleteInputState\n> {\n static propTypes = {\n options: PropTypes.arrayOf(\n PropTypes.shape({\n title: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n })\n ).isRequired,\n popperOptions: PropTypes.shape({}),\n onChange: PropTypes.func,\n inputPlaceholder: PropTypes.string,\n disabled: PropTypes.bool,\n className: PropTypes.string,\n defaultTitle: PropTypes.string,\n spellCheck: PropTypes.bool,\n onEnter: PropTypes.func,\n noMatchText: PropTypes.string,\n 'data-testid': PropTypes.string,\n };\n\n static defaultProps = {\n onChange(): void {\n // no-op\n },\n inputPlaceholder: '',\n disabled: false,\n className: '',\n defaultTitle: '',\n popperOptions: null,\n spellCheck: true,\n onEnter(): void {\n // no-op\n },\n noMatchText: 'No matching items found',\n 'data-testid': undefined,\n };\n\n static MENU_NAVIGATION_DIRECTION = MENU_NAVIGATION_DIRECTION;\n\n constructor(props: AutoCompleteInputProps) {\n super(props);\n\n let { popperOptions } = this.props;\n popperOptions = {\n placement: 'bottom-end',\n modifiers: {\n preventOverflow: { enabled: false },\n },\n ...popperOptions,\n };\n\n this.state = {\n title: '',\n filteredOptions: [],\n keyboardOptionIndex: 0,\n menuIsOpen: false,\n inputWidth: 100,\n invalid: false,\n popperOptions,\n };\n\n this.handleMenuKeyDown = this.handleMenuKeyDown.bind(this);\n this.handleMenuBlur = this.handleMenuBlur.bind(this);\n\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleInputKeyDown = this.handleInputKeyDown.bind(this);\n this.handleInputBlur = this.handleInputBlur.bind(this);\n this.handelInputFocus = this.handelInputFocus.bind(this);\n this.handleInputClick = this.handleInputClick.bind(this);\n\n this.updateInputValue = debounce(this.updateInputValue, DEBOUNCE_DELAY);\n\n this.handleOptionClick = this.handleOptionClick.bind(this);\n\n this.handleMenuOpened = this.handleMenuOpened.bind(this);\n this.handleMenuExited = this.handleMenuExited.bind(this);\n\n this.popper = React.createRef();\n this.cbContainer = React.createRef();\n this.menuContainer = React.createRef();\n this.input = React.createRef();\n }\n\n popper: React.RefObject<Popper>;\n\n cbContainer: React.RefObject<HTMLDivElement>;\n\n menuContainer: React.RefObject<HTMLDivElement>;\n\n input: React.RefObject<HTMLInputElement>;\n\n setInputWidth(): void {\n if (this.cbContainer.current) {\n this.setState({\n inputWidth: this.cbContainer.current.getBoundingClientRect().width,\n });\n }\n }\n\n getCachedFilteredOptions = memoize(\n (options: AutoCompleteOption[], input: string) =>\n options.filter(\n // supports partial match\n option => option.title.toLowerCase().indexOf(input.toLowerCase()) >= 0\n )\n );\n\n // validation needs to be an exact case-sensitve match on value\n getValueAndValidate(title: string): { value: string; isValid: boolean } {\n if (!title) {\n this.setState({ invalid: false });\n return { value: title, isValid: false };\n }\n\n // validate\n const { options } = this.props;\n const result = options.filter(\n option => option.title.toLowerCase() === title.toLowerCase()\n );\n if (result.length < 1) {\n this.setState({ invalid: true });\n return { value: title, isValid: false };\n }\n\n this.setState({ invalid: false });\n return { value: result[0].value, isValid: true };\n }\n\n // validate typed entries emit change event using value\n updateInputValue(title: string): void {\n const { menuIsOpen } = this.state;\n const { value, isValid } = this.getValueAndValidate(title);\n if (menuIsOpen) this.processFilterChange(title);\n this.fireOnChange(value, isValid);\n }\n\n fireOnChange(value: string, isValid = true): void {\n const { onChange } = this.props;\n onChange(value, isValid);\n }\n\n processFilterChange(filter: string): void {\n const { options } = this.props;\n const { menuIsOpen } = this.state;\n const filteredOptions = filter\n ? this.getCachedFilteredOptions(options, filter)\n : options;\n const perfectMatch =\n filteredOptions.length === 1 && filteredOptions[0].title === filter;\n this.setState({\n filteredOptions,\n keyboardOptionIndex: 0,\n });\n if (perfectMatch && menuIsOpen) {\n this.closeMenu();\n return;\n }\n this.popper.current?.scheduleUpdate(); // filtered options list can change size, may need to be repositioned\n }\n\n resetValue(): void {\n this.setState({ title: '' });\n this.fireOnChange('');\n }\n\n handleResize(): void {\n this.setInputWidth();\n }\n\n handleMenuKeyDown(event: React.KeyboardEvent): void {\n const { filteredOptions, keyboardOptionIndex } = this.state;\n const option = filteredOptions[keyboardOptionIndex];\n\n switch (event.key) {\n case 'Enter':\n case 'ArrowRight':\n event.stopPropagation();\n event.preventDefault();\n if (option != null) {\n this.setState({ title: option.title, invalid: false });\n this.fireOnChange(option.value);\n }\n this.closeMenu();\n this.input.current?.focus();\n break;\n case 'ArrowUp':\n event.stopPropagation();\n event.preventDefault();\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.UP);\n break;\n case 'ArrowDown':\n event.stopPropagation();\n event.preventDefault();\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.DOWN);\n break;\n case 'Tab':\n event.stopPropagation();\n event.preventDefault();\n if (event.shiftKey) {\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.UP);\n break;\n }\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.DOWN);\n break;\n case 'Escape':\n event.preventDefault();\n event.stopPropagation();\n this.closeMenu();\n break;\n default:\n break;\n }\n }\n\n navigateMenu(direction: MENU_NAVIGATION_DIRECTION): void {\n const { filteredOptions, keyboardOptionIndex } = this.state;\n let newKeyboardOptionIndex = keyboardOptionIndex;\n if (direction === AutoCompleteInput.MENU_NAVIGATION_DIRECTION.UP) {\n if (keyboardOptionIndex > 0) {\n newKeyboardOptionIndex =\n (newKeyboardOptionIndex - 1) % filteredOptions.length;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex,\n });\n } else if (keyboardOptionIndex === 0) {\n newKeyboardOptionIndex = filteredOptions.length - 1;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex,\n });\n }\n } else if (direction === AutoCompleteInput.MENU_NAVIGATION_DIRECTION.DOWN) {\n if (keyboardOptionIndex < filteredOptions.length) {\n newKeyboardOptionIndex =\n (newKeyboardOptionIndex + 1) % filteredOptions.length;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex,\n });\n }\n }\n this.scrollOptionIntoView(newKeyboardOptionIndex);\n }\n\n handleInputKeyDown(event: React.KeyboardEvent): void {\n const { onEnter } = this.props;\n const { menuIsOpen } = this.state;\n\n if (menuIsOpen) {\n this.handleMenuKeyDown(event);\n } else if (event.key === 'Enter') {\n onEnter();\n } else if (event.key === 'Escape') {\n this.resetValue();\n event.preventDefault();\n event.stopPropagation();\n } else if (\n !(\n event.key === 'ArrowRight' ||\n event.key === 'ArrowLeft' ||\n event.key === 'Tab' ||\n event.key === 'Shift'\n )\n ) {\n this.openMenu();\n }\n }\n\n handleInputChange(event: React.ChangeEvent<HTMLInputElement>): void {\n this.setState({ title: event.target.value });\n this.updateInputValue(event.target.value);\n }\n\n handleOptionClick(option: AutoCompleteOption): void {\n this.setState({ title: option.title, invalid: false });\n this.fireOnChange(option.value);\n this.closeMenu();\n this.input.current?.focus();\n }\n\n handelInputFocus(): void {\n const { menuIsOpen } = this.state;\n if (!menuIsOpen) {\n this.openMenu();\n }\n }\n\n handleInputClick(): void {\n const { menuIsOpen } = this.state;\n if (!menuIsOpen) {\n this.openMenu();\n }\n }\n\n handleInputBlur(event: React.FocusEvent<HTMLInputElement>): void {\n const { menuIsOpen } = this.state;\n if (\n menuIsOpen &&\n event.relatedTarget instanceof Element &&\n this.popper.current !== null &&\n this.popper.current.element.contains(event.relatedTarget)\n ) {\n return;\n }\n this.closeMenu(false);\n }\n\n handleMenuBlur(event: React.FocusEvent<HTMLDivElement>): void {\n // if blur event is caused by focusing on the input or focus on options don't close menu\n if (\n event.relatedTarget === this.input.current ||\n (event.relatedTarget instanceof Element &&\n this.popper.current !== null &&\n this.popper.current.element.contains(event.relatedTarget))\n ) {\n return;\n }\n this.closeMenu(false);\n }\n\n handleMenuOpened(): void {\n this.input.current?.focus();\n }\n\n handleMenuExited(): void {\n const { menuIsOpen } = this.state;\n if (menuIsOpen) {\n this.setState({ menuIsOpen: false, keyboardOptionIndex: 0 });\n }\n }\n\n openMenu(): void {\n const { title } = this.state;\n this.processFilterChange(title);\n this.setInputWidth();\n this.setState({ menuIsOpen: true });\n\n // https://github.com/reactjs/react-transition-group/issues/382\n window.requestAnimationFrame(() => {\n this.popper.current?.show();\n });\n }\n\n closeMenu(focusInput = true): void {\n this.setState({ menuIsOpen: false, keyboardOptionIndex: 0 });\n if (focusInput) {\n this.input.current?.focus();\n }\n this.popper.current?.hide();\n }\n\n scrollOptionIntoView(index: number): void {\n if (this.menuContainer.current) {\n this.menuContainer.current.children.item(index)?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n });\n }\n }\n\n renderMenuElement(): JSX.Element {\n const { inputWidth } = this.state;\n return (\n <div\n className={classNames('aci-options')}\n ref={this.menuContainer}\n role=\"presentation\"\n onKeyDown={this.handleMenuKeyDown}\n style={{ width: inputWidth }}\n onBlur={this.handleMenuBlur}\n >\n {this.renderOptions()}\n </div>\n );\n }\n\n renderOptions(): React.ReactNode {\n const { noMatchText } = this.props;\n const { title, filteredOptions } = this.state;\n\n if (title && filteredOptions.length === 0) {\n return <div className=\"no-match\">{noMatchText}</div>;\n }\n\n return filteredOptions.map((option, index) =>\n this.renderOption(option, index)\n );\n }\n\n renderOption(option: AutoCompleteOption, index: number): JSX.Element {\n const { keyboardOptionIndex } = this.state;\n const key = `option-${index}-${option.value}`;\n return (\n <button\n key={key}\n type=\"button\"\n className={classNames('aci-option-btn', {\n 'keyboard-active': keyboardOptionIndex === index,\n })}\n onClick={() => this.handleOptionClick(option)}\n onFocus={() => this.setState({ keyboardOptionIndex: index })}\n >\n {option.title}\n </button>\n );\n }\n\n render(): JSX.Element {\n const {\n options,\n inputPlaceholder,\n disabled,\n className,\n defaultTitle,\n spellCheck,\n 'data-testid': dataTestId,\n } = this.props;\n const { title, menuIsOpen, popperOptions, invalid } = this.state;\n\n return (\n <div className=\"aci-container\" ref={this.cbContainer}>\n <input\n value={title || defaultTitle}\n className={classNames('form-control', className, 'aci-input', {\n 'is-invalid': invalid && !menuIsOpen,\n })}\n ref={this.input}\n onChange={this.handleInputChange}\n placeholder={inputPlaceholder || options[0].title}\n disabled={disabled}\n onFocus={this.handelInputFocus}\n onClick={this.handleInputClick}\n onBlur={this.handleInputBlur}\n onKeyDown={this.handleInputKeyDown}\n spellCheck={spellCheck}\n data-testid={dataTestId}\n />\n <Popper\n ref={this.popper}\n options={popperOptions}\n className={classNames('aci-options-popper interactive')}\n onEntered={this.handleMenuOpened}\n onExited={this.handleMenuExited}\n >\n {this.renderMenuElement()}\n </Popper>\n </div>\n );\n }\n}\n\nexport default AutoCompleteInput;\n"],"mappings":"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"}
1
+ {"version":3,"file":"AutoCompleteInput.js","names":["React","Component","PropTypes","memoize","classNames","debounce","Popper","DEBOUNCE_DELAY","MENU_NAVIGATION_DIRECTION","AutoCompleteInput","constructor","props","options","input","filter","option","title","toLowerCase","indexOf","popperOptions","placement","modifiers","preventOverflow","enabled","state","filteredOptions","keyboardOptionIndex","menuIsOpen","inputWidth","invalid","handleMenuKeyDown","bind","handleMenuBlur","handleInputChange","handleInputKeyDown","handleInputBlur","handelInputFocus","handleInputClick","updateInputValue","handleOptionClick","handleMenuOpened","handleMenuExited","popper","createRef","cbContainer","menuContainer","setInputWidth","current","setState","getBoundingClientRect","width","getValueAndValidate","value","isValid","result","length","processFilterChange","fireOnChange","onChange","getCachedFilteredOptions","perfectMatch","closeMenu","scheduleUpdate","resetValue","handleResize","event","key","stopPropagation","preventDefault","focus","navigateMenu","UP","DOWN","shiftKey","direction","newKeyboardOptionIndex","scrollOptionIntoView","onEnter","openMenu","target","relatedTarget","Element","element","contains","window","requestAnimationFrame","show","focusInput","hide","index","children","item","scrollIntoView","behavior","block","renderMenuElement","renderOptions","noMatchText","map","renderOption","render","inputPlaceholder","disabled","className","defaultTitle","spellCheck","dataTestId","arrayOf","shape","string","isRequired","func","bool","undefined"],"sources":["../src/AutoCompleteInput.tsx"],"sourcesContent":["/**\n * An Input component that pops and filters auto complete options as you type.\n *\n * props:\n * @param options :[{\n * title: 'option title for display',\n * value: 'option value' //option value\n * }]\n * @param popperOptions options for the Popper\n * @param onChange called when the value is changed from the pulldown\n * @param inputPlaceholder place holder for the input box\n * @param disabled disable both input & drop down\n * @param className an optional class name applied to the input element\n * @param defaultTitle the default title to display\n * @param spellCheck flag to disable spell checking, defaults to true\n * @param onEnter called when the Enter key is typed in the input element\n *\n */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport memoize from 'memoizee';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport { PopperOptions } from 'popper.js';\nimport { Popper } from './popper';\n\nimport './AutoCompleteInput.scss';\n\nconst DEBOUNCE_DELAY = 100;\n\nenum MENU_NAVIGATION_DIRECTION {\n UP = 'UP',\n DOWN = 'DOWN',\n}\n\ninterface AutoCompleteOption {\n title: string;\n value: string;\n}\n\ninterface AutoCompleteInputProps {\n options: AutoCompleteOption[];\n popperOptions: PopperOptions;\n onChange(value: string, isValid: boolean): void;\n inputPlaceholder: string;\n disabled: boolean;\n className: string;\n defaultTitle: string;\n spellCheck: boolean;\n onEnter(): void;\n noMatchText: string;\n 'data-testid'?: string;\n}\n\ninterface AutoCompleteInputState {\n title: string;\n filteredOptions: AutoCompleteOption[];\n keyboardOptionIndex: number;\n menuIsOpen: boolean;\n inputWidth: number;\n invalid: boolean;\n popperOptions: PopperOptions;\n}\n\nclass AutoCompleteInput extends Component<\n AutoCompleteInputProps,\n AutoCompleteInputState\n> {\n static propTypes = {\n options: PropTypes.arrayOf(\n PropTypes.shape({\n title: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n })\n ).isRequired,\n popperOptions: PropTypes.shape({}),\n onChange: PropTypes.func,\n inputPlaceholder: PropTypes.string,\n disabled: PropTypes.bool,\n className: PropTypes.string,\n defaultTitle: PropTypes.string,\n spellCheck: PropTypes.bool,\n onEnter: PropTypes.func,\n noMatchText: PropTypes.string,\n 'data-testid': PropTypes.string,\n };\n\n static defaultProps = {\n onChange(): void {\n // no-op\n },\n inputPlaceholder: '',\n disabled: false,\n className: '',\n defaultTitle: '',\n popperOptions: null,\n spellCheck: true,\n onEnter(): void {\n // no-op\n },\n noMatchText: 'No matching items found',\n 'data-testid': undefined,\n };\n\n static MENU_NAVIGATION_DIRECTION = MENU_NAVIGATION_DIRECTION;\n\n constructor(props: AutoCompleteInputProps) {\n super(props);\n\n let { popperOptions } = this.props;\n popperOptions = {\n placement: 'bottom-end',\n modifiers: {\n preventOverflow: { enabled: false },\n },\n ...popperOptions,\n };\n\n this.state = {\n title: '',\n filteredOptions: [],\n keyboardOptionIndex: 0,\n menuIsOpen: false,\n inputWidth: 100,\n invalid: false,\n popperOptions,\n };\n\n this.handleMenuKeyDown = this.handleMenuKeyDown.bind(this);\n this.handleMenuBlur = this.handleMenuBlur.bind(this);\n\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleInputKeyDown = this.handleInputKeyDown.bind(this);\n this.handleInputBlur = this.handleInputBlur.bind(this);\n this.handelInputFocus = this.handelInputFocus.bind(this);\n this.handleInputClick = this.handleInputClick.bind(this);\n\n this.updateInputValue = debounce(this.updateInputValue, DEBOUNCE_DELAY);\n\n this.handleOptionClick = this.handleOptionClick.bind(this);\n\n this.handleMenuOpened = this.handleMenuOpened.bind(this);\n this.handleMenuExited = this.handleMenuExited.bind(this);\n\n this.popper = React.createRef();\n this.cbContainer = React.createRef();\n this.menuContainer = React.createRef();\n this.input = React.createRef();\n }\n\n popper: React.RefObject<Popper>;\n\n cbContainer: React.RefObject<HTMLDivElement>;\n\n menuContainer: React.RefObject<HTMLDivElement>;\n\n input: React.RefObject<HTMLInputElement>;\n\n setInputWidth(): void {\n if (this.cbContainer.current) {\n this.setState({\n inputWidth: this.cbContainer.current.getBoundingClientRect().width,\n });\n }\n }\n\n getCachedFilteredOptions = memoize(\n (options: AutoCompleteOption[], input: string) =>\n options.filter(\n // supports partial match\n option => option.title.toLowerCase().indexOf(input.toLowerCase()) >= 0\n )\n );\n\n // validation needs to be an exact case-sensitve match on value\n getValueAndValidate(title: string): { value: string; isValid: boolean } {\n if (!title) {\n this.setState({ invalid: false });\n return { value: title, isValid: false };\n }\n\n // validate\n const { options } = this.props;\n const result = options.filter(\n option => option.title.toLowerCase() === title.toLowerCase()\n );\n if (result.length < 1) {\n this.setState({ invalid: true });\n return { value: title, isValid: false };\n }\n\n this.setState({ invalid: false });\n return { value: result[0].value, isValid: true };\n }\n\n // validate typed entries emit change event using value\n updateInputValue(title: string): void {\n const { menuIsOpen } = this.state;\n const { value, isValid } = this.getValueAndValidate(title);\n if (menuIsOpen) this.processFilterChange(title);\n this.fireOnChange(value, isValid);\n }\n\n fireOnChange(value: string, isValid = true): void {\n const { onChange } = this.props;\n onChange(value, isValid);\n }\n\n processFilterChange(filter: string): void {\n const { options } = this.props;\n const { menuIsOpen } = this.state;\n const filteredOptions = filter\n ? this.getCachedFilteredOptions(options, filter)\n : options;\n const perfectMatch =\n filteredOptions.length === 1 && filteredOptions[0].title === filter;\n this.setState({\n filteredOptions,\n keyboardOptionIndex: 0,\n });\n if (perfectMatch && menuIsOpen) {\n this.closeMenu();\n return;\n }\n this.popper.current?.scheduleUpdate(); // filtered options list can change size, may need to be repositioned\n }\n\n resetValue(): void {\n this.setState({ title: '' });\n this.fireOnChange('');\n }\n\n handleResize(): void {\n this.setInputWidth();\n }\n\n handleMenuKeyDown(event: React.KeyboardEvent): void {\n const { filteredOptions, keyboardOptionIndex } = this.state;\n const option = filteredOptions[keyboardOptionIndex];\n\n switch (event.key) {\n case 'Enter':\n case 'ArrowRight':\n event.stopPropagation();\n event.preventDefault();\n if (option != null) {\n this.setState({ title: option.title, invalid: false });\n this.fireOnChange(option.value);\n }\n this.closeMenu();\n this.input.current?.focus();\n break;\n case 'ArrowUp':\n event.stopPropagation();\n event.preventDefault();\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.UP);\n break;\n case 'ArrowDown':\n event.stopPropagation();\n event.preventDefault();\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.DOWN);\n break;\n case 'Tab':\n event.stopPropagation();\n event.preventDefault();\n if (event.shiftKey) {\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.UP);\n break;\n }\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.DOWN);\n break;\n case 'Escape':\n event.preventDefault();\n event.stopPropagation();\n this.closeMenu();\n break;\n default:\n break;\n }\n }\n\n navigateMenu(direction: MENU_NAVIGATION_DIRECTION): void {\n const { filteredOptions, keyboardOptionIndex } = this.state;\n let newKeyboardOptionIndex = keyboardOptionIndex;\n if (direction === AutoCompleteInput.MENU_NAVIGATION_DIRECTION.UP) {\n if (keyboardOptionIndex > 0) {\n newKeyboardOptionIndex =\n (newKeyboardOptionIndex - 1) % filteredOptions.length;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex,\n });\n } else if (keyboardOptionIndex === 0) {\n newKeyboardOptionIndex = filteredOptions.length - 1;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex,\n });\n }\n } else if (direction === AutoCompleteInput.MENU_NAVIGATION_DIRECTION.DOWN) {\n if (keyboardOptionIndex < filteredOptions.length) {\n newKeyboardOptionIndex =\n (newKeyboardOptionIndex + 1) % filteredOptions.length;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex,\n });\n }\n }\n this.scrollOptionIntoView(newKeyboardOptionIndex);\n }\n\n handleInputKeyDown(event: React.KeyboardEvent): void {\n const { onEnter } = this.props;\n const { menuIsOpen } = this.state;\n\n if (menuIsOpen) {\n this.handleMenuKeyDown(event);\n } else if (event.key === 'Enter') {\n onEnter();\n } else if (event.key === 'Escape') {\n this.resetValue();\n event.preventDefault();\n event.stopPropagation();\n } else if (\n !(\n event.key === 'ArrowRight' ||\n event.key === 'ArrowLeft' ||\n event.key === 'Tab' ||\n event.key === 'Shift'\n )\n ) {\n this.openMenu();\n }\n }\n\n handleInputChange(event: React.ChangeEvent<HTMLInputElement>): void {\n this.setState({ title: event.target.value });\n this.updateInputValue(event.target.value);\n }\n\n handleOptionClick(option: AutoCompleteOption): void {\n this.setState({ title: option.title, invalid: false });\n this.fireOnChange(option.value);\n this.closeMenu();\n this.input.current?.focus();\n }\n\n handelInputFocus(): void {\n const { menuIsOpen } = this.state;\n if (!menuIsOpen) {\n this.openMenu();\n }\n }\n\n handleInputClick(): void {\n const { menuIsOpen } = this.state;\n if (!menuIsOpen) {\n this.openMenu();\n }\n }\n\n handleInputBlur(event: React.FocusEvent<HTMLInputElement>): void {\n const { menuIsOpen } = this.state;\n if (\n menuIsOpen &&\n event.relatedTarget instanceof Element &&\n this.popper.current !== null &&\n this.popper.current.element.contains(event.relatedTarget)\n ) {\n return;\n }\n this.closeMenu(false);\n }\n\n handleMenuBlur(event: React.FocusEvent<HTMLDivElement>): void {\n // if blur event is caused by focusing on the input or focus on options don't close menu\n if (\n event.relatedTarget === this.input.current ||\n (event.relatedTarget instanceof Element &&\n this.popper.current !== null &&\n this.popper.current.element.contains(event.relatedTarget))\n ) {\n return;\n }\n this.closeMenu(false);\n }\n\n handleMenuOpened(): void {\n this.input.current?.focus();\n }\n\n handleMenuExited(): void {\n const { menuIsOpen } = this.state;\n if (menuIsOpen) {\n this.setState({ menuIsOpen: false, keyboardOptionIndex: 0 });\n }\n }\n\n openMenu(): void {\n const { title } = this.state;\n this.processFilterChange(title);\n this.setInputWidth();\n this.setState({ menuIsOpen: true });\n\n // https://github.com/reactjs/react-transition-group/issues/382\n window.requestAnimationFrame(() => {\n this.popper.current?.show();\n });\n }\n\n closeMenu(focusInput = true): void {\n this.setState({ menuIsOpen: false, keyboardOptionIndex: 0 });\n if (focusInput) {\n this.input.current?.focus();\n }\n this.popper.current?.hide();\n }\n\n scrollOptionIntoView(index: number): void {\n if (this.menuContainer.current) {\n this.menuContainer.current.children.item(index)?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n });\n }\n }\n\n renderMenuElement(): JSX.Element {\n const { inputWidth } = this.state;\n return (\n <div\n className={classNames('aci-options')}\n ref={this.menuContainer}\n role=\"presentation\"\n onKeyDown={this.handleMenuKeyDown}\n style={{ width: inputWidth }}\n onBlur={this.handleMenuBlur}\n >\n {this.renderOptions()}\n </div>\n );\n }\n\n renderOptions(): React.ReactNode {\n const { noMatchText } = this.props;\n const { title, filteredOptions } = this.state;\n\n if (title && filteredOptions.length === 0) {\n return <div className=\"no-match\">{noMatchText}</div>;\n }\n\n return filteredOptions.map((option, index) =>\n this.renderOption(option, index)\n );\n }\n\n renderOption(option: AutoCompleteOption, index: number): JSX.Element {\n const { keyboardOptionIndex } = this.state;\n const key = `option-${index}-${option.value}`;\n return (\n <button\n key={key}\n type=\"button\"\n className={classNames('aci-option-btn', {\n 'keyboard-active': keyboardOptionIndex === index,\n })}\n onClick={() => this.handleOptionClick(option)}\n onFocus={() => this.setState({ keyboardOptionIndex: index })}\n >\n {option.title}\n </button>\n );\n }\n\n render(): JSX.Element {\n const {\n options,\n inputPlaceholder,\n disabled,\n className,\n defaultTitle,\n spellCheck,\n 'data-testid': dataTestId,\n } = this.props;\n const { title, menuIsOpen, popperOptions, invalid } = this.state;\n\n return (\n <div className=\"aci-container\" ref={this.cbContainer}>\n <input\n value={title || defaultTitle}\n className={classNames('form-control', className, 'aci-input', {\n 'is-invalid': invalid && !menuIsOpen,\n })}\n ref={this.input}\n onChange={this.handleInputChange}\n placeholder={inputPlaceholder || options[0].title}\n disabled={disabled}\n onFocus={this.handelInputFocus}\n onClick={this.handleInputClick}\n onBlur={this.handleInputBlur}\n onKeyDown={this.handleInputKeyDown}\n spellCheck={spellCheck}\n data-testid={dataTestId}\n />\n <Popper\n ref={this.popper}\n options={popperOptions}\n className={classNames('aci-options-popper interactive')}\n onEntered={this.handleMenuOpened}\n onExited={this.handleMenuExited}\n >\n {this.renderMenuElement()}\n </Popper>\n </div>\n );\n }\n}\n\nexport default AutoCompleteInput;\n"],"mappings":"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"}
@@ -18,9 +18,9 @@ interface AutoResizeTextareaProps {
18
18
  * then the field will also "explode" the value by the delimiter over new lines
19
19
  * on focus, and implode on blur. By default, it doesn't word wrap.
20
20
  */
21
- declare const AutoResizeTextarea: {
22
- ({ className, value: propsValue, onChange, spellCheck, placeholder, disabled, delimiter, id, "data-testid": dataTestId, }: AutoResizeTextareaProps): JSX.Element;
23
- propTypes: {
21
+ declare function AutoResizeTextarea({ className, value: propsValue, onChange, spellCheck, placeholder, disabled, delimiter, id, 'data-testid': dataTestId, }: AutoResizeTextareaProps): JSX.Element;
22
+ declare namespace AutoResizeTextarea {
23
+ var propTypes: {
24
24
  value: PropTypes.Validator<string>;
25
25
  onChange: PropTypes.Validator<(...args: any[]) => any>;
26
26
  className: PropTypes.Requireable<string>;
@@ -31,7 +31,7 @@ declare const AutoResizeTextarea: {
31
31
  id: PropTypes.Requireable<string>;
32
32
  'data-testid': PropTypes.Requireable<string>;
33
33
  };
34
- defaultProps: {
34
+ var defaultProps: {
35
35
  className: string;
36
36
  id: string;
37
37
  placeholder: string;
@@ -40,6 +40,6 @@ declare const AutoResizeTextarea: {
40
40
  delimiter: string;
41
41
  'data-testid': undefined;
42
42
  };
43
- };
43
+ }
44
44
  export default AutoResizeTextarea;
45
45
  //# sourceMappingURL=AutoResizeTextarea.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AutoResizeTextarea.d.ts","sourceRoot":"","sources":["../src/AutoResizeTextarea.tsx"],"names":[],"mappings":";AACA,OAAO,SAAS,MAAM,YAAY,CAAC;AAGnC,OAAO,2BAA2B,CAAC;AAEnC,UAAU,uBAAuB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,QAAA,MAAM,kBAAkB;+HAUrB,uBAAuB,GAAG,WAAW;;;;;;;;;;;;;;;;;;;;;CA8GvC,CAAC;AAwBF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"AutoResizeTextarea.d.ts","sourceRoot":"","sources":["../src/AutoResizeTextarea.tsx"],"names":[],"mappings":";AACA,OAAO,SAAS,MAAM,YAAY,CAAC;AAGnC,OAAO,2BAA2B,CAAC;AAEnC,UAAU,uBAAuB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,iBAAS,kBAAkB,CAAC,EAC1B,SAAc,EACd,KAAK,EAAE,UAAU,EACjB,QAAQ,EACR,UAAkB,EAClB,WAAgB,EAChB,QAAgB,EAChB,SAAc,EACd,EAAO,EACP,aAAa,EAAE,UAAU,GAC1B,EAAE,uBAAuB,GAAG,GAAG,CAAC,OAAO,CA8GvC;kBAxHQ,kBAAkB;;;;;;;;;;;;;;;;;;;;;;AAgJ3B,eAAe,kBAAkB,CAAC"}