@deephaven/components 0.11.8-beta.2 → 0.11.10-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 (166) hide show
  1. package/dist/AutoCompleteInput.d.ts +3 -0
  2. package/dist/AutoCompleteInput.d.ts.map +1 -1
  3. package/dist/AutoCompleteInput.js +8 -4
  4. package/dist/AutoCompleteInput.js.map +1 -1
  5. package/dist/AutoResizeTextarea.d.ts +4 -1
  6. package/dist/AutoResizeTextarea.d.ts.map +1 -1
  7. package/dist/AutoResizeTextarea.js +8 -4
  8. package/dist/AutoResizeTextarea.js.map +1 -1
  9. package/dist/BasicModal.d.ts +1 -0
  10. package/dist/BasicModal.d.ts.map +1 -1
  11. package/dist/BasicModal.js +14 -7
  12. package/dist/BasicModal.js.map +1 -1
  13. package/dist/Button.d.ts +1 -1
  14. package/dist/ButtonGroup.d.ts +3 -0
  15. package/dist/ButtonGroup.d.ts.map +1 -1
  16. package/dist/ButtonGroup.js +8 -4
  17. package/dist/ButtonGroup.js.map +1 -1
  18. package/dist/CardFlip.d.ts +2 -1
  19. package/dist/CardFlip.d.ts.map +1 -1
  20. package/dist/CardFlip.js +4 -2
  21. package/dist/CardFlip.js.map +1 -1
  22. package/dist/Checkbox.d.ts +1 -0
  23. package/dist/Checkbox.d.ts.map +1 -1
  24. package/dist/Checkbox.js +8 -4
  25. package/dist/Checkbox.js.map +1 -1
  26. package/dist/Collapse.d.ts +3 -0
  27. package/dist/Collapse.d.ts.map +1 -1
  28. package/dist/Collapse.js +8 -4
  29. package/dist/Collapse.js.map +1 -1
  30. package/dist/ComboBox.d.ts +3 -0
  31. package/dist/ComboBox.d.ts.map +1 -1
  32. package/dist/ComboBox.js +10 -5
  33. package/dist/ComboBox.js.map +1 -1
  34. package/dist/CustomTimeSelect.d.ts +1 -0
  35. package/dist/CustomTimeSelect.d.ts.map +1 -1
  36. package/dist/CustomTimeSelect.js +6 -3
  37. package/dist/CustomTimeSelect.js.map +1 -1
  38. package/dist/DebouncedSearchInput.d.ts +2 -0
  39. package/dist/DebouncedSearchInput.d.ts.map +1 -1
  40. package/dist/DebouncedSearchInput.js +6 -3
  41. package/dist/DebouncedSearchInput.js.map +1 -1
  42. package/dist/DeephavenSpinner.d.ts +2 -1
  43. package/dist/DeephavenSpinner.d.ts.map +1 -1
  44. package/dist/DeephavenSpinner.js +4 -2
  45. package/dist/DeephavenSpinner.js.map +1 -1
  46. package/dist/DraggableItemList.d.ts +2 -0
  47. package/dist/DraggableItemList.d.ts.map +1 -1
  48. package/dist/DraggableItemList.js +6 -3
  49. package/dist/DraggableItemList.js.map +1 -1
  50. package/dist/HierarchicalCheckboxMenu.d.ts +1 -0
  51. package/dist/HierarchicalCheckboxMenu.d.ts.map +1 -1
  52. package/dist/HierarchicalCheckboxMenu.js +12 -6
  53. package/dist/HierarchicalCheckboxMenu.js.map +1 -1
  54. package/dist/ItemList.d.ts +2 -0
  55. package/dist/ItemList.d.ts.map +1 -1
  56. package/dist/ItemList.js +6 -3
  57. package/dist/ItemList.js.map +1 -1
  58. package/dist/ItemListItem.d.ts +2 -0
  59. package/dist/ItemListItem.d.ts.map +1 -1
  60. package/dist/ItemListItem.js +5 -2
  61. package/dist/ItemListItem.js.map +1 -1
  62. package/dist/LoadingOverlay.d.ts +2 -1
  63. package/dist/LoadingOverlay.d.ts.map +1 -1
  64. package/dist/LoadingOverlay.js +4 -2
  65. package/dist/LoadingOverlay.js.map +1 -1
  66. package/dist/LoadingSpinner.d.ts +2 -1
  67. package/dist/LoadingSpinner.d.ts.map +1 -1
  68. package/dist/LoadingSpinner.js +4 -2
  69. package/dist/LoadingSpinner.js.map +1 -1
  70. package/dist/MaskedInput.d.ts +1 -0
  71. package/dist/MaskedInput.d.ts.map +1 -1
  72. package/dist/MaskedInput.js +6 -3
  73. package/dist/MaskedInput.js.map +1 -1
  74. package/dist/Option.d.ts +2 -1
  75. package/dist/Option.d.ts.map +1 -1
  76. package/dist/Option.js +4 -2
  77. package/dist/Option.js.map +1 -1
  78. package/dist/RadioGroup.d.ts +1 -0
  79. package/dist/RadioGroup.d.ts.map +1 -1
  80. package/dist/RadioGroup.js +4 -2
  81. package/dist/RadioGroup.js.map +1 -1
  82. package/dist/SearchInput.d.ts +2 -0
  83. package/dist/SearchInput.d.ts.map +1 -1
  84. package/dist/SearchInput.js +6 -3
  85. package/dist/SearchInput.js.map +1 -1
  86. package/dist/Select.d.ts +2 -1
  87. package/dist/Select.d.ts.map +1 -1
  88. package/dist/Select.js +4 -2
  89. package/dist/Select.js.map +1 -1
  90. package/dist/SelectValueList.d.ts +2 -0
  91. package/dist/SelectValueList.d.ts.map +1 -1
  92. package/dist/SelectValueList.js +6 -3
  93. package/dist/SelectValueList.js.map +1 -1
  94. package/dist/SocketedButton.d.ts +1 -0
  95. package/dist/SocketedButton.d.ts.map +1 -1
  96. package/dist/SocketedButton.js +6 -3
  97. package/dist/SocketedButton.js.map +1 -1
  98. package/dist/TimeInput.d.ts +1 -0
  99. package/dist/TimeInput.d.ts.map +1 -1
  100. package/dist/TimeInput.js +6 -3
  101. package/dist/TimeInput.js.map +1 -1
  102. package/dist/TimeSlider.d.ts +2 -1
  103. package/dist/TimeSlider.d.ts.map +1 -1
  104. package/dist/TimeSlider.js +18 -9
  105. package/dist/TimeSlider.js.map +1 -1
  106. package/dist/ToastNotification.d.ts +2 -1
  107. package/dist/ToastNotification.d.ts.map +1 -1
  108. package/dist/ToastNotification.js +4 -2
  109. package/dist/ToastNotification.js.map +1 -1
  110. package/dist/UISwitch.d.ts +3 -2
  111. package/dist/UISwitch.d.ts.map +1 -1
  112. package/dist/UISwitch.js +4 -2
  113. package/dist/UISwitch.js.map +1 -1
  114. package/dist/context-actions/ContextActions.d.ts +1 -0
  115. package/dist/context-actions/ContextActions.d.ts.map +1 -1
  116. package/dist/context-actions/ContextActions.js +5 -1
  117. package/dist/context-actions/ContextActions.js.map +1 -1
  118. package/dist/context-actions/ContextMenu.d.ts +2 -0
  119. package/dist/context-actions/ContextMenu.d.ts.map +1 -1
  120. package/dist/context-actions/ContextMenu.js +6 -3
  121. package/dist/context-actions/ContextMenu.js.map +1 -1
  122. package/dist/context-actions/ContextMenuItem.d.ts +1 -0
  123. package/dist/context-actions/ContextMenuItem.d.ts.map +1 -1
  124. package/dist/context-actions/ContextMenuItem.js +10 -5
  125. package/dist/context-actions/ContextMenuItem.js.map +1 -1
  126. package/dist/context-actions/ContextMenuRoot.d.ts +3 -1
  127. package/dist/context-actions/ContextMenuRoot.d.ts.map +1 -1
  128. package/dist/context-actions/ContextMenuRoot.js +5 -1
  129. package/dist/context-actions/ContextMenuRoot.js.map +1 -1
  130. package/dist/context-actions/GlobalContextActions.d.ts +1 -0
  131. package/dist/context-actions/GlobalContextActions.d.ts.map +1 -1
  132. package/dist/context-actions/GlobalContextActions.js +4 -2
  133. package/dist/context-actions/GlobalContextActions.js.map +1 -1
  134. package/dist/menu-actions/DropdownMenu.d.ts +2 -0
  135. package/dist/menu-actions/DropdownMenu.d.ts.map +1 -1
  136. package/dist/menu-actions/DropdownMenu.js +6 -3
  137. package/dist/menu-actions/DropdownMenu.js.map +1 -1
  138. package/dist/menu-actions/Menu.d.ts +2 -0
  139. package/dist/menu-actions/Menu.d.ts.map +1 -1
  140. package/dist/menu-actions/Menu.js +7 -2
  141. package/dist/menu-actions/Menu.js.map +1 -1
  142. package/dist/navigation/Menu.d.ts +2 -1
  143. package/dist/navigation/Menu.d.ts.map +1 -1
  144. package/dist/navigation/Menu.js +4 -2
  145. package/dist/navigation/Menu.js.map +1 -1
  146. package/dist/navigation/MenuItem.d.ts +2 -1
  147. package/dist/navigation/MenuItem.d.ts.map +1 -1
  148. package/dist/navigation/MenuItem.js +4 -2
  149. package/dist/navigation/MenuItem.js.map +1 -1
  150. package/dist/navigation/Page.d.ts +2 -1
  151. package/dist/navigation/Page.d.ts.map +1 -1
  152. package/dist/navigation/Page.js +4 -2
  153. package/dist/navigation/Page.js.map +1 -1
  154. package/dist/navigation/Stack.d.ts +2 -1
  155. package/dist/navigation/Stack.d.ts.map +1 -1
  156. package/dist/navigation/Stack.js +4 -2
  157. package/dist/navigation/Stack.js.map +1 -1
  158. package/dist/popper/Popper.d.ts +3 -0
  159. package/dist/popper/Popper.d.ts.map +1 -1
  160. package/dist/popper/Popper.js +9 -3
  161. package/dist/popper/Popper.js.map +1 -1
  162. package/dist/popper/Tooltip.d.ts +2 -0
  163. package/dist/popper/Tooltip.d.ts.map +1 -1
  164. package/dist/popper/Tooltip.js +6 -3
  165. package/dist/popper/Tooltip.js.map +1 -1
  166. package/package.json +8 -8
@@ -41,6 +41,7 @@ interface AutoCompleteInputProps {
41
41
  spellCheck: boolean;
42
42
  onEnter(): void;
43
43
  noMatchText: string;
44
+ 'data-testid'?: string;
44
45
  }
45
46
  interface AutoCompleteInputState {
46
47
  title: string;
@@ -66,6 +67,7 @@ declare class AutoCompleteInput extends Component<AutoCompleteInputProps, AutoCo
66
67
  spellCheck: PropTypes.Requireable<boolean>;
67
68
  onEnter: PropTypes.Requireable<(...args: any[]) => any>;
68
69
  noMatchText: PropTypes.Requireable<string>;
70
+ 'data-testid': PropTypes.Requireable<string>;
69
71
  };
70
72
  static defaultProps: {
71
73
  onChange(): void;
@@ -77,6 +79,7 @@ declare class AutoCompleteInput extends Component<AutoCompleteInputProps, AutoCo
77
79
  spellCheck: boolean;
78
80
  onEnter(): void;
79
81
  noMatchText: string;
82
+ 'data-testid': undefined;
80
83
  };
81
84
  static MENU_NAVIGATION_DIRECTION: typeof MENU_NAVIGATION_DIRECTION;
82
85
  constructor(props: AutoCompleteInputProps);
@@ -1 +1 @@
1
- {"version":3,"file":"AutoCompleteInput.d.ts","sourceRoot":"","sources":["../src/AutoCompleteInput.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AutoCompleteInput.d.ts","sourceRoot":"","sources":["../src/AutoCompleteInput.tsx"],"names":[],"mappings":"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"}
@@ -492,7 +492,8 @@ class AutoCompleteInput extends Component {
492
492
  disabled,
493
493
  className,
494
494
  defaultTitle,
495
- spellCheck
495
+ spellCheck,
496
+ 'data-testid': dataTestId
496
497
  } = this.props;
497
498
  var {
498
499
  title,
@@ -516,7 +517,8 @@ class AutoCompleteInput extends Component {
516
517
  onClick: this.handleInputClick,
517
518
  onBlur: this.handleInputBlur,
518
519
  onKeyDown: this.handleInputKeyDown,
519
- spellCheck: spellCheck
520
+ spellCheck: spellCheck,
521
+ "data-testid": dataTestId
520
522
  }), /*#__PURE__*/React.createElement(Popper, {
521
523
  ref: this.popper,
522
524
  options: popperOptions,
@@ -541,7 +543,8 @@ _defineProperty(AutoCompleteInput, "propTypes", {
541
543
  defaultTitle: PropTypes.string,
542
544
  spellCheck: PropTypes.bool,
543
545
  onEnter: PropTypes.func,
544
- noMatchText: PropTypes.string
546
+ noMatchText: PropTypes.string,
547
+ 'data-testid': PropTypes.string
545
548
  });
546
549
 
547
550
  _defineProperty(AutoCompleteInput, "defaultProps", {
@@ -558,7 +561,8 @@ _defineProperty(AutoCompleteInput, "defaultProps", {
558
561
  onEnter() {// no-op
559
562
  },
560
563
 
561
- noMatchText: 'No matching items found'
564
+ noMatchText: 'No matching items found',
565
+ 'data-testid': undefined
562
566
  });
563
567
 
564
568
  _defineProperty(AutoCompleteInput, "MENU_NAVIGATION_DIRECTION", MENU_NAVIGATION_DIRECTION);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/AutoCompleteInput.tsx"],"names":["React","Component","PropTypes","memoize","classNames","debounce","Popper","DEBOUNCE_DELAY","MENU_NAVIGATION_DIRECTION","AutoCompleteInput","constructor","props","options","input","filter","option","title","toLowerCase","indexOf","popperOptions","placement","modifiers","preventOverflow","enabled","state","filteredOptions","keyboardOptionIndex","menuIsOpen","inputWidth","invalid","handleMenuKeyDown","bind","handleMenuBlur","handleInputChange","handleInputKeyDown","handleInputBlur","handelInputFocus","handleInputClick","updateInputValue","handleOptionClick","handleMenuOpened","handleMenuExited","popper","createRef","cbContainer","menuContainer","setInputWidth","current","setState","getBoundingClientRect","width","getValueAndValidate","value","isValid","result","length","processFilterChange","fireOnChange","onChange","getCachedFilteredOptions","perfectMatch","closeMenu","scheduleUpdate","resetValue","handleResize","event","key","stopPropagation","preventDefault","focus","navigateMenu","UP","DOWN","shiftKey","direction","newKeyboardOptionIndex","scrollOptionIntoView","onEnter","openMenu","target","relatedTarget","Element","element","contains","window","requestAnimationFrame","show","focusInput","hide","index","children","item","scrollIntoView","behavior","block","renderMenuElement","renderOptions","noMatchText","map","renderOption","render","inputPlaceholder","disabled","className","defaultTitle","spellCheck","arrayOf","shape","string","isRequired","func","bool"],"mappings":"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","sourcesContent":["/**\n * An Input component that pops and filters auto complete options as you type.\n *\n * props:\n * @param options :[{\n * title: 'option title for display',\n * value: 'option value' //option value\n * }]\n * @param popperOptions options for the Popper\n * @param onChange called when the value is changed from the pulldown\n * @param inputPlaceholder place holder for the input box\n * @param disabled disable both input & drop down\n * @param className an optional class name applied to the input element\n * @param defaultTitle the default title to display\n * @param spellCheck flag to disable spell checking, defaults to true\n * @param onEnter called when the Enter key is typed in the input element\n *\n */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport memoize from 'memoizee';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport { PopperOptions } from 'popper.js';\nimport { Popper } from './popper';\n\nimport './AutoCompleteInput.scss';\n\nconst DEBOUNCE_DELAY = 100;\n\nenum MENU_NAVIGATION_DIRECTION {\n UP = 'UP',\n DOWN = 'DOWN',\n}\n\ninterface AutoCompleteOption {\n title: string;\n value: string;\n}\n\ninterface AutoCompleteInputProps {\n options: AutoCompleteOption[];\n popperOptions: PopperOptions;\n onChange(value: string, isValid: boolean): void;\n inputPlaceholder: string;\n disabled: boolean;\n className: string;\n defaultTitle: string;\n spellCheck: boolean;\n onEnter(): void;\n noMatchText: string;\n}\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 };\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 };\n\n static MENU_NAVIGATION_DIRECTION = MENU_NAVIGATION_DIRECTION;\n\n constructor(props: AutoCompleteInputProps) {\n super(props);\n\n let { popperOptions } = this.props;\n popperOptions = {\n placement: 'bottom-end',\n modifiers: {\n preventOverflow: { enabled: false },\n },\n ...popperOptions,\n };\n\n this.state = {\n title: '',\n filteredOptions: [],\n keyboardOptionIndex: 0,\n menuIsOpen: false,\n inputWidth: 100,\n invalid: false,\n popperOptions,\n };\n\n this.handleMenuKeyDown = this.handleMenuKeyDown.bind(this);\n this.handleMenuBlur = this.handleMenuBlur.bind(this);\n\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleInputKeyDown = this.handleInputKeyDown.bind(this);\n this.handleInputBlur = this.handleInputBlur.bind(this);\n this.handelInputFocus = this.handelInputFocus.bind(this);\n this.handleInputClick = this.handleInputClick.bind(this);\n\n this.updateInputValue = debounce(this.updateInputValue, DEBOUNCE_DELAY);\n\n this.handleOptionClick = this.handleOptionClick.bind(this);\n\n this.handleMenuOpened = this.handleMenuOpened.bind(this);\n this.handleMenuExited = this.handleMenuExited.bind(this);\n\n this.popper = React.createRef();\n this.cbContainer = React.createRef();\n this.menuContainer = React.createRef();\n this.input = React.createRef();\n }\n\n popper: React.RefObject<Popper>;\n\n cbContainer: React.RefObject<HTMLDivElement>;\n\n menuContainer: React.RefObject<HTMLDivElement>;\n\n input: React.RefObject<HTMLInputElement>;\n\n setInputWidth(): void {\n if (this.cbContainer.current) {\n this.setState({\n inputWidth: this.cbContainer.current.getBoundingClientRect().width,\n });\n }\n }\n\n getCachedFilteredOptions = memoize(\n (options: AutoCompleteOption[], input: string) =>\n options.filter(\n // supports partial match\n option => option.title.toLowerCase().indexOf(input.toLowerCase()) >= 0\n )\n );\n\n // validation needs to be an exact case-sensitve match on value\n getValueAndValidate(title: string): { value: string; isValid: boolean } {\n if (!title) {\n this.setState({ invalid: false });\n return { value: title, isValid: false };\n }\n\n // validate\n const { options } = this.props;\n const result = options.filter(\n option => option.title.toLowerCase() === title.toLowerCase()\n );\n if (result.length < 1) {\n this.setState({ invalid: true });\n return { value: title, isValid: false };\n }\n\n this.setState({ invalid: false });\n return { value: result[0].value, isValid: true };\n }\n\n // validate typed entries emit change event using value\n updateInputValue(title: string): void {\n const { menuIsOpen } = this.state;\n const { value, isValid } = this.getValueAndValidate(title);\n if (menuIsOpen) this.processFilterChange(title);\n this.fireOnChange(value, isValid);\n }\n\n fireOnChange(value: string, isValid = true): void {\n const { onChange } = this.props;\n onChange(value, isValid);\n }\n\n processFilterChange(filter: string): void {\n const { options } = this.props;\n const { menuIsOpen } = this.state;\n const filteredOptions = filter\n ? this.getCachedFilteredOptions(options, filter)\n : options;\n const perfectMatch =\n filteredOptions.length === 1 && filteredOptions[0].title === filter;\n this.setState({\n filteredOptions,\n keyboardOptionIndex: 0,\n });\n if (perfectMatch && menuIsOpen) {\n this.closeMenu();\n return;\n }\n this.popper.current?.scheduleUpdate(); // filtered options list can change size, may need to be repositioned\n }\n\n resetValue(): void {\n this.setState({ title: '' });\n this.fireOnChange('');\n }\n\n handleResize(): void {\n this.setInputWidth();\n }\n\n handleMenuKeyDown(event: React.KeyboardEvent): void {\n const { filteredOptions, keyboardOptionIndex } = this.state;\n const option = filteredOptions[keyboardOptionIndex];\n\n switch (event.key) {\n case 'Enter':\n case 'ArrowRight':\n event.stopPropagation();\n event.preventDefault();\n if (option) {\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?.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?.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 } = 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 />\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"],"file":"AutoCompleteInput.js"}
1
+ {"version":3,"sources":["../src/AutoCompleteInput.tsx"],"names":["React","Component","PropTypes","memoize","classNames","debounce","Popper","DEBOUNCE_DELAY","MENU_NAVIGATION_DIRECTION","AutoCompleteInput","constructor","props","options","input","filter","option","title","toLowerCase","indexOf","popperOptions","placement","modifiers","preventOverflow","enabled","state","filteredOptions","keyboardOptionIndex","menuIsOpen","inputWidth","invalid","handleMenuKeyDown","bind","handleMenuBlur","handleInputChange","handleInputKeyDown","handleInputBlur","handelInputFocus","handleInputClick","updateInputValue","handleOptionClick","handleMenuOpened","handleMenuExited","popper","createRef","cbContainer","menuContainer","setInputWidth","current","setState","getBoundingClientRect","width","getValueAndValidate","value","isValid","result","length","processFilterChange","fireOnChange","onChange","getCachedFilteredOptions","perfectMatch","closeMenu","scheduleUpdate","resetValue","handleResize","event","key","stopPropagation","preventDefault","focus","navigateMenu","UP","DOWN","shiftKey","direction","newKeyboardOptionIndex","scrollOptionIntoView","onEnter","openMenu","target","relatedTarget","Element","element","contains","window","requestAnimationFrame","show","focusInput","hide","index","children","item","scrollIntoView","behavior","block","renderMenuElement","renderOptions","noMatchText","map","renderOption","render","inputPlaceholder","disabled","className","defaultTitle","spellCheck","dataTestId","arrayOf","shape","string","isRequired","func","bool","undefined"],"mappings":"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","sourcesContent":["/**\n * An Input component that pops and filters auto complete options as you type.\n *\n * props:\n * @param options :[{\n * title: 'option title for display',\n * value: 'option value' //option value\n * }]\n * @param popperOptions options for the Popper\n * @param onChange called when the value is changed from the pulldown\n * @param inputPlaceholder place holder for the input box\n * @param disabled disable both input & drop down\n * @param className an optional class name applied to the input element\n * @param defaultTitle the default title to display\n * @param spellCheck flag to disable spell checking, defaults to true\n * @param onEnter called when the Enter key is typed in the input element\n *\n */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport memoize from 'memoizee';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport { PopperOptions } from 'popper.js';\nimport { Popper } from './popper';\n\nimport './AutoCompleteInput.scss';\n\nconst DEBOUNCE_DELAY = 100;\n\nenum MENU_NAVIGATION_DIRECTION {\n UP = 'UP',\n DOWN = 'DOWN',\n}\n\ninterface AutoCompleteOption {\n title: string;\n value: string;\n}\n\ninterface AutoCompleteInputProps {\n options: AutoCompleteOption[];\n popperOptions: PopperOptions;\n onChange(value: string, isValid: boolean): void;\n inputPlaceholder: string;\n disabled: boolean;\n className: string;\n defaultTitle: string;\n spellCheck: boolean;\n onEnter(): void;\n noMatchText: string;\n 'data-testid'?: string;\n}\n\ninterface AutoCompleteInputState {\n title: string;\n filteredOptions: AutoCompleteOption[];\n keyboardOptionIndex: number;\n menuIsOpen: boolean;\n inputWidth: number;\n invalid: boolean;\n popperOptions: PopperOptions;\n}\n\nclass AutoCompleteInput extends Component<\n AutoCompleteInputProps,\n AutoCompleteInputState\n> {\n static propTypes = {\n options: PropTypes.arrayOf(\n PropTypes.shape({\n title: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n })\n ).isRequired,\n popperOptions: PropTypes.shape({}),\n onChange: PropTypes.func,\n inputPlaceholder: PropTypes.string,\n disabled: PropTypes.bool,\n className: PropTypes.string,\n defaultTitle: PropTypes.string,\n spellCheck: PropTypes.bool,\n onEnter: PropTypes.func,\n noMatchText: PropTypes.string,\n 'data-testid': PropTypes.string,\n };\n\n static defaultProps = {\n onChange(): void {\n // no-op\n },\n inputPlaceholder: '',\n disabled: false,\n className: '',\n defaultTitle: '',\n popperOptions: null,\n spellCheck: true,\n onEnter(): void {\n // no-op\n },\n noMatchText: 'No matching items found',\n 'data-testid': undefined,\n };\n\n static MENU_NAVIGATION_DIRECTION = MENU_NAVIGATION_DIRECTION;\n\n constructor(props: AutoCompleteInputProps) {\n super(props);\n\n let { popperOptions } = this.props;\n popperOptions = {\n placement: 'bottom-end',\n modifiers: {\n preventOverflow: { enabled: false },\n },\n ...popperOptions,\n };\n\n this.state = {\n title: '',\n filteredOptions: [],\n keyboardOptionIndex: 0,\n menuIsOpen: false,\n inputWidth: 100,\n invalid: false,\n popperOptions,\n };\n\n this.handleMenuKeyDown = this.handleMenuKeyDown.bind(this);\n this.handleMenuBlur = this.handleMenuBlur.bind(this);\n\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleInputKeyDown = this.handleInputKeyDown.bind(this);\n this.handleInputBlur = this.handleInputBlur.bind(this);\n this.handelInputFocus = this.handelInputFocus.bind(this);\n this.handleInputClick = this.handleInputClick.bind(this);\n\n this.updateInputValue = debounce(this.updateInputValue, DEBOUNCE_DELAY);\n\n this.handleOptionClick = this.handleOptionClick.bind(this);\n\n this.handleMenuOpened = this.handleMenuOpened.bind(this);\n this.handleMenuExited = this.handleMenuExited.bind(this);\n\n this.popper = React.createRef();\n this.cbContainer = React.createRef();\n this.menuContainer = React.createRef();\n this.input = React.createRef();\n }\n\n popper: React.RefObject<Popper>;\n\n cbContainer: React.RefObject<HTMLDivElement>;\n\n menuContainer: React.RefObject<HTMLDivElement>;\n\n input: React.RefObject<HTMLInputElement>;\n\n setInputWidth(): void {\n if (this.cbContainer.current) {\n this.setState({\n inputWidth: this.cbContainer.current.getBoundingClientRect().width,\n });\n }\n }\n\n getCachedFilteredOptions = memoize(\n (options: AutoCompleteOption[], input: string) =>\n options.filter(\n // supports partial match\n option => option.title.toLowerCase().indexOf(input.toLowerCase()) >= 0\n )\n );\n\n // validation needs to be an exact case-sensitve match on value\n getValueAndValidate(title: string): { value: string; isValid: boolean } {\n if (!title) {\n this.setState({ invalid: false });\n return { value: title, isValid: false };\n }\n\n // validate\n const { options } = this.props;\n const result = options.filter(\n option => option.title.toLowerCase() === title.toLowerCase()\n );\n if (result.length < 1) {\n this.setState({ invalid: true });\n return { value: title, isValid: false };\n }\n\n this.setState({ invalid: false });\n return { value: result[0].value, isValid: true };\n }\n\n // validate typed entries emit change event using value\n updateInputValue(title: string): void {\n const { menuIsOpen } = this.state;\n const { value, isValid } = this.getValueAndValidate(title);\n if (menuIsOpen) this.processFilterChange(title);\n this.fireOnChange(value, isValid);\n }\n\n fireOnChange(value: string, isValid = true): void {\n const { onChange } = this.props;\n onChange(value, isValid);\n }\n\n processFilterChange(filter: string): void {\n const { options } = this.props;\n const { menuIsOpen } = this.state;\n const filteredOptions = filter\n ? this.getCachedFilteredOptions(options, filter)\n : options;\n const perfectMatch =\n filteredOptions.length === 1 && filteredOptions[0].title === filter;\n this.setState({\n filteredOptions,\n keyboardOptionIndex: 0,\n });\n if (perfectMatch && menuIsOpen) {\n this.closeMenu();\n return;\n }\n this.popper.current?.scheduleUpdate(); // filtered options list can change size, may need to be repositioned\n }\n\n resetValue(): void {\n this.setState({ title: '' });\n this.fireOnChange('');\n }\n\n handleResize(): void {\n this.setInputWidth();\n }\n\n handleMenuKeyDown(event: React.KeyboardEvent): void {\n const { filteredOptions, keyboardOptionIndex } = this.state;\n const option = filteredOptions[keyboardOptionIndex];\n\n switch (event.key) {\n case 'Enter':\n case 'ArrowRight':\n event.stopPropagation();\n event.preventDefault();\n if (option) {\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?.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?.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"],"file":"AutoCompleteInput.js"}
@@ -10,6 +10,7 @@ interface AutoResizeTextareaProps {
10
10
  disabled?: boolean;
11
11
  delimiter?: string;
12
12
  id?: string;
13
+ 'data-testid'?: string;
13
14
  }
14
15
  /**
15
16
  * Makes a textarea that auto resizes based on contents, its height grows with new lines.
@@ -18,7 +19,7 @@ interface AutoResizeTextareaProps {
18
19
  * on focus, and implode on blur. By default, it doesn't word wrap.
19
20
  */
20
21
  declare const AutoResizeTextarea: {
21
- ({ className, value: propsValue, onChange, spellCheck, placeholder, disabled, delimiter, id, }: AutoResizeTextareaProps): JSX.Element;
22
+ ({ className, value: propsValue, onChange, spellCheck, placeholder, disabled, delimiter, id, "data-testid": dataTestId, }: AutoResizeTextareaProps): JSX.Element;
22
23
  propTypes: {
23
24
  value: PropTypes.Validator<string>;
24
25
  onChange: PropTypes.Validator<(...args: any[]) => any>;
@@ -28,6 +29,7 @@ declare const AutoResizeTextarea: {
28
29
  disabled: PropTypes.Requireable<boolean>;
29
30
  delimiter: PropTypes.Requireable<string>;
30
31
  id: PropTypes.Requireable<string>;
32
+ 'data-testid': PropTypes.Requireable<string>;
31
33
  };
32
34
  defaultProps: {
33
35
  className: string;
@@ -36,6 +38,7 @@ declare const AutoResizeTextarea: {
36
38
  disabled: boolean;
37
39
  spellCheck: boolean;
38
40
  delimiter: string;
41
+ 'data-testid': undefined;
39
42
  };
40
43
  };
41
44
  export default AutoResizeTextarea;
@@ -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;CACb;AAED;;;;;GAKG;AACH,QAAA,MAAM,kBAAkB;oGASrB,uBAAuB,GAAG,WAAW;;;;;;;;;;;;;;;;;;;CAuGvC,CAAC;AAsBF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"AutoResizeTextarea.d.ts","sourceRoot":"","sources":["../src/AutoResizeTextarea.tsx"],"names":[],"mappings":";AACA,OAAO,SAAS,MAAM,YAAY,CAAC;AAGnC,OAAO,2BAA2B,CAAC;AAEnC,UAAU,uBAAuB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,QAAA,MAAM,kBAAkB;+HAUrB,uBAAuB,GAAG,WAAW;;;;;;;;;;;;;;;;;;;;;CAwGvC,CAAC;AAwBF,eAAe,kBAAkB,CAAC"}
@@ -18,7 +18,8 @@ var AutoResizeTextarea = _ref => {
18
18
  placeholder = '',
19
19
  disabled = false,
20
20
  delimiter = '',
21
- id = ''
21
+ id = '',
22
+ 'data-testid': dataTestId
22
23
  } = _ref;
23
24
  var [value, setValue] = useState(propsValue);
24
25
  var [isPastedChange, setIsPastedChange] = useState(false);
@@ -113,7 +114,8 @@ var AutoResizeTextarea = _ref => {
113
114
  onBlur: handleBlur,
114
115
  onPaste: handlePaste,
115
116
  spellCheck: spellCheck,
116
- disabled: disabled
117
+ disabled: disabled,
118
+ "data-testid": dataTestId
117
119
  });
118
120
  };
119
121
 
@@ -125,7 +127,8 @@ AutoResizeTextarea.propTypes = {
125
127
  spellCheck: PropTypes.bool,
126
128
  disabled: PropTypes.bool,
127
129
  delimiter: PropTypes.string,
128
- id: PropTypes.string
130
+ id: PropTypes.string,
131
+ 'data-testid': PropTypes.string
129
132
  };
130
133
  AutoResizeTextarea.defaultProps = {
131
134
  className: '',
@@ -133,7 +136,8 @@ AutoResizeTextarea.defaultProps = {
133
136
  placeholder: '',
134
137
  disabled: false,
135
138
  spellCheck: false,
136
- delimiter: ''
139
+ delimiter: '',
140
+ 'data-testid': undefined
137
141
  };
138
142
  export default AutoResizeTextarea;
139
143
  //# sourceMappingURL=AutoResizeTextarea.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/AutoResizeTextarea.tsx"],"names":["React","useState","useRef","useEffect","PropTypes","classNames","AutoResizeTextarea","className","value","propsValue","onChange","spellCheck","placeholder","disabled","delimiter","id","setValue","isPastedChange","setIsPastedChange","element","explode","input","trim","split","filter","string","join","implode","map","reCalculateLayout","current","style","height","resizedHeight","scrollHeight","offsetHeight","clientHeight","handleChange","event","newValue","target","handleFocus","scrollLeft","handleMouseDown","document","activeElement","focus","handleBlur","handlePaste","propTypes","isRequired","func","bool","defaultProps"],"mappings":"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","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}\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 */\nconst AutoResizeTextarea = ({\n className = '',\n value: propsValue,\n onChange,\n spellCheck = false,\n placeholder = '',\n disabled = false,\n delimiter = '',\n id = '',\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 // keep state value in sync with prop changes\n setValue(propsValue);\n }, [propsValue]);\n\n function explode(input: 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) {\n return input\n .split('\\n')\n .map(string => string.trim())\n .join(' ');\n }\n\n function reCalculateLayout() {\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>) {\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() {\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() {\n if (!element.current) return;\n if (document.activeElement === element.current) return;\n element.current.focus();\n }\n\n function handleBlur() {\n if (delimiter) {\n setValue(implode(value));\n onChange(implode(value));\n }\n }\n\n function handlePaste() {\n setIsPastedChange(true);\n }\n\n useEffect(() => {\n reCalculateLayout();\n }, [value]);\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 />\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};\n\nAutoResizeTextarea.defaultProps = {\n className: '',\n id: '',\n placeholder: '',\n disabled: false,\n spellCheck: false,\n delimiter: '',\n};\n\nexport default AutoResizeTextarea;\n"],"file":"AutoResizeTextarea.js"}
1
+ {"version":3,"sources":["../src/AutoResizeTextarea.tsx"],"names":["React","useState","useRef","useEffect","PropTypes","classNames","AutoResizeTextarea","className","value","propsValue","onChange","spellCheck","placeholder","disabled","delimiter","id","dataTestId","setValue","isPastedChange","setIsPastedChange","element","explode","input","trim","split","filter","string","join","implode","map","reCalculateLayout","current","style","height","resizedHeight","scrollHeight","offsetHeight","clientHeight","handleChange","event","newValue","target","handleFocus","scrollLeft","handleMouseDown","document","activeElement","focus","handleBlur","handlePaste","propTypes","isRequired","func","bool","defaultProps","undefined"],"mappings":"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","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 */\nconst 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 // keep state value in sync with prop changes\n setValue(propsValue);\n }, [propsValue]);\n\n function explode(input: 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) {\n return input\n .split('\\n')\n .map(string => string.trim())\n .join(' ');\n }\n\n function reCalculateLayout() {\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>) {\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() {\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() {\n if (!element.current) return;\n if (document.activeElement === element.current) return;\n element.current.focus();\n }\n\n function handleBlur() {\n if (delimiter) {\n setValue(implode(value));\n onChange(implode(value));\n }\n }\n\n function handlePaste() {\n setIsPastedChange(true);\n }\n\n useEffect(() => {\n reCalculateLayout();\n }, [value]);\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"],"file":"AutoResizeTextarea.js"}
@@ -11,6 +11,7 @@ interface BasicModalProps {
11
11
  confirmButtonText?: string;
12
12
  discardButtonText?: string;
13
13
  children?: React.ReactNode;
14
+ 'data-testid'?: string;
14
15
  }
15
16
  /**
16
17
  * A basic modal dialog with two buttons: cancel / confirm.
@@ -1 +1 @@
1
- {"version":3,"file":"BasicModal.d.ts","sourceRoot":"","sources":["../src/BasicModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAMnD,UAAU,eAAe;IACvB,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,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED;;;;;;;;;;;;GAYG;AACH,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAwFzC,CAAC;AA0BF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"BasicModal.d.ts","sourceRoot":"","sources":["../src/BasicModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAMnD,UAAU,eAAe;IACvB,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,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;GAYG;AACH,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAmGzC,CAAC;AA4BF,eAAe,UAAU,CAAC"}
@@ -29,7 +29,8 @@ var BasicModal = props => {
29
29
  cancelButtonText = 'Cancel',
30
30
  confirmButtonText = 'Okay',
31
31
  discardButtonText = 'Discard',
32
- children
32
+ children,
33
+ 'data-testid': dataTestId
33
34
  } = props;
34
35
  var confirmButton = useRef(null);
35
36
  var disableModalCheckbox = useRef(null);
@@ -63,7 +64,8 @@ var BasicModal = props => {
63
64
  className: "custom-control-input",
64
65
  id: "move-confirmation-checkbox",
65
66
  defaultChecked: false,
66
- ref: disableModalCheckbox
67
+ ref: disableModalCheckbox,
68
+ "data-testid": dataTestId ? "".concat(dataTestId, "-checkbox-confirm") : undefined
67
69
  }), /*#__PURE__*/React.createElement("label", {
68
70
  className: "custom-control-label",
69
71
  htmlFor: "move-confirmation-checkbox"
@@ -71,16 +73,19 @@ var BasicModal = props => {
71
73
  type: "button",
72
74
  className: "btn btn-outline-primary mr-auto",
73
75
  "data-dismiss": "modal",
74
- onClick: onDiscard
76
+ onClick: onDiscard,
77
+ "data-testid": dataTestId ? "".concat(dataTestId, "-btn-discard") : undefined
75
78
  }, discardButtonText), onCancel && /*#__PURE__*/React.createElement("button", {
76
79
  type: "button",
77
80
  className: "btn btn-outline-primary",
78
81
  "data-dismiss": "modal",
79
- onClick: onCancel
82
+ onClick: onCancel,
83
+ "data-testid": dataTestId ? "".concat(dataTestId, "-btn-cancel") : undefined
80
84
  }, cancelButtonText), /*#__PURE__*/React.createElement(ButtonGroup, null, /*#__PURE__*/React.createElement(Button, {
81
85
  kind: "primary",
82
86
  onClick: onConfirmClicked,
83
- ref: confirmButton
87
+ ref: confirmButton,
88
+ "data-testid": dataTestId ? "".concat(dataTestId, "-btn-confirm") : undefined
84
89
  }, confirmButtonText), children)));
85
90
  };
86
91
 
@@ -95,7 +100,8 @@ BasicModal.propTypes = {
95
100
  cancelButtonText: PropTypes.string,
96
101
  confirmButtonText: PropTypes.string,
97
102
  discardButtonText: PropTypes.string,
98
- children: PropTypes.node
103
+ children: PropTypes.node,
104
+ 'data-testid': PropTypes.string
99
105
  };
100
106
  BasicModal.defaultProps = {
101
107
  children: undefined,
@@ -104,7 +110,8 @@ BasicModal.defaultProps = {
104
110
  discardButtonText: 'Discard',
105
111
  onCancel: undefined,
106
112
  onDiscard: undefined,
107
- onModalDisable: undefined
113
+ onModalDisable: undefined,
114
+ 'data-testid': undefined
108
115
  };
109
116
  export default BasicModal;
110
117
  //# sourceMappingURL=BasicModal.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/BasicModal.tsx"],"names":["React","useRef","useCallback","Modal","ModalBody","ModalFooter","ModalHeader","PropTypes","ButtonGroup","Button","BasicModal","props","isOpen","headerText","bodyText","onCancel","onConfirm","onDiscard","onModalDisable","cancelButtonText","confirmButtonText","discardButtonText","children","confirmButton","disableModalCheckbox","onConfirmClicked","current","checked","modalBody","focus","propTypes","bool","isRequired","string","oneOfType","func","node","defaultProps","undefined"],"mappings":"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","sourcesContent":["import React, { useRef, useCallback } from 'react';\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from 'reactstrap';\nimport PropTypes from 'prop-types';\nimport ButtonGroup from './ButtonGroup';\nimport Button from './Button';\n\ninterface 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 children?: React.ReactNode;\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 */\nconst BasicModal: React.FC<BasicModalProps> = props => {\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 children,\n } = props;\n\n const confirmButton = useRef<HTMLButtonElement>(null);\n\n const disableModalCheckbox = useRef<HTMLInputElement>(null);\n\n const onConfirmClicked = useCallback(() => {\n if (disableModalCheckbox.current?.checked && onModalDisable) {\n onModalDisable();\n }\n onConfirm();\n }, [onConfirm, onModalDisable]);\n\n let modalBody = '';\n if (isOpen) {\n modalBody = typeof bodyText === 'function' ? bodyText() : bodyText;\n }\n\n return (\n <Modal\n isOpen={isOpen}\n className=\"theme-bg-light\"\n onOpened={() => {\n confirmButton.current?.focus();\n }}\n >\n <ModalHeader>{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 />\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 type=\"button\"\n className=\"btn btn-outline-primary mr-auto\"\n data-dismiss=\"modal\"\n onClick={onDiscard}\n >\n {discardButtonText}\n </button>\n )}\n {onCancel && (\n <button\n type=\"button\"\n className=\"btn btn-outline-primary\"\n data-dismiss=\"modal\"\n onClick={onCancel}\n >\n {cancelButtonText}\n </button>\n )}\n <ButtonGroup>\n <Button kind=\"primary\" onClick={onConfirmClicked} ref={confirmButton}>\n {confirmButtonText}\n </Button>\n {children}\n </ButtonGroup>\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};\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};\n\nexport default BasicModal;\n"],"file":"BasicModal.js"}
1
+ {"version":3,"sources":["../src/BasicModal.tsx"],"names":["React","useRef","useCallback","Modal","ModalBody","ModalFooter","ModalHeader","PropTypes","ButtonGroup","Button","BasicModal","props","isOpen","headerText","bodyText","onCancel","onConfirm","onDiscard","onModalDisable","cancelButtonText","confirmButtonText","discardButtonText","children","dataTestId","confirmButton","disableModalCheckbox","onConfirmClicked","current","checked","modalBody","focus","undefined","propTypes","bool","isRequired","string","oneOfType","func","node","defaultProps"],"mappings":"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","sourcesContent":["import React, { useRef, useCallback } from 'react';\nimport { Modal, ModalBody, ModalFooter, ModalHeader } from 'reactstrap';\nimport PropTypes from 'prop-types';\nimport ButtonGroup from './ButtonGroup';\nimport Button from './Button';\n\ninterface 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 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 */\nconst BasicModal: React.FC<BasicModalProps> = props => {\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 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 (disableModalCheckbox.current?.checked && onModalDisable) {\n onModalDisable();\n }\n onConfirm();\n }, [onConfirm, onModalDisable]);\n\n let modalBody = '';\n if (isOpen) {\n modalBody = typeof bodyText === 'function' ? bodyText() : bodyText;\n }\n\n return (\n <Modal\n isOpen={isOpen}\n className=\"theme-bg-light\"\n onOpened={() => {\n confirmButton.current?.focus();\n }}\n >\n <ModalHeader>{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 ? `${dataTestId}-checkbox-confirm` : 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 type=\"button\"\n className=\"btn btn-outline-primary mr-auto\"\n data-dismiss=\"modal\"\n onClick={onDiscard}\n data-testid={dataTestId ? `${dataTestId}-btn-discard` : undefined}\n >\n {discardButtonText}\n </button>\n )}\n {onCancel && (\n <button\n type=\"button\"\n className=\"btn btn-outline-primary\"\n data-dismiss=\"modal\"\n onClick={onCancel}\n data-testid={dataTestId ? `${dataTestId}-btn-cancel` : undefined}\n >\n {cancelButtonText}\n </button>\n )}\n <ButtonGroup>\n <Button\n kind=\"primary\"\n onClick={onConfirmClicked}\n ref={confirmButton}\n data-testid={dataTestId ? `${dataTestId}-btn-confirm` : undefined}\n >\n {confirmButtonText}\n </Button>\n {children}\n </ButtonGroup>\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"],"file":"BasicModal.js"}
package/dist/Button.d.ts CHANGED
@@ -24,6 +24,6 @@ declare type IconOnlyButton = BaseButtonProps & {
24
24
  icon: IconDefinition | JSX.Element;
25
25
  children?: undefined;
26
26
  };
27
- declare const Button: React.ForwardRefExoticComponent<(Pick<ButtonWithChildren, "className" | "dir" | "form" | "slot" | "style" | "title" | "children" | "tooltip" | "onClick" | "onKeyDown" | "onBlur" | "tabIndex" | "role" | "value" | "onChange" | "disabled" | "spellCheck" | "type" | "onFocus" | "placeholder" | "id" | "onMouseDown" | "onPaste" | "key" | "autoFocus" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "name" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "draggable" | "hidden" | "lang" | "translate" | "radioGroup" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocusCapture" | "onBlurCapture" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "kind" | "icon" | "variant" | "active" | "data-testid"> | Pick<IconOnlyButton, "className" | "dir" | "form" | "slot" | "style" | "title" | "children" | "tooltip" | "onClick" | "onKeyDown" | "onBlur" | "tabIndex" | "role" | "value" | "onChange" | "disabled" | "spellCheck" | "type" | "onFocus" | "placeholder" | "id" | "onMouseDown" | "onPaste" | "key" | "autoFocus" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "name" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "draggable" | "hidden" | "lang" | "translate" | "radioGroup" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocusCapture" | "onBlurCapture" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "kind" | "icon" | "variant" | "active" | "data-testid">) & React.RefAttributes<HTMLButtonElement>>;
27
+ declare const Button: React.ForwardRefExoticComponent<(Pick<ButtonWithChildren, "className" | "data-testid" | "dir" | "form" | "slot" | "style" | "title" | "children" | "tooltip" | "onClick" | "onKeyDown" | "onBlur" | "tabIndex" | "role" | "value" | "onChange" | "disabled" | "spellCheck" | "type" | "onFocus" | "placeholder" | "id" | "onMouseDown" | "onPaste" | "key" | "autoFocus" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "name" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "draggable" | "hidden" | "lang" | "translate" | "radioGroup" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocusCapture" | "onBlurCapture" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "kind" | "icon" | "variant" | "active"> | Pick<IconOnlyButton, "className" | "data-testid" | "dir" | "form" | "slot" | "style" | "title" | "children" | "tooltip" | "onClick" | "onKeyDown" | "onBlur" | "tabIndex" | "role" | "value" | "onChange" | "disabled" | "spellCheck" | "type" | "onFocus" | "placeholder" | "id" | "onMouseDown" | "onPaste" | "key" | "autoFocus" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "name" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "draggable" | "hidden" | "lang" | "translate" | "radioGroup" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocusCapture" | "onBlurCapture" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "kind" | "icon" | "variant" | "active">) & React.RefAttributes<HTMLButtonElement>>;
28
28
  export default Button;
29
29
  //# sourceMappingURL=Button.d.ts.map
@@ -4,6 +4,7 @@ interface ButtonGroupProps {
4
4
  children?: React.ReactNode;
5
5
  className?: string;
6
6
  style?: React.CSSProperties;
7
+ 'data-testid'?: string;
7
8
  }
8
9
  declare const ButtonGroup: {
9
10
  (props: ButtonGroupProps): JSX.Element;
@@ -12,10 +13,12 @@ declare const ButtonGroup: {
12
13
  children: PropTypes.Validator<string | number | boolean | {} | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
13
14
  className: PropTypes.Requireable<string>;
14
15
  style: PropTypes.Requireable<object>;
16
+ 'data-testid': PropTypes.Requireable<string>;
15
17
  };
16
18
  defaultProps: {
17
19
  className: null;
18
20
  style: {};
21
+ 'data-testid': undefined;
19
22
  };
20
23
  };
21
24
  export default ButtonGroup;
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonGroup.d.ts","sourceRoot":"","sources":["../src/ButtonGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,UAAU,gBAAgB;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,QAAA,MAAM,WAAW;YAAW,gBAAgB,GAAG,WAAW;;;;;;;;;;;CAYzD,CAAC;AAeF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"ButtonGroup.d.ts","sourceRoot":"","sources":["../src/ButtonGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,SAAS,MAAM,YAAY,CAAC;AAEnC,UAAU,gBAAgB;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,QAAA,MAAM,WAAW;YAAW,gBAAgB,GAAG,WAAW;;;;;;;;;;;;;CAazD,CAAC;AAiBF,eAAe,WAAW,CAAC"}