@deephaven/components 0.5.2-beta.0 → 0.6.1-demo.8

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 (119) hide show
  1. package/dist/AutoCompleteInput.js +410 -448
  2. package/dist/AutoCompleteInput.js.map +1 -1
  3. package/dist/AutoResizeTextarea.js +17 -46
  4. package/dist/AutoResizeTextarea.js.map +1 -1
  5. package/dist/BasicModal.js +18 -19
  6. package/dist/BasicModal.js.map +1 -1
  7. package/dist/Button.js +30 -21
  8. package/dist/Button.js.map +1 -1
  9. package/dist/ButtonGroup.js +6 -4
  10. package/dist/ButtonGroup.js.map +1 -1
  11. package/dist/ButtonOld.js +10 -8
  12. package/dist/ButtonOld.js.map +1 -1
  13. package/dist/CardFlip.js +10 -8
  14. package/dist/CardFlip.js.map +1 -1
  15. package/dist/Checkbox.js +18 -31
  16. package/dist/Checkbox.js.map +1 -1
  17. package/dist/Collapse.js +65 -105
  18. package/dist/Collapse.js.map +1 -1
  19. package/dist/ComboBox.js +432 -460
  20. package/dist/ComboBox.js.map +1 -1
  21. package/dist/CustomTimeSelect.js +485 -517
  22. package/dist/CustomTimeSelect.js.map +1 -1
  23. package/dist/DebouncedSearchInput.js +61 -91
  24. package/dist/DebouncedSearchInput.js.map +1 -1
  25. package/dist/DeephavenSpinner.js +6 -6
  26. package/dist/DeephavenSpinner.js.map +1 -1
  27. package/dist/DragUtils.js +65 -113
  28. package/dist/DragUtils.js.map +1 -1
  29. package/dist/DraggableItemList.d.ts +1 -0
  30. package/dist/DraggableItemList.d.ts.map +1 -1
  31. package/dist/DraggableItemList.js +219 -257
  32. package/dist/DraggableItemList.js.map +1 -1
  33. package/dist/HierarchicalCheckboxMenu.js +160 -227
  34. package/dist/HierarchicalCheckboxMenu.js.map +1 -1
  35. package/dist/ItemList.d.ts +4 -2
  36. package/dist/ItemList.d.ts.map +1 -1
  37. package/dist/ItemList.js +595 -598
  38. package/dist/ItemList.js.map +1 -1
  39. package/dist/ItemListItem.js +194 -215
  40. package/dist/ItemListItem.js.map +1 -1
  41. package/dist/LoadingOverlay.js +9 -10
  42. package/dist/LoadingOverlay.js.map +1 -1
  43. package/dist/LoadingSpinner.js +4 -3
  44. package/dist/LoadingSpinner.js.map +1 -1
  45. package/dist/MaskedInput.js +59 -70
  46. package/dist/MaskedInput.js.map +1 -1
  47. package/dist/Option.js +5 -3
  48. package/dist/Option.js.map +1 -1
  49. package/dist/RadioGroup.js +16 -34
  50. package/dist/RadioGroup.js.map +1 -1
  51. package/dist/RadioItem.js +14 -33
  52. package/dist/RadioItem.js.map +1 -1
  53. package/dist/SearchInput.js +42 -75
  54. package/dist/SearchInput.js.map +1 -1
  55. package/dist/Select.js +10 -8
  56. package/dist/Select.js.map +1 -1
  57. package/dist/SelectValueList.js +97 -134
  58. package/dist/SelectValueList.js.map +1 -1
  59. package/dist/SocketedButton.js +13 -11
  60. package/dist/SocketedButton.js.map +1 -1
  61. package/dist/ThemeExport.js.map +1 -1
  62. package/dist/TimeInput.js +16 -53
  63. package/dist/TimeInput.js.map +1 -1
  64. package/dist/TimeSlider.js +62 -88
  65. package/dist/TimeSlider.js.map +1 -1
  66. package/dist/ToastNotification.js +14 -13
  67. package/dist/ToastNotification.js.map +1 -1
  68. package/dist/UISwitch.js +9 -8
  69. package/dist/UISwitch.js.map +1 -1
  70. package/dist/context-actions/ContextActionUtils.js +173 -231
  71. package/dist/context-actions/ContextActionUtils.js.map +1 -1
  72. package/dist/context-actions/ContextActions.js +135 -177
  73. package/dist/context-actions/ContextActions.js.map +1 -1
  74. package/dist/context-actions/ContextMenu.js +509 -543
  75. package/dist/context-actions/ContextMenu.js.map +1 -1
  76. package/dist/context-actions/ContextMenuItem.js +32 -22
  77. package/dist/context-actions/ContextMenuItem.js.map +1 -1
  78. package/dist/context-actions/ContextMenuRoot.js +112 -152
  79. package/dist/context-actions/ContextMenuRoot.js.map +1 -1
  80. package/dist/context-actions/GlobalContextAction.js +49 -84
  81. package/dist/context-actions/GlobalContextAction.js.map +1 -1
  82. package/dist/context-actions/GlobalContextActions.js +25 -57
  83. package/dist/context-actions/GlobalContextActions.js.map +1 -1
  84. package/dist/context-actions/index.js +4 -4
  85. package/dist/context-actions/index.js.map +1 -1
  86. package/dist/index.js +39 -39
  87. package/dist/index.js.map +1 -1
  88. package/dist/menu-actions/DropdownMenu.js +126 -159
  89. package/dist/menu-actions/DropdownMenu.js.map +1 -1
  90. package/dist/menu-actions/Menu.js +215 -245
  91. package/dist/menu-actions/Menu.js.map +1 -1
  92. package/dist/menu-actions/index.js +1 -1
  93. package/dist/menu-actions/index.js.map +1 -1
  94. package/dist/navigation/Menu.js +14 -18
  95. package/dist/navigation/Menu.js.map +1 -1
  96. package/dist/navigation/MenuItem.js +15 -14
  97. package/dist/navigation/MenuItem.js.map +1 -1
  98. package/dist/navigation/Page.js +7 -5
  99. package/dist/navigation/Page.js.map +1 -1
  100. package/dist/navigation/Stack.js +14 -39
  101. package/dist/navigation/Stack.js.map +1 -1
  102. package/dist/navigation/index.js +4 -4
  103. package/dist/navigation/index.js.map +1 -1
  104. package/dist/popper/Popper.js +209 -235
  105. package/dist/popper/Popper.js.map +1 -1
  106. package/dist/popper/Tooltip.js +227 -257
  107. package/dist/popper/Tooltip.js.map +1 -1
  108. package/dist/popper/index.js +2 -2
  109. package/dist/popper/index.js.map +1 -1
  110. package/dist/shortcuts/GlobalShortcuts.js +2 -2
  111. package/dist/shortcuts/GlobalShortcuts.js.map +1 -1
  112. package/dist/shortcuts/Shortcut.js +263 -291
  113. package/dist/shortcuts/Shortcut.js.map +1 -1
  114. package/dist/shortcuts/ShortcutRegistry.js +48 -71
  115. package/dist/shortcuts/ShortcutRegistry.js.map +1 -1
  116. package/dist/shortcuts/index.js +4 -4
  117. package/dist/shortcuts/index.js.map +1 -1
  118. package/dist/tsconfig.tsbuildinfo +1 -1
  119. package/package.json +30 -54
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/AutoCompleteInput.tsx"],"names":["React","Component","PropTypes","memoize","classNames","debounce","Popper","DEBOUNCE_DELAY","MENU_NAVIGATION_DIRECTION","AutoCompleteInput","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","current","setState","getBoundingClientRect","width","value","isValid","result","length","getValueAndValidate","processFilterChange","fireOnChange","onChange","getCachedFilteredOptions","perfectMatch","closeMenu","scheduleUpdate","setInputWidth","event","key","stopPropagation","preventDefault","focus","navigateMenu","UP","DOWN","shiftKey","direction","newKeyboardOptionIndex","scrollOptionIntoView","onEnter","resetValue","openMenu","target","relatedTarget","Element","element","contains","window","requestAnimationFrame","show","focusInput","hide","index","children","item","scrollIntoView","behavior","block","renderOptions","noMatchText","map","renderOption","inputPlaceholder","disabled","className","defaultTitle","spellCheck","renderMenuElement","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","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,15 +1,3 @@
1
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
-
3
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
4
-
5
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
6
-
7
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
8
-
9
- function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
10
-
11
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
12
-
13
1
  import React, { useState, useRef, useEffect } from 'react';
14
2
  import PropTypes from 'prop-types';
15
3
  import classNames from 'classnames';
@@ -21,34 +9,21 @@ import "./AutoResizeTextarea.css";
21
9
  * then the field will also "explode" the value by the delimiter over new lines
22
10
  * on focus, and implode on blur. By default, it doesn't word wrap.
23
11
  */
24
- var AutoResizeTextarea = function AutoResizeTextarea(_ref) {
25
- var _ref$className = _ref.className,
26
- className = _ref$className === void 0 ? '' : _ref$className,
27
- propsValue = _ref.value,
28
- onChange = _ref.onChange,
29
- _ref$spellCheck = _ref.spellCheck,
30
- spellCheck = _ref$spellCheck === void 0 ? false : _ref$spellCheck,
31
- _ref$placeholder = _ref.placeholder,
32
- placeholder = _ref$placeholder === void 0 ? '' : _ref$placeholder,
33
- _ref$disabled = _ref.disabled,
34
- disabled = _ref$disabled === void 0 ? false : _ref$disabled,
35
- _ref$delimiter = _ref.delimiter,
36
- delimiter = _ref$delimiter === void 0 ? '' : _ref$delimiter,
37
- _ref$id = _ref.id,
38
- id = _ref$id === void 0 ? '' : _ref$id;
39
-
40
- var _useState = useState(propsValue),
41
- _useState2 = _slicedToArray(_useState, 2),
42
- value = _useState2[0],
43
- setValue = _useState2[1];
44
-
45
- var _useState3 = useState(false),
46
- _useState4 = _slicedToArray(_useState3, 2),
47
- isPastedChange = _useState4[0],
48
- setIsPastedChange = _useState4[1];
49
-
12
+ var AutoResizeTextarea = (_ref) => {
13
+ var {
14
+ className = '',
15
+ value: propsValue,
16
+ onChange,
17
+ spellCheck = false,
18
+ placeholder = '',
19
+ disabled = false,
20
+ delimiter = '',
21
+ id = ''
22
+ } = _ref;
23
+ var [value, setValue] = useState(propsValue);
24
+ var [isPastedChange, setIsPastedChange] = useState(false);
50
25
  var element = useRef(null);
51
- useEffect(function () {
26
+ useEffect(() => {
52
27
  // keep state value in sync with prop changes
53
28
  setValue(propsValue);
54
29
  }, [propsValue]);
@@ -57,16 +32,12 @@ var AutoResizeTextarea = function AutoResizeTextarea(_ref) {
57
32
  // split by delimiter, commonly " " or " -"
58
33
  // strip empty strings (if delimiter is space, and there are multiple spaces in a row)
59
34
  // and join with new line and a trimmed delimeter (get rid of leading spaces)
60
- return input.trim().split(delimiter).filter(function (string) {
61
- return string;
62
- }) // remove empty strings
35
+ return input.trim().split(delimiter).filter(string => string) // remove empty strings
63
36
  .join("\n".concat(delimiter.trim()));
64
37
  }
65
38
 
66
39
  function implode(input) {
67
- return input.split('\n').map(function (string) {
68
- return string.trim();
69
- }).join(' ');
40
+ return input.split('\n').map(string => string.trim()).join(' ');
70
41
  }
71
42
 
72
43
  function reCalculateLayout() {
@@ -117,7 +88,7 @@ var AutoResizeTextarea = function AutoResizeTextarea(_ref) {
117
88
  setIsPastedChange(true);
118
89
  }
119
90
 
120
- useEffect(function () {
91
+ useEffect(() => {
121
92
  reCalculateLayout();
122
93
  }, [value]);
123
94
  return /*#__PURE__*/React.createElement("textarea", {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/AutoResizeTextarea.tsx"],"names":["React","useState","useRef","useEffect","PropTypes","classNames","AutoResizeTextarea","className","propsValue","value","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","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 = 'auto'; // needed to allow component to shrink\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 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 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","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","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 = 'auto'; // needed to allow component to shrink\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 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 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,8 +1,8 @@
1
1
  import React, { useRef, useCallback } from 'react';
2
2
  import { Modal, ModalBody, ModalFooter, ModalHeader } from 'reactstrap';
3
3
  import PropTypes from 'prop-types';
4
- import ButtonGroup from './ButtonGroup';
5
- import Button from './Button';
4
+ import ButtonGroup from "./ButtonGroup.js";
5
+ import Button from "./Button.js";
6
6
 
7
7
  /**
8
8
  * A basic modal dialog with two buttons: cancel / confirm.
@@ -17,24 +17,23 @@ import Button from './Button';
17
17
  * @param confirmButtonText optional text for the confirm button, defaults to 'Okay'
18
18
  * @param discardButtonText optional text for the discard button, defaults to 'Discard'
19
19
  */
20
- var BasicModal = function BasicModal(props) {
21
- var isOpen = props.isOpen,
22
- headerText = props.headerText,
23
- bodyText = props.bodyText,
24
- onCancel = props.onCancel,
25
- onConfirm = props.onConfirm,
26
- onDiscard = props.onDiscard,
27
- onModalDisable = props.onModalDisable,
28
- _props$cancelButtonTe = props.cancelButtonText,
29
- cancelButtonText = _props$cancelButtonTe === void 0 ? 'Cancel' : _props$cancelButtonTe,
30
- _props$confirmButtonT = props.confirmButtonText,
31
- confirmButtonText = _props$confirmButtonT === void 0 ? 'Okay' : _props$confirmButtonT,
32
- _props$discardButtonT = props.discardButtonText,
33
- discardButtonText = _props$discardButtonT === void 0 ? 'Discard' : _props$discardButtonT,
34
- children = props.children;
20
+ var BasicModal = props => {
21
+ var {
22
+ isOpen,
23
+ headerText,
24
+ bodyText,
25
+ onCancel,
26
+ onConfirm,
27
+ onDiscard,
28
+ onModalDisable,
29
+ cancelButtonText = 'Cancel',
30
+ confirmButtonText = 'Okay',
31
+ discardButtonText = 'Discard',
32
+ children
33
+ } = props;
35
34
  var confirmButton = useRef(null);
36
35
  var disableModalCheckbox = useRef(null);
37
- var onConfirmClicked = useCallback(function () {
36
+ var onConfirmClicked = useCallback(() => {
38
37
  var _disableModalCheckbox;
39
38
 
40
39
  if ((_disableModalCheckbox = disableModalCheckbox.current) !== null && _disableModalCheckbox !== void 0 && _disableModalCheckbox.checked && onModalDisable) {
@@ -52,7 +51,7 @@ var BasicModal = function BasicModal(props) {
52
51
  return /*#__PURE__*/React.createElement(Modal, {
53
52
  isOpen: isOpen,
54
53
  className: "theme-bg-light",
55
- onOpened: function onOpened() {
54
+ onOpened: () => {
56
55
  var _confirmButton$curren;
57
56
 
58
57
  (_confirmButton$curren = confirmButton.current) === null || _confirmButton$curren === void 0 ? void 0 : _confirmButton$curren.focus();
@@ -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","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"}
package/dist/Button.js CHANGED
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import classNames from 'classnames';
4
4
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
5
- import { Tooltip } from './popper';
5
+ import { Tooltip } from "./popper/index.js";
6
6
  var BUTTON_KINDS = ['primary', 'secondary', 'tertiary', 'success', 'danger', 'inline', 'ghost'];
7
7
  var VARIANT_KINDS = ['group-end'];
8
8
 
@@ -41,18 +41,20 @@ function getVariantClasses(kind) {
41
41
  }
42
42
  }
43
43
 
44
- var Button = /*#__PURE__*/React.forwardRef(function (props, ref) {
45
- var kind = props.kind,
46
- variant = props.variant,
47
- type = props.type,
48
- tooltip = props.tooltip,
49
- icon = props.icon,
50
- disabled = props.disabled,
51
- active = props.active,
52
- onClick = props.onClick,
53
- children = props.children,
54
- className = props.className,
55
- style = props.style;
44
+ var Button = /*#__PURE__*/React.forwardRef((props, ref) => {
45
+ var {
46
+ kind,
47
+ variant,
48
+ type,
49
+ tooltip,
50
+ icon,
51
+ disabled,
52
+ active,
53
+ onClick,
54
+ children,
55
+ className,
56
+ style
57
+ } = props;
56
58
  var iconOnly = icon && !children;
57
59
  var btnClassName = getClassName(kind, iconOnly);
58
60
  var variantClassName;
@@ -80,7 +82,7 @@ var Button = /*#__PURE__*/React.forwardRef(function (props, ref) {
80
82
  ,
81
83
  type: type,
82
84
  className: classNames('btn', btnClassName, variantClassName, {
83
- active: active
85
+ active
84
86
  }, className),
85
87
  onClick: onClick,
86
88
  style: style,
@@ -97,10 +99,13 @@ Button.propTypes = {
97
99
  kind: PropTypes.oneOf(BUTTON_KINDS).isRequired,
98
100
  variant: PropTypes.oneOf(VARIANT_KINDS),
99
101
  type: PropTypes.oneOf(['button', 'reset', 'submit']),
100
- tooltip: function tooltip(props) {
101
- var tooltip = props.tooltip,
102
- icon = props.icon,
103
- children = props.children;
102
+
103
+ tooltip(props) {
104
+ var {
105
+ tooltip,
106
+ icon,
107
+ children
108
+ } = props;
104
109
 
105
110
  if (!tooltip && icon && !children) {
106
111
  return new Error('Tooltip is required for icon only buttons');
@@ -108,9 +113,12 @@ Button.propTypes = {
108
113
 
109
114
  return null;
110
115
  },
111
- icon: function icon(props) {
112
- var children = props.children,
113
- icon = props.icon;
116
+
117
+ icon(props) {
118
+ var {
119
+ children,
120
+ icon
121
+ } = props;
114
122
 
115
123
  if (!icon && !children) {
116
124
  return new Error('Icon is required if no children are provided');
@@ -122,6 +130,7 @@ Button.propTypes = {
122
130
 
123
131
  return null;
124
132
  },
133
+
125
134
  disabled: PropTypes.bool,
126
135
  active: PropTypes.bool,
127
136
  onClick: PropTypes.func.isRequired,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/Button.tsx"],"names":["React","PropTypes","classNames","FontAwesomeIcon","Tooltip","BUTTON_KINDS","VARIANT_KINDS","getClassName","kind","iconOnly","getVariantClasses","Button","forwardRef","props","ref","variant","type","tooltip","icon","disabled","active","onClick","children","className","style","btnClassName","variantClassName","iconElem","isValidElement","tooltipElem","button","displayName","propTypes","oneOf","isRequired","Error","iconName","bool","func","node","string","object","defaultProps","undefined"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core';\nimport { Tooltip } from './popper';\n\nconst BUTTON_KINDS = [\n 'primary',\n 'secondary',\n 'tertiary',\n 'success',\n 'danger',\n 'inline',\n 'ghost',\n] as const;\ntype ButtonTuple = typeof BUTTON_KINDS;\ntype ButtonKind = ButtonTuple[number];\n\nconst VARIANT_KINDS = ['group-end'] as const;\ntype VariantTuple = typeof VARIANT_KINDS;\ntype VariantKind = VariantTuple[number];\n\ninterface BaseButtonProps {\n kind: ButtonKind;\n variant?: VariantKind;\n type?: 'button' | 'reset' | 'submit';\n tooltip?: string | JSX.Element;\n icon?: IconDefinition | JSX.Element;\n disabled?: boolean;\n active?: boolean;\n onClick: React.MouseEventHandler<HTMLButtonElement>;\n children?: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n}\n\ninterface ButtonWithChildren extends BaseButtonProps {\n children: React.ReactNode;\n}\n\ninterface IconOnlyButton extends BaseButtonProps {\n tooltip: string | JSX.Element;\n icon: IconDefinition | JSX.Element;\n children?: undefined;\n}\n\ntype ButtonProps = IconOnlyButton | ButtonWithChildren;\n\nfunction getClassName(kind: ButtonKind, iconOnly: boolean): string {\n switch (kind) {\n case 'primary':\n return 'btn-primary';\n case 'secondary':\n return 'btn-outline-primary';\n case 'tertiary':\n return 'btn-secondary';\n case 'success':\n return 'btn-success';\n case 'danger':\n return 'btn-danger';\n case 'inline':\n return 'btn-inline';\n case 'ghost':\n return classNames('btn-link', {\n 'btn-link-icon': iconOnly,\n 'px-2': iconOnly,\n });\n }\n}\n\nfunction getVariantClasses(kind: VariantKind): string {\n switch (kind) {\n case 'group-end':\n return classNames('pl-2', 'pr-3');\n }\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (props: ButtonProps, ref) => {\n const {\n kind,\n variant,\n type,\n tooltip,\n icon,\n disabled,\n active,\n onClick,\n children,\n className,\n style,\n } = props;\n\n const iconOnly = (icon && !children) as boolean;\n const btnClassName = getClassName(kind, iconOnly);\n\n let variantClassName;\n if (variant) {\n variantClassName = getVariantClasses(variant);\n }\n\n let iconElem: JSX.Element | undefined;\n if (icon) {\n iconElem = React.isValidElement(icon) ? (\n icon\n ) : (\n <FontAwesomeIcon icon={icon as IconDefinition} />\n );\n }\n\n let tooltipElem: JSX.Element | undefined;\n if (tooltip) {\n tooltipElem =\n typeof tooltip === 'string' ? <Tooltip>{tooltip}</Tooltip> : tooltip;\n }\n\n const button = (\n <button\n ref={ref}\n // eslint-disable-next-line react/button-has-type\n type={type}\n className={classNames(\n 'btn',\n btnClassName,\n variantClassName,\n { active },\n className\n )}\n onClick={onClick}\n style={style}\n disabled={disabled}\n >\n {icon && iconElem}\n {children}\n {tooltip && !disabled && tooltipElem}\n </button>\n );\n\n // disabled buttons tooltips need a wrapped element to receive pointer events\n // https://jakearchibald.com/2017/events-and-disabled-form-fields/\n\n return disabled ? (\n <span className=\"btn-disabled-wrapper\">\n {button}\n {tooltip && tooltipElem}\n </span>\n ) : (\n button\n );\n }\n);\n\nButton.displayName = 'Button';\n\nButton.propTypes = {\n kind: PropTypes.oneOf(BUTTON_KINDS).isRequired,\n variant: PropTypes.oneOf(VARIANT_KINDS),\n type: PropTypes.oneOf(['button', 'reset', 'submit']),\n tooltip(props) {\n const { tooltip, icon, children } = props;\n if (!tooltip && icon && !children) {\n return new Error('Tooltip is required for icon only buttons');\n }\n return null;\n },\n icon(props) {\n const { children, icon } = props;\n if (!icon && !children) {\n return new Error('Icon is required if no children are provided');\n }\n\n if (!children && !React.isValidElement(icon) && !icon?.iconName) {\n return new Error(\n 'Icon must be react element or fontawesome IconDefinition'\n );\n }\n\n return null;\n },\n disabled: PropTypes.bool,\n active: PropTypes.bool,\n onClick: PropTypes.func.isRequired,\n children: PropTypes.node,\n className: PropTypes.string,\n style: PropTypes.object,\n};\n\nButton.defaultProps = {\n type: 'button',\n variant: undefined,\n tooltip: undefined,\n icon: undefined,\n disabled: false,\n active: undefined,\n children: undefined,\n className: undefined,\n style: {},\n};\n\nexport default Button;\n"],"file":"Button.js"}
1
+ {"version":3,"sources":["../src/Button.tsx"],"names":["React","PropTypes","classNames","FontAwesomeIcon","Tooltip","BUTTON_KINDS","VARIANT_KINDS","getClassName","kind","iconOnly","getVariantClasses","Button","forwardRef","props","ref","variant","type","tooltip","icon","disabled","active","onClick","children","className","style","btnClassName","variantClassName","iconElem","isValidElement","tooltipElem","button","displayName","propTypes","oneOf","isRequired","Error","iconName","bool","func","node","string","object","defaultProps","undefined"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core';\nimport { Tooltip } from './popper';\n\nconst BUTTON_KINDS = [\n 'primary',\n 'secondary',\n 'tertiary',\n 'success',\n 'danger',\n 'inline',\n 'ghost',\n] as const;\ntype ButtonTuple = typeof BUTTON_KINDS;\ntype ButtonKind = ButtonTuple[number];\n\nconst VARIANT_KINDS = ['group-end'] as const;\ntype VariantTuple = typeof VARIANT_KINDS;\ntype VariantKind = VariantTuple[number];\n\ninterface BaseButtonProps {\n kind: ButtonKind;\n variant?: VariantKind;\n type?: 'button' | 'reset' | 'submit';\n tooltip?: string | JSX.Element;\n icon?: IconDefinition | JSX.Element;\n disabled?: boolean;\n active?: boolean;\n onClick: React.MouseEventHandler<HTMLButtonElement>;\n children?: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n}\n\ninterface ButtonWithChildren extends BaseButtonProps {\n children: React.ReactNode;\n}\n\ninterface IconOnlyButton extends BaseButtonProps {\n tooltip: string | JSX.Element;\n icon: IconDefinition | JSX.Element;\n children?: undefined;\n}\n\ntype ButtonProps = IconOnlyButton | ButtonWithChildren;\n\nfunction getClassName(kind: ButtonKind, iconOnly: boolean): string {\n switch (kind) {\n case 'primary':\n return 'btn-primary';\n case 'secondary':\n return 'btn-outline-primary';\n case 'tertiary':\n return 'btn-secondary';\n case 'success':\n return 'btn-success';\n case 'danger':\n return 'btn-danger';\n case 'inline':\n return 'btn-inline';\n case 'ghost':\n return classNames('btn-link', {\n 'btn-link-icon': iconOnly,\n 'px-2': iconOnly,\n });\n }\n}\n\nfunction getVariantClasses(kind: VariantKind): string {\n switch (kind) {\n case 'group-end':\n return classNames('pl-2', 'pr-3');\n }\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (props: ButtonProps, ref) => {\n const {\n kind,\n variant,\n type,\n tooltip,\n icon,\n disabled,\n active,\n onClick,\n children,\n className,\n style,\n } = props;\n\n const iconOnly = (icon && !children) as boolean;\n const btnClassName = getClassName(kind, iconOnly);\n\n let variantClassName;\n if (variant) {\n variantClassName = getVariantClasses(variant);\n }\n\n let iconElem: JSX.Element | undefined;\n if (icon) {\n iconElem = React.isValidElement(icon) ? (\n icon\n ) : (\n <FontAwesomeIcon icon={icon as IconDefinition} />\n );\n }\n\n let tooltipElem: JSX.Element | undefined;\n if (tooltip) {\n tooltipElem =\n typeof tooltip === 'string' ? <Tooltip>{tooltip}</Tooltip> : tooltip;\n }\n\n const button = (\n <button\n ref={ref}\n // eslint-disable-next-line react/button-has-type\n type={type}\n className={classNames(\n 'btn',\n btnClassName,\n variantClassName,\n { active },\n className\n )}\n onClick={onClick}\n style={style}\n disabled={disabled}\n >\n {icon && iconElem}\n {children}\n {tooltip && !disabled && tooltipElem}\n </button>\n );\n\n // disabled buttons tooltips need a wrapped element to receive pointer events\n // https://jakearchibald.com/2017/events-and-disabled-form-fields/\n\n return disabled ? (\n <span className=\"btn-disabled-wrapper\">\n {button}\n {tooltip && tooltipElem}\n </span>\n ) : (\n button\n );\n }\n);\n\nButton.displayName = 'Button';\n\nButton.propTypes = {\n kind: PropTypes.oneOf(BUTTON_KINDS).isRequired,\n variant: PropTypes.oneOf(VARIANT_KINDS),\n type: PropTypes.oneOf(['button', 'reset', 'submit']),\n tooltip(props) {\n const { tooltip, icon, children } = props;\n if (!tooltip && icon && !children) {\n return new Error('Tooltip is required for icon only buttons');\n }\n return null;\n },\n icon(props) {\n const { children, icon } = props;\n if (!icon && !children) {\n return new Error('Icon is required if no children are provided');\n }\n\n if (!children && !React.isValidElement(icon) && !icon?.iconName) {\n return new Error(\n 'Icon must be react element or fontawesome IconDefinition'\n );\n }\n\n return null;\n },\n disabled: PropTypes.bool,\n active: PropTypes.bool,\n onClick: PropTypes.func.isRequired,\n children: PropTypes.node,\n className: PropTypes.string,\n style: PropTypes.object,\n};\n\nButton.defaultProps = {\n type: 'button',\n variant: undefined,\n tooltip: undefined,\n icon: undefined,\n disabled: false,\n active: undefined,\n children: undefined,\n className: undefined,\n style: {},\n};\n\nexport default Button;\n"],"file":"Button.js"}
@@ -2,10 +2,12 @@ import React from 'react';
2
2
  import classNames from 'classnames';
3
3
  import PropTypes from 'prop-types';
4
4
 
5
- var ButtonGroup = function ButtonGroup(props) {
6
- var children = props.children,
7
- className = props.className,
8
- style = props.style;
5
+ var ButtonGroup = props => {
6
+ var {
7
+ children,
8
+ className,
9
+ style
10
+ } = props;
9
11
  return /*#__PURE__*/React.createElement("div", {
10
12
  className: classNames('btn-group', className),
11
13
  style: style,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ButtonGroup.tsx"],"names":["React","classNames","PropTypes","ButtonGroup","props","children","className","style","displayName","propTypes","node","isRequired","string","object","defaultProps"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,OAAOC,SAAP,MAAsB,YAAtB;;AAQA,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAACC,KAAD,EAA0C;AAC5D,MAAQC,QAAR,GAAuCD,KAAvC,CAAQC,QAAR;AAAA,MAAkBC,SAAlB,GAAuCF,KAAvC,CAAkBE,SAAlB;AAAA,MAA6BC,KAA7B,GAAuCH,KAAvC,CAA6BG,KAA7B;AAEA,sBACE;AACE,IAAA,SAAS,EAAEN,UAAU,CAAC,WAAD,EAAcK,SAAd,CADvB;AAEE,IAAA,KAAK,EAAEC,KAFT;AAGE,IAAA,IAAI,EAAC;AAHP,KAKGF,QALH,CADF;AASD,CAZD;;AAcAF,WAAW,CAACK,WAAZ,GAA0B,aAA1B;AAEAL,WAAW,CAACM,SAAZ,GAAwB;AACtBJ,EAAAA,QAAQ,EAAEH,SAAS,CAACQ,IAAV,CAAeC,UADH;AAEtBL,EAAAA,SAAS,EAAEJ,SAAS,CAACU,MAFC;AAGtBL,EAAAA,KAAK,EAAEL,SAAS,CAACW;AAHK,CAAxB;AAMAV,WAAW,CAACW,YAAZ,GAA2B;AACzBR,EAAAA,SAAS,EAAE,IADc;AAEzBC,EAAAA,KAAK,EAAE;AAFkB,CAA3B;AAKA,eAAeJ,WAAf","sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\n\ninterface ButtonGroupProps {\n children?: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst ButtonGroup = (props: ButtonGroupProps): JSX.Element => {\n const { children, className, style } = props;\n\n return (\n <div\n className={classNames('btn-group', className)}\n style={style}\n role=\"group\"\n >\n {children}\n </div>\n );\n};\n\nButtonGroup.displayName = 'ButtonGroup';\n\nButtonGroup.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n style: PropTypes.object,\n};\n\nButtonGroup.defaultProps = {\n className: null,\n style: {},\n};\n\nexport default ButtonGroup;\n"],"file":"ButtonGroup.js"}
1
+ {"version":3,"sources":["../src/ButtonGroup.tsx"],"names":["React","classNames","PropTypes","ButtonGroup","props","children","className","style","displayName","propTypes","node","isRequired","string","object","defaultProps"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,OAAOC,SAAP,MAAsB,YAAtB;;AAQA,IAAMC,WAAW,GAAIC,KAAD,IAA0C;AAC5D,MAAM;AAAEC,IAAAA,QAAF;AAAYC,IAAAA,SAAZ;AAAuBC,IAAAA;AAAvB,MAAiCH,KAAvC;AAEA,sBACE;AACE,IAAA,SAAS,EAAEH,UAAU,CAAC,WAAD,EAAcK,SAAd,CADvB;AAEE,IAAA,KAAK,EAAEC,KAFT;AAGE,IAAA,IAAI,EAAC;AAHP,KAKGF,QALH,CADF;AASD,CAZD;;AAcAF,WAAW,CAACK,WAAZ,GAA0B,aAA1B;AAEAL,WAAW,CAACM,SAAZ,GAAwB;AACtBJ,EAAAA,QAAQ,EAAEH,SAAS,CAACQ,IAAV,CAAeC,UADH;AAEtBL,EAAAA,SAAS,EAAEJ,SAAS,CAACU,MAFC;AAGtBL,EAAAA,KAAK,EAAEL,SAAS,CAACW;AAHK,CAAxB;AAMAV,WAAW,CAACW,YAAZ,GAA2B;AACzBR,EAAAA,SAAS,EAAE,IADc;AAEzBC,EAAAA,KAAK,EAAE;AAFkB,CAA3B;AAKA,eAAeJ,WAAf","sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\n\ninterface ButtonGroupProps {\n children?: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst ButtonGroup = (props: ButtonGroupProps): JSX.Element => {\n const { children, className, style } = props;\n\n return (\n <div\n className={classNames('btn-group', className)}\n style={style}\n role=\"group\"\n >\n {children}\n </div>\n );\n};\n\nButtonGroup.displayName = 'ButtonGroup';\n\nButtonGroup.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n style: PropTypes.object,\n};\n\nButtonGroup.defaultProps = {\n className: null,\n style: {},\n};\n\nexport default ButtonGroup;\n"],"file":"ButtonGroup.js"}
package/dist/ButtonOld.js CHANGED
@@ -1,13 +1,15 @@
1
1
  import React from 'react';
2
2
  import classNames from 'classnames';
3
3
  import PropTypes from 'prop-types';
4
- var Button = /*#__PURE__*/React.forwardRef(function (props, ref) {
5
- var children = props.children,
6
- className = props.className,
7
- disabled = props.disabled,
8
- onClick = props.onClick,
9
- style = props.style,
10
- id = props.id;
4
+ var Button = /*#__PURE__*/React.forwardRef((props, ref) => {
5
+ var {
6
+ children,
7
+ className,
8
+ disabled,
9
+ onClick,
10
+ style,
11
+ id
12
+ } = props;
11
13
  return /*#__PURE__*/React.createElement("button", {
12
14
  ref: ref,
13
15
  type: "button",
@@ -31,7 +33,7 @@ Button.defaultProps = {
31
33
  children: null,
32
34
  className: '',
33
35
  disabled: false,
34
- onClick: function onClick() {},
36
+ onClick: () => {},
35
37
  style: {},
36
38
  id: ''
37
39
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ButtonOld.jsx"],"names":["React","classNames","PropTypes","Button","forwardRef","props","ref","children","className","disabled","onClick","style","id","displayName","propTypes","node","string","bool","func","shape","defaultProps"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AAEA,IAAMC,MAAM,gBAAGH,KAAK,CAACI,UAAN,CAAiB,UAACC,KAAD,EAAQC,GAAR,EAAgB;AAC9C,MAAQC,QAAR,GAA8DF,KAA9D,CAAQE,QAAR;AAAA,MAAkBC,SAAlB,GAA8DH,KAA9D,CAAkBG,SAAlB;AAAA,MAA6BC,QAA7B,GAA8DJ,KAA9D,CAA6BI,QAA7B;AAAA,MAAuCC,OAAvC,GAA8DL,KAA9D,CAAuCK,OAAvC;AAAA,MAAgDC,KAAhD,GAA8DN,KAA9D,CAAgDM,KAAhD;AAAA,MAAuDC,EAAvD,GAA8DP,KAA9D,CAAuDO,EAAvD;AACA,sBACE;AACE,IAAA,GAAG,EAAEN,GADP;AAEE,IAAA,IAAI,EAAC,QAFP;AAGE,IAAA,SAAS,EAAEL,UAAU,CAAC,KAAD,EAAQO,SAAR,CAHvB;AAIE,IAAA,OAAO,EAAEE,OAJX;AAKE,IAAA,KAAK,EAAEC,KALT;AAME,IAAA,QAAQ,EAAEF,QANZ;AAOE,IAAA,EAAE,EAAEG;AAPN,KASGL,QATH,CADF;AAaD,CAfc,CAAf;AAiBAJ,MAAM,CAACU,WAAP,GAAqB,QAArB;AAEAV,MAAM,CAACW,SAAP,GAAmB;AACjBP,EAAAA,QAAQ,EAAEL,SAAS,CAACa,IADH;AAEjBP,EAAAA,SAAS,EAAEN,SAAS,CAACc,MAFJ;AAGjBP,EAAAA,QAAQ,EAAEP,SAAS,CAACe,IAHH;AAIjBP,EAAAA,OAAO,EAAER,SAAS,CAACgB,IAJF;AAKjBP,EAAAA,KAAK,EAAET,SAAS,CAACiB,KAAV,CAAgB,EAAhB,CALU;AAMjBP,EAAAA,EAAE,EAAEV,SAAS,CAACc;AANG,CAAnB;AASAb,MAAM,CAACiB,YAAP,GAAsB;AACpBb,EAAAA,QAAQ,EAAE,IADU;AAEpBC,EAAAA,SAAS,EAAE,EAFS;AAGpBC,EAAAA,QAAQ,EAAE,KAHU;AAIpBC,EAAAA,OAAO,EAAE,mBAAM,CAAE,CAJG;AAKpBC,EAAAA,KAAK,EAAE,EALa;AAMpBC,EAAAA,EAAE,EAAE;AANgB,CAAtB;AASA,eAAeT,MAAf","sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\n\nconst Button = React.forwardRef((props, ref) => {\n const { children, className, disabled, onClick, style, id } = props;\n return (\n <button\n ref={ref}\n type=\"button\"\n className={classNames('btn', className)}\n onClick={onClick}\n style={style}\n disabled={disabled}\n id={id}\n >\n {children}\n </button>\n );\n});\n\nButton.displayName = 'Button';\n\nButton.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n onClick: PropTypes.func,\n style: PropTypes.shape({}),\n id: PropTypes.string,\n};\n\nButton.defaultProps = {\n children: null,\n className: '',\n disabled: false,\n onClick: () => {},\n style: {},\n id: '',\n};\n\nexport default Button;\n"],"file":"ButtonOld.js"}
1
+ {"version":3,"sources":["../src/ButtonOld.jsx"],"names":["React","classNames","PropTypes","Button","forwardRef","props","ref","children","className","disabled","onClick","style","id","displayName","propTypes","node","string","bool","func","shape","defaultProps"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AAEA,IAAMC,MAAM,gBAAGH,KAAK,CAACI,UAAN,CAAiB,CAACC,KAAD,EAAQC,GAAR,KAAgB;AAC9C,MAAM;AAAEC,IAAAA,QAAF;AAAYC,IAAAA,SAAZ;AAAuBC,IAAAA,QAAvB;AAAiCC,IAAAA,OAAjC;AAA0CC,IAAAA,KAA1C;AAAiDC,IAAAA;AAAjD,MAAwDP,KAA9D;AACA,sBACE;AACE,IAAA,GAAG,EAAEC,GADP;AAEE,IAAA,IAAI,EAAC,QAFP;AAGE,IAAA,SAAS,EAAEL,UAAU,CAAC,KAAD,EAAQO,SAAR,CAHvB;AAIE,IAAA,OAAO,EAAEE,OAJX;AAKE,IAAA,KAAK,EAAEC,KALT;AAME,IAAA,QAAQ,EAAEF,QANZ;AAOE,IAAA,EAAE,EAAEG;AAPN,KASGL,QATH,CADF;AAaD,CAfc,CAAf;AAiBAJ,MAAM,CAACU,WAAP,GAAqB,QAArB;AAEAV,MAAM,CAACW,SAAP,GAAmB;AACjBP,EAAAA,QAAQ,EAAEL,SAAS,CAACa,IADH;AAEjBP,EAAAA,SAAS,EAAEN,SAAS,CAACc,MAFJ;AAGjBP,EAAAA,QAAQ,EAAEP,SAAS,CAACe,IAHH;AAIjBP,EAAAA,OAAO,EAAER,SAAS,CAACgB,IAJF;AAKjBP,EAAAA,KAAK,EAAET,SAAS,CAACiB,KAAV,CAAgB,EAAhB,CALU;AAMjBP,EAAAA,EAAE,EAAEV,SAAS,CAACc;AANG,CAAnB;AASAb,MAAM,CAACiB,YAAP,GAAsB;AACpBb,EAAAA,QAAQ,EAAE,IADU;AAEpBC,EAAAA,SAAS,EAAE,EAFS;AAGpBC,EAAAA,QAAQ,EAAE,KAHU;AAIpBC,EAAAA,OAAO,EAAE,MAAM,CAAE,CAJG;AAKpBC,EAAAA,KAAK,EAAE,EALa;AAMpBC,EAAAA,EAAE,EAAE;AANgB,CAAtB;AASA,eAAeT,MAAf","sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\n\nconst Button = React.forwardRef((props, ref) => {\n const { children, className, disabled, onClick, style, id } = props;\n return (\n <button\n ref={ref}\n type=\"button\"\n className={classNames('btn', className)}\n onClick={onClick}\n style={style}\n disabled={disabled}\n id={id}\n >\n {children}\n </button>\n );\n});\n\nButton.displayName = 'Button';\n\nButton.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n onClick: PropTypes.func,\n style: PropTypes.shape({}),\n id: PropTypes.string,\n};\n\nButton.defaultProps = {\n children: null,\n className: '',\n disabled: false,\n onClick: () => {},\n style: {},\n id: '',\n};\n\nexport default Button;\n"],"file":"ButtonOld.js"}