@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.
- package/dist/AutoCompleteInput.js +410 -448
- package/dist/AutoCompleteInput.js.map +1 -1
- package/dist/AutoResizeTextarea.js +17 -46
- package/dist/AutoResizeTextarea.js.map +1 -1
- package/dist/BasicModal.js +18 -19
- package/dist/BasicModal.js.map +1 -1
- package/dist/Button.js +30 -21
- package/dist/Button.js.map +1 -1
- package/dist/ButtonGroup.js +6 -4
- package/dist/ButtonGroup.js.map +1 -1
- package/dist/ButtonOld.js +10 -8
- package/dist/ButtonOld.js.map +1 -1
- package/dist/CardFlip.js +10 -8
- package/dist/CardFlip.js.map +1 -1
- package/dist/Checkbox.js +18 -31
- package/dist/Checkbox.js.map +1 -1
- package/dist/Collapse.js +65 -105
- package/dist/Collapse.js.map +1 -1
- package/dist/ComboBox.js +432 -460
- package/dist/ComboBox.js.map +1 -1
- package/dist/CustomTimeSelect.js +485 -517
- package/dist/CustomTimeSelect.js.map +1 -1
- package/dist/DebouncedSearchInput.js +61 -91
- package/dist/DebouncedSearchInput.js.map +1 -1
- package/dist/DeephavenSpinner.js +6 -6
- package/dist/DeephavenSpinner.js.map +1 -1
- package/dist/DragUtils.js +65 -113
- package/dist/DragUtils.js.map +1 -1
- package/dist/DraggableItemList.d.ts +1 -0
- package/dist/DraggableItemList.d.ts.map +1 -1
- package/dist/DraggableItemList.js +219 -257
- package/dist/DraggableItemList.js.map +1 -1
- package/dist/HierarchicalCheckboxMenu.js +160 -227
- package/dist/HierarchicalCheckboxMenu.js.map +1 -1
- package/dist/ItemList.d.ts +4 -2
- package/dist/ItemList.d.ts.map +1 -1
- package/dist/ItemList.js +595 -598
- package/dist/ItemList.js.map +1 -1
- package/dist/ItemListItem.js +194 -215
- package/dist/ItemListItem.js.map +1 -1
- package/dist/LoadingOverlay.js +9 -10
- package/dist/LoadingOverlay.js.map +1 -1
- package/dist/LoadingSpinner.js +4 -3
- package/dist/LoadingSpinner.js.map +1 -1
- package/dist/MaskedInput.js +59 -70
- package/dist/MaskedInput.js.map +1 -1
- package/dist/Option.js +5 -3
- package/dist/Option.js.map +1 -1
- package/dist/RadioGroup.js +16 -34
- package/dist/RadioGroup.js.map +1 -1
- package/dist/RadioItem.js +14 -33
- package/dist/RadioItem.js.map +1 -1
- package/dist/SearchInput.js +42 -75
- package/dist/SearchInput.js.map +1 -1
- package/dist/Select.js +10 -8
- package/dist/Select.js.map +1 -1
- package/dist/SelectValueList.js +97 -134
- package/dist/SelectValueList.js.map +1 -1
- package/dist/SocketedButton.js +13 -11
- package/dist/SocketedButton.js.map +1 -1
- package/dist/ThemeExport.js.map +1 -1
- package/dist/TimeInput.js +16 -53
- package/dist/TimeInput.js.map +1 -1
- package/dist/TimeSlider.js +62 -88
- package/dist/TimeSlider.js.map +1 -1
- package/dist/ToastNotification.js +14 -13
- package/dist/ToastNotification.js.map +1 -1
- package/dist/UISwitch.js +9 -8
- package/dist/UISwitch.js.map +1 -1
- package/dist/context-actions/ContextActionUtils.js +173 -231
- package/dist/context-actions/ContextActionUtils.js.map +1 -1
- package/dist/context-actions/ContextActions.js +135 -177
- package/dist/context-actions/ContextActions.js.map +1 -1
- package/dist/context-actions/ContextMenu.js +509 -543
- package/dist/context-actions/ContextMenu.js.map +1 -1
- package/dist/context-actions/ContextMenuItem.js +32 -22
- package/dist/context-actions/ContextMenuItem.js.map +1 -1
- package/dist/context-actions/ContextMenuRoot.js +112 -152
- package/dist/context-actions/ContextMenuRoot.js.map +1 -1
- package/dist/context-actions/GlobalContextAction.js +49 -84
- package/dist/context-actions/GlobalContextAction.js.map +1 -1
- package/dist/context-actions/GlobalContextActions.js +25 -57
- package/dist/context-actions/GlobalContextActions.js.map +1 -1
- package/dist/context-actions/index.js +4 -4
- package/dist/context-actions/index.js.map +1 -1
- package/dist/index.js +39 -39
- package/dist/index.js.map +1 -1
- package/dist/menu-actions/DropdownMenu.js +126 -159
- package/dist/menu-actions/DropdownMenu.js.map +1 -1
- package/dist/menu-actions/Menu.js +215 -245
- package/dist/menu-actions/Menu.js.map +1 -1
- package/dist/menu-actions/index.js +1 -1
- package/dist/menu-actions/index.js.map +1 -1
- package/dist/navigation/Menu.js +14 -18
- package/dist/navigation/Menu.js.map +1 -1
- package/dist/navigation/MenuItem.js +15 -14
- package/dist/navigation/MenuItem.js.map +1 -1
- package/dist/navigation/Page.js +7 -5
- package/dist/navigation/Page.js.map +1 -1
- package/dist/navigation/Stack.js +14 -39
- package/dist/navigation/Stack.js.map +1 -1
- package/dist/navigation/index.js +4 -4
- package/dist/navigation/index.js.map +1 -1
- package/dist/popper/Popper.js +209 -235
- package/dist/popper/Popper.js.map +1 -1
- package/dist/popper/Tooltip.js +227 -257
- package/dist/popper/Tooltip.js.map +1 -1
- package/dist/popper/index.js +2 -2
- package/dist/popper/index.js.map +1 -1
- package/dist/shortcuts/GlobalShortcuts.js +2 -2
- package/dist/shortcuts/GlobalShortcuts.js.map +1 -1
- package/dist/shortcuts/Shortcut.js +263 -291
- package/dist/shortcuts/Shortcut.js.map +1 -1
- package/dist/shortcuts/ShortcutRegistry.js +48 -71
- package/dist/shortcuts/ShortcutRegistry.js.map +1 -1
- package/dist/shortcuts/index.js +4 -4
- package/dist/shortcuts/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- 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 =
|
|
25
|
-
var
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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","
|
|
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":"AAAA,OAAOA,KAAP,IAAgBC,QAAhB,EAA0BC,MAA1B,EAAkCC,SAAlC,QAAmD,OAAnD;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,UAAP,MAAuB,YAAvB;;;AAeA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMC,kBAAkB,GAAG,UASiB;AAAA,MAThB;AAC1BC,IAAAA,SAAS,GAAG,EADc;AAE1BC,IAAAA,KAAK,EAAEC,UAFmB;AAG1BC,IAAAA,QAH0B;AAI1BC,IAAAA,UAAU,GAAG,KAJa;AAK1BC,IAAAA,WAAW,GAAG,EALY;AAM1BC,IAAAA,QAAQ,GAAG,KANe;AAO1BC,IAAAA,SAAS,GAAG,EAPc;AAQ1BC,IAAAA,EAAE,GAAG;AARqB,GASgB;AAC1C,MAAM,CAACP,KAAD,EAAQQ,QAAR,IAAoBf,QAAQ,CAACQ,UAAD,CAAlC;AACA,MAAM,CAACQ,cAAD,EAAiBC,iBAAjB,IAAsCjB,QAAQ,CAAC,KAAD,CAApD;AACA,MAAMkB,OAAO,GAAGjB,MAAM,CAAsB,IAAtB,CAAtB;AAEAC,EAAAA,SAAS,CAAC,MAAM;AACd;AACAa,IAAAA,QAAQ,CAACP,UAAD,CAAR;AACD,GAHQ,EAGN,CAACA,UAAD,CAHM,CAAT;;AAKA,WAASW,OAAT,CAAiBC,KAAjB,EAAgC;AAC9B;AACA;AACA;AACA,WAAOA,KAAK,CACTC,IADI,GAEJC,KAFI,CAEET,SAFF,EAGJU,MAHI,CAGGC,MAAM,IAAIA,MAHb,EAGqB;AAHrB,KAIJC,IAJI,aAIMZ,SAAS,CAACQ,IAAV,EAJN,EAAP;AAKD;;AAED,WAASK,OAAT,CAAiBN,KAAjB,EAAgC;AAC9B,WAAOA,KAAK,CACTE,KADI,CACE,IADF,EAEJK,GAFI,CAEAH,MAAM,IAAIA,MAAM,CAACH,IAAP,EAFV,EAGJI,IAHI,CAGC,GAHD,CAAP;AAID;;AAED,WAASG,iBAAT,GAA6B;AAC3B,QAAI,CAACV,OAAO,CAACW,OAAb,EAAsB;AACpB;AACD;;AACDX,IAAAA,OAAO,CAACW,OAAR,CAAgBC,KAAhB,CAAsBC,MAAtB,GAA+B,MAA/B,CAJ2B,CAIY;;AACvC,QAAMC,aAAa,GACjBd,OAAO,CAACW,OAAR,CAAgBI,YAAhB,IACCf,OAAO,CAACW,OAAR,CAAgBK,YAAhB,GAA+BhB,OAAO,CAACW,OAAR,CAAgBM,YADhD,CADF,CAL2B,CAQ3B;;AACA,QAAIH,aAAa,GAAG,CAApB,EAAuBd,OAAO,CAACW,OAAR,CAAgBC,KAAhB,CAAsBC,MAAtB,aAAkCC,aAAlC;AACxB;;AAED,WAASI,YAAT,CAAsBC,KAAtB,EAAqE;AACnE,QAAIC,QAAQ,GAAGD,KAAK,CAACE,MAAN,CAAahC,KAA5B;;AACA,QAAIS,cAAJ,EAAoB;AAClB,UAAIH,SAAJ,EAAeyB,QAAQ,GAAGnB,OAAO,CAACmB,QAAD,CAAlB;AACfrB,MAAAA,iBAAiB,CAAC,KAAD,CAAjB;AACD;;AACDF,IAAAA,QAAQ,CAACuB,QAAD,CAAR;AACA7B,IAAAA,QAAQ,CAAC6B,QAAD,CAAR;AACD;;AAED,WAASE,WAAT,GAAuB;AACrB,QAAI,CAACtB,OAAO,CAACW,OAAb,EAAsB;AACpB;AACD;;AACD,QAAIhB,SAAJ,EAAe;AACbE,MAAAA,QAAQ,CAACI,OAAO,CAACZ,KAAD,CAAR,CAAR;AACAqB,MAAAA,iBAAiB;AAClB;;AACDV,IAAAA,OAAO,CAACW,OAAR,CAAgBY,UAAhB,GAA6B,CAA7B,CARqB,CASrB;AACD;;AAED,WAASC,UAAT,GAAsB;AACpB,QAAI7B,SAAJ,EAAe;AACbE,MAAAA,QAAQ,CAACW,OAAO,CAACnB,KAAD,CAAR,CAAR;AACAE,MAAAA,QAAQ,CAACiB,OAAO,CAACnB,KAAD,CAAR,CAAR;AACD;AACF;;AAED,WAASoC,WAAT,GAAuB;AACrB1B,IAAAA,iBAAiB,CAAC,IAAD,CAAjB;AACD;;AAEDf,EAAAA,SAAS,CAAC,MAAM;AACd0B,IAAAA,iBAAiB;AAClB,GAFQ,EAEN,CAACrB,KAAD,CAFM,CAAT;AAIA,sBACE;AACE,IAAA,GAAG,EAAEW,OADP;AAEE,IAAA,EAAE,EAAEJ,EAFN;AAGE,IAAA,SAAS,EAAEV,UAAU,CAACE,SAAD,EAAY,mCAAZ,CAHvB;AAIE,IAAA,WAAW,EAAEK,WAJf;AAKE,IAAA,KAAK,EAAEJ,KALT;AAME,IAAA,IAAI,EAAE,CANR;AAOE,IAAA,QAAQ,EAAE6B,YAPZ;AAQE,IAAA,OAAO,EAAEI,WARX;AASE,IAAA,MAAM,EAAEE,UATV;AAUE,IAAA,OAAO,EAAEC,WAVX;AAWE,IAAA,UAAU,EAAEjC,UAXd;AAYE,IAAA,QAAQ,EAAEE;AAZZ,IADF;AAgBD,CAtGD;;AAwGAP,kBAAkB,CAACuC,SAAnB,GAA+B;AAC7BrC,EAAAA,KAAK,EAAEJ,SAAS,CAACqB,MAAV,CAAiBqB,UADK;AAE7BpC,EAAAA,QAAQ,EAAEN,SAAS,CAAC2C,IAAV,CAAeD,UAFI;AAG7BvC,EAAAA,SAAS,EAAEH,SAAS,CAACqB,MAHQ;AAI7Bb,EAAAA,WAAW,EAAER,SAAS,CAACqB,MAJM;AAK7Bd,EAAAA,UAAU,EAAEP,SAAS,CAAC4C,IALO;AAM7BnC,EAAAA,QAAQ,EAAET,SAAS,CAAC4C,IANS;AAO7BlC,EAAAA,SAAS,EAAEV,SAAS,CAACqB,MAPQ;AAQ7BV,EAAAA,EAAE,EAAEX,SAAS,CAACqB;AARe,CAA/B;AAWAnB,kBAAkB,CAAC2C,YAAnB,GAAkC;AAChC1C,EAAAA,SAAS,EAAE,EADqB;AAEhCQ,EAAAA,EAAE,EAAE,EAF4B;AAGhCH,EAAAA,WAAW,EAAE,EAHmB;AAIhCC,EAAAA,QAAQ,EAAE,KAJsB;AAKhCF,EAAAA,UAAU,EAAE,KALoB;AAMhCG,EAAAA,SAAS,EAAE;AANqB,CAAlC;AASA,eAAeR,kBAAf","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"}
|
package/dist/BasicModal.js
CHANGED
|
@@ -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
|
|
5
|
-
import Button from
|
|
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 =
|
|
21
|
-
var
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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(
|
|
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:
|
|
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();
|
package/dist/BasicModal.js.map
CHANGED
|
@@ -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":"AAAA,OAAOA,KAAP,IAAgBC,MAAhB,EAAwBC,WAAxB,QAA2C,OAA3C;AACA,SAASC,KAAT,EAAgBC,SAAhB,EAA2BC,WAA3B,EAAwCC,WAAxC,QAA2D,YAA3D;AACA,OAAOC,SAAP,MAAsB,YAAtB;
|
|
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'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
|
|
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(
|
|
45
|
-
var
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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
|
|
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
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
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
|
-
|
|
112
|
-
|
|
113
|
-
|
|
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,
|
package/dist/Button.js.map
CHANGED
|
@@ -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":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,SAASC,eAAT,QAAgC,gCAAhC;
|
|
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"}
|
package/dist/ButtonGroup.js
CHANGED
|
@@ -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 =
|
|
6
|
-
var
|
|
7
|
-
|
|
8
|
-
|
|
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,
|
package/dist/ButtonGroup.js.map
CHANGED
|
@@ -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,
|
|
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(
|
|
5
|
-
var
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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:
|
|
36
|
+
onClick: () => {},
|
|
35
37
|
style: {},
|
|
36
38
|
id: ''
|
|
37
39
|
};
|
package/dist/ButtonOld.js.map
CHANGED
|
@@ -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,
|
|
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"}
|