@deephaven/components 0.22.3-embed-pandas.11 → 0.23.1-beta.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
package/dist/ComboBox.js CHANGED
@@ -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
  * Combobox that combines a input box with a searchable dropdown menu
9
6
  *
@@ -28,30 +25,20 @@ import SearchInput from "./SearchInput.js";
28
25
  import { Popper } from "./popper/index.js";
29
26
  import "./ComboBox.css";
30
27
  var MENU_NAVIGATION_DIRECTION;
31
-
32
28
  (function (MENU_NAVIGATION_DIRECTION) {
33
29
  MENU_NAVIGATION_DIRECTION["UP"] = "UP";
34
30
  MENU_NAVIGATION_DIRECTION["DOWN"] = "DOWN";
35
31
  })(MENU_NAVIGATION_DIRECTION || (MENU_NAVIGATION_DIRECTION = {}));
36
-
37
32
  class ComboBox extends Component {
38
33
  constructor(props) {
39
34
  super(props);
40
-
41
35
  _defineProperty(this, "popper", void 0);
42
-
43
36
  _defineProperty(this, "cbContainer", void 0);
44
-
45
37
  _defineProperty(this, "toggleButton", void 0);
46
-
47
38
  _defineProperty(this, "menuContainer", void 0);
48
-
49
39
  _defineProperty(this, "input", void 0);
50
-
51
40
  _defineProperty(this, "searchInput", void 0);
52
-
53
41
  _defineProperty(this, "getCachedFilteredOptions", memoize((options, input) => options.filter(option => option.title.toLowerCase().indexOf(input.toLowerCase()) >= 0 || option.value.toLowerCase().indexOf(input.toLowerCase()) >= 0)));
54
-
55
42
  this.state = {
56
43
  value: '',
57
44
  filter: '',
@@ -79,18 +66,15 @@ class ComboBox extends Component {
79
66
  this.input = /*#__PURE__*/React.createRef();
80
67
  this.searchInput = /*#__PURE__*/React.createRef();
81
68
  }
82
-
83
69
  componentDidUpdate() {
84
70
  var {
85
71
  menuIsOpen,
86
72
  keyboardOptionIndex
87
73
  } = this.state;
88
-
89
74
  if (menuIsOpen && keyboardOptionIndex >= 0) {
90
75
  this.scrollOptionIntoView();
91
76
  }
92
77
  }
93
-
94
78
  setInputWidth() {
95
79
  if (this.cbContainer.current) {
96
80
  this.setState({
@@ -98,19 +82,15 @@ class ComboBox extends Component {
98
82
  });
99
83
  }
100
84
  }
101
-
102
85
  focus() {
103
86
  var _this$input$current;
104
-
105
87
  (_this$input$current = this.input.current) === null || _this$input$current === void 0 ? void 0 : _this$input$current.focus();
106
88
  }
107
-
108
89
  resetValue() {
109
90
  this.setState({
110
91
  value: ''
111
92
  });
112
93
  }
113
-
114
94
  updateInputValue(value) {
115
95
  var {
116
96
  onChange
@@ -120,14 +100,11 @@ class ComboBox extends Component {
120
100
  });
121
101
  onChange(value);
122
102
  }
123
-
124
103
  handleResize() {
125
104
  this.setInputWidth();
126
105
  }
127
-
128
106
  handleMenuKeyDown(event) {
129
107
  var _menuOptions$keyboard, _this$input$current2;
130
-
131
108
  var {
132
109
  filter,
133
110
  filteredOptions,
@@ -137,31 +114,26 @@ class ComboBox extends Component {
137
114
  options
138
115
  } = this.props;
139
116
  var menuOptions = filter ? filteredOptions : options;
140
-
141
117
  switch (event.key) {
142
118
  case 'Enter':
143
119
  if (((_menuOptions$keyboard = menuOptions[keyboardOptionIndex]) === null || _menuOptions$keyboard === void 0 ? void 0 : _menuOptions$keyboard.value) != null) {
144
120
  this.updateInputValue(menuOptions[keyboardOptionIndex].value);
145
121
  }
146
-
147
122
  this.closeMenu();
148
123
  (_this$input$current2 = this.input.current) === null || _this$input$current2 === void 0 ? void 0 : _this$input$current2.focus();
149
124
  event.stopPropagation();
150
125
  event.preventDefault();
151
126
  break;
152
-
153
127
  case 'ArrowUp':
154
128
  this.handleMenuNavigation(ComboBox.MENU_NAVIGATION_DIRECTION.UP);
155
129
  event.stopPropagation();
156
130
  event.preventDefault();
157
131
  break;
158
-
159
132
  case 'ArrowDown':
160
133
  this.handleMenuNavigation(ComboBox.MENU_NAVIGATION_DIRECTION.DOWN);
161
134
  event.stopPropagation();
162
135
  event.preventDefault();
163
136
  break;
164
-
165
137
  case 'Escape':
166
138
  if (filter !== '') {
167
139
  this.setState({
@@ -171,21 +143,16 @@ class ComboBox extends Component {
171
143
  } else {
172
144
  this.closeMenu();
173
145
  }
174
-
175
146
  break;
176
-
177
147
  case 'Tab':
178
148
  if (!event.shiftKey && keyboardOptionIndex === menuOptions.length - 1) {
179
149
  this.closeMenu();
180
150
  }
181
-
182
151
  break;
183
-
184
152
  default:
185
153
  break;
186
154
  }
187
155
  }
188
-
189
156
  handleMenuNavigation(direction) {
190
157
  var {
191
158
  filter,
@@ -198,24 +165,20 @@ class ComboBox extends Component {
198
165
  var menuOptions = filter ? filteredOptions : options;
199
166
  var menuOptionsLength = menuOptions.length;
200
167
  var delta = 0;
201
-
202
168
  switch (direction) {
203
169
  case ComboBox.MENU_NAVIGATION_DIRECTION.UP:
204
170
  delta = -1;
205
171
  break;
206
-
207
172
  case ComboBox.MENU_NAVIGATION_DIRECTION.DOWN:
208
173
  delta = 1;
209
174
  break;
210
175
  }
211
-
212
176
  if (delta !== 0) {
213
177
  this.setState({
214
178
  keyboardOptionIndex: (keyboardOptionIndex + delta + menuOptionsLength) % menuOptionsLength
215
179
  });
216
180
  }
217
181
  }
218
-
219
182
  handleInputKeyDown(event) {
220
183
  var {
221
184
  onEnter
@@ -223,7 +186,6 @@ class ComboBox extends Component {
223
186
  var {
224
187
  menuIsOpen
225
188
  } = this.state;
226
-
227
189
  if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {
228
190
  if (!menuIsOpen) {
229
191
  this.openMenu();
@@ -232,14 +194,11 @@ class ComboBox extends Component {
232
194
  onEnter();
233
195
  }
234
196
  }
235
-
236
197
  handleInputChange(event) {
237
198
  this.updateInputValue(event.target.value);
238
199
  }
239
-
240
200
  handleOptionClick(event) {
241
201
  var _this$input$current3;
242
-
243
202
  var optionIndex = Number(event.currentTarget.value);
244
203
  var {
245
204
  filter,
@@ -253,16 +212,13 @@ class ComboBox extends Component {
253
212
  this.closeMenu();
254
213
  (_this$input$current3 = this.input.current) === null || _this$input$current3 === void 0 ? void 0 : _this$input$current3.focus();
255
214
  }
256
-
257
215
  handleOptionFocus(event) {
258
216
  this.setState({
259
217
  keyboardOptionIndex: Number(event.target.value)
260
218
  });
261
219
  }
262
-
263
220
  handleFilterChange(event) {
264
221
  var _this$popper$current;
265
-
266
222
  var {
267
223
  options
268
224
  } = this.props;
@@ -275,69 +231,54 @@ class ComboBox extends Component {
275
231
  });
276
232
  (_this$popper$current = this.popper.current) === null || _this$popper$current === void 0 ? void 0 : _this$popper$current.scheduleUpdate();
277
233
  }
278
-
279
234
  handleMenuBlur(event) {
280
235
  // close if menu blurs, unless its an internal option or the toggleButton which triggers close via click
281
236
  if (event.relatedTarget instanceof Element && this.popper.current != null && this.popper.current.element.contains(event.relatedTarget) || event.relatedTarget === this.toggleButton.current) {
282
237
  return;
283
238
  }
284
-
285
239
  this.closeMenu(false);
286
240
  }
287
-
288
241
  handleInputBlur(event) {
289
242
  // if blur event is caused by focusing on search input or open menu by keyboard, don't close the menu
290
243
  var {
291
244
  menuIsOpen
292
245
  } = this.state;
293
-
294
246
  if (menuIsOpen && event.relatedTarget instanceof Element && this.popper.current != null && this.popper.current.element.contains(event.relatedTarget)) {
295
247
  return;
296
248
  }
297
-
298
249
  this.closeMenu(false);
299
250
  }
300
-
301
251
  handleMenuOpened() {
302
252
  var _this$searchInput$cur;
303
-
304
253
  this.scrollOptionIntoView();
305
254
  (_this$searchInput$cur = this.searchInput.current) === null || _this$searchInput$cur === void 0 ? void 0 : _this$searchInput$cur.focus();
306
255
  }
307
-
308
256
  handleMenuExited() {
309
257
  var {
310
258
  menuIsOpen
311
259
  } = this.state;
312
-
313
260
  if (menuIsOpen) {
314
261
  var _this$popper$current2;
315
-
316
262
  this.setState({
317
263
  menuIsOpen: false
318
264
  });
319
265
  (_this$popper$current2 = this.popper.current) === null || _this$popper$current2 === void 0 ? void 0 : _this$popper$current2.hide();
320
266
  }
321
-
322
267
  this.setState({
323
268
  filter: ''
324
269
  });
325
270
  }
326
-
327
271
  toggleMenu(event) {
328
272
  var {
329
273
  menuIsOpen
330
274
  } = this.state;
331
-
332
275
  if (menuIsOpen) {
333
276
  this.closeMenu();
334
277
  } else {
335
278
  this.openMenu();
336
279
  }
337
-
338
280
  event.stopPropagation();
339
281
  }
340
-
341
282
  openMenu() {
342
283
  this.updateKeyboardIndex();
343
284
  this.setInputWidth();
@@ -346,28 +287,21 @@ class ComboBox extends Component {
346
287
  });
347
288
  window.requestAnimationFrame(() => {
348
289
  var _this$popper$current3;
349
-
350
290
  (_this$popper$current3 = this.popper.current) === null || _this$popper$current3 === void 0 ? void 0 : _this$popper$current3.show();
351
291
  });
352
292
  }
353
-
354
293
  closeMenu() {
355
294
  var _this$popper$current4;
356
-
357
295
  var focusInput = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
358
296
  this.setState({
359
297
  menuIsOpen: false
360
298
  });
361
-
362
299
  if (focusInput) {
363
300
  var _this$input$current4;
364
-
365
301
  (_this$input$current4 = this.input.current) === null || _this$input$current4 === void 0 ? void 0 : _this$input$current4.focus();
366
302
  }
367
-
368
303
  (_this$popper$current4 = this.popper.current) === null || _this$popper$current4 === void 0 ? void 0 : _this$popper$current4.hide();
369
304
  }
370
-
371
305
  updateKeyboardIndex() {
372
306
  var {
373
307
  value,
@@ -383,12 +317,9 @@ class ComboBox extends Component {
383
317
  keyboardOptionIndex: valueIndex
384
318
  });
385
319
  }
386
-
387
320
  scrollOptionIntoView() {
388
321
  var _this$menuContainer$c;
389
-
390
322
  var activeOption = (_this$menuContainer$c = this.menuContainer.current) === null || _this$menuContainer$c === void 0 ? void 0 : _this$menuContainer$c.querySelector('.cb-option-btn.keyboard-active');
391
-
392
323
  if (activeOption instanceof HTMLElement) {
393
324
  activeOption.scrollIntoView({
394
325
  block: 'nearest',
@@ -396,7 +327,6 @@ class ComboBox extends Component {
396
327
  });
397
328
  }
398
329
  }
399
-
400
330
  renderMenuElement() {
401
331
  var {
402
332
  searchPlaceholder
@@ -431,7 +361,6 @@ class ComboBox extends Component {
431
361
  className: "cb-options"
432
362
  }, this.renderOptions())));
433
363
  }
434
-
435
364
  renderOptions() {
436
365
  var {
437
366
  options
@@ -456,7 +385,6 @@ class ComboBox extends Component {
456
385
  }, option.title);
457
386
  });
458
387
  }
459
-
460
388
  render() {
461
389
  var {
462
390
  options,
@@ -515,13 +443,9 @@ class ComboBox extends Component {
515
443
  onExited: this.handleMenuExited
516
444
  }, this.renderMenuElement()))));
517
445
  }
518
-
519
446
  }
520
-
521
447
  _defineProperty(ComboBox, "MENU_NAVIGATION_DIRECTION", MENU_NAVIGATION_DIRECTION);
522
-
523
448
  _defineProperty(ComboBox, "DROP_DOWN_MENU_HEIGHT", 200);
524
-
525
449
  _defineProperty(ComboBox, "propTypes", {
526
450
  options: PropTypes.arrayOf(PropTypes.shape({
527
451
  title: PropTypes.string.isRequired,
@@ -541,11 +465,10 @@ _defineProperty(ComboBox, "propTypes", {
541
465
  onEnter: PropTypes.func,
542
466
  'data-testid': PropTypes.string
543
467
  });
544
-
545
468
  _defineProperty(ComboBox, "defaultProps", {
546
- onChange() {// no-op
469
+ onChange() {
470
+ // no-op
547
471
  },
548
-
549
472
  inputPlaceholder: '',
550
473
  searchPlaceholder: 'Search',
551
474
  disabled: false,
@@ -553,12 +476,10 @@ _defineProperty(ComboBox, "defaultProps", {
553
476
  defaultValue: '',
554
477
  popperOptions: null,
555
478
  spellCheck: true,
556
-
557
- onEnter() {// no-op
479
+ onEnter() {
480
+ // no-op
558
481
  },
559
-
560
482
  'data-testid': undefined
561
483
  });
562
-
563
484
  export default ComboBox;
564
485
  //# sourceMappingURL=ComboBox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ComboBox.js","names":["React","Component","PropTypes","FontAwesomeIcon","vsTriangleDown","memoize","classNames","SearchInput","Popper","MENU_NAVIGATION_DIRECTION","ComboBox","constructor","props","options","input","filter","option","title","toLowerCase","indexOf","value","state","filteredOptions","keyboardOptionIndex","menuIsOpen","inputWidth","toggleMenu","bind","handleMenuKeyDown","handleMenuBlur","closeMenu","handleInputChange","handleInputKeyDown","handleInputBlur","handleFilterChange","handleOptionClick","handleOptionFocus","handleMenuOpened","handleMenuExited","popper","createRef","cbContainer","toggleButton","menuContainer","searchInput","componentDidUpdate","scrollOptionIntoView","setInputWidth","current","setState","getBoundingClientRect","width","focus","resetValue","updateInputValue","onChange","handleResize","event","menuOptions","key","stopPropagation","preventDefault","handleMenuNavigation","UP","DOWN","shiftKey","length","direction","menuOptionsLength","delta","onEnter","openMenu","target","optionIndex","Number","currentTarget","getCachedFilteredOptions","scheduleUpdate","relatedTarget","Element","element","contains","hide","updateKeyboardIndex","window","requestAnimationFrame","show","focusInput","valueIndex","findIndex","activeOption","querySelector","HTMLElement","scrollIntoView","block","inline","renderMenuElement","searchPlaceholder","renderOptions","map","index","render","inputPlaceholder","disabled","className","defaultValue","spellCheck","dataTestId","popperOptions","placement","modifiers","preventOverflow","enabled","undefined","arrayOf","shape","string","isRequired","func","bool"],"sources":["../src/ComboBox.tsx"],"sourcesContent":["/**\n * Combobox that combines a input box with a searchable dropdown menu\n *\n * props:\n * @param {array} options :[{\n * title: 'option title for display',\n * value: 'option value' //option value\n * }]\n * @param {string} inputPlaceholder place holder for the input box\n * @param {string} searchPlaceholder place holder for the search box in drop down search box\n * @param {boolean} disabled disable both input & drop down\n *\n *\n */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsTriangleDown } from '@deephaven/icons';\nimport memoize from 'memoizee';\nimport classNames from 'classnames';\nimport { PopperOptions } from 'popper.js';\nimport SearchInput from './SearchInput';\nimport { Popper } from './popper';\n\nimport './ComboBox.scss';\n\ninterface ComboBoxOption {\n title: string;\n value: string;\n}\n\ninterface ComboBoxProps {\n options: ComboBoxOption[];\n popperOptions: PopperOptions;\n onChange(value: string): void;\n inputPlaceholder: string;\n searchPlaceholder: string;\n disabled: boolean;\n className: string;\n defaultValue: string;\n spellCheck: boolean;\n onEnter(): void;\n 'data-testid'?: string;\n}\n\ninterface ComboBoxState {\n value: string;\n filter: string;\n filteredOptions: ComboBoxOption[];\n keyboardOptionIndex: number;\n menuIsOpen: boolean;\n inputWidth: number;\n}\n\nenum MENU_NAVIGATION_DIRECTION {\n UP = 'UP',\n DOWN = 'DOWN',\n}\n\nclass ComboBox extends Component<ComboBoxProps, ComboBoxState> {\n static MENU_NAVIGATION_DIRECTION = MENU_NAVIGATION_DIRECTION;\n\n static DROP_DOWN_MENU_HEIGHT = 200;\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 title: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n }),\n onChange: PropTypes.func,\n inputPlaceholder: PropTypes.string,\n searchPlaceholder: PropTypes.string,\n disabled: PropTypes.bool,\n className: PropTypes.string,\n defaultValue: PropTypes.string,\n spellCheck: PropTypes.bool,\n onEnter: PropTypes.func,\n 'data-testid': PropTypes.string,\n };\n\n static defaultProps = {\n onChange(): void {\n // no-op\n },\n inputPlaceholder: '',\n searchPlaceholder: 'Search',\n disabled: false,\n className: '',\n defaultValue: '',\n popperOptions: null,\n spellCheck: true,\n onEnter(): void {\n // no-op\n },\n 'data-testid': undefined,\n };\n\n constructor(props: ComboBoxProps) {\n super(props);\n this.state = {\n value: '',\n filter: '',\n filteredOptions: props.options,\n keyboardOptionIndex: -1,\n menuIsOpen: false,\n inputWidth: 100,\n };\n\n this.toggleMenu = this.toggleMenu.bind(this);\n this.handleMenuKeyDown = this.handleMenuKeyDown.bind(this);\n this.handleMenuBlur = this.handleMenuBlur.bind(this);\n this.closeMenu = this.closeMenu.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.handleFilterChange = this.handleFilterChange.bind(this);\n\n this.handleOptionClick = this.handleOptionClick.bind(this);\n this.handleOptionFocus = this.handleOptionFocus.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.toggleButton = React.createRef();\n this.menuContainer = React.createRef();\n this.input = React.createRef();\n this.searchInput = React.createRef();\n }\n\n componentDidUpdate(): void {\n const { menuIsOpen, keyboardOptionIndex } = this.state;\n if (menuIsOpen && keyboardOptionIndex >= 0) {\n this.scrollOptionIntoView();\n }\n }\n\n popper: React.RefObject<Popper>;\n\n cbContainer: React.RefObject<HTMLDivElement>;\n\n toggleButton: React.RefObject<HTMLButtonElement>;\n\n menuContainer: React.RefObject<HTMLDivElement>;\n\n input: React.RefObject<HTMLInputElement>;\n\n searchInput: React.RefObject<SearchInput>;\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: ComboBoxOption[], input: string) =>\n options.filter(\n option =>\n option.title.toLowerCase().indexOf(input.toLowerCase()) >= 0 ||\n option.value.toLowerCase().indexOf(input.toLowerCase()) >= 0\n )\n );\n\n focus(): void {\n this.input.current?.focus();\n }\n\n resetValue(): void {\n this.setState({ value: '' });\n }\n\n updateInputValue(value: string): void {\n const { onChange } = this.props;\n this.setState({ value });\n onChange(value);\n }\n\n handleResize(): void {\n this.setInputWidth();\n }\n\n handleMenuKeyDown(event: React.KeyboardEvent): void {\n const { filter, filteredOptions, keyboardOptionIndex } = this.state;\n const { options } = this.props;\n const menuOptions = filter ? filteredOptions : options;\n\n switch (event.key) {\n case 'Enter':\n if (menuOptions[keyboardOptionIndex]?.value != null) {\n this.updateInputValue(menuOptions[keyboardOptionIndex].value);\n }\n this.closeMenu();\n this.input.current?.focus();\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'ArrowUp':\n this.handleMenuNavigation(ComboBox.MENU_NAVIGATION_DIRECTION.UP);\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'ArrowDown':\n this.handleMenuNavigation(ComboBox.MENU_NAVIGATION_DIRECTION.DOWN);\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'Escape':\n if (filter !== '') {\n this.setState({ filter: '' });\n event.stopPropagation(); // Don't trigger blur on input element\n } else {\n this.closeMenu();\n }\n break;\n case 'Tab':\n if (!event.shiftKey && keyboardOptionIndex === menuOptions.length - 1) {\n this.closeMenu();\n }\n break;\n default:\n break;\n }\n }\n\n handleMenuNavigation(direction: MENU_NAVIGATION_DIRECTION): void {\n const { filter, filteredOptions, keyboardOptionIndex } = this.state;\n const { options } = this.props;\n const menuOptions = filter ? filteredOptions : options;\n const menuOptionsLength = menuOptions.length;\n let delta = 0;\n switch (direction) {\n case ComboBox.MENU_NAVIGATION_DIRECTION.UP:\n delta = -1;\n break;\n case ComboBox.MENU_NAVIGATION_DIRECTION.DOWN:\n delta = 1;\n break;\n }\n\n if (delta !== 0) {\n this.setState({\n keyboardOptionIndex:\n (keyboardOptionIndex + delta + menuOptionsLength) % menuOptionsLength,\n });\n }\n }\n\n handleInputKeyDown(event: React.KeyboardEvent): void {\n const { onEnter } = this.props;\n const { menuIsOpen } = this.state;\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n if (!menuIsOpen) {\n this.openMenu();\n }\n } else if (event.key === 'Enter') {\n onEnter();\n }\n }\n\n handleInputChange(event: React.ChangeEvent<HTMLInputElement>): void {\n this.updateInputValue(event.target.value);\n }\n\n handleOptionClick(event: React.MouseEvent<HTMLButtonElement>): void {\n const optionIndex = Number(event.currentTarget.value);\n const { filter, filteredOptions } = this.state;\n const { options } = this.props;\n const menuOptions = filter ? filteredOptions : options;\n\n this.updateInputValue(menuOptions[optionIndex].value);\n this.closeMenu();\n this.input.current?.focus();\n }\n\n handleOptionFocus(event: React.FocusEvent<HTMLButtonElement>): void {\n this.setState({ keyboardOptionIndex: Number(event.target.value) });\n }\n\n handleFilterChange(event: React.ChangeEvent<HTMLInputElement>): void {\n const { options } = this.props;\n const filter = event.target.value;\n const filteredOptions = this.getCachedFilteredOptions(options, filter);\n\n this.setState({\n filter,\n filteredOptions,\n keyboardOptionIndex: 0,\n });\n this.popper.current?.scheduleUpdate();\n }\n\n handleMenuBlur(event: React.FocusEvent): void {\n // close if menu blurs, unless its an internal option or the toggleButton which triggers close via click\n if (\n (event.relatedTarget instanceof Element &&\n this.popper.current != null &&\n this.popper.current.element.contains(event.relatedTarget)) ||\n event.relatedTarget === this.toggleButton.current\n ) {\n return;\n }\n this.closeMenu(false);\n }\n\n handleInputBlur(event: React.FocusEvent<HTMLInputElement>): void {\n // if blur event is caused by focusing on search input or open menu by keyboard, don't close the menu\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 handleMenuOpened(): void {\n this.scrollOptionIntoView();\n this.searchInput.current?.focus();\n }\n\n handleMenuExited(): void {\n const { menuIsOpen } = this.state;\n if (menuIsOpen) {\n this.setState({ menuIsOpen: false });\n this.popper.current?.hide();\n }\n this.setState({ filter: '' });\n }\n\n toggleMenu(event: React.MouseEvent<HTMLButtonElement>): void {\n const { menuIsOpen } = this.state;\n if (menuIsOpen) {\n this.closeMenu();\n } else {\n this.openMenu();\n }\n event.stopPropagation();\n }\n\n openMenu(): void {\n this.updateKeyboardIndex();\n this.setInputWidth();\n this.setState({ menuIsOpen: true });\n\n window.requestAnimationFrame(() => {\n this.popper.current?.show();\n });\n }\n\n closeMenu(focusInput = true): void {\n this.setState({ menuIsOpen: false });\n if (focusInput) {\n this.input.current?.focus();\n }\n this.popper.current?.hide();\n }\n\n updateKeyboardIndex(): void {\n const { value, filter, filteredOptions } = this.state;\n const { options } = this.props;\n const menuOptions = filter ? filteredOptions : options;\n const valueIndex = menuOptions.findIndex(option => option.value === value);\n this.setState({ keyboardOptionIndex: valueIndex });\n }\n\n scrollOptionIntoView(): void {\n const activeOption = this.menuContainer.current?.querySelector(\n '.cb-option-btn.keyboard-active'\n );\n if (activeOption instanceof HTMLElement) {\n activeOption.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n }\n }\n\n renderMenuElement(): JSX.Element {\n const { searchPlaceholder } = this.props;\n const { filter, inputWidth } = this.state;\n return (\n <div\n className=\"cb-menu-container\"\n ref={this.menuContainer}\n role=\"presentation\"\n onKeyDown={this.handleMenuKeyDown}\n onClick={event => {\n event.stopPropagation();\n }}\n style={{ width: inputWidth }}\n onBlur={this.handleMenuBlur}\n >\n <div className=\"cb-search-input-container\">\n <SearchInput\n value={filter}\n ref={this.searchInput}\n onChange={this.handleFilterChange}\n className=\"cb-search-input\"\n placeholder={searchPlaceholder}\n />\n </div>\n <div className=\"cb-options-container\">\n <div className=\"cb-options\">{this.renderOptions()}</div>\n </div>\n </div>\n );\n }\n\n renderOptions(): React.ReactNode {\n const { options } = this.props;\n const { keyboardOptionIndex, filter, filteredOptions } = this.state;\n const menuOptions = filter ? filteredOptions : options;\n\n return menuOptions.map((option, index) => {\n const key = `option-${index}-${option.value}`;\n return (\n <button\n key={key}\n type=\"button\"\n value={index}\n className={classNames('cb-option-btn', {\n 'keyboard-active': keyboardOptionIndex === index,\n })}\n onClick={this.handleOptionClick}\n onFocus={this.handleOptionFocus}\n >\n {option.title}\n </button>\n );\n });\n }\n\n render(): JSX.Element {\n const {\n options,\n inputPlaceholder,\n disabled,\n className,\n defaultValue,\n spellCheck,\n 'data-testid': dataTestId,\n } = this.props;\n const { value } = this.state;\n let { popperOptions } = this.props;\n popperOptions = {\n placement: 'bottom-end',\n modifiers: {\n preventOverflow: { enabled: false },\n },\n ...popperOptions,\n };\n\n return (\n <div className=\"input-group cb-container\" ref={this.cbContainer}>\n <input\n value={value || defaultValue}\n className={classNames('form-control', className, 'cb-input')}\n ref={this.input}\n onChange={this.handleInputChange}\n placeholder={\n inputPlaceholder ||\n (options[0] != null ? options[0].title : undefined)\n }\n disabled={disabled}\n onBlur={this.handleInputBlur}\n onKeyDown={this.handleInputKeyDown}\n spellCheck={spellCheck}\n data-testid={\n dataTestId !== undefined ? `${dataTestId}-input` : undefined\n }\n />\n <div className=\"input-group-append cb-dropdown\">\n <button\n type=\"button\"\n className=\"btn cb-btn form-control\"\n ref={this.toggleButton}\n onClick={this.toggleMenu}\n onKeyDown={this.handleInputKeyDown}\n disabled={disabled}\n data-testid={\n dataTestId !== undefined ? `${dataTestId}-btn` : undefined\n }\n >\n <FontAwesomeIcon icon={vsTriangleDown} />\n <Popper\n ref={this.popper}\n options={popperOptions}\n className={classNames('combobox interactive')}\n onEntered={this.handleMenuOpened}\n onExited={this.handleMenuExited}\n >\n {this.renderMenuElement()}\n </Popper>\n </button>\n </div>\n </div>\n );\n }\n}\n\nexport default ComboBox;\n"],"mappings":"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"}
1
+ {"version":3,"file":"ComboBox.js","names":["React","Component","PropTypes","FontAwesomeIcon","vsTriangleDown","memoize","classNames","SearchInput","Popper","MENU_NAVIGATION_DIRECTION","ComboBox","constructor","props","options","input","filter","option","title","toLowerCase","indexOf","value","state","filteredOptions","keyboardOptionIndex","menuIsOpen","inputWidth","toggleMenu","bind","handleMenuKeyDown","handleMenuBlur","closeMenu","handleInputChange","handleInputKeyDown","handleInputBlur","handleFilterChange","handleOptionClick","handleOptionFocus","handleMenuOpened","handleMenuExited","popper","createRef","cbContainer","toggleButton","menuContainer","searchInput","componentDidUpdate","scrollOptionIntoView","setInputWidth","current","setState","getBoundingClientRect","width","focus","resetValue","updateInputValue","onChange","handleResize","event","menuOptions","key","stopPropagation","preventDefault","handleMenuNavigation","UP","DOWN","shiftKey","length","direction","menuOptionsLength","delta","onEnter","openMenu","target","optionIndex","Number","currentTarget","getCachedFilteredOptions","scheduleUpdate","relatedTarget","Element","element","contains","hide","updateKeyboardIndex","window","requestAnimationFrame","show","focusInput","valueIndex","findIndex","activeOption","querySelector","HTMLElement","scrollIntoView","block","inline","renderMenuElement","searchPlaceholder","renderOptions","map","index","render","inputPlaceholder","disabled","className","defaultValue","spellCheck","dataTestId","popperOptions","placement","modifiers","preventOverflow","enabled","undefined","arrayOf","shape","string","isRequired","func","bool"],"sources":["../src/ComboBox.tsx"],"sourcesContent":["/**\n * Combobox that combines a input box with a searchable dropdown menu\n *\n * props:\n * @param {array} options :[{\n * title: 'option title for display',\n * value: 'option value' //option value\n * }]\n * @param {string} inputPlaceholder place holder for the input box\n * @param {string} searchPlaceholder place holder for the search box in drop down search box\n * @param {boolean} disabled disable both input & drop down\n *\n *\n */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsTriangleDown } from '@deephaven/icons';\nimport memoize from 'memoizee';\nimport classNames from 'classnames';\nimport { PopperOptions } from 'popper.js';\nimport SearchInput from './SearchInput';\nimport { Popper } from './popper';\n\nimport './ComboBox.scss';\n\ninterface ComboBoxOption {\n title: string;\n value: string;\n}\n\ninterface ComboBoxProps {\n options: ComboBoxOption[];\n popperOptions: PopperOptions;\n onChange(value: string): void;\n inputPlaceholder: string;\n searchPlaceholder: string;\n disabled: boolean;\n className: string;\n defaultValue: string;\n spellCheck: boolean;\n onEnter(): void;\n 'data-testid'?: string;\n}\n\ninterface ComboBoxState {\n value: string;\n filter: string;\n filteredOptions: ComboBoxOption[];\n keyboardOptionIndex: number;\n menuIsOpen: boolean;\n inputWidth: number;\n}\n\nenum MENU_NAVIGATION_DIRECTION {\n UP = 'UP',\n DOWN = 'DOWN',\n}\n\nclass ComboBox extends Component<ComboBoxProps, ComboBoxState> {\n static MENU_NAVIGATION_DIRECTION = MENU_NAVIGATION_DIRECTION;\n\n static DROP_DOWN_MENU_HEIGHT = 200;\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 title: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n }),\n onChange: PropTypes.func,\n inputPlaceholder: PropTypes.string,\n searchPlaceholder: PropTypes.string,\n disabled: PropTypes.bool,\n className: PropTypes.string,\n defaultValue: PropTypes.string,\n spellCheck: PropTypes.bool,\n onEnter: PropTypes.func,\n 'data-testid': PropTypes.string,\n };\n\n static defaultProps = {\n onChange(): void {\n // no-op\n },\n inputPlaceholder: '',\n searchPlaceholder: 'Search',\n disabled: false,\n className: '',\n defaultValue: '',\n popperOptions: null,\n spellCheck: true,\n onEnter(): void {\n // no-op\n },\n 'data-testid': undefined,\n };\n\n constructor(props: ComboBoxProps) {\n super(props);\n this.state = {\n value: '',\n filter: '',\n filteredOptions: props.options,\n keyboardOptionIndex: -1,\n menuIsOpen: false,\n inputWidth: 100,\n };\n\n this.toggleMenu = this.toggleMenu.bind(this);\n this.handleMenuKeyDown = this.handleMenuKeyDown.bind(this);\n this.handleMenuBlur = this.handleMenuBlur.bind(this);\n this.closeMenu = this.closeMenu.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.handleFilterChange = this.handleFilterChange.bind(this);\n\n this.handleOptionClick = this.handleOptionClick.bind(this);\n this.handleOptionFocus = this.handleOptionFocus.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.toggleButton = React.createRef();\n this.menuContainer = React.createRef();\n this.input = React.createRef();\n this.searchInput = React.createRef();\n }\n\n componentDidUpdate(): void {\n const { menuIsOpen, keyboardOptionIndex } = this.state;\n if (menuIsOpen && keyboardOptionIndex >= 0) {\n this.scrollOptionIntoView();\n }\n }\n\n popper: React.RefObject<Popper>;\n\n cbContainer: React.RefObject<HTMLDivElement>;\n\n toggleButton: React.RefObject<HTMLButtonElement>;\n\n menuContainer: React.RefObject<HTMLDivElement>;\n\n input: React.RefObject<HTMLInputElement>;\n\n searchInput: React.RefObject<SearchInput>;\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: ComboBoxOption[], input: string) =>\n options.filter(\n option =>\n option.title.toLowerCase().indexOf(input.toLowerCase()) >= 0 ||\n option.value.toLowerCase().indexOf(input.toLowerCase()) >= 0\n )\n );\n\n focus(): void {\n this.input.current?.focus();\n }\n\n resetValue(): void {\n this.setState({ value: '' });\n }\n\n updateInputValue(value: string): void {\n const { onChange } = this.props;\n this.setState({ value });\n onChange(value);\n }\n\n handleResize(): void {\n this.setInputWidth();\n }\n\n handleMenuKeyDown(event: React.KeyboardEvent): void {\n const { filter, filteredOptions, keyboardOptionIndex } = this.state;\n const { options } = this.props;\n const menuOptions = filter ? filteredOptions : options;\n\n switch (event.key) {\n case 'Enter':\n if (menuOptions[keyboardOptionIndex]?.value != null) {\n this.updateInputValue(menuOptions[keyboardOptionIndex].value);\n }\n this.closeMenu();\n this.input.current?.focus();\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'ArrowUp':\n this.handleMenuNavigation(ComboBox.MENU_NAVIGATION_DIRECTION.UP);\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'ArrowDown':\n this.handleMenuNavigation(ComboBox.MENU_NAVIGATION_DIRECTION.DOWN);\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'Escape':\n if (filter !== '') {\n this.setState({ filter: '' });\n event.stopPropagation(); // Don't trigger blur on input element\n } else {\n this.closeMenu();\n }\n break;\n case 'Tab':\n if (!event.shiftKey && keyboardOptionIndex === menuOptions.length - 1) {\n this.closeMenu();\n }\n break;\n default:\n break;\n }\n }\n\n handleMenuNavigation(direction: MENU_NAVIGATION_DIRECTION): void {\n const { filter, filteredOptions, keyboardOptionIndex } = this.state;\n const { options } = this.props;\n const menuOptions = filter ? filteredOptions : options;\n const menuOptionsLength = menuOptions.length;\n let delta = 0;\n switch (direction) {\n case ComboBox.MENU_NAVIGATION_DIRECTION.UP:\n delta = -1;\n break;\n case ComboBox.MENU_NAVIGATION_DIRECTION.DOWN:\n delta = 1;\n break;\n }\n\n if (delta !== 0) {\n this.setState({\n keyboardOptionIndex:\n (keyboardOptionIndex + delta + menuOptionsLength) % menuOptionsLength,\n });\n }\n }\n\n handleInputKeyDown(event: React.KeyboardEvent): void {\n const { onEnter } = this.props;\n const { menuIsOpen } = this.state;\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n if (!menuIsOpen) {\n this.openMenu();\n }\n } else if (event.key === 'Enter') {\n onEnter();\n }\n }\n\n handleInputChange(event: React.ChangeEvent<HTMLInputElement>): void {\n this.updateInputValue(event.target.value);\n }\n\n handleOptionClick(event: React.MouseEvent<HTMLButtonElement>): void {\n const optionIndex = Number(event.currentTarget.value);\n const { filter, filteredOptions } = this.state;\n const { options } = this.props;\n const menuOptions = filter ? filteredOptions : options;\n\n this.updateInputValue(menuOptions[optionIndex].value);\n this.closeMenu();\n this.input.current?.focus();\n }\n\n handleOptionFocus(event: React.FocusEvent<HTMLButtonElement>): void {\n this.setState({ keyboardOptionIndex: Number(event.target.value) });\n }\n\n handleFilterChange(event: React.ChangeEvent<HTMLInputElement>): void {\n const { options } = this.props;\n const filter = event.target.value;\n const filteredOptions = this.getCachedFilteredOptions(options, filter);\n\n this.setState({\n filter,\n filteredOptions,\n keyboardOptionIndex: 0,\n });\n this.popper.current?.scheduleUpdate();\n }\n\n handleMenuBlur(event: React.FocusEvent): void {\n // close if menu blurs, unless its an internal option or the toggleButton which triggers close via click\n if (\n (event.relatedTarget instanceof Element &&\n this.popper.current != null &&\n this.popper.current.element.contains(event.relatedTarget)) ||\n event.relatedTarget === this.toggleButton.current\n ) {\n return;\n }\n this.closeMenu(false);\n }\n\n handleInputBlur(event: React.FocusEvent<HTMLInputElement>): void {\n // if blur event is caused by focusing on search input or open menu by keyboard, don't close the menu\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 handleMenuOpened(): void {\n this.scrollOptionIntoView();\n this.searchInput.current?.focus();\n }\n\n handleMenuExited(): void {\n const { menuIsOpen } = this.state;\n if (menuIsOpen) {\n this.setState({ menuIsOpen: false });\n this.popper.current?.hide();\n }\n this.setState({ filter: '' });\n }\n\n toggleMenu(event: React.MouseEvent<HTMLButtonElement>): void {\n const { menuIsOpen } = this.state;\n if (menuIsOpen) {\n this.closeMenu();\n } else {\n this.openMenu();\n }\n event.stopPropagation();\n }\n\n openMenu(): void {\n this.updateKeyboardIndex();\n this.setInputWidth();\n this.setState({ menuIsOpen: true });\n\n window.requestAnimationFrame(() => {\n this.popper.current?.show();\n });\n }\n\n closeMenu(focusInput = true): void {\n this.setState({ menuIsOpen: false });\n if (focusInput) {\n this.input.current?.focus();\n }\n this.popper.current?.hide();\n }\n\n updateKeyboardIndex(): void {\n const { value, filter, filteredOptions } = this.state;\n const { options } = this.props;\n const menuOptions = filter ? filteredOptions : options;\n const valueIndex = menuOptions.findIndex(option => option.value === value);\n this.setState({ keyboardOptionIndex: valueIndex });\n }\n\n scrollOptionIntoView(): void {\n const activeOption = this.menuContainer.current?.querySelector(\n '.cb-option-btn.keyboard-active'\n );\n if (activeOption instanceof HTMLElement) {\n activeOption.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n }\n }\n\n renderMenuElement(): JSX.Element {\n const { searchPlaceholder } = this.props;\n const { filter, inputWidth } = this.state;\n return (\n <div\n className=\"cb-menu-container\"\n ref={this.menuContainer}\n role=\"presentation\"\n onKeyDown={this.handleMenuKeyDown}\n onClick={event => {\n event.stopPropagation();\n }}\n style={{ width: inputWidth }}\n onBlur={this.handleMenuBlur}\n >\n <div className=\"cb-search-input-container\">\n <SearchInput\n value={filter}\n ref={this.searchInput}\n onChange={this.handleFilterChange}\n className=\"cb-search-input\"\n placeholder={searchPlaceholder}\n />\n </div>\n <div className=\"cb-options-container\">\n <div className=\"cb-options\">{this.renderOptions()}</div>\n </div>\n </div>\n );\n }\n\n renderOptions(): React.ReactNode {\n const { options } = this.props;\n const { keyboardOptionIndex, filter, filteredOptions } = this.state;\n const menuOptions = filter ? filteredOptions : options;\n\n return menuOptions.map((option, index) => {\n const key = `option-${index}-${option.value}`;\n return (\n <button\n key={key}\n type=\"button\"\n value={index}\n className={classNames('cb-option-btn', {\n 'keyboard-active': keyboardOptionIndex === index,\n })}\n onClick={this.handleOptionClick}\n onFocus={this.handleOptionFocus}\n >\n {option.title}\n </button>\n );\n });\n }\n\n render(): JSX.Element {\n const {\n options,\n inputPlaceholder,\n disabled,\n className,\n defaultValue,\n spellCheck,\n 'data-testid': dataTestId,\n } = this.props;\n const { value } = this.state;\n let { popperOptions } = this.props;\n popperOptions = {\n placement: 'bottom-end',\n modifiers: {\n preventOverflow: { enabled: false },\n },\n ...popperOptions,\n };\n\n return (\n <div className=\"input-group cb-container\" ref={this.cbContainer}>\n <input\n value={value || defaultValue}\n className={classNames('form-control', className, 'cb-input')}\n ref={this.input}\n onChange={this.handleInputChange}\n placeholder={\n inputPlaceholder ||\n (options[0] != null ? options[0].title : undefined)\n }\n disabled={disabled}\n onBlur={this.handleInputBlur}\n onKeyDown={this.handleInputKeyDown}\n spellCheck={spellCheck}\n data-testid={\n dataTestId !== undefined ? `${dataTestId}-input` : undefined\n }\n />\n <div className=\"input-group-append cb-dropdown\">\n <button\n type=\"button\"\n className=\"btn cb-btn form-control\"\n ref={this.toggleButton}\n onClick={this.toggleMenu}\n onKeyDown={this.handleInputKeyDown}\n disabled={disabled}\n data-testid={\n dataTestId !== undefined ? `${dataTestId}-btn` : undefined\n }\n >\n <FontAwesomeIcon icon={vsTriangleDown} />\n <Popper\n ref={this.popper}\n options={popperOptions}\n className={classNames('combobox interactive')}\n onEntered={this.handleMenuOpened}\n onExited={this.handleMenuExited}\n >\n {this.renderMenuElement()}\n </Popper>\n </button>\n </div>\n </div>\n );\n }\n}\n\nexport default ComboBox;\n"],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import { ButtonKind } from './Button';
3
+ type CopyButtonProps = {
4
+ /** The value to copy when clicked, accepts string or function returning a string. */
5
+ copy: string | (() => string);
6
+ /** The kind of button */
7
+ kind?: ButtonKind;
8
+ /** Optional tooltip label ex. 'Copy column name' */
9
+ tooltip?: string;
10
+ /** Optional extra classname */
11
+ className?: string;
12
+ /** Optional extra testid */
13
+ 'data-testid'?: string;
14
+ /** Optional button children */
15
+ children?: React.ReactNode;
16
+ };
17
+ /**
18
+ * Button that has a copy icon, and copies text to a clipboard when clicked.
19
+ */
20
+ declare function CopyButton({ copy, kind, tooltip, className, 'data-testid': dataTestId, children, }: CopyButtonProps): JSX.Element;
21
+ export default CopyButton;
22
+ //# sourceMappingURL=CopyButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CopyButton.d.ts","sourceRoot":"","sources":["../src/CopyButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAe,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE9C,KAAK,eAAe,GAAG;IACrB,qFAAqF;IACrF,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IAC9B,yBAAyB;IACzB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEF;;GAEG;AACH,iBAAS,UAAU,CAAC,EAClB,IAAI,EACJ,IAAc,EACd,OAAgB,EAChB,SAAS,EACT,aAAa,EAAE,UAAU,EACzB,QAAQ,GACT,EAAE,eAAe,GAAG,GAAG,CAAC,OAAO,CAgB/B;AAED,eAAe,UAAU,CAAC"}
@@ -0,0 +1,30 @@
1
+ import React from 'react';
2
+ import { vsPassFilled, vsCopy } from '@deephaven/icons';
3
+ import { useCopyToClipboard } from '@deephaven/react-hooks';
4
+ import Button from "./Button.js";
5
+ /**
6
+ * Button that has a copy icon, and copies text to a clipboard when clicked.
7
+ */
8
+ function CopyButton(_ref) {
9
+ var {
10
+ copy,
11
+ kind = 'ghost',
12
+ tooltip = 'Copy',
13
+ className,
14
+ 'data-testid': dataTestId,
15
+ children
16
+ } = _ref;
17
+ var [copied, copyToClipboard] = useCopyToClipboard();
18
+ return /*#__PURE__*/React.createElement(Button, {
19
+ kind: kind,
20
+ className: className,
21
+ "data-testid": dataTestId,
22
+ icon: copied ? vsPassFilled : vsCopy,
23
+ tooltip: copied ? 'Copied' : tooltip,
24
+ onClick: () => {
25
+ copyToClipboard(typeof copy === 'function' ? copy() : copy);
26
+ }
27
+ }, children);
28
+ }
29
+ export default CopyButton;
30
+ //# sourceMappingURL=CopyButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CopyButton.js","names":["React","vsPassFilled","vsCopy","useCopyToClipboard","Button","CopyButton","copy","kind","tooltip","className","dataTestId","children","copied","copyToClipboard"],"sources":["../src/CopyButton.tsx"],"sourcesContent":["import React from 'react';\nimport { vsPassFilled, vsCopy } from '@deephaven/icons';\nimport { useCopyToClipboard } from '@deephaven/react-hooks';\nimport Button, { ButtonKind } from './Button';\n\ntype CopyButtonProps = {\n /** The value to copy when clicked, accepts string or function returning a string. */\n copy: string | (() => string);\n /** The kind of button */\n kind?: ButtonKind;\n /** Optional tooltip label ex. 'Copy column name' */\n tooltip?: string;\n /** Optional extra classname */\n className?: string;\n /** Optional extra testid */\n 'data-testid'?: string;\n /** Optional button children */\n children?: React.ReactNode;\n};\n\n/**\n * Button that has a copy icon, and copies text to a clipboard when clicked.\n */\nfunction CopyButton({\n copy,\n kind = 'ghost',\n tooltip = 'Copy',\n className,\n 'data-testid': dataTestId,\n children,\n}: CopyButtonProps): JSX.Element {\n const [copied, copyToClipboard] = useCopyToClipboard();\n return (\n <Button\n kind={kind}\n className={className}\n data-testid={dataTestId}\n icon={copied ? vsPassFilled : vsCopy}\n tooltip={copied ? 'Copied' : tooltip}\n onClick={() => {\n copyToClipboard(typeof copy === 'function' ? copy() : copy);\n }}\n >\n {children}\n </Button>\n );\n}\n\nexport default CopyButton;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,YAAY,EAAEC,MAAM,QAAQ,kBAAkB;AACvD,SAASC,kBAAkB,QAAQ,wBAAwB;AAAC,OACrDC,MAAM;AAiBb;AACA;AACA;AACA,SAASC,UAAU,OAOc;EAAA,IAPb;IAClBC,IAAI;IACJC,IAAI,GAAG,OAAO;IACdC,OAAO,GAAG,MAAM;IAChBC,SAAS;IACT,aAAa,EAAEC,UAAU;IACzBC;EACe,CAAC;EAChB,IAAM,CAACC,MAAM,EAAEC,eAAe,CAAC,GAAGV,kBAAkB,EAAE;EACtD,oBACE,oBAAC,MAAM;IACL,IAAI,EAAEI,IAAK;IACX,SAAS,EAAEE,SAAU;IACrB,eAAaC,UAAW;IACxB,IAAI,EAAEE,MAAM,GAAGX,YAAY,GAAGC,MAAO;IACrC,OAAO,EAAEU,MAAM,GAAG,QAAQ,GAAGJ,OAAQ;IACrC,OAAO,EAAE,MAAM;MACbK,eAAe,CAAC,OAAOP,IAAI,KAAK,UAAU,GAAGA,IAAI,EAAE,GAAGA,IAAI,CAAC;IAC7D;EAAE,GAEDK,QAAQ,CACF;AAEb;AAEA,eAAeN,UAAU"}
@@ -7,7 +7,7 @@ declare enum MENU_NAVIGATION_DIRECTION {
7
7
  UP = "UP",
8
8
  DOWN = "DOWN"
9
9
  }
10
- declare type CustomTimeSelectProps = {
10
+ type CustomTimeSelectProps = {
11
11
  options: {
12
12
  title: string;
13
13
  value: number;
@@ -24,8 +24,8 @@ declare type CustomTimeSelectProps = {
24
24
  invalid: boolean;
25
25
  'data-testid'?: string;
26
26
  };
27
- declare type TimeInSeconds = number;
28
- declare type CustomTimeSelectState = {
27
+ type TimeInSeconds = number;
28
+ type CustomTimeSelectState = {
29
29
  keyboardOptionIndex: number;
30
30
  menuIsOpen: boolean;
31
31
  inputWidth: number;
@@ -1 +1 @@
1
- {"version":3,"file":"CustomTimeSelect.d.ts","sourceRoot":"","sources":["../src/CustomTimeSelect.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CustomTimeSelect.d.ts","sourceRoot":"","sources":["../src/CustomTimeSelect.tsx"],"names":[],"mappings":"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"}