@deephaven/components 1.7.2-beta.1 → 1.7.2-react-18-alpha.3

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 (278) hide show
  1. package/dist/AutoCompleteInput.d.ts +0 -17
  2. package/dist/AutoCompleteInput.d.ts.map +1 -1
  3. package/dist/AutoCompleteInput.js +12 -31
  4. package/dist/AutoCompleteInput.js.map +1 -1
  5. package/dist/AutoResizeTextarea.d.ts +0 -23
  6. package/dist/AutoResizeTextarea.d.ts.map +1 -1
  7. package/dist/AutoResizeTextarea.js +0 -21
  8. package/dist/AutoResizeTextarea.js.map +1 -1
  9. package/dist/BasicModal.d.ts +0 -27
  10. package/dist/BasicModal.d.ts.map +1 -1
  11. package/dist/BasicModal.js +2 -28
  12. package/dist/BasicModal.js.map +1 -1
  13. package/dist/BulkActionBar.js.map +1 -1
  14. package/dist/Button.d.ts +1 -1
  15. package/dist/Button.d.ts.map +1 -1
  16. package/dist/Button.js +2 -79
  17. package/dist/Button.js.map +1 -1
  18. package/dist/CardFlip.d.ts.map +1 -1
  19. package/dist/CardFlip.js +1 -2
  20. package/dist/CardFlip.js.map +1 -1
  21. package/dist/Checkbox.d.ts.map +1 -1
  22. package/dist/Checkbox.js +3 -45
  23. package/dist/Checkbox.js.map +1 -1
  24. package/dist/Collapse.d.ts +0 -8
  25. package/dist/Collapse.d.ts.map +1 -1
  26. package/dist/Collapse.js +0 -8
  27. package/dist/Collapse.js.map +1 -1
  28. package/dist/ComponentUtils.js.map +1 -1
  29. package/dist/CopyButton.js.map +1 -1
  30. package/dist/CustomTimeSelect.js +14 -15
  31. package/dist/CustomTimeSelect.js.map +1 -1
  32. package/dist/DateInput.js.map +1 -1
  33. package/dist/DateInputUtils.js.map +1 -1
  34. package/dist/DateTimeInput.d.ts.map +1 -1
  35. package/dist/DateTimeInput.js +0 -8
  36. package/dist/DateTimeInput.js.map +1 -1
  37. package/dist/DateTimeInputUtils.js.map +1 -1
  38. package/dist/DebouncedSearchInput.js +1 -1
  39. package/dist/DebouncedSearchInput.js.map +1 -1
  40. package/dist/DragUtils.js.map +1 -1
  41. package/dist/DraggableItemList.d.ts +2 -2
  42. package/dist/DraggableItemList.d.ts.map +1 -1
  43. package/dist/DraggableItemList.js +8 -7
  44. package/dist/DraggableItemList.js.map +1 -1
  45. package/dist/EditableItemList.js +1 -2
  46. package/dist/EditableItemList.js.map +1 -1
  47. package/dist/ErrorBoundary.js +1 -1
  48. package/dist/ErrorBoundary.js.map +1 -1
  49. package/dist/ErrorView.js +1 -2
  50. package/dist/ErrorView.js.map +1 -1
  51. package/dist/HierarchicalCheckboxMenu.d.ts +1 -1
  52. package/dist/HierarchicalCheckboxMenu.d.ts.map +1 -1
  53. package/dist/HierarchicalCheckboxMenu.js +1 -2
  54. package/dist/HierarchicalCheckboxMenu.js.map +1 -1
  55. package/dist/ItemList.d.ts +1 -1
  56. package/dist/ItemList.d.ts.map +1 -1
  57. package/dist/ItemList.js +14 -14
  58. package/dist/ItemList.js.map +1 -1
  59. package/dist/ItemListItem.js.map +1 -1
  60. package/dist/LoadingOverlay.js +1 -2
  61. package/dist/LoadingOverlay.js.map +1 -1
  62. package/dist/LoadingSpinner.js.map +1 -1
  63. package/dist/MaskedInput.d.ts.map +1 -1
  64. package/dist/MaskedInput.js +11 -31
  65. package/dist/MaskedInput.js.map +1 -1
  66. package/dist/MaskedInputUtils.js.map +1 -1
  67. package/dist/Option.js.map +1 -1
  68. package/dist/RadioGroup.js +1 -2
  69. package/dist/RadioGroup.js.map +1 -1
  70. package/dist/RadioItem.d.ts.map +1 -1
  71. package/dist/RadioItem.js +1 -13
  72. package/dist/RadioItem.js.map +1 -1
  73. package/dist/RandomAreaPlotAnimation.d.ts +1 -1
  74. package/dist/RandomAreaPlotAnimation.d.ts.map +1 -1
  75. package/dist/RandomAreaPlotAnimation.js +5 -8
  76. package/dist/RandomAreaPlotAnimation.js.map +1 -1
  77. package/dist/SearchInput.js +3 -5
  78. package/dist/SearchInput.js.map +1 -1
  79. package/dist/SearchableCombobox.js.map +1 -1
  80. package/dist/Select.d.ts +1 -1
  81. package/dist/Select.d.ts.map +1 -1
  82. package/dist/Select.js.map +1 -1
  83. package/dist/SelectValueList.js +9 -9
  84. package/dist/SelectValueList.js.map +1 -1
  85. package/dist/SocketedButton.d.ts +4 -4
  86. package/dist/SocketedButton.d.ts.map +1 -1
  87. package/dist/SocketedButton.js +5 -20
  88. package/dist/SocketedButton.js.map +1 -1
  89. package/dist/SplitButtonGroup.d.ts +2 -18
  90. package/dist/SplitButtonGroup.d.ts.map +1 -1
  91. package/dist/SplitButtonGroup.js +0 -13
  92. package/dist/SplitButtonGroup.js.map +1 -1
  93. package/dist/TableViewEmptyState.js +1 -2
  94. package/dist/TableViewEmptyState.js.map +1 -1
  95. package/dist/TextWithTooltip.js +1 -3
  96. package/dist/TextWithTooltip.js.map +1 -1
  97. package/dist/ThemeExport.js.map +1 -1
  98. package/dist/TimeInput.d.ts.map +1 -1
  99. package/dist/TimeInput.js +7 -17
  100. package/dist/TimeInput.js.map +1 -1
  101. package/dist/TimeSlider.js +3 -6
  102. package/dist/TimeSlider.js.map +1 -1
  103. package/dist/ToastNotification.d.ts +1 -2
  104. package/dist/ToastNotification.d.ts.map +1 -1
  105. package/dist/ToastNotification.js +1 -2
  106. package/dist/ToastNotification.js.map +1 -1
  107. package/dist/UIConstants.js.map +1 -1
  108. package/dist/UISwitch.d.ts.map +1 -1
  109. package/dist/UISwitch.js +18 -14
  110. package/dist/UISwitch.js.map +1 -1
  111. package/dist/XComponent.d.ts +1 -1
  112. package/dist/XComponent.d.ts.map +1 -1
  113. package/dist/XComponent.js.map +1 -1
  114. package/dist/XComponentMap.d.ts +2 -2
  115. package/dist/XComponentMap.d.ts.map +1 -1
  116. package/dist/XComponentMap.js.map +1 -1
  117. package/dist/actions/ConfirmActionButton.js.map +1 -1
  118. package/dist/actions/IconActionButton.js +1 -2
  119. package/dist/actions/IconActionButton.js.map +1 -1
  120. package/dist/actions/index.js.map +1 -1
  121. package/dist/context-actions/ContextActionUtils.js.map +1 -1
  122. package/dist/context-actions/ContextActions.d.ts +1 -2
  123. package/dist/context-actions/ContextActions.d.ts.map +1 -1
  124. package/dist/context-actions/ContextActions.js +22 -22
  125. package/dist/context-actions/ContextActions.js.map +1 -1
  126. package/dist/context-actions/ContextMenu.js +5 -7
  127. package/dist/context-actions/ContextMenu.js.map +1 -1
  128. package/dist/context-actions/ContextMenuItem.d.ts.map +1 -1
  129. package/dist/context-actions/ContextMenuItem.js +21 -43
  130. package/dist/context-actions/ContextMenuItem.js.map +1 -1
  131. package/dist/context-actions/ContextMenuRoot.js +1 -1
  132. package/dist/context-actions/ContextMenuRoot.js.map +1 -1
  133. package/dist/context-actions/GlobalContextAction.js +1 -1
  134. package/dist/context-actions/GlobalContextAction.js.map +1 -1
  135. package/dist/context-actions/GlobalContextActions.js.map +1 -1
  136. package/dist/context-actions/index.js.map +1 -1
  137. package/dist/declaration.d.js.map +1 -1
  138. package/dist/dialogs/ActionButtonDialogTrigger.js +1 -2
  139. package/dist/dialogs/ActionButtonDialogTrigger.js.map +1 -1
  140. package/dist/dialogs/ConfirmationDialog.js +1 -2
  141. package/dist/dialogs/ConfirmationDialog.js.map +1 -1
  142. package/dist/dialogs/index.js.map +1 -1
  143. package/dist/index.js.map +1 -1
  144. package/dist/menu-actions/DropdownMenu.js +2 -2
  145. package/dist/menu-actions/DropdownMenu.js.map +1 -1
  146. package/dist/menu-actions/Menu.js +4 -6
  147. package/dist/menu-actions/Menu.js.map +1 -1
  148. package/dist/menu-actions/index.js.map +1 -1
  149. package/dist/modal/DebouncedModal.js +1 -3
  150. package/dist/modal/DebouncedModal.js.map +1 -1
  151. package/dist/modal/InfoModal.js +1 -2
  152. package/dist/modal/InfoModal.js.map +1 -1
  153. package/dist/modal/Modal.js +2 -3
  154. package/dist/modal/Modal.js.map +1 -1
  155. package/dist/modal/ModalBody.js.map +1 -1
  156. package/dist/modal/ModalFooter.js.map +1 -1
  157. package/dist/modal/ModalHeader.js +1 -2
  158. package/dist/modal/ModalHeader.js.map +1 -1
  159. package/dist/modal/index.js.map +1 -1
  160. package/dist/navigation/DashboardList.js +3 -4
  161. package/dist/navigation/DashboardList.js.map +1 -1
  162. package/dist/navigation/Menu.js.map +1 -1
  163. package/dist/navigation/MenuItem.js +1 -2
  164. package/dist/navigation/MenuItem.js.map +1 -1
  165. package/dist/navigation/NavTab.d.ts +1 -1
  166. package/dist/navigation/NavTab.d.ts.map +1 -1
  167. package/dist/navigation/NavTab.js +4 -5
  168. package/dist/navigation/NavTab.js.map +1 -1
  169. package/dist/navigation/NavTabList.js +4 -5
  170. package/dist/navigation/NavTabList.js.map +1 -1
  171. package/dist/navigation/Page.js +1 -2
  172. package/dist/navigation/Page.js.map +1 -1
  173. package/dist/navigation/Stack.js +1 -3
  174. package/dist/navigation/Stack.js.map +1 -1
  175. package/dist/navigation/index.js.map +1 -1
  176. package/dist/popper/Popper.d.ts +1 -14
  177. package/dist/popper/Popper.d.ts.map +1 -1
  178. package/dist/popper/Popper.js +18 -29
  179. package/dist/popper/Popper.js.map +1 -1
  180. package/dist/popper/Tooltip.d.ts.map +1 -1
  181. package/dist/popper/Tooltip.js +18 -12
  182. package/dist/popper/Tooltip.js.map +1 -1
  183. package/dist/popper/index.js.map +1 -1
  184. package/dist/shortcuts/GlobalShortcuts.js.map +1 -1
  185. package/dist/shortcuts/NavigationShortcuts.js.map +1 -1
  186. package/dist/shortcuts/Shortcut.js +11 -13
  187. package/dist/shortcuts/Shortcut.js.map +1 -1
  188. package/dist/shortcuts/ShortcutRegistry.js +1 -1
  189. package/dist/shortcuts/ShortcutRegistry.js.map +1 -1
  190. package/dist/shortcuts/index.js.map +1 -1
  191. package/dist/spectrum/ActionGroup.js.map +1 -1
  192. package/dist/spectrum/ActionMenu.js.map +1 -1
  193. package/dist/spectrum/CheckboxGroup.js.map +1 -1
  194. package/dist/spectrum/Heading.js.map +1 -1
  195. package/dist/spectrum/ItemContent.js +2 -4
  196. package/dist/spectrum/ItemContent.js.map +1 -1
  197. package/dist/spectrum/ItemTooltip.js.map +1 -1
  198. package/dist/spectrum/ListActionGroup.js.map +1 -1
  199. package/dist/spectrum/ListActionMenu.js.map +1 -1
  200. package/dist/spectrum/TabPanels.d.ts.map +1 -1
  201. package/dist/spectrum/TabPanels.js +8 -5
  202. package/dist/spectrum/TabPanels.js.map +1 -1
  203. package/dist/spectrum/Text.js.map +1 -1
  204. package/dist/spectrum/View.js.map +1 -1
  205. package/dist/spectrum/buttons.js.map +1 -1
  206. package/dist/spectrum/collections.js.map +1 -1
  207. package/dist/spectrum/comboBox/ComboBox.js.map +1 -1
  208. package/dist/spectrum/comboBox/ComboBoxNormalized.js.map +1 -1
  209. package/dist/spectrum/comboBox/index.js.map +1 -1
  210. package/dist/spectrum/content.js.map +1 -1
  211. package/dist/spectrum/dateAndTime.js.map +1 -1
  212. package/dist/spectrum/forms.js.map +1 -1
  213. package/dist/spectrum/icons.js.map +1 -1
  214. package/dist/spectrum/index.js.map +1 -1
  215. package/dist/spectrum/layout.js.map +1 -1
  216. package/dist/spectrum/listView/ListView.js.map +1 -1
  217. package/dist/spectrum/listView/ListViewNormalized.js +1 -2
  218. package/dist/spectrum/listView/ListViewNormalized.js.map +1 -1
  219. package/dist/spectrum/listView/ListViewWrapper.js.map +1 -1
  220. package/dist/spectrum/listView/index.js.map +1 -1
  221. package/dist/spectrum/navigation.js.map +1 -1
  222. package/dist/spectrum/overlays.js.map +1 -1
  223. package/dist/spectrum/picker/Picker.js.map +1 -1
  224. package/dist/spectrum/picker/PickerNormalized.js.map +1 -1
  225. package/dist/spectrum/picker/PickerProps.js.map +1 -1
  226. package/dist/spectrum/picker/index.js.map +1 -1
  227. package/dist/spectrum/picker/usePickerItemScale.js.map +1 -1
  228. package/dist/spectrum/picker/usePickerNormalizedProps.d.ts +1 -2
  229. package/dist/spectrum/picker/usePickerNormalizedProps.d.ts.map +1 -1
  230. package/dist/spectrum/picker/usePickerNormalizedProps.js.map +1 -1
  231. package/dist/spectrum/picker/usePickerProps.js.map +1 -1
  232. package/dist/spectrum/picker/usePickerScrollOnOpen.js +1 -1
  233. package/dist/spectrum/picker/usePickerScrollOnOpen.js.map +1 -1
  234. package/dist/spectrum/shared.js.map +1 -1
  235. package/dist/spectrum/status.js.map +1 -1
  236. package/dist/spectrum/utils/index.js.map +1 -1
  237. package/dist/spectrum/utils/itemUtils.d.ts +2 -2
  238. package/dist/spectrum/utils/itemUtils.d.ts.map +1 -1
  239. package/dist/spectrum/utils/itemUtils.js +5 -1
  240. package/dist/spectrum/utils/itemUtils.js.map +1 -1
  241. package/dist/spectrum/utils/itemWrapperUtils.js +3 -4
  242. package/dist/spectrum/utils/itemWrapperUtils.js.map +1 -1
  243. package/dist/spectrum/utils/propsUtils.js.map +1 -1
  244. package/dist/spectrum/utils/themeUtils.js.map +1 -1
  245. package/dist/spectrum/utils/useOnChangeTrackUncontrolled.js +1 -1
  246. package/dist/spectrum/utils/useOnChangeTrackUncontrolled.js.map +1 -1
  247. package/dist/spectrum/utils/useRenderNormalizedItem.js +1 -2
  248. package/dist/spectrum/utils/useRenderNormalizedItem.js.map +1 -1
  249. package/dist/spectrum/utils/useStaticItemInitialScrollPosition.js +1 -1
  250. package/dist/spectrum/utils/useStaticItemInitialScrollPosition.js.map +1 -1
  251. package/dist/spectrum/utils/useStringifiedMultiSelection.d.ts +1 -1
  252. package/dist/spectrum/utils/useStringifiedMultiSelection.d.ts.map +1 -1
  253. package/dist/spectrum/utils/useStringifiedMultiSelection.js.map +1 -1
  254. package/dist/spectrum/utils/useStringifiedSelection.d.ts +1 -1
  255. package/dist/spectrum/utils/useStringifiedSelection.d.ts.map +1 -1
  256. package/dist/spectrum/utils/useStringifiedSelection.js.map +1 -1
  257. package/dist/theme/Logo.js.map +1 -1
  258. package/dist/theme/SpectrumThemeProvider.js.map +1 -1
  259. package/dist/theme/ThemeModel.js +1 -0
  260. package/dist/theme/ThemeModel.js.map +1 -1
  261. package/dist/theme/ThemePicker.d.ts.map +1 -1
  262. package/dist/theme/ThemePicker.js +3 -1
  263. package/dist/theme/ThemePicker.js.map +1 -1
  264. package/dist/theme/ThemeProvider.js +1 -3
  265. package/dist/theme/ThemeProvider.js.map +1 -1
  266. package/dist/theme/ThemeUtils.js.map +1 -1
  267. package/dist/theme/colorUtils.js.map +1 -1
  268. package/dist/theme/index.js.map +1 -1
  269. package/dist/theme/theme-dark/index.js.map +1 -1
  270. package/dist/theme/theme-light/index.js.map +1 -1
  271. package/dist/theme/theme-spectrum/index.js.map +1 -1
  272. package/dist/theme/useExternalTheme.js.map +1 -1
  273. package/dist/theme/useSpectrumThemeProvider.js.map +1 -1
  274. package/dist/theme/useTheme.js.map +1 -1
  275. package/dist/transitions/FadeTransition.js.map +1 -1
  276. package/dist/transitions/SlideTransition.js.map +1 -1
  277. package/dist/transitions/index.js.map +1 -1
  278. package/package.json +12 -13
@@ -17,7 +17,6 @@
17
17
  *
18
18
  */
19
19
  import React, { Component } from 'react';
20
- import PropTypes from 'prop-types';
21
20
  import memoize from 'memoizee';
22
21
  import { type PopperOptions } from 'popper.js';
23
22
  import { Popper } from './popper';
@@ -53,22 +52,6 @@ interface AutoCompleteInputState {
53
52
  popperOptions: PopperOptions;
54
53
  }
55
54
  declare class AutoCompleteInput extends Component<AutoCompleteInputProps, AutoCompleteInputState> {
56
- static propTypes: {
57
- options: PropTypes.Validator<(PropTypes.InferProps<{
58
- title: PropTypes.Validator<string>;
59
- value: PropTypes.Validator<string>;
60
- }> | null | undefined)[]>;
61
- popperOptions: PropTypes.Requireable<PropTypes.InferProps<{}>>;
62
- onChange: PropTypes.Requireable<(...args: any[]) => any>;
63
- inputPlaceholder: PropTypes.Requireable<string>;
64
- disabled: PropTypes.Requireable<boolean>;
65
- className: PropTypes.Requireable<string>;
66
- defaultTitle: PropTypes.Requireable<string>;
67
- spellCheck: PropTypes.Requireable<boolean>;
68
- onEnter: PropTypes.Requireable<(...args: any[]) => any>;
69
- noMatchText: PropTypes.Requireable<string>;
70
- 'data-testid': PropTypes.Requireable<string>;
71
- };
72
55
  static defaultProps: {
73
56
  onChange(): void;
74
57
  inputPlaceholder: string;
@@ -1 +1 @@
1
- {"version":3,"file":"AutoCompleteInput.d.ts","sourceRoot":"","sources":["../src/AutoCompleteInput.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,OAAO,MAAM,UAAU,CAAC;AAG/B,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,0BAA0B,CAAC;AAIlC,aAAK,yBAAyB;IAC5B,EAAE,OAAO;IACT,IAAI,SAAS;CACd;AAED,UAAU,kBAAkB;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,sBAAsB;IAC9B,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACpD,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,sBAAsB;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,kBAAkB,EAAE,CAAC;IACtC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,aAAa,CAAC;CAC9B;AAED,cAAM,iBAAkB,SAAQ,SAAS,CACvC,sBAAsB,EACtB,sBAAsB,CACvB;IACC,MAAM,CAAC,SAAS;;;;;;;;;;;;;;;MAiBd;IAEF,MAAM,CAAC,YAAY;oBACL,IAAI;;;;;;;mBASL,IAAI;;;MAKf;IAEF,MAAM,CAAC,yBAAyB,mCAA6B;gBAEjD,KAAK,EAAE,sBAAsB;IA4CzC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAEhC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAE7C,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAE/C,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAEzC,aAAa,IAAI,IAAI;IAQrB,wBAAwB,aACZ,kBAAkB,EAAE,SAAS,MAAM,wDAAnC,kBAAkB,EAAE,SAAS,MAAM,2BAM7C;IAGF,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE;IAqBvE,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAOrC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,UAAO,GAAG,IAAI;IAKjD,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAmBzC,UAAU,IAAI,IAAI;IAKlB,YAAY,IAAI,IAAI;IAIpB,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,GAAG,IAAI;IA6CnD,YAAY,CAAC,SAAS,EAAE,yBAAyB,GAAG,IAAI;IA4BxD,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,GAAG,IAAI;IAwBpD,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAKnE,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAOnD,gBAAgB,IAAI,IAAI;IAOxB,gBAAgB,IAAI,IAAI;IAOxB,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAahE,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,IAAI;IAa7D,gBAAgB,IAAI,IAAI;IAIxB,gBAAgB,IAAI,IAAI;IAOxB,QAAQ,IAAI,IAAI;IAYhB,SAAS,CAAC,UAAU,UAAO,GAAG,IAAI;IAQlC,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IASzC,iBAAiB,IAAI,GAAG,CAAC,OAAO;IAgBhC,aAAa,IAAI,KAAK,CAAC,SAAS;IAahC,YAAY,CAAC,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO;IAkBpE,MAAM,IAAI,GAAG,CAAC,OAAO;CA0CtB;AAED,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"AutoCompleteInput.d.ts","sourceRoot":"","sources":["../src/AutoCompleteInput.tsx"],"names":[],"mappings":"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"}
@@ -22,20 +22,18 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
22
22
  *
23
23
  */
24
24
  import React, { Component } from 'react';
25
- import PropTypes from 'prop-types';
26
25
  import memoize from 'memoizee';
27
26
  import classNames from 'classnames';
28
27
  import debounce from 'lodash.debounce';
29
28
  import { Popper } from "./popper/index.js";
30
29
  import "./AutoCompleteInput.css";
31
- import { jsx as _jsx } from "react/jsx-runtime";
32
- import { jsxs as _jsxs } from "react/jsx-runtime";
30
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
33
31
  var DEBOUNCE_DELAY = 100;
34
- var MENU_NAVIGATION_DIRECTION;
35
- (function (MENU_NAVIGATION_DIRECTION) {
32
+ var MENU_NAVIGATION_DIRECTION = /*#__PURE__*/function (MENU_NAVIGATION_DIRECTION) {
36
33
  MENU_NAVIGATION_DIRECTION["UP"] = "UP";
37
34
  MENU_NAVIGATION_DIRECTION["DOWN"] = "DOWN";
38
- })(MENU_NAVIGATION_DIRECTION || (MENU_NAVIGATION_DIRECTION = {}));
35
+ return MENU_NAVIGATION_DIRECTION;
36
+ }(MENU_NAVIGATION_DIRECTION || {});
39
37
  class AutoCompleteInput extends Component {
40
38
  constructor(props) {
41
39
  super(props);
@@ -163,9 +161,8 @@ class AutoCompleteInput extends Component {
163
161
  this.closeMenu();
164
162
  return;
165
163
  }
166
- (_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
164
+ (_this$popper$current = this.popper.current) === null || _this$popper$current === void 0 || _this$popper$current.scheduleUpdate(); // filtered options list can change size, may need to be repositioned
167
165
  }
168
-
169
166
  resetValue() {
170
167
  this.setState({
171
168
  title: ''
@@ -195,7 +192,7 @@ class AutoCompleteInput extends Component {
195
192
  this.fireOnChange(option.value);
196
193
  }
197
194
  this.closeMenu();
198
- (_this$input$current = this.input.current) === null || _this$input$current === void 0 ? void 0 : _this$input$current.focus();
195
+ (_this$input$current = this.input.current) === null || _this$input$current === void 0 || _this$input$current.focus();
199
196
  break;
200
197
  case 'ArrowUp':
201
198
  event.stopPropagation();
@@ -286,7 +283,7 @@ class AutoCompleteInput extends Component {
286
283
  });
287
284
  this.fireOnChange(option.value);
288
285
  this.closeMenu();
289
- (_this$input$current2 = this.input.current) === null || _this$input$current2 === void 0 ? void 0 : _this$input$current2.focus();
286
+ (_this$input$current2 = this.input.current) === null || _this$input$current2 === void 0 || _this$input$current2.focus();
290
287
  }
291
288
  handelInputFocus() {
292
289
  var {
@@ -322,7 +319,7 @@ class AutoCompleteInput extends Component {
322
319
  }
323
320
  handleMenuOpened() {
324
321
  var _this$input$current3;
325
- (_this$input$current3 = this.input.current) === null || _this$input$current3 === void 0 ? void 0 : _this$input$current3.focus();
322
+ (_this$input$current3 = this.input.current) === null || _this$input$current3 === void 0 || _this$input$current3.focus();
326
323
  }
327
324
  handleMenuExited() {
328
325
  var {
@@ -348,7 +345,7 @@ class AutoCompleteInput extends Component {
348
345
  // https://github.com/reactjs/react-transition-group/issues/382
349
346
  window.requestAnimationFrame(() => {
350
347
  var _this$popper$current2;
351
- (_this$popper$current2 = this.popper.current) === null || _this$popper$current2 === void 0 ? void 0 : _this$popper$current2.show();
348
+ (_this$popper$current2 = this.popper.current) === null || _this$popper$current2 === void 0 || _this$popper$current2.show();
352
349
  });
353
350
  }
354
351
  closeMenu() {
@@ -360,14 +357,14 @@ class AutoCompleteInput extends Component {
360
357
  });
361
358
  if (focusInput) {
362
359
  var _this$input$current4;
363
- (_this$input$current4 = this.input.current) === null || _this$input$current4 === void 0 ? void 0 : _this$input$current4.focus();
360
+ (_this$input$current4 = this.input.current) === null || _this$input$current4 === void 0 || _this$input$current4.focus();
364
361
  }
365
- (_this$popper$current3 = this.popper.current) === null || _this$popper$current3 === void 0 ? void 0 : _this$popper$current3.hide();
362
+ (_this$popper$current3 = this.popper.current) === null || _this$popper$current3 === void 0 || _this$popper$current3.hide();
366
363
  }
367
364
  scrollOptionIntoView(index) {
368
365
  if (this.menuContainer.current) {
369
366
  var _this$menuContainer$c;
370
- (_this$menuContainer$c = this.menuContainer.current.children.item(index)) === null || _this$menuContainer$c === void 0 ? void 0 : _this$menuContainer$c.scrollIntoView({
367
+ (_this$menuContainer$c = this.menuContainer.current.children.item(index)) === null || _this$menuContainer$c === void 0 || _this$menuContainer$c.scrollIntoView({
371
368
  behavior: 'smooth',
372
369
  block: 'nearest'
373
370
  });
@@ -467,22 +464,6 @@ class AutoCompleteInput extends Component {
467
464
  });
468
465
  }
469
466
  }
470
- _defineProperty(AutoCompleteInput, "propTypes", {
471
- options: PropTypes.arrayOf(PropTypes.shape({
472
- title: PropTypes.string.isRequired,
473
- value: PropTypes.string.isRequired
474
- })).isRequired,
475
- popperOptions: PropTypes.shape({}),
476
- onChange: PropTypes.func,
477
- inputPlaceholder: PropTypes.string,
478
- disabled: PropTypes.bool,
479
- className: PropTypes.string,
480
- defaultTitle: PropTypes.string,
481
- spellCheck: PropTypes.bool,
482
- onEnter: PropTypes.func,
483
- noMatchText: PropTypes.string,
484
- 'data-testid': PropTypes.string
485
- });
486
467
  _defineProperty(AutoCompleteInput, "defaultProps", {
487
468
  onChange() {
488
469
  // no-op
@@ -1 +1 @@
1
- {"version":3,"file":"AutoCompleteInput.js","names":["React","Component","PropTypes","memoize","classNames","debounce","Popper","jsx","_jsx","jsxs","_jsxs","DEBOUNCE_DELAY","MENU_NAVIGATION_DIRECTION","AutoCompleteInput","constructor","props","_defineProperty","options","input","filter","option","title","toLowerCase","indexOf","max","popperOptions","_objectSpread","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","arguments","undefined","onChange","_this$popper$current","getCachedFilteredOptions","perfectMatch","closeMenu","scheduleUpdate","resetValue","handleResize","event","_this$input$current","key","stopPropagation","preventDefault","focus","navigateMenu","UP","DOWN","shiftKey","direction","newKeyboardOptionIndex","scrollOptionIntoView","onEnter","openMenu","target","_this$input$current2","relatedTarget","Element","element","contains","_this$input$current3","window","requestAnimationFrame","_this$popper$current2","show","_this$popper$current3","focusInput","_this$input$current4","hide","index","_this$menuContainer$c","children","item","scrollIntoView","behavior","block","renderMenuElement","className","ref","role","onKeyDown","style","onBlur","renderOptions","noMatchText","map","renderOption","concat","type","onClick","onFocus","render","inputPlaceholder","disabled","defaultTitle","spellCheck","dataTestId","placeholder","onEntered","onExited","arrayOf","shape","string","isRequired","func","bool"],"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 { type 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 { max: 1000 }\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","memoize","classNames","debounce","Popper","jsx","_jsx","jsxs","_jsxs","DEBOUNCE_DELAY","MENU_NAVIGATION_DIRECTION","AutoCompleteInput","constructor","props","_defineProperty","options","input","filter","option","title","toLowerCase","indexOf","max","popperOptions","_objectSpread","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","arguments","undefined","onChange","_this$popper$current","getCachedFilteredOptions","perfectMatch","closeMenu","scheduleUpdate","resetValue","handleResize","event","_this$input$current","key","stopPropagation","preventDefault","focus","navigateMenu","UP","DOWN","shiftKey","direction","newKeyboardOptionIndex","scrollOptionIntoView","onEnter","openMenu","target","_this$input$current2","relatedTarget","Element","element","contains","_this$input$current3","window","requestAnimationFrame","_this$popper$current2","show","_this$popper$current3","focusInput","_this$input$current4","hide","index","_this$menuContainer$c","children","item","scrollIntoView","behavior","block","renderMenuElement","className","ref","role","onKeyDown","style","onBlur","renderOptions","noMatchText","map","renderOption","concat","type","onClick","onFocus","render","inputPlaceholder","disabled","defaultTitle","spellCheck","dataTestId","placeholder","onEntered","onExited"],"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 memoize from 'memoizee';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport { type 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 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 { max: 1000 }\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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","ignoreList":[]}
@@ -1,4 +1,3 @@
1
- import PropTypes from 'prop-types';
2
1
  import './AutoResizeTextarea.scss';
3
2
  interface AutoResizeTextareaProps {
4
3
  value: string;
@@ -18,27 +17,5 @@ interface AutoResizeTextareaProps {
18
17
  * on focus, and implode on blur. By default, it doesn't word wrap.
19
18
  */
20
19
  declare function AutoResizeTextarea({ className, value: propsValue, onChange, spellCheck, placeholder, disabled, delimiter, id, 'data-testid': dataTestId, }: AutoResizeTextareaProps): JSX.Element;
21
- declare namespace AutoResizeTextarea {
22
- var propTypes: {
23
- value: PropTypes.Validator<string>;
24
- onChange: PropTypes.Validator<(...args: any[]) => any>;
25
- className: PropTypes.Requireable<string>;
26
- placeholder: PropTypes.Requireable<string>;
27
- spellCheck: PropTypes.Requireable<boolean>;
28
- disabled: PropTypes.Requireable<boolean>;
29
- delimiter: PropTypes.Requireable<string>;
30
- id: PropTypes.Requireable<string>;
31
- 'data-testid': PropTypes.Requireable<string>;
32
- };
33
- var defaultProps: {
34
- className: string;
35
- id: string;
36
- placeholder: string;
37
- disabled: boolean;
38
- spellCheck: boolean;
39
- delimiter: string;
40
- 'data-testid': undefined;
41
- };
42
- }
43
20
  export default AutoResizeTextarea;
44
21
  //# 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,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"}
1
+ {"version":3,"file":"AutoResizeTextarea.d.ts","sourceRoot":"","sources":["../src/AutoResizeTextarea.tsx"],"names":[],"mappings":"AAGA,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;AAED,eAAe,kBAAkB,CAAC"}
@@ -1,5 +1,4 @@
1
1
  import React, { useState, useRef, useEffect } from 'react';
2
- import PropTypes from 'prop-types';
3
2
  import classNames from 'classnames';
4
3
  import "./AutoResizeTextarea.css";
5
4
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -105,25 +104,5 @@ function AutoResizeTextarea(_ref) {
105
104
  "data-testid": dataTestId
106
105
  });
107
106
  }
108
- AutoResizeTextarea.propTypes = {
109
- value: PropTypes.string.isRequired,
110
- onChange: PropTypes.func.isRequired,
111
- className: PropTypes.string,
112
- placeholder: PropTypes.string,
113
- spellCheck: PropTypes.bool,
114
- disabled: PropTypes.bool,
115
- delimiter: PropTypes.string,
116
- id: PropTypes.string,
117
- 'data-testid': PropTypes.string
118
- };
119
- AutoResizeTextarea.defaultProps = {
120
- className: '',
121
- id: '',
122
- placeholder: '',
123
- disabled: false,
124
- spellCheck: false,
125
- delimiter: '',
126
- 'data-testid': undefined
127
- };
128
107
  export default AutoResizeTextarea;
129
108
  //# sourceMappingURL=AutoResizeTextarea.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AutoResizeTextarea.js","names":["React","useState","useRef","useEffect","PropTypes","classNames","jsx","_jsx","AutoResizeTextarea","_ref","className","value","propsValue","onChange","spellCheck","placeholder","disabled","delimiter","id","dataTestId","setValue","isPastedChange","setIsPastedChange","element","syncStateWithProp","explode","input","trim","split","filter","string","join","concat","implode","map","reCalculateLayout","current","style","height","resizedHeight","scrollHeight","offsetHeight","clientHeight","handleChange","event","newValue","target","handleFocus","scrollLeft","handleMouseDown","document","activeElement","focus","handleBlur","handlePaste","reCalculate","ref","rows","onFocus","onMouseDown","onBlur","onPaste","propTypes","isRequired","func","bool","defaultProps","undefined"],"sources":["../src/AutoResizeTextarea.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport './AutoResizeTextarea.scss';\n\ninterface AutoResizeTextareaProps {\n value: string;\n onChange: (val: string) => void;\n className?: string;\n spellCheck?: boolean;\n placeholder?: string;\n disabled?: boolean;\n delimiter?: string;\n id?: string;\n 'data-testid'?: string;\n}\n\n/**\n * Makes a textarea that auto resizes based on contents, its height grows with new lines.\n * If a delimeter is set, such as \" -\" or \" \", as used by jvm args or env vars\n * then the field will also \"explode\" the value by the delimiter over new lines\n * on focus, and implode on blur. By default, it doesn't word wrap.\n */\nfunction AutoResizeTextarea({\n className = '',\n value: propsValue,\n onChange,\n spellCheck = false,\n placeholder = '',\n disabled = false,\n delimiter = '',\n id = '',\n 'data-testid': dataTestId,\n}: AutoResizeTextareaProps): JSX.Element {\n const [value, setValue] = useState(propsValue);\n const [isPastedChange, setIsPastedChange] = useState(false);\n const element = useRef<HTMLTextAreaElement>(null);\n\n useEffect(\n function syncStateWithProp() {\n // keep state value in sync with prop changes\n setValue(propsValue);\n },\n [propsValue]\n );\n\n function explode(input: string): string {\n // split by delimiter, commonly \" \" or \" -\"\n // strip empty strings (if delimiter is space, and there are multiple spaces in a row)\n // and join with new line and a trimmed delimeter (get rid of leading spaces)\n return input\n .trim()\n .split(delimiter)\n .filter(string => string) // remove empty strings\n .join(`\\n${delimiter.trim()}`);\n }\n\n function implode(input: string): string {\n return input\n .split('\\n')\n .map(string => string.trim())\n .join(' ');\n }\n\n function reCalculateLayout(): void {\n if (!element.current) {\n return;\n }\n element.current.style.height = '0'; // shrink component to get scrollHeight\n const resizedHeight =\n element.current.scrollHeight +\n (element.current.offsetHeight - element.current.clientHeight);\n // accounts for border, padding is captured by scroll height\n if (resizedHeight > 0) element.current.style.height = `${resizedHeight}px`;\n }\n\n function handleChange(event: React.ChangeEvent<HTMLTextAreaElement>): void {\n let newValue = event.target.value;\n if (isPastedChange) {\n if (delimiter) newValue = explode(newValue);\n setIsPastedChange(false);\n }\n setValue(newValue);\n onChange(newValue);\n }\n\n function handleFocus(): void {\n if (!element.current) {\n return;\n }\n if (delimiter) {\n setValue(explode(value));\n reCalculateLayout();\n }\n element.current.scrollLeft = 0;\n // scroll left as it can be disorienting if you click on a long line\n }\n\n // make it explode when dragging the resize handle\n // by making it trigger focus (which normally doesn't\n // trigger when just resizing).\n function handleMouseDown(): void {\n if (!element.current) return;\n if (document.activeElement === element.current) return;\n element.current.focus();\n }\n\n function handleBlur(): void {\n if (delimiter) {\n setValue(implode(value));\n onChange(implode(value));\n }\n }\n\n function handlePaste(): void {\n setIsPastedChange(true);\n }\n\n useEffect(\n function reCalculate() {\n reCalculateLayout();\n },\n [value]\n );\n\n return (\n <textarea\n ref={element}\n id={id}\n className={classNames(className, 'auto-resize-textarea form-control')}\n placeholder={placeholder}\n value={value}\n rows={1}\n onChange={handleChange}\n onFocus={handleFocus}\n onMouseDown={handleMouseDown}\n onBlur={handleBlur}\n onPaste={handlePaste}\n spellCheck={spellCheck}\n disabled={disabled}\n data-testid={dataTestId}\n />\n );\n}\n\nAutoResizeTextarea.propTypes = {\n value: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n className: PropTypes.string,\n placeholder: PropTypes.string,\n spellCheck: PropTypes.bool,\n disabled: PropTypes.bool,\n delimiter: PropTypes.string,\n id: PropTypes.string,\n 'data-testid': PropTypes.string,\n};\n\nAutoResizeTextarea.defaultProps = {\n className: '',\n id: '',\n placeholder: '',\n disabled: false,\n spellCheck: false,\n delimiter: '',\n 'data-testid': undefined,\n};\n\nexport default AutoResizeTextarea;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,MAAM,EAAEC,SAAS,QAAQ,OAAO;AAC1D,OAAOC,SAAS,MAAM,YAAY;AAClC,OAAOC,UAAU,MAAM,YAAY;AAAC;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAgBpC;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,kBAAkBA,CAAAC,IAAA,EAUc;EAAA,IAVb;IAC1BC,SAAS,GAAG,EAAE;IACdC,KAAK,EAAEC,UAAU;IACjBC,QAAQ;IACRC,UAAU,GAAG,KAAK;IAClBC,WAAW,GAAG,EAAE;IAChBC,QAAQ,GAAG,KAAK;IAChBC,SAAS,GAAG,EAAE;IACdC,EAAE,GAAG,EAAE;IACP,aAAa,EAAEC;EACQ,CAAC,GAAAV,IAAA;EACxB,IAAM,CAACE,KAAK,EAAES,QAAQ,CAAC,GAAGnB,QAAQ,CAACW,UAAU,CAAC;EAC9C,IAAM,CAACS,cAAc,EAAEC,iBAAiB,CAAC,GAAGrB,QAAQ,CAAC,KAAK,CAAC;EAC3D,IAAMsB,OAAO,GAAGrB,MAAM,CAAsB,IAAI,CAAC;EAEjDC,SAAS,CACP,SAASqB,iBAAiBA,CAAA,EAAG;IAC3B;IACAJ,QAAQ,CAACR,UAAU,CAAC;EACtB,CAAC,EACD,CAACA,UAAU,CACb,CAAC;EAED,SAASa,OAAOA,CAACC,KAAa,EAAU;IACtC;IACA;IACA;IACA,OAAOA,KAAK,CACTC,IAAI,CAAC,CAAC,CACNC,KAAK,CAACX,SAAS,CAAC,CAChBY,MAAM,CAACC,MAAM,IAAIA,MAAM,CAAC,CAAC;IAAA,CACzBC,IAAI,MAAAC,MAAA,CAAMf,SAAS,CAACU,IAAI,CAAC,CAAC,CAAE,CAAC;EAClC;EAEA,SAASM,OAAOA,CAACP,KAAa,EAAU;IACtC,OAAOA,KAAK,CACTE,KAAK,CAAC,IAAI,CAAC,CACXM,GAAG,CAACJ,MAAM,IAAIA,MAAM,CAACH,IAAI,CAAC,CAAC,CAAC,CAC5BI,IAAI,CAAC,GAAG,CAAC;EACd;EAEA,SAASI,iBAAiBA,CAAA,EAAS;IACjC,IAAI,CAACZ,OAAO,CAACa,OAAO,EAAE;MACpB;IACF;IACAb,OAAO,CAACa,OAAO,CAACC,KAAK,CAACC,MAAM,GAAG,GAAG,CAAC,CAAC;IACpC,IAAMC,aAAa,GACjBhB,OAAO,CAACa,OAAO,CAACI,YAAY,IAC3BjB,OAAO,CAACa,OAAO,CAACK,YAAY,GAAGlB,OAAO,CAACa,OAAO,CAACM,YAAY,CAAC;IAC/D;IACA,IAAIH,aAAa,GAAG,CAAC,EAAEhB,OAAO,CAACa,OAAO,CAACC,KAAK,CAACC,MAAM,MAAAN,MAAA,CAAMO,aAAa,OAAI;EAC5E;EAEA,SAASI,YAAYA,CAACC,KAA6C,EAAQ;IACzE,IAAIC,QAAQ,GAAGD,KAAK,CAACE,MAAM,CAACnC,KAAK;IACjC,IAAIU,cAAc,EAAE;MAClB,IAAIJ,SAAS,EAAE4B,QAAQ,GAAGpB,OAAO,CAACoB,QAAQ,CAAC;MAC3CvB,iBAAiB,CAAC,KAAK,CAAC;IAC1B;IACAF,QAAQ,CAACyB,QAAQ,CAAC;IAClBhC,QAAQ,CAACgC,QAAQ,CAAC;EACpB;EAEA,SAASE,WAAWA,CAAA,EAAS;IAC3B,IAAI,CAACxB,OAAO,CAACa,OAAO,EAAE;MACpB;IACF;IACA,IAAInB,SAAS,EAAE;MACbG,QAAQ,CAACK,OAAO,CAACd,KAAK,CAAC,CAAC;MACxBwB,iBAAiB,CAAC,CAAC;IACrB;IACAZ,OAAO,CAACa,OAAO,CAACY,UAAU,GAAG,CAAC;IAC9B;EACF;;EAEA;EACA;EACA;EACA,SAASC,eAAeA,CAAA,EAAS;IAC/B,IAAI,CAAC1B,OAAO,CAACa,OAAO,EAAE;IACtB,IAAIc,QAAQ,CAACC,aAAa,KAAK5B,OAAO,CAACa,OAAO,EAAE;IAChDb,OAAO,CAACa,OAAO,CAACgB,KAAK,CAAC,CAAC;EACzB;EAEA,SAASC,UAAUA,CAAA,EAAS;IAC1B,IAAIpC,SAAS,EAAE;MACbG,QAAQ,CAACa,OAAO,CAACtB,KAAK,CAAC,CAAC;MACxBE,QAAQ,CAACoB,OAAO,CAACtB,KAAK,CAAC,CAAC;IAC1B;EACF;EAEA,SAAS2C,WAAWA,CAAA,EAAS;IAC3BhC,iBAAiB,CAAC,IAAI,CAAC;EACzB;EAEAnB,SAAS,CACP,SAASoD,WAAWA,CAAA,EAAG;IACrBpB,iBAAiB,CAAC,CAAC;EACrB,CAAC,EACD,CAACxB,KAAK,CACR,CAAC;EAED,oBACEJ,IAAA;IACEiD,GAAG,EAAEjC,OAAQ;IACbL,EAAE,EAAEA,EAAG;IACPR,SAAS,EAAEL,UAAU,CAACK,SAAS,EAAE,mCAAmC,CAAE;IACtEK,WAAW,EAAEA,WAAY;IACzBJ,KAAK,EAAEA,KAAM;IACb8C,IAAI,EAAE,CAAE;IACR5C,QAAQ,EAAE8B,YAAa;IACvBe,OAAO,EAAEX,WAAY;IACrBY,WAAW,EAAEV,eAAgB;IAC7BW,MAAM,EAAEP,UAAW;IACnBQ,OAAO,EAAEP,WAAY;IACrBxC,UAAU,EAAEA,UAAW;IACvBE,QAAQ,EAAEA,QAAS;IACnB,eAAaG;EAAW,CACzB,CAAC;AAEN;AAEAX,kBAAkB,CAACsD,SAAS,GAAG;EAC7BnD,KAAK,EAAEP,SAAS,CAAC0B,MAAM,CAACiC,UAAU;EAClClD,QAAQ,EAAET,SAAS,CAAC4D,IAAI,CAACD,UAAU;EACnCrD,SAAS,EAAEN,SAAS,CAAC0B,MAAM;EAC3Bf,WAAW,EAAEX,SAAS,CAAC0B,MAAM;EAC7BhB,UAAU,EAAEV,SAAS,CAAC6D,IAAI;EAC1BjD,QAAQ,EAAEZ,SAAS,CAAC6D,IAAI;EACxBhD,SAAS,EAAEb,SAAS,CAAC0B,MAAM;EAC3BZ,EAAE,EAAEd,SAAS,CAAC0B,MAAM;EACpB,aAAa,EAAE1B,SAAS,CAAC0B;AAC3B,CAAC;AAEDtB,kBAAkB,CAAC0D,YAAY,GAAG;EAChCxD,SAAS,EAAE,EAAE;EACbQ,EAAE,EAAE,EAAE;EACNH,WAAW,EAAE,EAAE;EACfC,QAAQ,EAAE,KAAK;EACfF,UAAU,EAAE,KAAK;EACjBG,SAAS,EAAE,EAAE;EACb,aAAa,EAAEkD;AACjB,CAAC;AAED,eAAe3D,kBAAkB"}
1
+ {"version":3,"file":"AutoResizeTextarea.js","names":["React","useState","useRef","useEffect","classNames","jsx","_jsx","AutoResizeTextarea","_ref","className","value","propsValue","onChange","spellCheck","placeholder","disabled","delimiter","id","dataTestId","setValue","isPastedChange","setIsPastedChange","element","syncStateWithProp","explode","input","trim","split","filter","string","join","concat","implode","map","reCalculateLayout","current","style","height","resizedHeight","scrollHeight","offsetHeight","clientHeight","handleChange","event","newValue","target","handleFocus","scrollLeft","handleMouseDown","document","activeElement","focus","handleBlur","handlePaste","reCalculate","ref","rows","onFocus","onMouseDown","onBlur","onPaste"],"sources":["../src/AutoResizeTextarea.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from 'react';\nimport classNames from 'classnames';\n\nimport './AutoResizeTextarea.scss';\n\ninterface AutoResizeTextareaProps {\n value: string;\n onChange: (val: string) => void;\n className?: string;\n spellCheck?: boolean;\n placeholder?: string;\n disabled?: boolean;\n delimiter?: string;\n id?: string;\n 'data-testid'?: string;\n}\n\n/**\n * Makes a textarea that auto resizes based on contents, its height grows with new lines.\n * If a delimeter is set, such as \" -\" or \" \", as used by jvm args or env vars\n * then the field will also \"explode\" the value by the delimiter over new lines\n * on focus, and implode on blur. By default, it doesn't word wrap.\n */\nfunction AutoResizeTextarea({\n className = '',\n value: propsValue,\n onChange,\n spellCheck = false,\n placeholder = '',\n disabled = false,\n delimiter = '',\n id = '',\n 'data-testid': dataTestId,\n}: AutoResizeTextareaProps): JSX.Element {\n const [value, setValue] = useState(propsValue);\n const [isPastedChange, setIsPastedChange] = useState(false);\n const element = useRef<HTMLTextAreaElement>(null);\n\n useEffect(\n function syncStateWithProp() {\n // keep state value in sync with prop changes\n setValue(propsValue);\n },\n [propsValue]\n );\n\n function explode(input: string): string {\n // split by delimiter, commonly \" \" or \" -\"\n // strip empty strings (if delimiter is space, and there are multiple spaces in a row)\n // and join with new line and a trimmed delimeter (get rid of leading spaces)\n return input\n .trim()\n .split(delimiter)\n .filter(string => string) // remove empty strings\n .join(`\\n${delimiter.trim()}`);\n }\n\n function implode(input: string): string {\n return input\n .split('\\n')\n .map(string => string.trim())\n .join(' ');\n }\n\n function reCalculateLayout(): void {\n if (!element.current) {\n return;\n }\n element.current.style.height = '0'; // shrink component to get scrollHeight\n const resizedHeight =\n element.current.scrollHeight +\n (element.current.offsetHeight - element.current.clientHeight);\n // accounts for border, padding is captured by scroll height\n if (resizedHeight > 0) element.current.style.height = `${resizedHeight}px`;\n }\n\n function handleChange(event: React.ChangeEvent<HTMLTextAreaElement>): void {\n let newValue = event.target.value;\n if (isPastedChange) {\n if (delimiter) newValue = explode(newValue);\n setIsPastedChange(false);\n }\n setValue(newValue);\n onChange(newValue);\n }\n\n function handleFocus(): void {\n if (!element.current) {\n return;\n }\n if (delimiter) {\n setValue(explode(value));\n reCalculateLayout();\n }\n element.current.scrollLeft = 0;\n // scroll left as it can be disorienting if you click on a long line\n }\n\n // make it explode when dragging the resize handle\n // by making it trigger focus (which normally doesn't\n // trigger when just resizing).\n function handleMouseDown(): void {\n if (!element.current) return;\n if (document.activeElement === element.current) return;\n element.current.focus();\n }\n\n function handleBlur(): void {\n if (delimiter) {\n setValue(implode(value));\n onChange(implode(value));\n }\n }\n\n function handlePaste(): void {\n setIsPastedChange(true);\n }\n\n useEffect(\n function reCalculate() {\n reCalculateLayout();\n },\n [value]\n );\n\n return (\n <textarea\n ref={element}\n id={id}\n className={classNames(className, 'auto-resize-textarea form-control')}\n placeholder={placeholder}\n value={value}\n rows={1}\n onChange={handleChange}\n onFocus={handleFocus}\n onMouseDown={handleMouseDown}\n onBlur={handleBlur}\n onPaste={handlePaste}\n spellCheck={spellCheck}\n disabled={disabled}\n data-testid={dataTestId}\n />\n );\n}\n\nexport default AutoResizeTextarea;\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,4 @@
1
1
  import React from 'react';
2
- import PropTypes from 'prop-types';
3
2
  export interface BasicModalProps {
4
3
  isOpen: boolean;
5
4
  headerText: string;
@@ -29,31 +28,5 @@ export interface BasicModalProps {
29
28
  * @param discardButtonText optional text for the discard button, defaults to 'Discard'
30
29
  */
31
30
  declare function BasicModal(props: BasicModalProps): JSX.Element;
32
- declare namespace BasicModal {
33
- var propTypes: {
34
- isOpen: PropTypes.Validator<boolean>;
35
- headerText: PropTypes.Validator<string>;
36
- bodyText: PropTypes.Validator<NonNullable<NonNullable<string | ((...args: any[]) => any) | null | undefined>>>;
37
- onCancel: PropTypes.Requireable<(...args: any[]) => any>;
38
- onConfirm: PropTypes.Validator<(...args: any[]) => any>;
39
- onDiscard: PropTypes.Requireable<(...args: any[]) => any>;
40
- onModalDisable: PropTypes.Requireable<(...args: any[]) => any>;
41
- cancelButtonText: PropTypes.Requireable<string>;
42
- confirmButtonText: PropTypes.Requireable<string>;
43
- discardButtonText: PropTypes.Requireable<string>;
44
- children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
45
- 'data-testid': PropTypes.Requireable<string>;
46
- };
47
- var defaultProps: {
48
- children: undefined;
49
- cancelButtonText: string;
50
- confirmButtonText: string;
51
- discardButtonText: string;
52
- onCancel: undefined;
53
- onDiscard: undefined;
54
- onModalDisable: undefined;
55
- 'data-testid': undefined;
56
- };
57
- }
58
31
  export default BasicModal;
59
32
  //# sourceMappingURL=BasicModal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BasicModal.d.ts","sourceRoot":"","sources":["../src/BasicModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,SAAS,MAAM,YAAY,CAAC;AAKnC,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;GAYG;AACH,iBAAS,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,GAAG,CAAC,OAAO,CA6GvD;kBA7GQ,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;AAyInB,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"BasicModal.d.ts","sourceRoot":"","sources":["../src/BasicModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAKnD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;GAYG;AACH,iBAAS,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,GAAG,CAAC,OAAO,CA6GvD;AAED,eAAe,UAAU,CAAC"}
@@ -1,10 +1,8 @@
1
1
  import React, { useRef, useCallback } from 'react';
2
- import PropTypes from 'prop-types';
3
2
  import { SplitButtonGroup } from "./SplitButtonGroup.js";
4
3
  import Button from "./Button.js";
5
4
  import { Modal, ModalBody, ModalFooter, ModalHeader } from "./modal/index.js";
6
- import { jsx as _jsx } from "react/jsx-runtime";
7
- import { jsxs as _jsxs } from "react/jsx-runtime";
5
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
6
  /**
9
7
  * A basic modal dialog with two buttons: cancel / confirm.
10
8
  *
@@ -44,7 +42,7 @@ function BasicModal(props) {
44
42
  }, [onConfirm, onModalDisable]);
45
43
  var onOpened = useCallback(() => {
46
44
  var _confirmButton$curren;
47
- (_confirmButton$curren = confirmButton.current) === null || _confirmButton$curren === void 0 ? void 0 : _confirmButton$curren.focus();
45
+ (_confirmButton$curren = confirmButton.current) === null || _confirmButton$curren === void 0 || _confirmButton$curren.focus();
48
46
  }, []);
49
47
  var modalBody = '';
50
48
  if (isOpen) {
@@ -98,29 +96,5 @@ function BasicModal(props) {
98
96
  })]
99
97
  });
100
98
  }
101
- BasicModal.propTypes = {
102
- isOpen: PropTypes.bool.isRequired,
103
- headerText: PropTypes.string.isRequired,
104
- bodyText: PropTypes.oneOfType([PropTypes.string, PropTypes.func]).isRequired,
105
- onCancel: PropTypes.func,
106
- onConfirm: PropTypes.func.isRequired,
107
- onDiscard: PropTypes.func,
108
- onModalDisable: PropTypes.func,
109
- cancelButtonText: PropTypes.string,
110
- confirmButtonText: PropTypes.string,
111
- discardButtonText: PropTypes.string,
112
- children: PropTypes.node,
113
- 'data-testid': PropTypes.string
114
- };
115
- BasicModal.defaultProps = {
116
- children: undefined,
117
- cancelButtonText: 'Cancel',
118
- confirmButtonText: 'Okay',
119
- discardButtonText: 'Discard',
120
- onCancel: undefined,
121
- onDiscard: undefined,
122
- onModalDisable: undefined,
123
- 'data-testid': undefined
124
- };
125
99
  export default BasicModal;
126
100
  //# sourceMappingURL=BasicModal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BasicModal.js","names":["React","useRef","useCallback","PropTypes","SplitButtonGroup","Button","Modal","ModalBody","ModalFooter","ModalHeader","jsx","_jsx","jsxs","_jsxs","BasicModal","props","isOpen","headerText","bodyText","onCancel","onConfirm","onDiscard","onModalDisable","cancelButtonText","confirmButtonText","discardButtonText","isConfirmDanger","children","dataTestId","confirmButton","disableModalCheckbox","onConfirmClicked","current","checked","onOpened","_confirmButton$curren","focus","modalBody","closeButton","className","type","id","defaultChecked","ref","undefined","concat","htmlFor","kind","onClick","propTypes","bool","isRequired","string","oneOfType","func","node","defaultProps"],"sources":["../src/BasicModal.tsx"],"sourcesContent":["import React, { useRef, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport { SplitButtonGroup } from './SplitButtonGroup';\nimport Button from './Button';\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from './modal';\n\nexport interface BasicModalProps {\n isOpen: boolean;\n headerText: string;\n bodyText: string | (() => string);\n onCancel?: () => void;\n onConfirm: () => void;\n onDiscard?: () => void;\n onModalDisable?: () => void;\n cancelButtonText?: string;\n confirmButtonText?: string;\n discardButtonText?: string;\n isConfirmDanger?: boolean;\n children?: React.ReactNode;\n 'data-testid'?: string;\n}\n\n/**\n * A basic modal dialog with two buttons: cancel / confirm.\n *\n * @param isOpen indicates if the modal dialog is open\n * @param headerText text displayed in the modal header\n * @param bodyText text displayed in the modal body\n * @param onCancel callback for the cancel button; if not provided, button not shown\n * @param onConfirm callback for the confirm button\n * @param onDiscard callback for the discard button; if not provided, button not shown\n * @param cancelButtonText optional text for the cancel button, defaults to 'Cancel'\n * @param confirmButtonText optional text for the confirm button, defaults to 'Okay'\n * @param discardButtonText optional text for the discard button, defaults to 'Discard'\n */\nfunction BasicModal(props: BasicModalProps): JSX.Element {\n const {\n isOpen,\n headerText,\n bodyText,\n onCancel,\n onConfirm,\n onDiscard,\n onModalDisable,\n cancelButtonText = 'Cancel',\n confirmButtonText = 'Okay',\n discardButtonText = 'Discard',\n isConfirmDanger = false,\n children,\n 'data-testid': dataTestId,\n } = props;\n\n const confirmButton = useRef<HTMLButtonElement>(null);\n\n const disableModalCheckbox = useRef<HTMLInputElement>(null);\n\n const onConfirmClicked = useCallback(() => {\n if (\n disableModalCheckbox.current !== null &&\n disableModalCheckbox.current.checked &&\n onModalDisable\n ) {\n onModalDisable();\n }\n onConfirm();\n }, [onConfirm, onModalDisable]);\n\n const onOpened = useCallback(() => {\n confirmButton.current?.focus();\n }, []);\n\n let modalBody = '';\n if (isOpen) {\n modalBody = typeof bodyText === 'function' ? bodyText() : bodyText;\n }\n\n return (\n <Modal isOpen={isOpen} onOpened={onOpened}>\n <ModalHeader closeButton={false}>{headerText}</ModalHeader>\n <ModalBody>{modalBody}</ModalBody>\n <ModalFooter>\n {onModalDisable && (\n <div className=\"custom-control custom-checkbox form-group mr-auto\">\n <input\n type=\"checkbox\"\n className=\"custom-control-input\"\n id=\"move-confirmation-checkbox\"\n defaultChecked={false}\n ref={disableModalCheckbox}\n data-testid={\n dataTestId !== undefined\n ? `${dataTestId}-checkbox-confirm`\n : undefined\n }\n />\n <label\n className=\"custom-control-label\"\n htmlFor=\"move-confirmation-checkbox\"\n >\n Don&#39;t ask me again\n </label>\n </div>\n )}\n {onDiscard && (\n <Button\n kind=\"secondary\"\n className=\"mr-auto\"\n data-dismiss=\"modal\"\n onClick={onDiscard}\n data-testid={\n dataTestId !== undefined ? `${dataTestId}-btn-discard` : undefined\n }\n >\n {discardButtonText}\n </Button>\n )}\n {onCancel && (\n <Button\n kind=\"secondary\"\n data-dismiss=\"modal\"\n onClick={onCancel}\n data-testid={\n dataTestId !== undefined ? `${dataTestId}-btn-cancel` : undefined\n }\n >\n {cancelButtonText}\n </Button>\n )}\n <SplitButtonGroup>\n <Button\n kind={isConfirmDanger ? 'danger' : 'primary'}\n onClick={onConfirmClicked}\n ref={confirmButton}\n data-testid={\n dataTestId !== undefined ? `${dataTestId}-btn-confirm` : undefined\n }\n >\n {confirmButtonText}\n </Button>\n {children}\n </SplitButtonGroup>\n </ModalFooter>\n </Modal>\n );\n}\n\nBasicModal.propTypes = {\n isOpen: PropTypes.bool.isRequired,\n headerText: PropTypes.string.isRequired,\n bodyText: PropTypes.oneOfType([PropTypes.string, PropTypes.func]).isRequired,\n onCancel: PropTypes.func,\n onConfirm: PropTypes.func.isRequired,\n onDiscard: PropTypes.func,\n onModalDisable: PropTypes.func,\n cancelButtonText: PropTypes.string,\n confirmButtonText: PropTypes.string,\n discardButtonText: PropTypes.string,\n children: PropTypes.node,\n 'data-testid': PropTypes.string,\n};\n\nBasicModal.defaultProps = {\n children: undefined,\n cancelButtonText: 'Cancel',\n confirmButtonText: 'Okay',\n discardButtonText: 'Discard',\n onCancel: undefined,\n onDiscard: undefined,\n onModalDisable: undefined,\n 'data-testid': undefined,\n};\n\nexport default BasicModal;\n"],"mappings":"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"}
1
+ {"version":3,"file":"BasicModal.js","names":["React","useRef","useCallback","SplitButtonGroup","Button","Modal","ModalBody","ModalFooter","ModalHeader","jsx","_jsx","jsxs","_jsxs","BasicModal","props","isOpen","headerText","bodyText","onCancel","onConfirm","onDiscard","onModalDisable","cancelButtonText","confirmButtonText","discardButtonText","isConfirmDanger","children","dataTestId","confirmButton","disableModalCheckbox","onConfirmClicked","current","checked","onOpened","_confirmButton$curren","focus","modalBody","closeButton","className","type","id","defaultChecked","ref","undefined","concat","htmlFor","kind","onClick"],"sources":["../src/BasicModal.tsx"],"sourcesContent":["import React, { useRef, useCallback } from 'react';\nimport { SplitButtonGroup } from './SplitButtonGroup';\nimport Button from './Button';\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from './modal';\n\nexport interface BasicModalProps {\n isOpen: boolean;\n headerText: string;\n bodyText: string | (() => string);\n onCancel?: () => void;\n onConfirm: () => void;\n onDiscard?: () => void;\n onModalDisable?: () => void;\n cancelButtonText?: string;\n confirmButtonText?: string;\n discardButtonText?: string;\n isConfirmDanger?: boolean;\n children?: React.ReactNode;\n 'data-testid'?: string;\n}\n\n/**\n * A basic modal dialog with two buttons: cancel / confirm.\n *\n * @param isOpen indicates if the modal dialog is open\n * @param headerText text displayed in the modal header\n * @param bodyText text displayed in the modal body\n * @param onCancel callback for the cancel button; if not provided, button not shown\n * @param onConfirm callback for the confirm button\n * @param onDiscard callback for the discard button; if not provided, button not shown\n * @param cancelButtonText optional text for the cancel button, defaults to 'Cancel'\n * @param confirmButtonText optional text for the confirm button, defaults to 'Okay'\n * @param discardButtonText optional text for the discard button, defaults to 'Discard'\n */\nfunction BasicModal(props: BasicModalProps): JSX.Element {\n const {\n isOpen,\n headerText,\n bodyText,\n onCancel,\n onConfirm,\n onDiscard,\n onModalDisable,\n cancelButtonText = 'Cancel',\n confirmButtonText = 'Okay',\n discardButtonText = 'Discard',\n isConfirmDanger = false,\n children,\n 'data-testid': dataTestId,\n } = props;\n\n const confirmButton = useRef<HTMLButtonElement>(null);\n\n const disableModalCheckbox = useRef<HTMLInputElement>(null);\n\n const onConfirmClicked = useCallback(() => {\n if (\n disableModalCheckbox.current !== null &&\n disableModalCheckbox.current.checked &&\n onModalDisable\n ) {\n onModalDisable();\n }\n onConfirm();\n }, [onConfirm, onModalDisable]);\n\n const onOpened = useCallback(() => {\n confirmButton.current?.focus();\n }, []);\n\n let modalBody = '';\n if (isOpen) {\n modalBody = typeof bodyText === 'function' ? bodyText() : bodyText;\n }\n\n return (\n <Modal isOpen={isOpen} onOpened={onOpened}>\n <ModalHeader closeButton={false}>{headerText}</ModalHeader>\n <ModalBody>{modalBody}</ModalBody>\n <ModalFooter>\n {onModalDisable && (\n <div className=\"custom-control custom-checkbox form-group mr-auto\">\n <input\n type=\"checkbox\"\n className=\"custom-control-input\"\n id=\"move-confirmation-checkbox\"\n defaultChecked={false}\n ref={disableModalCheckbox}\n data-testid={\n dataTestId !== undefined\n ? `${dataTestId}-checkbox-confirm`\n : undefined\n }\n />\n <label\n className=\"custom-control-label\"\n htmlFor=\"move-confirmation-checkbox\"\n >\n Don&#39;t ask me again\n </label>\n </div>\n )}\n {onDiscard && (\n <Button\n kind=\"secondary\"\n className=\"mr-auto\"\n data-dismiss=\"modal\"\n onClick={onDiscard}\n data-testid={\n dataTestId !== undefined ? `${dataTestId}-btn-discard` : undefined\n }\n >\n {discardButtonText}\n </Button>\n )}\n {onCancel && (\n <Button\n kind=\"secondary\"\n data-dismiss=\"modal\"\n onClick={onCancel}\n data-testid={\n dataTestId !== undefined ? `${dataTestId}-btn-cancel` : undefined\n }\n >\n {cancelButtonText}\n </Button>\n )}\n <SplitButtonGroup>\n <Button\n kind={isConfirmDanger ? 'danger' : 'primary'}\n onClick={onConfirmClicked}\n ref={confirmButton}\n data-testid={\n dataTestId !== undefined ? `${dataTestId}-btn-confirm` : undefined\n }\n >\n {confirmButtonText}\n </Button>\n {children}\n </SplitButtonGroup>\n </ModalFooter>\n </Modal>\n );\n}\n\nexport default BasicModal;\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"BulkActionBar.js","names":["ActionBar","commonStyles","jsx","_jsx","noActions","BulkActionBar","_ref","styleProps","selectedItemCount","onClearSelection","_objectSpread","UNSAFE_className","spectrumActionBar","isEmphasized","children"],"sources":["../src/BulkActionBar.tsx"],"sourcesContent":["import type { ItemElement, StyleProps } from '@react-types/shared';\nimport { ActionBar } from './spectrum';\nimport commonStyles from './SpectrumComponent.module.scss';\n\n// The action bar will still show the item count + a clear selection button\n// even if there are no actions. Our only consumer is currently the ACL Editor,\n// but group action functionality has not yet been prioritized (see DH-15221).\n// For now we'll just pass it an empty action items array.\nconst noActions: ItemElement<unknown>[] = [];\n\nexport interface BulkActionBarProps {\n styleProps?: StyleProps;\n selectedItemCount: 'all' | number;\n onClearSelection: () => void;\n}\n\nexport function BulkActionBar({\n styleProps,\n selectedItemCount,\n onClearSelection,\n}: BulkActionBarProps): JSX.Element {\n return (\n <ActionBar\n UNSAFE_className={commonStyles.spectrumActionBar}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...styleProps}\n isEmphasized\n selectedItemCount={selectedItemCount}\n onClearSelection={onClearSelection}\n >\n {noActions}\n </ActionBar>\n );\n}\n\nexport default BulkActionBar;\n"],"mappings":";;;;;SACSA,SAAS;AAAA,OACXC,YAAY,wCAEnB;AACA;AACA;AACA;AAAA,SAAAC,GAAA,IAAAC,IAAA;AACA,IAAMC,SAAiC,GAAG,EAAE;AAQ5C,OAAO,SAASC,aAAaA,CAAAC,IAAA,EAIO;EAAA,IAJN;IAC5BC,UAAU;IACVC,iBAAiB;IACjBC;EACkB,CAAC,GAAAH,IAAA;EACnB,oBACEH,IAAA,CAACH,SAAS,EAAAU,aAAA,CAAAA,aAAA;IACRC,gBAAgB,EAAEV,YAAY,CAACW;IAC/B;EAAA,GACIL,UAAU;IACdM,YAAY;IACZL,iBAAiB,EAAEA,iBAAkB;IACrCC,gBAAgB,EAAEA,gBAAiB;IAAAK,QAAA,EAElCV;EAAS,EACD,CAAC;AAEhB;AAEA,eAAeC,aAAa"}
1
+ {"version":3,"file":"BulkActionBar.js","names":["ActionBar","commonStyles","jsx","_jsx","noActions","BulkActionBar","_ref","styleProps","selectedItemCount","onClearSelection","_objectSpread","UNSAFE_className","spectrumActionBar","isEmphasized","children"],"sources":["../src/BulkActionBar.tsx"],"sourcesContent":["import type { ItemElement, StyleProps } from '@react-types/shared';\nimport { ActionBar } from './spectrum';\nimport commonStyles from './SpectrumComponent.module.scss';\n\n// The action bar will still show the item count + a clear selection button\n// even if there are no actions. Our only consumer is currently the ACL Editor,\n// but group action functionality has not yet been prioritized (see DH-15221).\n// For now we'll just pass it an empty action items array.\nconst noActions: ItemElement<unknown>[] = [];\n\nexport interface BulkActionBarProps {\n styleProps?: StyleProps;\n selectedItemCount: 'all' | number;\n onClearSelection: () => void;\n}\n\nexport function BulkActionBar({\n styleProps,\n selectedItemCount,\n onClearSelection,\n}: BulkActionBarProps): JSX.Element {\n return (\n <ActionBar\n UNSAFE_className={commonStyles.spectrumActionBar}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...styleProps}\n isEmphasized\n selectedItemCount={selectedItemCount}\n onClearSelection={onClearSelection}\n >\n {noActions}\n </ActionBar>\n );\n}\n\nexport default BulkActionBar;\n"],"mappings":";;;;;SACSA,SAAS;AAAA,OACXC,YAAY,wCAEnB;AACA;AACA;AACA;AAAA,SAAAC,GAAA,IAAAC,IAAA;AACA,IAAMC,SAAiC,GAAG,EAAE;AAQ5C,OAAO,SAASC,aAAaA,CAAAC,IAAA,EAIO;EAAA,IAJN;IAC5BC,UAAU;IACVC,iBAAiB;IACjBC;EACkB,CAAC,GAAAH,IAAA;EACnB,oBACEH,IAAA,CAACH,SAAS,EAAAU,aAAA,CAAAA,aAAA;IACRC,gBAAgB,EAAEV,YAAY,CAACW;IAC/B;EAAA,GACIL,UAAU;IACdM,YAAY;IACZL,iBAAiB,EAAEA,iBAAkB;IACrCC,gBAAgB,EAAEA,gBAAiB;IAAAK,QAAA,EAElCV;EAAS,EACD,CAAC;AAEhB;AAEA,eAAeC,aAAa","ignoreList":[]}