@deephaven/components 0.51.1-beta.0 → 0.52.1-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AutoCompleteInput.d.ts +2 -2
- package/dist/AutoCompleteInput.d.ts.map +1 -1
- package/dist/AutoCompleteInput.js.map +1 -1
- package/dist/ComboBox.d.ts +2 -2
- package/dist/ComboBox.d.ts.map +1 -1
- package/dist/ComboBox.js.map +1 -1
- package/dist/CustomTimeSelect.d.ts +3 -3
- package/dist/CustomTimeSelect.d.ts.map +1 -1
- package/dist/CustomTimeSelect.js.map +1 -1
- package/dist/DateInput.d.ts +3 -3
- package/dist/DateInput.d.ts.map +1 -1
- package/dist/DateInput.js.map +1 -1
- package/dist/DateTimeInput.d.ts +4 -4
- package/dist/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput.js.map +1 -1
- package/dist/DebouncedSearchInput.d.ts +1 -1
- package/dist/DebouncedSearchInput.d.ts.map +1 -1
- package/dist/DebouncedSearchInput.js.map +1 -1
- package/dist/DragUtils.d.ts +3 -3
- package/dist/DragUtils.d.ts.map +1 -1
- package/dist/DragUtils.js.map +1 -1
- package/dist/DraggableItemList.d.ts +1 -1
- package/dist/DraggableItemList.d.ts.map +1 -1
- package/dist/DraggableItemList.js.map +1 -1
- package/dist/EditableItemList.js.map +1 -1
- package/dist/HierarchicalCheckboxMenu.d.ts +1 -1
- package/dist/HierarchicalCheckboxMenu.d.ts.map +1 -1
- package/dist/HierarchicalCheckboxMenu.js.map +1 -1
- package/dist/ItemList.d.ts +4 -4
- package/dist/ItemList.d.ts.map +1 -1
- package/dist/ItemList.js +6 -6
- package/dist/ItemList.js.map +1 -1
- package/dist/ItemListItem.d.ts +13 -13
- package/dist/ItemListItem.d.ts.map +1 -1
- package/dist/ItemListItem.js.map +1 -1
- package/dist/MaskedInput.d.ts +5 -5
- package/dist/MaskedInput.d.ts.map +1 -1
- package/dist/MaskedInput.js.map +1 -1
- package/dist/SelectValueList.d.ts +2 -2
- package/dist/SelectValueList.d.ts.map +1 -1
- package/dist/SelectValueList.js.map +1 -1
- package/dist/TimeInput.d.ts +4 -4
- package/dist/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput.js.map +1 -1
- package/dist/TimeSlider.d.ts +2 -2
- package/dist/TimeSlider.d.ts.map +1 -1
- package/dist/TimeSlider.js.map +1 -1
- package/dist/context-actions/ContextActionUtils.d.ts +1 -1
- package/dist/context-actions/ContextActionUtils.d.ts.map +1 -1
- package/dist/context-actions/ContextActionUtils.js +4 -4
- package/dist/context-actions/ContextActionUtils.js.map +1 -1
- package/dist/context-actions/ContextMenu.d.ts +4 -4
- package/dist/context-actions/ContextMenu.d.ts.map +1 -1
- package/dist/context-actions/ContextMenu.js +1 -1
- package/dist/context-actions/ContextMenu.js.map +1 -1
- package/dist/context-actions/ContextMenuItem.d.ts +4 -4
- package/dist/context-actions/ContextMenuItem.d.ts.map +1 -1
- package/dist/context-actions/ContextMenuItem.js.map +1 -1
- package/dist/declaration.d.js.map +1 -1
- package/dist/menu-actions/DropdownMenu.d.ts +2 -2
- package/dist/menu-actions/DropdownMenu.d.ts.map +1 -1
- package/dist/menu-actions/DropdownMenu.js.map +1 -1
- package/dist/menu-actions/Menu.d.ts +3 -3
- package/dist/menu-actions/Menu.d.ts.map +1 -1
- package/dist/menu-actions/Menu.js +1 -1
- package/dist/menu-actions/Menu.js.map +1 -1
- package/dist/theme/theme-dark/index.d.ts +14 -1
- package/dist/theme/theme-dark/index.d.ts.map +1 -1
- package/dist/theme/theme-dark/index.js +19 -6
- package/dist/theme/theme-dark/index.js.map +1 -1
- package/dist/theme/theme-dark/theme-dark-components.css +1 -8
- package/dist/theme/theme-dark/theme-dark-components.css.map +1 -1
- package/dist/theme/theme-dark/theme-dark-palette.css +1 -290
- package/dist/theme/theme-dark/theme-dark-palette.css.map +1 -1
- package/dist/theme/theme-dark/theme-dark-semantic-editor.css +1 -62
- package/dist/theme/theme-dark/theme-dark-semantic-editor.css.map +1 -1
- package/dist/theme/theme-dark/theme-dark-semantic-grid.css +1 -84
- package/dist/theme/theme-dark/theme-dark-semantic-grid.css.map +1 -1
- package/dist/theme/theme-dark/theme-dark-semantic.css +1 -122
- package/dist/theme/theme-dark/theme-dark-semantic.css.map +1 -1
- package/dist/theme/theme-light/index.d.ts +37 -0
- package/dist/theme/theme-light/index.d.ts.map +1 -1
- package/dist/theme/theme-light/index.js +38 -1
- package/dist/theme/theme-light/index.js.map +1 -1
- package/dist/theme/theme-light/theme-light-palette.css +1 -53
- package/dist/theme/theme-light/theme-light-palette.css.map +1 -1
- package/dist/theme/theme-spectrum/theme-spectrum-alias.module.css +1 -192
- package/dist/theme/theme-spectrum/theme-spectrum-alias.module.css.map +1 -1
- package/dist/theme/theme-spectrum/theme-spectrum-overrides.module.css +1 -7
- package/dist/theme/theme-spectrum/theme-spectrum-overrides.module.css.map +1 -1
- package/dist/theme/theme-spectrum/theme-spectrum-palette.module.css +1 -211
- package/dist/theme/theme-spectrum/theme-spectrum-palette.module.css.map +1 -1
- package/package.json +10 -9
|
@@ -33,13 +33,13 @@ interface AutoCompleteOption {
|
|
|
33
33
|
interface AutoCompleteInputProps {
|
|
34
34
|
options: AutoCompleteOption[];
|
|
35
35
|
popperOptions: PopperOptions;
|
|
36
|
-
onChange(value: string, isValid: boolean)
|
|
36
|
+
onChange: (value: string, isValid: boolean) => void;
|
|
37
37
|
inputPlaceholder: string;
|
|
38
38
|
disabled: boolean;
|
|
39
39
|
className: string;
|
|
40
40
|
defaultTitle: string;
|
|
41
41
|
spellCheck: boolean;
|
|
42
|
-
onEnter()
|
|
42
|
+
onEnter: () => void;
|
|
43
43
|
noMatchText: string;
|
|
44
44
|
'data-testid'?: string;
|
|
45
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoCompleteInput.d.ts","sourceRoot":"","sources":["../src/AutoCompleteInput.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,OAAO,MAAM,UAAU,CAAC;AAG/B,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,0BAA0B,CAAC;AAIlC,aAAK,yBAAyB;IAC5B,EAAE,OAAO;IACT,IAAI,SAAS;CACd;AAED,UAAU,kBAAkB;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,sBAAsB;IAC9B,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"AutoCompleteInput.d.ts","sourceRoot":"","sources":["../src/AutoCompleteInput.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoCompleteInput.js","names":["React","Component","PropTypes","memoize","classNames","debounce","Popper","jsx","_jsx","jsxs","_jsxs","DEBOUNCE_DELAY","MENU_NAVIGATION_DIRECTION","AutoCompleteInput","constructor","props","_defineProperty","options","input","filter","option","title","toLowerCase","indexOf","popperOptions","_objectSpread","placement","modifiers","preventOverflow","enabled","state","filteredOptions","keyboardOptionIndex","menuIsOpen","inputWidth","invalid","handleMenuKeyDown","bind","handleMenuBlur","handleInputChange","handleInputKeyDown","handleInputBlur","handelInputFocus","handleInputClick","updateInputValue","handleOptionClick","handleMenuOpened","handleMenuExited","popper","createRef","cbContainer","menuContainer","setInputWidth","current","setState","getBoundingClientRect","width","getValueAndValidate","value","isValid","result","length","processFilterChange","fireOnChange","arguments","undefined","onChange","_this$popper$current","getCachedFilteredOptions","perfectMatch","closeMenu","scheduleUpdate","resetValue","handleResize","event","_this$input$current","key","stopPropagation","preventDefault","focus","navigateMenu","UP","DOWN","shiftKey","direction","newKeyboardOptionIndex","scrollOptionIntoView","onEnter","openMenu","target","_this$input$current2","relatedTarget","Element","element","contains","_this$input$current3","window","requestAnimationFrame","_this$popper$current2","show","_this$popper$current3","focusInput","_this$input$current4","hide","index","_this$menuContainer$c","children","item","scrollIntoView","behavior","block","renderMenuElement","className","ref","role","onKeyDown","style","onBlur","renderOptions","noMatchText","map","renderOption","concat","type","onClick","onFocus","render","inputPlaceholder","disabled","defaultTitle","spellCheck","dataTestId","placeholder","onEntered","onExited","arrayOf","shape","string","isRequired","func","bool"],"sources":["../src/AutoCompleteInput.tsx"],"sourcesContent":["/**\n * An Input component that pops and filters auto complete options as you type.\n *\n * props:\n * @param options :[{\n * title: 'option title for display',\n * value: 'option value' //option value\n * }]\n * @param popperOptions options for the Popper\n * @param onChange called when the value is changed from the pulldown\n * @param inputPlaceholder place holder for the input box\n * @param disabled disable both input & drop down\n * @param className an optional class name applied to the input element\n * @param defaultTitle the default title to display\n * @param spellCheck flag to disable spell checking, defaults to true\n * @param onEnter called when the Enter key is typed in the input element\n *\n */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport memoize from 'memoizee';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport { PopperOptions } from 'popper.js';\nimport { Popper } from './popper';\n\nimport './AutoCompleteInput.scss';\n\nconst DEBOUNCE_DELAY = 100;\n\nenum MENU_NAVIGATION_DIRECTION {\n UP = 'UP',\n DOWN = 'DOWN',\n}\n\ninterface AutoCompleteOption {\n title: string;\n value: string;\n}\n\ninterface AutoCompleteInputProps {\n options: AutoCompleteOption[];\n popperOptions: PopperOptions;\n onChange(value: string, isValid: boolean): void;\n inputPlaceholder: string;\n disabled: boolean;\n className: string;\n defaultTitle: string;\n spellCheck: boolean;\n onEnter(): void;\n noMatchText: string;\n 'data-testid'?: string;\n}\n\ninterface AutoCompleteInputState {\n title: string;\n filteredOptions: AutoCompleteOption[];\n keyboardOptionIndex: number;\n menuIsOpen: boolean;\n inputWidth: number;\n invalid: boolean;\n popperOptions: PopperOptions;\n}\n\nclass AutoCompleteInput extends Component<\n AutoCompleteInputProps,\n AutoCompleteInputState\n> {\n static propTypes = {\n options: PropTypes.arrayOf(\n PropTypes.shape({\n title: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n })\n ).isRequired,\n popperOptions: PropTypes.shape({}),\n onChange: PropTypes.func,\n inputPlaceholder: PropTypes.string,\n disabled: PropTypes.bool,\n className: PropTypes.string,\n defaultTitle: PropTypes.string,\n spellCheck: PropTypes.bool,\n onEnter: PropTypes.func,\n noMatchText: PropTypes.string,\n 'data-testid': PropTypes.string,\n };\n\n static defaultProps = {\n onChange(): void {\n // no-op\n },\n inputPlaceholder: '',\n disabled: false,\n className: '',\n defaultTitle: '',\n popperOptions: null,\n spellCheck: true,\n onEnter(): void {\n // no-op\n },\n noMatchText: 'No matching items found',\n 'data-testid': undefined,\n };\n\n static MENU_NAVIGATION_DIRECTION = MENU_NAVIGATION_DIRECTION;\n\n constructor(props: AutoCompleteInputProps) {\n super(props);\n\n let { popperOptions } = this.props;\n popperOptions = {\n placement: 'bottom-end',\n modifiers: {\n preventOverflow: { enabled: false },\n },\n ...popperOptions,\n };\n\n this.state = {\n title: '',\n filteredOptions: [],\n keyboardOptionIndex: 0,\n menuIsOpen: false,\n inputWidth: 100,\n invalid: false,\n popperOptions,\n };\n\n this.handleMenuKeyDown = this.handleMenuKeyDown.bind(this);\n this.handleMenuBlur = this.handleMenuBlur.bind(this);\n\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleInputKeyDown = this.handleInputKeyDown.bind(this);\n this.handleInputBlur = this.handleInputBlur.bind(this);\n this.handelInputFocus = this.handelInputFocus.bind(this);\n this.handleInputClick = this.handleInputClick.bind(this);\n\n this.updateInputValue = debounce(this.updateInputValue, DEBOUNCE_DELAY);\n\n this.handleOptionClick = this.handleOptionClick.bind(this);\n\n this.handleMenuOpened = this.handleMenuOpened.bind(this);\n this.handleMenuExited = this.handleMenuExited.bind(this);\n\n this.popper = React.createRef();\n this.cbContainer = React.createRef();\n this.menuContainer = React.createRef();\n this.input = React.createRef();\n }\n\n popper: React.RefObject<Popper>;\n\n cbContainer: React.RefObject<HTMLDivElement>;\n\n menuContainer: React.RefObject<HTMLDivElement>;\n\n input: React.RefObject<HTMLInputElement>;\n\n setInputWidth(): void {\n if (this.cbContainer.current) {\n this.setState({\n inputWidth: this.cbContainer.current.getBoundingClientRect().width,\n });\n }\n }\n\n getCachedFilteredOptions = memoize(\n (options: AutoCompleteOption[], input: string) =>\n options.filter(\n // supports partial match\n option => option.title.toLowerCase().indexOf(input.toLowerCase()) >= 0\n )\n );\n\n // validation needs to be an exact case-sensitve match on value\n getValueAndValidate(title: string): { value: string; isValid: boolean } {\n if (!title) {\n this.setState({ invalid: false });\n return { value: title, isValid: false };\n }\n\n // validate\n const { options } = this.props;\n const result = options.filter(\n option => option.title.toLowerCase() === title.toLowerCase()\n );\n if (result.length < 1) {\n this.setState({ invalid: true });\n return { value: title, isValid: false };\n }\n\n this.setState({ invalid: false });\n return { value: result[0].value, isValid: true };\n }\n\n // validate typed entries emit change event using value\n updateInputValue(title: string): void {\n const { menuIsOpen } = this.state;\n const { value, isValid } = this.getValueAndValidate(title);\n if (menuIsOpen) this.processFilterChange(title);\n this.fireOnChange(value, isValid);\n }\n\n fireOnChange(value: string, isValid = true): void {\n const { onChange } = this.props;\n onChange(value, isValid);\n }\n\n processFilterChange(filter: string): void {\n const { options } = this.props;\n const { menuIsOpen } = this.state;\n const filteredOptions = filter\n ? this.getCachedFilteredOptions(options, filter)\n : options;\n const perfectMatch =\n filteredOptions.length === 1 && filteredOptions[0].title === filter;\n this.setState({\n filteredOptions,\n keyboardOptionIndex: 0,\n });\n if (perfectMatch && menuIsOpen) {\n this.closeMenu();\n return;\n }\n this.popper.current?.scheduleUpdate(); // filtered options list can change size, may need to be repositioned\n }\n\n resetValue(): void {\n this.setState({ title: '' });\n this.fireOnChange('');\n }\n\n handleResize(): void {\n this.setInputWidth();\n }\n\n handleMenuKeyDown(event: React.KeyboardEvent): void {\n const { filteredOptions, keyboardOptionIndex } = this.state;\n const option = filteredOptions[keyboardOptionIndex];\n\n switch (event.key) {\n case 'Enter':\n case 'ArrowRight':\n event.stopPropagation();\n event.preventDefault();\n if (option != null) {\n this.setState({ title: option.title, invalid: false });\n this.fireOnChange(option.value);\n }\n this.closeMenu();\n this.input.current?.focus();\n break;\n case 'ArrowUp':\n event.stopPropagation();\n event.preventDefault();\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.UP);\n break;\n case 'ArrowDown':\n event.stopPropagation();\n event.preventDefault();\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.DOWN);\n break;\n case 'Tab':\n event.stopPropagation();\n event.preventDefault();\n if (event.shiftKey) {\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.UP);\n break;\n }\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.DOWN);\n break;\n case 'Escape':\n event.preventDefault();\n event.stopPropagation();\n this.closeMenu();\n break;\n default:\n break;\n }\n }\n\n navigateMenu(direction: MENU_NAVIGATION_DIRECTION): void {\n const { filteredOptions, keyboardOptionIndex } = this.state;\n let newKeyboardOptionIndex = keyboardOptionIndex;\n if (direction === AutoCompleteInput.MENU_NAVIGATION_DIRECTION.UP) {\n if (keyboardOptionIndex > 0) {\n newKeyboardOptionIndex =\n (newKeyboardOptionIndex - 1) % filteredOptions.length;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex,\n });\n } else if (keyboardOptionIndex === 0) {\n newKeyboardOptionIndex = filteredOptions.length - 1;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex,\n });\n }\n } else if (direction === AutoCompleteInput.MENU_NAVIGATION_DIRECTION.DOWN) {\n if (keyboardOptionIndex < filteredOptions.length) {\n newKeyboardOptionIndex =\n (newKeyboardOptionIndex + 1) % filteredOptions.length;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex,\n });\n }\n }\n this.scrollOptionIntoView(newKeyboardOptionIndex);\n }\n\n handleInputKeyDown(event: React.KeyboardEvent): void {\n const { onEnter } = this.props;\n const { menuIsOpen } = this.state;\n\n if (menuIsOpen) {\n this.handleMenuKeyDown(event);\n } else if (event.key === 'Enter') {\n onEnter();\n } else if (event.key === 'Escape') {\n this.resetValue();\n event.preventDefault();\n event.stopPropagation();\n } else if (\n !(\n event.key === 'ArrowRight' ||\n event.key === 'ArrowLeft' ||\n event.key === 'Tab' ||\n event.key === 'Shift'\n )\n ) {\n this.openMenu();\n }\n }\n\n handleInputChange(event: React.ChangeEvent<HTMLInputElement>): void {\n this.setState({ title: event.target.value });\n this.updateInputValue(event.target.value);\n }\n\n handleOptionClick(option: AutoCompleteOption): void {\n this.setState({ title: option.title, invalid: false });\n this.fireOnChange(option.value);\n this.closeMenu();\n this.input.current?.focus();\n }\n\n handelInputFocus(): void {\n const { menuIsOpen } = this.state;\n if (!menuIsOpen) {\n this.openMenu();\n }\n }\n\n handleInputClick(): void {\n const { menuIsOpen } = this.state;\n if (!menuIsOpen) {\n this.openMenu();\n }\n }\n\n handleInputBlur(event: React.FocusEvent<HTMLInputElement>): void {\n const { menuIsOpen } = this.state;\n if (\n menuIsOpen &&\n event.relatedTarget instanceof Element &&\n this.popper.current !== null &&\n this.popper.current.element.contains(event.relatedTarget)\n ) {\n return;\n }\n this.closeMenu(false);\n }\n\n handleMenuBlur(event: React.FocusEvent<HTMLDivElement>): void {\n // if blur event is caused by focusing on the input or focus on options don't close menu\n if (\n event.relatedTarget === this.input.current ||\n (event.relatedTarget instanceof Element &&\n this.popper.current !== null &&\n this.popper.current.element.contains(event.relatedTarget))\n ) {\n return;\n }\n this.closeMenu(false);\n }\n\n handleMenuOpened(): void {\n this.input.current?.focus();\n }\n\n handleMenuExited(): void {\n const { menuIsOpen } = this.state;\n if (menuIsOpen) {\n this.setState({ menuIsOpen: false, keyboardOptionIndex: 0 });\n }\n }\n\n openMenu(): void {\n const { title } = this.state;\n this.processFilterChange(title);\n this.setInputWidth();\n this.setState({ menuIsOpen: true });\n\n // https://github.com/reactjs/react-transition-group/issues/382\n window.requestAnimationFrame(() => {\n this.popper.current?.show();\n });\n }\n\n closeMenu(focusInput = true): void {\n this.setState({ menuIsOpen: false, keyboardOptionIndex: 0 });\n if (focusInput) {\n this.input.current?.focus();\n }\n this.popper.current?.hide();\n }\n\n scrollOptionIntoView(index: number): void {\n if (this.menuContainer.current) {\n this.menuContainer.current.children.item(index)?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n });\n }\n }\n\n renderMenuElement(): JSX.Element {\n const { inputWidth } = this.state;\n return (\n <div\n className={classNames('aci-options')}\n ref={this.menuContainer}\n role=\"presentation\"\n onKeyDown={this.handleMenuKeyDown}\n style={{ width: inputWidth }}\n onBlur={this.handleMenuBlur}\n >\n {this.renderOptions()}\n </div>\n );\n }\n\n renderOptions(): React.ReactNode {\n const { noMatchText } = this.props;\n const { title, filteredOptions } = this.state;\n\n if (title && filteredOptions.length === 0) {\n return <div className=\"no-match\">{noMatchText}</div>;\n }\n\n return filteredOptions.map((option, index) =>\n this.renderOption(option, index)\n );\n }\n\n renderOption(option: AutoCompleteOption, index: number): JSX.Element {\n const { keyboardOptionIndex } = this.state;\n const key = `option-${index}-${option.value}`;\n return (\n <button\n key={key}\n type=\"button\"\n className={classNames('aci-option-btn', {\n 'keyboard-active': keyboardOptionIndex === index,\n })}\n onClick={() => this.handleOptionClick(option)}\n onFocus={() => this.setState({ keyboardOptionIndex: index })}\n >\n {option.title}\n </button>\n );\n }\n\n render(): JSX.Element {\n const {\n options,\n inputPlaceholder,\n disabled,\n className,\n defaultTitle,\n spellCheck,\n 'data-testid': dataTestId,\n } = this.props;\n const { title, menuIsOpen, popperOptions, invalid } = this.state;\n\n return (\n <div className=\"aci-container\" ref={this.cbContainer}>\n <input\n value={title || defaultTitle}\n className={classNames('form-control', className, 'aci-input', {\n 'is-invalid': invalid && !menuIsOpen,\n })}\n ref={this.input}\n onChange={this.handleInputChange}\n placeholder={inputPlaceholder || options[0].title}\n disabled={disabled}\n onFocus={this.handelInputFocus}\n onClick={this.handleInputClick}\n onBlur={this.handleInputBlur}\n onKeyDown={this.handleInputKeyDown}\n spellCheck={spellCheck}\n data-testid={dataTestId}\n />\n <Popper\n ref={this.popper}\n options={popperOptions}\n className={classNames('aci-options-popper interactive')}\n onEntered={this.handleMenuOpened}\n onExited={this.handleMenuExited}\n >\n {this.renderMenuElement()}\n </Popper>\n </div>\n );\n }\n}\n\nexport default AutoCompleteInput;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AutoCompleteInput.js","names":["React","Component","PropTypes","memoize","classNames","debounce","Popper","jsx","_jsx","jsxs","_jsxs","DEBOUNCE_DELAY","MENU_NAVIGATION_DIRECTION","AutoCompleteInput","constructor","props","_defineProperty","options","input","filter","option","title","toLowerCase","indexOf","popperOptions","_objectSpread","placement","modifiers","preventOverflow","enabled","state","filteredOptions","keyboardOptionIndex","menuIsOpen","inputWidth","invalid","handleMenuKeyDown","bind","handleMenuBlur","handleInputChange","handleInputKeyDown","handleInputBlur","handelInputFocus","handleInputClick","updateInputValue","handleOptionClick","handleMenuOpened","handleMenuExited","popper","createRef","cbContainer","menuContainer","setInputWidth","current","setState","getBoundingClientRect","width","getValueAndValidate","value","isValid","result","length","processFilterChange","fireOnChange","arguments","undefined","onChange","_this$popper$current","getCachedFilteredOptions","perfectMatch","closeMenu","scheduleUpdate","resetValue","handleResize","event","_this$input$current","key","stopPropagation","preventDefault","focus","navigateMenu","UP","DOWN","shiftKey","direction","newKeyboardOptionIndex","scrollOptionIntoView","onEnter","openMenu","target","_this$input$current2","relatedTarget","Element","element","contains","_this$input$current3","window","requestAnimationFrame","_this$popper$current2","show","_this$popper$current3","focusInput","_this$input$current4","hide","index","_this$menuContainer$c","children","item","scrollIntoView","behavior","block","renderMenuElement","className","ref","role","onKeyDown","style","onBlur","renderOptions","noMatchText","map","renderOption","concat","type","onClick","onFocus","render","inputPlaceholder","disabled","defaultTitle","spellCheck","dataTestId","placeholder","onEntered","onExited","arrayOf","shape","string","isRequired","func","bool"],"sources":["../src/AutoCompleteInput.tsx"],"sourcesContent":["/**\n * An Input component that pops and filters auto complete options as you type.\n *\n * props:\n * @param options :[{\n * title: 'option title for display',\n * value: 'option value' //option value\n * }]\n * @param popperOptions options for the Popper\n * @param onChange called when the value is changed from the pulldown\n * @param inputPlaceholder place holder for the input box\n * @param disabled disable both input & drop down\n * @param className an optional class name applied to the input element\n * @param defaultTitle the default title to display\n * @param spellCheck flag to disable spell checking, defaults to true\n * @param onEnter called when the Enter key is typed in the input element\n *\n */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport memoize from 'memoizee';\nimport classNames from 'classnames';\nimport debounce from 'lodash.debounce';\nimport { PopperOptions } from 'popper.js';\nimport { Popper } from './popper';\n\nimport './AutoCompleteInput.scss';\n\nconst DEBOUNCE_DELAY = 100;\n\nenum MENU_NAVIGATION_DIRECTION {\n UP = 'UP',\n DOWN = 'DOWN',\n}\n\ninterface AutoCompleteOption {\n title: string;\n value: string;\n}\n\ninterface AutoCompleteInputProps {\n options: AutoCompleteOption[];\n popperOptions: PopperOptions;\n onChange: (value: string, isValid: boolean) => void;\n inputPlaceholder: string;\n disabled: boolean;\n className: string;\n defaultTitle: string;\n spellCheck: boolean;\n onEnter: () => void;\n noMatchText: string;\n 'data-testid'?: string;\n}\n\ninterface AutoCompleteInputState {\n title: string;\n filteredOptions: AutoCompleteOption[];\n keyboardOptionIndex: number;\n menuIsOpen: boolean;\n inputWidth: number;\n invalid: boolean;\n popperOptions: PopperOptions;\n}\n\nclass AutoCompleteInput extends Component<\n AutoCompleteInputProps,\n AutoCompleteInputState\n> {\n static propTypes = {\n options: PropTypes.arrayOf(\n PropTypes.shape({\n title: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n })\n ).isRequired,\n popperOptions: PropTypes.shape({}),\n onChange: PropTypes.func,\n inputPlaceholder: PropTypes.string,\n disabled: PropTypes.bool,\n className: PropTypes.string,\n defaultTitle: PropTypes.string,\n spellCheck: PropTypes.bool,\n onEnter: PropTypes.func,\n noMatchText: PropTypes.string,\n 'data-testid': PropTypes.string,\n };\n\n static defaultProps = {\n onChange(): void {\n // no-op\n },\n inputPlaceholder: '',\n disabled: false,\n className: '',\n defaultTitle: '',\n popperOptions: null,\n spellCheck: true,\n onEnter(): void {\n // no-op\n },\n noMatchText: 'No matching items found',\n 'data-testid': undefined,\n };\n\n static MENU_NAVIGATION_DIRECTION = MENU_NAVIGATION_DIRECTION;\n\n constructor(props: AutoCompleteInputProps) {\n super(props);\n\n let { popperOptions } = this.props;\n popperOptions = {\n placement: 'bottom-end',\n modifiers: {\n preventOverflow: { enabled: false },\n },\n ...popperOptions,\n };\n\n this.state = {\n title: '',\n filteredOptions: [],\n keyboardOptionIndex: 0,\n menuIsOpen: false,\n inputWidth: 100,\n invalid: false,\n popperOptions,\n };\n\n this.handleMenuKeyDown = this.handleMenuKeyDown.bind(this);\n this.handleMenuBlur = this.handleMenuBlur.bind(this);\n\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleInputKeyDown = this.handleInputKeyDown.bind(this);\n this.handleInputBlur = this.handleInputBlur.bind(this);\n this.handelInputFocus = this.handelInputFocus.bind(this);\n this.handleInputClick = this.handleInputClick.bind(this);\n\n this.updateInputValue = debounce(this.updateInputValue, DEBOUNCE_DELAY);\n\n this.handleOptionClick = this.handleOptionClick.bind(this);\n\n this.handleMenuOpened = this.handleMenuOpened.bind(this);\n this.handleMenuExited = this.handleMenuExited.bind(this);\n\n this.popper = React.createRef();\n this.cbContainer = React.createRef();\n this.menuContainer = React.createRef();\n this.input = React.createRef();\n }\n\n popper: React.RefObject<Popper>;\n\n cbContainer: React.RefObject<HTMLDivElement>;\n\n menuContainer: React.RefObject<HTMLDivElement>;\n\n input: React.RefObject<HTMLInputElement>;\n\n setInputWidth(): void {\n if (this.cbContainer.current) {\n this.setState({\n inputWidth: this.cbContainer.current.getBoundingClientRect().width,\n });\n }\n }\n\n getCachedFilteredOptions = memoize(\n (options: AutoCompleteOption[], input: string) =>\n options.filter(\n // supports partial match\n option => option.title.toLowerCase().indexOf(input.toLowerCase()) >= 0\n )\n );\n\n // validation needs to be an exact case-sensitve match on value\n getValueAndValidate(title: string): { value: string; isValid: boolean } {\n if (!title) {\n this.setState({ invalid: false });\n return { value: title, isValid: false };\n }\n\n // validate\n const { options } = this.props;\n const result = options.filter(\n option => option.title.toLowerCase() === title.toLowerCase()\n );\n if (result.length < 1) {\n this.setState({ invalid: true });\n return { value: title, isValid: false };\n }\n\n this.setState({ invalid: false });\n return { value: result[0].value, isValid: true };\n }\n\n // validate typed entries emit change event using value\n updateInputValue(title: string): void {\n const { menuIsOpen } = this.state;\n const { value, isValid } = this.getValueAndValidate(title);\n if (menuIsOpen) this.processFilterChange(title);\n this.fireOnChange(value, isValid);\n }\n\n fireOnChange(value: string, isValid = true): void {\n const { onChange } = this.props;\n onChange(value, isValid);\n }\n\n processFilterChange(filter: string): void {\n const { options } = this.props;\n const { menuIsOpen } = this.state;\n const filteredOptions = filter\n ? this.getCachedFilteredOptions(options, filter)\n : options;\n const perfectMatch =\n filteredOptions.length === 1 && filteredOptions[0].title === filter;\n this.setState({\n filteredOptions,\n keyboardOptionIndex: 0,\n });\n if (perfectMatch && menuIsOpen) {\n this.closeMenu();\n return;\n }\n this.popper.current?.scheduleUpdate(); // filtered options list can change size, may need to be repositioned\n }\n\n resetValue(): void {\n this.setState({ title: '' });\n this.fireOnChange('');\n }\n\n handleResize(): void {\n this.setInputWidth();\n }\n\n handleMenuKeyDown(event: React.KeyboardEvent): void {\n const { filteredOptions, keyboardOptionIndex } = this.state;\n const option = filteredOptions[keyboardOptionIndex];\n\n switch (event.key) {\n case 'Enter':\n case 'ArrowRight':\n event.stopPropagation();\n event.preventDefault();\n if (option != null) {\n this.setState({ title: option.title, invalid: false });\n this.fireOnChange(option.value);\n }\n this.closeMenu();\n this.input.current?.focus();\n break;\n case 'ArrowUp':\n event.stopPropagation();\n event.preventDefault();\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.UP);\n break;\n case 'ArrowDown':\n event.stopPropagation();\n event.preventDefault();\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.DOWN);\n break;\n case 'Tab':\n event.stopPropagation();\n event.preventDefault();\n if (event.shiftKey) {\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.UP);\n break;\n }\n this.navigateMenu(AutoCompleteInput.MENU_NAVIGATION_DIRECTION.DOWN);\n break;\n case 'Escape':\n event.preventDefault();\n event.stopPropagation();\n this.closeMenu();\n break;\n default:\n break;\n }\n }\n\n navigateMenu(direction: MENU_NAVIGATION_DIRECTION): void {\n const { filteredOptions, keyboardOptionIndex } = this.state;\n let newKeyboardOptionIndex = keyboardOptionIndex;\n if (direction === AutoCompleteInput.MENU_NAVIGATION_DIRECTION.UP) {\n if (keyboardOptionIndex > 0) {\n newKeyboardOptionIndex =\n (newKeyboardOptionIndex - 1) % filteredOptions.length;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex,\n });\n } else if (keyboardOptionIndex === 0) {\n newKeyboardOptionIndex = filteredOptions.length - 1;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex,\n });\n }\n } else if (direction === AutoCompleteInput.MENU_NAVIGATION_DIRECTION.DOWN) {\n if (keyboardOptionIndex < filteredOptions.length) {\n newKeyboardOptionIndex =\n (newKeyboardOptionIndex + 1) % filteredOptions.length;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex,\n });\n }\n }\n this.scrollOptionIntoView(newKeyboardOptionIndex);\n }\n\n handleInputKeyDown(event: React.KeyboardEvent): void {\n const { onEnter } = this.props;\n const { menuIsOpen } = this.state;\n\n if (menuIsOpen) {\n this.handleMenuKeyDown(event);\n } else if (event.key === 'Enter') {\n onEnter();\n } else if (event.key === 'Escape') {\n this.resetValue();\n event.preventDefault();\n event.stopPropagation();\n } else if (\n !(\n event.key === 'ArrowRight' ||\n event.key === 'ArrowLeft' ||\n event.key === 'Tab' ||\n event.key === 'Shift'\n )\n ) {\n this.openMenu();\n }\n }\n\n handleInputChange(event: React.ChangeEvent<HTMLInputElement>): void {\n this.setState({ title: event.target.value });\n this.updateInputValue(event.target.value);\n }\n\n handleOptionClick(option: AutoCompleteOption): void {\n this.setState({ title: option.title, invalid: false });\n this.fireOnChange(option.value);\n this.closeMenu();\n this.input.current?.focus();\n }\n\n handelInputFocus(): void {\n const { menuIsOpen } = this.state;\n if (!menuIsOpen) {\n this.openMenu();\n }\n }\n\n handleInputClick(): void {\n const { menuIsOpen } = this.state;\n if (!menuIsOpen) {\n this.openMenu();\n }\n }\n\n handleInputBlur(event: React.FocusEvent<HTMLInputElement>): void {\n const { menuIsOpen } = this.state;\n if (\n menuIsOpen &&\n event.relatedTarget instanceof Element &&\n this.popper.current !== null &&\n this.popper.current.element.contains(event.relatedTarget)\n ) {\n return;\n }\n this.closeMenu(false);\n }\n\n handleMenuBlur(event: React.FocusEvent<HTMLDivElement>): void {\n // if blur event is caused by focusing on the input or focus on options don't close menu\n if (\n event.relatedTarget === this.input.current ||\n (event.relatedTarget instanceof Element &&\n this.popper.current !== null &&\n this.popper.current.element.contains(event.relatedTarget))\n ) {\n return;\n }\n this.closeMenu(false);\n }\n\n handleMenuOpened(): void {\n this.input.current?.focus();\n }\n\n handleMenuExited(): void {\n const { menuIsOpen } = this.state;\n if (menuIsOpen) {\n this.setState({ menuIsOpen: false, keyboardOptionIndex: 0 });\n }\n }\n\n openMenu(): void {\n const { title } = this.state;\n this.processFilterChange(title);\n this.setInputWidth();\n this.setState({ menuIsOpen: true });\n\n // https://github.com/reactjs/react-transition-group/issues/382\n window.requestAnimationFrame(() => {\n this.popper.current?.show();\n });\n }\n\n closeMenu(focusInput = true): void {\n this.setState({ menuIsOpen: false, keyboardOptionIndex: 0 });\n if (focusInput) {\n this.input.current?.focus();\n }\n this.popper.current?.hide();\n }\n\n scrollOptionIntoView(index: number): void {\n if (this.menuContainer.current) {\n this.menuContainer.current.children.item(index)?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n });\n }\n }\n\n renderMenuElement(): JSX.Element {\n const { inputWidth } = this.state;\n return (\n <div\n className={classNames('aci-options')}\n ref={this.menuContainer}\n role=\"presentation\"\n onKeyDown={this.handleMenuKeyDown}\n style={{ width: inputWidth }}\n onBlur={this.handleMenuBlur}\n >\n {this.renderOptions()}\n </div>\n );\n }\n\n renderOptions(): React.ReactNode {\n const { noMatchText } = this.props;\n const { title, filteredOptions } = this.state;\n\n if (title && filteredOptions.length === 0) {\n return <div className=\"no-match\">{noMatchText}</div>;\n }\n\n return filteredOptions.map((option, index) =>\n this.renderOption(option, index)\n );\n }\n\n renderOption(option: AutoCompleteOption, index: number): JSX.Element {\n const { keyboardOptionIndex } = this.state;\n const key = `option-${index}-${option.value}`;\n return (\n <button\n key={key}\n type=\"button\"\n className={classNames('aci-option-btn', {\n 'keyboard-active': keyboardOptionIndex === index,\n })}\n onClick={() => this.handleOptionClick(option)}\n onFocus={() => this.setState({ keyboardOptionIndex: index })}\n >\n {option.title}\n </button>\n );\n }\n\n render(): JSX.Element {\n const {\n options,\n inputPlaceholder,\n disabled,\n className,\n defaultTitle,\n spellCheck,\n 'data-testid': dataTestId,\n } = this.props;\n const { title, menuIsOpen, popperOptions, invalid } = this.state;\n\n return (\n <div className=\"aci-container\" ref={this.cbContainer}>\n <input\n value={title || defaultTitle}\n className={classNames('form-control', className, 'aci-input', {\n 'is-invalid': invalid && !menuIsOpen,\n })}\n ref={this.input}\n onChange={this.handleInputChange}\n placeholder={inputPlaceholder || options[0].title}\n disabled={disabled}\n onFocus={this.handelInputFocus}\n onClick={this.handleInputClick}\n onBlur={this.handleInputBlur}\n onKeyDown={this.handleInputKeyDown}\n spellCheck={spellCheck}\n data-testid={dataTestId}\n />\n <Popper\n ref={this.popper}\n options={popperOptions}\n className={classNames('aci-options-popper interactive')}\n onEntered={this.handleMenuOpened}\n onExited={this.handleMenuExited}\n >\n {this.renderMenuElement()}\n </Popper>\n </div>\n );\n }\n}\n\nexport default AutoCompleteInput;\n"],"mappings":"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"}
|
package/dist/ComboBox.d.ts
CHANGED
|
@@ -26,14 +26,14 @@ interface ComboBoxOption {
|
|
|
26
26
|
interface ComboBoxProps {
|
|
27
27
|
options: ComboBoxOption[];
|
|
28
28
|
popperOptions: PopperOptions;
|
|
29
|
-
onChange(value: string)
|
|
29
|
+
onChange: (value: string) => void;
|
|
30
30
|
inputPlaceholder: string;
|
|
31
31
|
searchPlaceholder: string;
|
|
32
32
|
disabled: boolean;
|
|
33
33
|
className: string;
|
|
34
34
|
defaultValue: string;
|
|
35
35
|
spellCheck: boolean;
|
|
36
|
-
onEnter()
|
|
36
|
+
onEnter: () => void;
|
|
37
37
|
'data-testid'?: string;
|
|
38
38
|
}
|
|
39
39
|
interface ComboBoxState {
|
package/dist/ComboBox.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboBox.d.ts","sourceRoot":"","sources":["../src/ComboBox.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,SAAS,MAAM,YAAY,CAAC;AAGnC,OAAO,OAAO,MAAM,UAAU,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,iBAAiB,CAAC;AAEzB,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,aAAa;IACrB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ComboBox.d.ts","sourceRoot":"","sources":["../src/ComboBox.tsx"],"names":[],"mappings":"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"}
|
package/dist/ComboBox.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboBox.js","names":["React","Component","PropTypes","FontAwesomeIcon","vsTriangleDown","memoize","classNames","SearchInput","Popper","jsx","_jsx","jsxs","_jsxs","MENU_NAVIGATION_DIRECTION","ComboBox","constructor","props","_defineProperty","options","input","filter","option","title","toLowerCase","indexOf","value","state","filteredOptions","keyboardOptionIndex","menuIsOpen","inputWidth","toggleMenu","bind","handleMenuKeyDown","handleMenuBlur","closeMenu","handleInputChange","handleInputKeyDown","handleInputBlur","handleFilterChange","handleOptionClick","handleOptionFocus","handleMenuOpened","handleMenuExited","popper","createRef","cbContainer","toggleButton","menuContainer","searchInput","componentDidUpdate","scrollOptionIntoView","setInputWidth","current","setState","getBoundingClientRect","width","focus","_this$input$current","resetValue","updateInputValue","onChange","handleResize","event","_menuOptions$keyboard","_this$input$current2","menuOptions","key","stopPropagation","preventDefault","handleMenuNavigation","UP","DOWN","shiftKey","length","direction","menuOptionsLength","delta","onEnter","openMenu","target","_this$input$current3","optionIndex","Number","currentTarget","_this$popper$current","getCachedFilteredOptions","scheduleUpdate","relatedTarget","Element","element","contains","_this$searchInput$cur","_this$popper$current2","hide","updateKeyboardIndex","window","requestAnimationFrame","_this$popper$current3","show","_this$popper$current4","focusInput","arguments","undefined","_this$input$current4","valueIndex","findIndex","_this$menuContainer$c","activeOption","querySelector","HTMLElement","scrollIntoView","block","inline","renderMenuElement","searchPlaceholder","className","ref","role","onKeyDown","onClick","style","onBlur","children","placeholder","renderOptions","map","index","concat","type","onFocus","render","inputPlaceholder","disabled","defaultValue","spellCheck","dataTestId","popperOptions","_objectSpread","placement","modifiers","preventOverflow","enabled","icon","onEntered","onExited","arrayOf","shape","string","isRequired","func","bool"],"sources":["../src/ComboBox.tsx"],"sourcesContent":["/**\n * Combobox that combines a input box with a searchable dropdown menu\n *\n * props:\n * @param {array} options :[{\n * title: 'option title for display',\n * value: 'option value' //option value\n * }]\n * @param {string} inputPlaceholder place holder for the input box\n * @param {string} searchPlaceholder place holder for the search box in drop down search box\n * @param {boolean} disabled disable both input & drop down\n *\n *\n */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsTriangleDown } from '@deephaven/icons';\nimport memoize from 'memoizee';\nimport classNames from 'classnames';\nimport { PopperOptions } from 'popper.js';\nimport SearchInput from './SearchInput';\nimport { Popper } from './popper';\n\nimport './ComboBox.scss';\n\ninterface ComboBoxOption {\n title: string;\n value: string;\n}\n\ninterface ComboBoxProps {\n options: ComboBoxOption[];\n popperOptions: PopperOptions;\n onChange(value: string): void;\n inputPlaceholder: string;\n searchPlaceholder: string;\n disabled: boolean;\n className: string;\n defaultValue: string;\n spellCheck: boolean;\n onEnter(): void;\n 'data-testid'?: string;\n}\n\ninterface ComboBoxState {\n value: string;\n filter: string;\n filteredOptions: ComboBoxOption[];\n keyboardOptionIndex: number;\n menuIsOpen: boolean;\n inputWidth: number;\n}\n\nenum MENU_NAVIGATION_DIRECTION {\n UP = 'UP',\n DOWN = 'DOWN',\n}\n\nclass ComboBox extends Component<ComboBoxProps, ComboBoxState> {\n static MENU_NAVIGATION_DIRECTION = MENU_NAVIGATION_DIRECTION;\n\n static DROP_DOWN_MENU_HEIGHT = 200;\n\n static propTypes = {\n options: PropTypes.arrayOf(\n PropTypes.shape({\n title: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n })\n ).isRequired,\n popperOptions: PropTypes.shape({\n title: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n }),\n onChange: PropTypes.func,\n inputPlaceholder: PropTypes.string,\n searchPlaceholder: PropTypes.string,\n disabled: PropTypes.bool,\n className: PropTypes.string,\n defaultValue: PropTypes.string,\n spellCheck: PropTypes.bool,\n onEnter: PropTypes.func,\n 'data-testid': PropTypes.string,\n };\n\n static defaultProps = {\n onChange(): void {\n // no-op\n },\n inputPlaceholder: '',\n searchPlaceholder: 'Search',\n disabled: false,\n className: '',\n defaultValue: '',\n popperOptions: null,\n spellCheck: true,\n onEnter(): void {\n // no-op\n },\n 'data-testid': undefined,\n };\n\n constructor(props: ComboBoxProps) {\n super(props);\n this.state = {\n value: '',\n filter: '',\n filteredOptions: props.options,\n keyboardOptionIndex: -1,\n menuIsOpen: false,\n inputWidth: 100,\n };\n\n this.toggleMenu = this.toggleMenu.bind(this);\n this.handleMenuKeyDown = this.handleMenuKeyDown.bind(this);\n this.handleMenuBlur = this.handleMenuBlur.bind(this);\n this.closeMenu = this.closeMenu.bind(this);\n\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleInputKeyDown = this.handleInputKeyDown.bind(this);\n this.handleInputBlur = this.handleInputBlur.bind(this);\n this.handleFilterChange = this.handleFilterChange.bind(this);\n\n this.handleOptionClick = this.handleOptionClick.bind(this);\n this.handleOptionFocus = this.handleOptionFocus.bind(this);\n\n this.handleMenuOpened = this.handleMenuOpened.bind(this);\n this.handleMenuExited = this.handleMenuExited.bind(this);\n\n this.popper = React.createRef();\n this.cbContainer = React.createRef();\n this.toggleButton = React.createRef();\n this.menuContainer = React.createRef();\n this.input = React.createRef();\n this.searchInput = React.createRef();\n }\n\n componentDidUpdate(): void {\n const { menuIsOpen, keyboardOptionIndex } = this.state;\n if (menuIsOpen && keyboardOptionIndex >= 0) {\n this.scrollOptionIntoView();\n }\n }\n\n popper: React.RefObject<Popper>;\n\n cbContainer: React.RefObject<HTMLDivElement>;\n\n toggleButton: React.RefObject<HTMLButtonElement>;\n\n menuContainer: React.RefObject<HTMLDivElement>;\n\n input: React.RefObject<HTMLInputElement>;\n\n searchInput: React.RefObject<SearchInput>;\n\n setInputWidth(): void {\n if (this.cbContainer.current) {\n this.setState({\n inputWidth: this.cbContainer.current.getBoundingClientRect().width,\n });\n }\n }\n\n getCachedFilteredOptions = memoize(\n (options: ComboBoxOption[], input: string) =>\n options.filter(\n option =>\n option.title.toLowerCase().indexOf(input.toLowerCase()) >= 0 ||\n option.value.toLowerCase().indexOf(input.toLowerCase()) >= 0\n )\n );\n\n focus(): void {\n this.input.current?.focus();\n }\n\n resetValue(): void {\n this.setState({ value: '' });\n }\n\n updateInputValue(value: string): void {\n const { onChange } = this.props;\n this.setState({ value });\n onChange(value);\n }\n\n handleResize(): void {\n this.setInputWidth();\n }\n\n handleMenuKeyDown(event: React.KeyboardEvent): void {\n const { filter, filteredOptions, keyboardOptionIndex } = this.state;\n const { options } = this.props;\n const menuOptions = filter ? filteredOptions : options;\n\n switch (event.key) {\n case 'Enter':\n if (menuOptions[keyboardOptionIndex]?.value != null) {\n this.updateInputValue(menuOptions[keyboardOptionIndex].value);\n }\n this.closeMenu();\n this.input.current?.focus();\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'ArrowUp':\n this.handleMenuNavigation(ComboBox.MENU_NAVIGATION_DIRECTION.UP);\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'ArrowDown':\n this.handleMenuNavigation(ComboBox.MENU_NAVIGATION_DIRECTION.DOWN);\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'Escape':\n if (filter !== '') {\n this.setState({ filter: '' });\n event.stopPropagation(); // Don't trigger blur on input element\n } else {\n this.closeMenu();\n }\n break;\n case 'Tab':\n if (!event.shiftKey && keyboardOptionIndex === menuOptions.length - 1) {\n this.closeMenu();\n }\n break;\n default:\n break;\n }\n }\n\n handleMenuNavigation(direction: MENU_NAVIGATION_DIRECTION): void {\n const { filter, filteredOptions, keyboardOptionIndex } = this.state;\n const { options } = this.props;\n const menuOptions = filter ? filteredOptions : options;\n const menuOptionsLength = menuOptions.length;\n let delta = 0;\n switch (direction) {\n case ComboBox.MENU_NAVIGATION_DIRECTION.UP:\n delta = -1;\n break;\n case ComboBox.MENU_NAVIGATION_DIRECTION.DOWN:\n delta = 1;\n break;\n }\n\n if (delta !== 0) {\n this.setState({\n keyboardOptionIndex:\n (keyboardOptionIndex + delta + menuOptionsLength) % menuOptionsLength,\n });\n }\n }\n\n handleInputKeyDown(event: React.KeyboardEvent): void {\n const { onEnter } = this.props;\n const { menuIsOpen } = this.state;\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n if (!menuIsOpen) {\n this.openMenu();\n }\n } else if (event.key === 'Enter') {\n onEnter();\n }\n }\n\n handleInputChange(event: React.ChangeEvent<HTMLInputElement>): void {\n this.updateInputValue(event.target.value);\n }\n\n handleOptionClick(event: React.MouseEvent<HTMLButtonElement>): void {\n const optionIndex = Number(event.currentTarget.value);\n const { filter, filteredOptions } = this.state;\n const { options } = this.props;\n const menuOptions = filter ? filteredOptions : options;\n\n this.updateInputValue(menuOptions[optionIndex].value);\n this.closeMenu();\n this.input.current?.focus();\n }\n\n handleOptionFocus(event: React.FocusEvent<HTMLButtonElement>): void {\n this.setState({ keyboardOptionIndex: Number(event.target.value) });\n }\n\n handleFilterChange(event: React.ChangeEvent<HTMLInputElement>): void {\n const { options } = this.props;\n const filter = event.target.value;\n const filteredOptions = this.getCachedFilteredOptions(options, filter);\n\n this.setState({\n filter,\n filteredOptions,\n keyboardOptionIndex: 0,\n });\n this.popper.current?.scheduleUpdate();\n }\n\n handleMenuBlur(event: React.FocusEvent): void {\n // close if menu blurs, unless its an internal option or the toggleButton which triggers close via click\n if (\n (event.relatedTarget instanceof Element &&\n this.popper.current != null &&\n this.popper.current.element.contains(event.relatedTarget)) ||\n event.relatedTarget === this.toggleButton.current\n ) {\n return;\n }\n this.closeMenu(false);\n }\n\n handleInputBlur(event: React.FocusEvent<HTMLInputElement>): void {\n // if blur event is caused by focusing on search input or open menu by keyboard, don't close the menu\n const { menuIsOpen } = this.state;\n if (\n menuIsOpen &&\n event.relatedTarget instanceof Element &&\n this.popper.current != null &&\n this.popper.current.element.contains(event.relatedTarget)\n ) {\n return;\n }\n this.closeMenu(false);\n }\n\n handleMenuOpened(): void {\n this.scrollOptionIntoView();\n this.searchInput.current?.focus();\n }\n\n handleMenuExited(): void {\n const { menuIsOpen } = this.state;\n if (menuIsOpen) {\n this.setState({ menuIsOpen: false });\n this.popper.current?.hide();\n }\n this.setState({ filter: '' });\n }\n\n toggleMenu(event: React.MouseEvent<HTMLButtonElement>): void {\n const { menuIsOpen } = this.state;\n if (menuIsOpen) {\n this.closeMenu();\n } else {\n this.openMenu();\n }\n event.stopPropagation();\n }\n\n openMenu(): void {\n this.updateKeyboardIndex();\n this.setInputWidth();\n this.setState({ menuIsOpen: true });\n\n window.requestAnimationFrame(() => {\n this.popper.current?.show();\n });\n }\n\n closeMenu(focusInput = true): void {\n this.setState({ menuIsOpen: false });\n if (focusInput) {\n this.input.current?.focus();\n }\n this.popper.current?.hide();\n }\n\n updateKeyboardIndex(): void {\n const { value, filter, filteredOptions } = this.state;\n const { options } = this.props;\n const menuOptions = filter ? filteredOptions : options;\n const valueIndex = menuOptions.findIndex(option => option.value === value);\n this.setState({ keyboardOptionIndex: valueIndex });\n }\n\n scrollOptionIntoView(): void {\n const activeOption = this.menuContainer.current?.querySelector(\n '.cb-option-btn.keyboard-active'\n );\n if (activeOption instanceof HTMLElement) {\n activeOption.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n }\n }\n\n renderMenuElement(): JSX.Element {\n const { searchPlaceholder } = this.props;\n const { filter, inputWidth } = this.state;\n return (\n <div\n className=\"cb-menu-container\"\n ref={this.menuContainer}\n role=\"presentation\"\n onKeyDown={this.handleMenuKeyDown}\n onClick={event => {\n event.stopPropagation();\n }}\n style={{ width: inputWidth }}\n onBlur={this.handleMenuBlur}\n >\n <div className=\"cb-search-input-container\">\n <SearchInput\n value={filter}\n ref={this.searchInput}\n onChange={this.handleFilterChange}\n className=\"cb-search-input\"\n placeholder={searchPlaceholder}\n />\n </div>\n <div className=\"cb-options-container\">\n <div className=\"cb-options\">{this.renderOptions()}</div>\n </div>\n </div>\n );\n }\n\n renderOptions(): React.ReactNode {\n const { options } = this.props;\n const { keyboardOptionIndex, filter, filteredOptions } = this.state;\n const menuOptions = filter ? filteredOptions : options;\n\n return menuOptions.map((option, index) => {\n const key = `option-${index}-${option.value}`;\n return (\n <button\n key={key}\n type=\"button\"\n value={index}\n className={classNames('cb-option-btn', {\n 'keyboard-active': keyboardOptionIndex === index,\n })}\n onClick={this.handleOptionClick}\n onFocus={this.handleOptionFocus}\n >\n {option.title}\n </button>\n );\n });\n }\n\n render(): JSX.Element {\n const {\n options,\n inputPlaceholder,\n disabled,\n className,\n defaultValue,\n spellCheck,\n 'data-testid': dataTestId,\n } = this.props;\n const { value } = this.state;\n let { popperOptions } = this.props;\n popperOptions = {\n placement: 'bottom-end',\n modifiers: {\n preventOverflow: { enabled: false },\n },\n ...popperOptions,\n };\n\n return (\n <div className=\"input-group cb-container\" ref={this.cbContainer}>\n <input\n value={value || defaultValue}\n className={classNames('form-control', className, 'cb-input')}\n ref={this.input}\n onChange={this.handleInputChange}\n placeholder={\n inputPlaceholder ||\n (options[0] != null ? options[0].title : undefined)\n }\n disabled={disabled}\n onBlur={this.handleInputBlur}\n onKeyDown={this.handleInputKeyDown}\n spellCheck={spellCheck}\n data-testid={\n dataTestId !== undefined ? `${dataTestId}-input` : undefined\n }\n />\n <div className=\"input-group-append cb-dropdown\">\n <button\n type=\"button\"\n className=\"btn cb-btn form-control\"\n ref={this.toggleButton}\n onClick={this.toggleMenu}\n onKeyDown={this.handleInputKeyDown}\n disabled={disabled}\n data-testid={\n dataTestId !== undefined ? `${dataTestId}-btn` : undefined\n }\n >\n <FontAwesomeIcon icon={vsTriangleDown} />\n <Popper\n ref={this.popper}\n options={popperOptions}\n className={classNames('combobox interactive')}\n onEntered={this.handleMenuOpened}\n onExited={this.handleMenuExited}\n >\n {this.renderMenuElement()}\n </Popper>\n </button>\n </div>\n </div>\n );\n }\n}\n\nexport default ComboBox;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ComboBox.js","names":["React","Component","PropTypes","FontAwesomeIcon","vsTriangleDown","memoize","classNames","SearchInput","Popper","jsx","_jsx","jsxs","_jsxs","MENU_NAVIGATION_DIRECTION","ComboBox","constructor","props","_defineProperty","options","input","filter","option","title","toLowerCase","indexOf","value","state","filteredOptions","keyboardOptionIndex","menuIsOpen","inputWidth","toggleMenu","bind","handleMenuKeyDown","handleMenuBlur","closeMenu","handleInputChange","handleInputKeyDown","handleInputBlur","handleFilterChange","handleOptionClick","handleOptionFocus","handleMenuOpened","handleMenuExited","popper","createRef","cbContainer","toggleButton","menuContainer","searchInput","componentDidUpdate","scrollOptionIntoView","setInputWidth","current","setState","getBoundingClientRect","width","focus","_this$input$current","resetValue","updateInputValue","onChange","handleResize","event","_menuOptions$keyboard","_this$input$current2","menuOptions","key","stopPropagation","preventDefault","handleMenuNavigation","UP","DOWN","shiftKey","length","direction","menuOptionsLength","delta","onEnter","openMenu","target","_this$input$current3","optionIndex","Number","currentTarget","_this$popper$current","getCachedFilteredOptions","scheduleUpdate","relatedTarget","Element","element","contains","_this$searchInput$cur","_this$popper$current2","hide","updateKeyboardIndex","window","requestAnimationFrame","_this$popper$current3","show","_this$popper$current4","focusInput","arguments","undefined","_this$input$current4","valueIndex","findIndex","_this$menuContainer$c","activeOption","querySelector","HTMLElement","scrollIntoView","block","inline","renderMenuElement","searchPlaceholder","className","ref","role","onKeyDown","onClick","style","onBlur","children","placeholder","renderOptions","map","index","concat","type","onFocus","render","inputPlaceholder","disabled","defaultValue","spellCheck","dataTestId","popperOptions","_objectSpread","placement","modifiers","preventOverflow","enabled","icon","onEntered","onExited","arrayOf","shape","string","isRequired","func","bool"],"sources":["../src/ComboBox.tsx"],"sourcesContent":["/**\n * Combobox that combines a input box with a searchable dropdown menu\n *\n * props:\n * @param {array} options :[{\n * title: 'option title for display',\n * value: 'option value' //option value\n * }]\n * @param {string} inputPlaceholder place holder for the input box\n * @param {string} searchPlaceholder place holder for the search box in drop down search box\n * @param {boolean} disabled disable both input & drop down\n *\n *\n */\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsTriangleDown } from '@deephaven/icons';\nimport memoize from 'memoizee';\nimport classNames from 'classnames';\nimport { PopperOptions } from 'popper.js';\nimport SearchInput from './SearchInput';\nimport { Popper } from './popper';\n\nimport './ComboBox.scss';\n\ninterface ComboBoxOption {\n title: string;\n value: string;\n}\n\ninterface ComboBoxProps {\n options: ComboBoxOption[];\n popperOptions: PopperOptions;\n onChange: (value: string) => void;\n inputPlaceholder: string;\n searchPlaceholder: string;\n disabled: boolean;\n className: string;\n defaultValue: string;\n spellCheck: boolean;\n onEnter: () => void;\n 'data-testid'?: string;\n}\n\ninterface ComboBoxState {\n value: string;\n filter: string;\n filteredOptions: ComboBoxOption[];\n keyboardOptionIndex: number;\n menuIsOpen: boolean;\n inputWidth: number;\n}\n\nenum MENU_NAVIGATION_DIRECTION {\n UP = 'UP',\n DOWN = 'DOWN',\n}\n\nclass ComboBox extends Component<ComboBoxProps, ComboBoxState> {\n static MENU_NAVIGATION_DIRECTION = MENU_NAVIGATION_DIRECTION;\n\n static DROP_DOWN_MENU_HEIGHT = 200;\n\n static propTypes = {\n options: PropTypes.arrayOf(\n PropTypes.shape({\n title: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n })\n ).isRequired,\n popperOptions: PropTypes.shape({\n title: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n }),\n onChange: PropTypes.func,\n inputPlaceholder: PropTypes.string,\n searchPlaceholder: PropTypes.string,\n disabled: PropTypes.bool,\n className: PropTypes.string,\n defaultValue: PropTypes.string,\n spellCheck: PropTypes.bool,\n onEnter: PropTypes.func,\n 'data-testid': PropTypes.string,\n };\n\n static defaultProps = {\n onChange(): void {\n // no-op\n },\n inputPlaceholder: '',\n searchPlaceholder: 'Search',\n disabled: false,\n className: '',\n defaultValue: '',\n popperOptions: null,\n spellCheck: true,\n onEnter(): void {\n // no-op\n },\n 'data-testid': undefined,\n };\n\n constructor(props: ComboBoxProps) {\n super(props);\n this.state = {\n value: '',\n filter: '',\n filteredOptions: props.options,\n keyboardOptionIndex: -1,\n menuIsOpen: false,\n inputWidth: 100,\n };\n\n this.toggleMenu = this.toggleMenu.bind(this);\n this.handleMenuKeyDown = this.handleMenuKeyDown.bind(this);\n this.handleMenuBlur = this.handleMenuBlur.bind(this);\n this.closeMenu = this.closeMenu.bind(this);\n\n this.handleInputChange = this.handleInputChange.bind(this);\n this.handleInputKeyDown = this.handleInputKeyDown.bind(this);\n this.handleInputBlur = this.handleInputBlur.bind(this);\n this.handleFilterChange = this.handleFilterChange.bind(this);\n\n this.handleOptionClick = this.handleOptionClick.bind(this);\n this.handleOptionFocus = this.handleOptionFocus.bind(this);\n\n this.handleMenuOpened = this.handleMenuOpened.bind(this);\n this.handleMenuExited = this.handleMenuExited.bind(this);\n\n this.popper = React.createRef();\n this.cbContainer = React.createRef();\n this.toggleButton = React.createRef();\n this.menuContainer = React.createRef();\n this.input = React.createRef();\n this.searchInput = React.createRef();\n }\n\n componentDidUpdate(): void {\n const { menuIsOpen, keyboardOptionIndex } = this.state;\n if (menuIsOpen && keyboardOptionIndex >= 0) {\n this.scrollOptionIntoView();\n }\n }\n\n popper: React.RefObject<Popper>;\n\n cbContainer: React.RefObject<HTMLDivElement>;\n\n toggleButton: React.RefObject<HTMLButtonElement>;\n\n menuContainer: React.RefObject<HTMLDivElement>;\n\n input: React.RefObject<HTMLInputElement>;\n\n searchInput: React.RefObject<SearchInput>;\n\n setInputWidth(): void {\n if (this.cbContainer.current) {\n this.setState({\n inputWidth: this.cbContainer.current.getBoundingClientRect().width,\n });\n }\n }\n\n getCachedFilteredOptions = memoize(\n (options: ComboBoxOption[], input: string) =>\n options.filter(\n option =>\n option.title.toLowerCase().indexOf(input.toLowerCase()) >= 0 ||\n option.value.toLowerCase().indexOf(input.toLowerCase()) >= 0\n )\n );\n\n focus(): void {\n this.input.current?.focus();\n }\n\n resetValue(): void {\n this.setState({ value: '' });\n }\n\n updateInputValue(value: string): void {\n const { onChange } = this.props;\n this.setState({ value });\n onChange(value);\n }\n\n handleResize(): void {\n this.setInputWidth();\n }\n\n handleMenuKeyDown(event: React.KeyboardEvent): void {\n const { filter, filteredOptions, keyboardOptionIndex } = this.state;\n const { options } = this.props;\n const menuOptions = filter ? filteredOptions : options;\n\n switch (event.key) {\n case 'Enter':\n if (menuOptions[keyboardOptionIndex]?.value != null) {\n this.updateInputValue(menuOptions[keyboardOptionIndex].value);\n }\n this.closeMenu();\n this.input.current?.focus();\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'ArrowUp':\n this.handleMenuNavigation(ComboBox.MENU_NAVIGATION_DIRECTION.UP);\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'ArrowDown':\n this.handleMenuNavigation(ComboBox.MENU_NAVIGATION_DIRECTION.DOWN);\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'Escape':\n if (filter !== '') {\n this.setState({ filter: '' });\n event.stopPropagation(); // Don't trigger blur on input element\n } else {\n this.closeMenu();\n }\n break;\n case 'Tab':\n if (!event.shiftKey && keyboardOptionIndex === menuOptions.length - 1) {\n this.closeMenu();\n }\n break;\n default:\n break;\n }\n }\n\n handleMenuNavigation(direction: MENU_NAVIGATION_DIRECTION): void {\n const { filter, filteredOptions, keyboardOptionIndex } = this.state;\n const { options } = this.props;\n const menuOptions = filter ? filteredOptions : options;\n const menuOptionsLength = menuOptions.length;\n let delta = 0;\n switch (direction) {\n case ComboBox.MENU_NAVIGATION_DIRECTION.UP:\n delta = -1;\n break;\n case ComboBox.MENU_NAVIGATION_DIRECTION.DOWN:\n delta = 1;\n break;\n }\n\n if (delta !== 0) {\n this.setState({\n keyboardOptionIndex:\n (keyboardOptionIndex + delta + menuOptionsLength) % menuOptionsLength,\n });\n }\n }\n\n handleInputKeyDown(event: React.KeyboardEvent): void {\n const { onEnter } = this.props;\n const { menuIsOpen } = this.state;\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n if (!menuIsOpen) {\n this.openMenu();\n }\n } else if (event.key === 'Enter') {\n onEnter();\n }\n }\n\n handleInputChange(event: React.ChangeEvent<HTMLInputElement>): void {\n this.updateInputValue(event.target.value);\n }\n\n handleOptionClick(event: React.MouseEvent<HTMLButtonElement>): void {\n const optionIndex = Number(event.currentTarget.value);\n const { filter, filteredOptions } = this.state;\n const { options } = this.props;\n const menuOptions = filter ? filteredOptions : options;\n\n this.updateInputValue(menuOptions[optionIndex].value);\n this.closeMenu();\n this.input.current?.focus();\n }\n\n handleOptionFocus(event: React.FocusEvent<HTMLButtonElement>): void {\n this.setState({ keyboardOptionIndex: Number(event.target.value) });\n }\n\n handleFilterChange(event: React.ChangeEvent<HTMLInputElement>): void {\n const { options } = this.props;\n const filter = event.target.value;\n const filteredOptions = this.getCachedFilteredOptions(options, filter);\n\n this.setState({\n filter,\n filteredOptions,\n keyboardOptionIndex: 0,\n });\n this.popper.current?.scheduleUpdate();\n }\n\n handleMenuBlur(event: React.FocusEvent): void {\n // close if menu blurs, unless its an internal option or the toggleButton which triggers close via click\n if (\n (event.relatedTarget instanceof Element &&\n this.popper.current != null &&\n this.popper.current.element.contains(event.relatedTarget)) ||\n event.relatedTarget === this.toggleButton.current\n ) {\n return;\n }\n this.closeMenu(false);\n }\n\n handleInputBlur(event: React.FocusEvent<HTMLInputElement>): void {\n // if blur event is caused by focusing on search input or open menu by keyboard, don't close the menu\n const { menuIsOpen } = this.state;\n if (\n menuIsOpen &&\n event.relatedTarget instanceof Element &&\n this.popper.current != null &&\n this.popper.current.element.contains(event.relatedTarget)\n ) {\n return;\n }\n this.closeMenu(false);\n }\n\n handleMenuOpened(): void {\n this.scrollOptionIntoView();\n this.searchInput.current?.focus();\n }\n\n handleMenuExited(): void {\n const { menuIsOpen } = this.state;\n if (menuIsOpen) {\n this.setState({ menuIsOpen: false });\n this.popper.current?.hide();\n }\n this.setState({ filter: '' });\n }\n\n toggleMenu(event: React.MouseEvent<HTMLButtonElement>): void {\n const { menuIsOpen } = this.state;\n if (menuIsOpen) {\n this.closeMenu();\n } else {\n this.openMenu();\n }\n event.stopPropagation();\n }\n\n openMenu(): void {\n this.updateKeyboardIndex();\n this.setInputWidth();\n this.setState({ menuIsOpen: true });\n\n window.requestAnimationFrame(() => {\n this.popper.current?.show();\n });\n }\n\n closeMenu(focusInput = true): void {\n this.setState({ menuIsOpen: false });\n if (focusInput) {\n this.input.current?.focus();\n }\n this.popper.current?.hide();\n }\n\n updateKeyboardIndex(): void {\n const { value, filter, filteredOptions } = this.state;\n const { options } = this.props;\n const menuOptions = filter ? filteredOptions : options;\n const valueIndex = menuOptions.findIndex(option => option.value === value);\n this.setState({ keyboardOptionIndex: valueIndex });\n }\n\n scrollOptionIntoView(): void {\n const activeOption = this.menuContainer.current?.querySelector(\n '.cb-option-btn.keyboard-active'\n );\n if (activeOption instanceof HTMLElement) {\n activeOption.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n }\n }\n\n renderMenuElement(): JSX.Element {\n const { searchPlaceholder } = this.props;\n const { filter, inputWidth } = this.state;\n return (\n <div\n className=\"cb-menu-container\"\n ref={this.menuContainer}\n role=\"presentation\"\n onKeyDown={this.handleMenuKeyDown}\n onClick={event => {\n event.stopPropagation();\n }}\n style={{ width: inputWidth }}\n onBlur={this.handleMenuBlur}\n >\n <div className=\"cb-search-input-container\">\n <SearchInput\n value={filter}\n ref={this.searchInput}\n onChange={this.handleFilterChange}\n className=\"cb-search-input\"\n placeholder={searchPlaceholder}\n />\n </div>\n <div className=\"cb-options-container\">\n <div className=\"cb-options\">{this.renderOptions()}</div>\n </div>\n </div>\n );\n }\n\n renderOptions(): React.ReactNode {\n const { options } = this.props;\n const { keyboardOptionIndex, filter, filteredOptions } = this.state;\n const menuOptions = filter ? filteredOptions : options;\n\n return menuOptions.map((option, index) => {\n const key = `option-${index}-${option.value}`;\n return (\n <button\n key={key}\n type=\"button\"\n value={index}\n className={classNames('cb-option-btn', {\n 'keyboard-active': keyboardOptionIndex === index,\n })}\n onClick={this.handleOptionClick}\n onFocus={this.handleOptionFocus}\n >\n {option.title}\n </button>\n );\n });\n }\n\n render(): JSX.Element {\n const {\n options,\n inputPlaceholder,\n disabled,\n className,\n defaultValue,\n spellCheck,\n 'data-testid': dataTestId,\n } = this.props;\n const { value } = this.state;\n let { popperOptions } = this.props;\n popperOptions = {\n placement: 'bottom-end',\n modifiers: {\n preventOverflow: { enabled: false },\n },\n ...popperOptions,\n };\n\n return (\n <div className=\"input-group cb-container\" ref={this.cbContainer}>\n <input\n value={value || defaultValue}\n className={classNames('form-control', className, 'cb-input')}\n ref={this.input}\n onChange={this.handleInputChange}\n placeholder={\n inputPlaceholder ||\n (options[0] != null ? options[0].title : undefined)\n }\n disabled={disabled}\n onBlur={this.handleInputBlur}\n onKeyDown={this.handleInputKeyDown}\n spellCheck={spellCheck}\n data-testid={\n dataTestId !== undefined ? `${dataTestId}-input` : undefined\n }\n />\n <div className=\"input-group-append cb-dropdown\">\n <button\n type=\"button\"\n className=\"btn cb-btn form-control\"\n ref={this.toggleButton}\n onClick={this.toggleMenu}\n onKeyDown={this.handleInputKeyDown}\n disabled={disabled}\n data-testid={\n dataTestId !== undefined ? `${dataTestId}-btn` : undefined\n }\n >\n <FontAwesomeIcon icon={vsTriangleDown} />\n <Popper\n ref={this.popper}\n options={popperOptions}\n className={classNames('combobox interactive')}\n onEntered={this.handleMenuOpened}\n onExited={this.handleMenuExited}\n >\n {this.renderMenuElement()}\n </Popper>\n </button>\n </div>\n </div>\n );\n }\n}\n\nexport default ComboBox;\n"],"mappings":"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"}
|
|
@@ -14,13 +14,13 @@ type CustomTimeSelectProps = {
|
|
|
14
14
|
}[];
|
|
15
15
|
popperOptions: PopperOptions;
|
|
16
16
|
value: number | null;
|
|
17
|
-
onChange(value: number)
|
|
17
|
+
onChange: (value: number) => void;
|
|
18
18
|
disabled: boolean;
|
|
19
19
|
icon: IconDefinition;
|
|
20
20
|
placeholder: string;
|
|
21
21
|
customText: string;
|
|
22
|
-
valueToTime(val: number | null)
|
|
23
|
-
timeToValue(time: number)
|
|
22
|
+
valueToTime: (val: number | null) => number;
|
|
23
|
+
timeToValue: (time: number) => number;
|
|
24
24
|
invalid: boolean;
|
|
25
25
|
'data-testid'?: string;
|
|
26
26
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomTimeSelect.d.ts","sourceRoot":"","sources":["../src/CustomTimeSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAmB,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGnE,OAAkB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE1D,OAAO,yBAAyB,CAAC;AAIjC,aAAK,yBAAyB;IAC5B,EAAE,OAAO;IACT,IAAI,SAAS;CACd;AAED,KAAK,qBAAqB,GAAG;IAC3B,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5C,aAAa,EAAE,aAAa,CAAC;IAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"CustomTimeSelect.d.ts","sourceRoot":"","sources":["../src/CustomTimeSelect.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomTimeSelect.js","names":["React","Component","FontAwesomeIcon","vsCheck","dhSort","TimeUtils","classNames","TimeInput","DropdownMenu","jsx","_jsx","jsxs","_jsxs","CUSTOM_OPTION","MENU_NAVIGATION_DIRECTION","CustomTimeSelect","constructor","props","_defineProperty","value","valueToTime","toggleMenu","bind","handleMenuKeyDown","closeMenu","handleOptionClick","handleOptionFocus","handleMenuOpened","handleMenuExited","handleCustomInput","csContainer","createRef","menuContainer","button","input","state","keyboardOptionIndex","menuIsOpen","inputWidth","customTime","inputFocused","getSelectedText","options","placeholder","i","length","option","title","formatTime","setInputWidth","current","setState","getBoundingClientRect","width","focus","_this$button$current","updateInputValue","onChange","handleResize","event","_this$button$current2","key","updateFromCustom","stopPropagation","preventDefault","shiftKey","handleMenuNavigation","UP","DOWN","direction","menuOptionsLength","newKeyboardOptionIndex","focusInput","focusOption","scrollOptionIntoView","optionIndex","Number","currentTarget","timeToValue","update","updateAndClose","_this$button$current3","target","_this$menuContainer$c","activeOption","querySelector","HTMLElement","valueIndex","map","indexOf","_this$input$current","index","_this$menuContainer$c2","children","item","openMenu","updateKeyboardIndex","focusButton","arguments","undefined","_this$button$current4","_this$menuContainer$c3","offsetTop","DROP_DOWN_MENU_HEIGHT","scrollTop","renderMenuElement","className","ref","role","onKeyDown","onClick","style","renderOptions","icon","customText","matchFound","optionArray","concat","push","type","onFocus","onBlur","render","disabled","invalid","dataTestId","popperOptions","_objectSpread","placement","modifiers","preventOverflow","enabled","isShown","actions","menuElement","popperClassName","onMenuOpened","onMenuClosed","menuStyle","maxWidth","Math","round","time"],"sources":["../src/CustomTimeSelect.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport { PopperOptions } from 'popper.js';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsCheck, dhSort, IconDefinition } from '@deephaven/icons';\nimport { TimeUtils } from '@deephaven/utils';\nimport classNames from 'classnames';\nimport TimeInput, { TimeInputElement } from './TimeInput';\nimport DropdownMenu from './menu-actions/DropdownMenu';\nimport './CustomTimeSelect.scss';\n\nconst CUSTOM_OPTION = -1;\n\nenum MENU_NAVIGATION_DIRECTION {\n UP = 'UP',\n DOWN = 'DOWN',\n}\n\ntype CustomTimeSelectProps = {\n options: { title: string; value: number }[];\n popperOptions: PopperOptions;\n value: number | null;\n onChange(value: number): void;\n disabled: boolean;\n icon: IconDefinition;\n placeholder: string;\n customText: string;\n // Defaults to converting the value in milliseconds to time in seconds\n valueToTime(val: number | null): number;\n // Defaults to converting the time in seconds to value in milliseconds\n timeToValue(time: number): number;\n invalid: boolean;\n 'data-testid'?: string;\n};\n\ntype TimeInSeconds = number;\n\ntype CustomTimeSelectState = {\n keyboardOptionIndex: number;\n menuIsOpen: boolean;\n inputWidth: number;\n customTime: TimeInSeconds;\n inputFocused: boolean;\n};\n\nclass CustomTimeSelect extends Component<\n CustomTimeSelectProps,\n CustomTimeSelectState\n> {\n static MENU_NAVIGATION_DIRECTION = MENU_NAVIGATION_DIRECTION;\n\n static DROP_DOWN_MENU_HEIGHT = 125;\n\n static defaultProps: Partial<CustomTimeSelectProps> = {\n onChange(): void {\n // no-op\n },\n value: null,\n disabled: false,\n popperOptions: {},\n icon: vsCheck,\n customText: 'Custom',\n placeholder: 'Select a time',\n valueToTime: value => (value === null ? 0 : Math.round(value / 1000)),\n timeToValue: time => time * 1000,\n invalid: false,\n 'data-testid': undefined,\n };\n\n constructor(props: CustomTimeSelectProps) {\n super(props);\n\n const { value, valueToTime } = props;\n\n this.toggleMenu = this.toggleMenu.bind(this);\n this.handleMenuKeyDown = this.handleMenuKeyDown.bind(this);\n this.closeMenu = this.closeMenu.bind(this);\n\n this.handleOptionClick = this.handleOptionClick.bind(this);\n this.handleOptionFocus = this.handleOptionFocus.bind(this);\n\n this.handleMenuOpened = this.handleMenuOpened.bind(this);\n this.handleMenuExited = this.handleMenuExited.bind(this);\n this.handleCustomInput = this.handleCustomInput.bind(this);\n\n this.csContainer = React.createRef();\n this.menuContainer = React.createRef();\n this.button = React.createRef();\n this.input = React.createRef();\n\n this.state = {\n keyboardOptionIndex: 0,\n menuIsOpen: false,\n inputWidth: 100,\n customTime: valueToTime(value),\n inputFocused: false,\n };\n }\n\n csContainer: React.RefObject<HTMLDivElement>;\n\n menuContainer: React.RefObject<HTMLDivElement>;\n\n button: React.RefObject<HTMLButtonElement>;\n\n input: React.RefObject<TimeInputElement>;\n\n getSelectedText(): string {\n const { options, value, placeholder } = this.props;\n const { customTime } = this.state;\n\n if (value === null) {\n return placeholder;\n }\n\n for (let i = 0; i < options.length; i += 1) {\n const option = options[i];\n if (option.value === value) {\n return option.title;\n }\n }\n\n return TimeUtils.formatTime(customTime);\n }\n\n setInputWidth(): void {\n if (this.csContainer.current) {\n this.setState({\n inputWidth: this.csContainer.current.getBoundingClientRect().width,\n });\n }\n }\n\n focus(): void {\n this.button.current?.focus();\n }\n\n updateInputValue(value: number): void {\n const { onChange } = this.props;\n onChange(value);\n }\n\n handleResize(): void {\n this.setInputWidth();\n }\n\n handleMenuKeyDown(event: React.KeyboardEvent<HTMLDivElement>): void {\n const { keyboardOptionIndex, inputFocused } = this.state;\n const { options } = this.props;\n\n switch (event.key) {\n case 'Enter':\n case ' ': // Space Bar\n if (inputFocused) {\n this.updateFromCustom();\n } else {\n this.updateInputValue(options[keyboardOptionIndex].value);\n }\n this.closeMenu();\n this.button.current?.focus();\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'Tab':\n if (event.shiftKey) {\n this.handleMenuNavigation(\n CustomTimeSelect.MENU_NAVIGATION_DIRECTION.UP\n );\n } else {\n this.handleMenuNavigation(\n CustomTimeSelect.MENU_NAVIGATION_DIRECTION.DOWN\n );\n }\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'ArrowUp':\n this.handleMenuNavigation(\n CustomTimeSelect.MENU_NAVIGATION_DIRECTION.UP\n );\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'ArrowDown':\n this.handleMenuNavigation(\n CustomTimeSelect.MENU_NAVIGATION_DIRECTION.DOWN\n );\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'Escape':\n this.closeMenu();\n break;\n default:\n break;\n }\n }\n\n handleMenuNavigation(direction: MENU_NAVIGATION_DIRECTION): void {\n const { keyboardOptionIndex, inputFocused } = this.state;\n const { options } = this.props;\n const menuOptionsLength = options.length;\n let newKeyboardOptionIndex = keyboardOptionIndex;\n switch (direction) {\n case CustomTimeSelect.MENU_NAVIGATION_DIRECTION.UP:\n if (!inputFocused && keyboardOptionIndex === 0) {\n this.focusInput();\n break;\n } else if (inputFocused) {\n this.focusOption(keyboardOptionIndex);\n }\n\n if (keyboardOptionIndex > 0 && !inputFocused) {\n newKeyboardOptionIndex =\n (newKeyboardOptionIndex - 1) % menuOptionsLength;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex,\n });\n } else if (keyboardOptionIndex === 0) {\n newKeyboardOptionIndex = menuOptionsLength - 1;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex,\n });\n }\n this.scrollOptionIntoView(newKeyboardOptionIndex);\n break;\n case CustomTimeSelect.MENU_NAVIGATION_DIRECTION.DOWN:\n if (!inputFocused && keyboardOptionIndex === menuOptionsLength - 1) {\n this.focusInput();\n break;\n } else if (inputFocused) {\n this.focusOption(keyboardOptionIndex);\n }\n\n if (\n keyboardOptionIndex < menuOptionsLength &&\n !(inputFocused && keyboardOptionIndex === 0)\n ) {\n newKeyboardOptionIndex =\n (newKeyboardOptionIndex + 1) % menuOptionsLength;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex,\n });\n }\n this.scrollOptionIntoView(newKeyboardOptionIndex);\n break;\n default:\n break;\n }\n }\n\n handleOptionClick(event: React.MouseEvent<HTMLButtonElement>): void {\n const optionIndex = Number(event.currentTarget.value);\n const { options, timeToValue } = this.props;\n const { customTime } = this.state;\n\n if (optionIndex === CUSTOM_OPTION) {\n const update = timeToValue(customTime);\n this.updateAndClose(update);\n } else {\n this.updateAndClose(options[optionIndex].value);\n }\n }\n\n updateAndClose(update: number): void {\n this.updateInputValue(update);\n this.closeMenu();\n this.button.current?.focus();\n }\n\n handleOptionFocus(event: React.FocusEvent<HTMLButtonElement>): void {\n this.setState({ keyboardOptionIndex: Number(event.target.value) });\n }\n\n handleMenuOpened(): void {\n const { options, value } = this.props;\n const { keyboardOptionIndex } = this.state;\n this.scrollOptionIntoView(keyboardOptionIndex);\n const activeOption = this.menuContainer.current?.querySelector(\n '.cs-option-btn.keyboard-active'\n );\n if (activeOption instanceof HTMLElement) {\n activeOption.focus();\n }\n\n if (value === null) {\n return;\n }\n const valueIndex = options.map(option => option.value).indexOf(value);\n if (valueIndex < 0) {\n // The custom option should be selected\n this.focusInput();\n }\n }\n\n focusInput(): void {\n this.input.current?.focus();\n }\n\n focusOption(index: number): void {\n const options = this.menuContainer.current?.querySelector('.cs-options');\n if (options && options.children != null) {\n const option = options.children.item(index);\n if (option instanceof HTMLElement) {\n option.focus();\n }\n }\n }\n\n handleMenuExited(): void {\n const { menuIsOpen } = this.state;\n if (menuIsOpen) {\n this.setState({ menuIsOpen: false, keyboardOptionIndex: 0 });\n }\n }\n\n handleCustomInput(value: number): void {\n const { timeToValue } = this.props;\n\n const update = timeToValue(value);\n this.updateInputValue(update);\n this.setState({\n customTime: value,\n });\n }\n\n updateFromCustom(): void {\n const { timeToValue } = this.props;\n const { customTime } = this.state;\n\n const update = timeToValue(customTime);\n this.updateInputValue(update);\n }\n\n toggleMenu(event: React.MouseEvent<HTMLButtonElement>): void {\n const { menuIsOpen } = this.state;\n if (menuIsOpen) {\n this.closeMenu();\n } else {\n this.openMenu();\n }\n event.stopPropagation();\n }\n\n openMenu(): void {\n this.updateKeyboardIndex();\n this.setInputWidth();\n this.setState({ menuIsOpen: true });\n }\n\n closeMenu(focusButton = true): void {\n this.setState({ menuIsOpen: false });\n if (focusButton) {\n this.button.current?.focus();\n }\n }\n\n updateKeyboardIndex(): void {\n const { options, value } = this.props;\n if (value === null) {\n return;\n }\n const valueIndex = options.map(option => option.value).indexOf(value);\n if (valueIndex > 0) {\n this.setState({ keyboardOptionIndex: valueIndex });\n }\n }\n\n scrollOptionIntoView(index: number): void {\n const options = this.menuContainer.current?.querySelector('.cs-options');\n if (options && options.children != null) {\n const activeOption = options.children.item(index);\n if (\n activeOption instanceof HTMLElement &&\n activeOption.offsetTop > CustomTimeSelect.DROP_DOWN_MENU_HEIGHT\n ) {\n options.scrollTop =\n activeOption.offsetTop - CustomTimeSelect.DROP_DOWN_MENU_HEIGHT;\n } else if (\n (activeOption instanceof HTMLElement && activeOption.offsetTop < 0) ||\n index === 0\n ) {\n options.scrollTop = 0;\n }\n }\n }\n\n renderMenuElement(): JSX.Element {\n const { inputWidth } = this.state;\n return (\n <div\n className=\"cs-menu-container\"\n ref={this.menuContainer}\n role=\"presentation\"\n onKeyDown={this.handleMenuKeyDown}\n onClick={event => {\n event.stopPropagation();\n }}\n style={{ width: inputWidth }}\n >\n <div className=\"cs-options-container\">\n <div className=\"cs-options\">{this.renderOptions()}</div>\n </div>\n </div>\n );\n }\n\n renderOptions(): React.ReactNode {\n const { options, value, icon, customText } = this.props;\n const { keyboardOptionIndex, customTime, inputFocused } = this.state;\n\n let matchFound = false;\n const optionArray: JSX.Element[] = [];\n for (let index = 0; index < options.length; index += 1) {\n const option = options[index];\n const key = `option-${index}-${option.value}`;\n matchFound = matchFound || option.value === value;\n optionArray.push(\n <button\n key={key}\n type=\"button\"\n value={index}\n className={classNames('cs-option-btn', {\n 'keyboard-active': keyboardOptionIndex === index && !inputFocused,\n })}\n onClick={this.handleOptionClick}\n onFocus={this.handleOptionFocus}\n >\n {option.value === value && (\n <FontAwesomeIcon icon={icon} className=\"mr-2\" />\n )}\n {option.value !== value && <span className=\"mr-4\" />}\n {option.title}\n </button>\n );\n }\n\n optionArray.push(<hr className=\"cs-divider\" key=\"option-divider\" />);\n\n optionArray.push(\n <button\n key=\"option-custom-label\"\n type=\"button\"\n value={CUSTOM_OPTION}\n className={classNames('cs-option-btn', {\n 'keyboard-active': inputFocused,\n })}\n onClick={this.handleOptionClick}\n onFocus={this.handleOptionFocus}\n >\n {!matchFound && value !== null ? (\n <FontAwesomeIcon icon={icon} className=\"mr-2\" />\n ) : (\n <span className=\"mr-4\" />\n )}\n {customText}\n </button>\n );\n\n optionArray.push(\n <div key=\"cs-custom-container\" className=\"cs-custom-container\">\n <span className=\"mr-2\" />\n <TimeInput\n key=\"option-input\"\n ref={this.input}\n onChange={this.handleCustomInput}\n value={customTime}\n onFocus={() => this.setState({ inputFocused: true })}\n onBlur={() => this.setState({ inputFocused: false })}\n />\n <span className=\"ml-2\" />\n </div>\n );\n\n optionArray.push(<hr key=\"option-end\" className=\"mb-2\" />);\n\n return optionArray;\n }\n\n render(): JSX.Element {\n const { disabled, invalid, value, 'data-testid': dataTestId } = this.props;\n const { menuIsOpen } = this.state;\n let { popperOptions } = this.props;\n popperOptions = {\n placement: 'bottom-end',\n modifiers: {\n preventOverflow: { enabled: false },\n },\n ...popperOptions,\n };\n\n return (\n <div\n className=\"input-group cs-container context-menu\"\n ref={this.csContainer}\n data-testid={dataTestId}\n >\n <div\n className={classNames('input-group-append cs-dropdown', {\n 'cs-dropdown-invalid': invalid,\n })}\n >\n <button\n type=\"button\"\n className={classNames('btn cs-btn form-control', {\n 'cs-btn-invalid': invalid,\n })}\n ref={this.button}\n onClick={this.toggleMenu}\n disabled={disabled}\n >\n <span\n className={classNames({\n 'text-muted': value === null,\n })}\n >\n {this.getSelectedText()}\n </span>\n <span>\n <FontAwesomeIcon icon={dhSort} className=\"cs-caret\" />\n </span>\n <DropdownMenu\n isShown={menuIsOpen}\n actions={{ menuElement: this.renderMenuElement() }}\n popperOptions={popperOptions}\n popperClassName=\"CustomTimeSelect\"\n onMenuOpened={this.handleMenuOpened}\n onMenuClosed={this.handleMenuExited}\n menuStyle={{ maxWidth: '100rem' }}\n />\n </button>\n </div>\n </div>\n );\n }\n}\n\nexport default CustomTimeSelect;\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAQ,OAAO;AAExC,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,OAAO,EAAEC,MAAM,QAAwB,kBAAkB;AAClE,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,OAAOC,UAAU,MAAM,YAAY;AAAC,OAC7BC,SAAS;AAAA,OACTC,YAAY;AAAA;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAGnB,IAAMC,aAAa,GAAG,CAAC,CAAC;AAAC,IAEpBC,yBAAyB;AAAA,WAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAzBA,yBAAyB;AAAA,GAAzBA,yBAAyB,KAAzBA,yBAAyB;AAgC9B,MAAMC,gBAAgB,SAASd,SAAS,CAGtC;EAqBAe,WAAWA,CAACC,KAA4B,EAAE;IACxC,KAAK,CAACA,KAAK,CAAC;IAACC,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAEb,IAAM;MAAEC,KAAK;MAAEC;IAAY,CAAC,GAAGH,KAAK;IAEpC,IAAI,CAACI,UAAU,GAAG,IAAI,CAACA,UAAU,CAACC,IAAI,CAAC,IAAI,CAAC;IAC5C,IAAI,CAACC,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAACD,IAAI,CAAC,IAAI,CAAC;IAC1D,IAAI,CAACE,SAAS,GAAG,IAAI,CAACA,SAAS,CAACF,IAAI,CAAC,IAAI,CAAC;IAE1C,IAAI,CAACG,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAACH,IAAI,CAAC,IAAI,CAAC;IAC1D,IAAI,CAACI,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAACJ,IAAI,CAAC,IAAI,CAAC;IAE1D,IAAI,CAACK,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAACL,IAAI,CAAC,IAAI,CAAC;IACxD,IAAI,CAACM,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAACN,IAAI,CAAC,IAAI,CAAC;IACxD,IAAI,CAACO,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAACP,IAAI,CAAC,IAAI,CAAC;IAE1D,IAAI,CAACQ,WAAW,gBAAG9B,KAAK,CAAC+B,SAAS,CAAC,CAAC;IACpC,IAAI,CAACC,aAAa,gBAAGhC,KAAK,CAAC+B,SAAS,CAAC,CAAC;IACtC,IAAI,CAACE,MAAM,gBAAGjC,KAAK,CAAC+B,SAAS,CAAC,CAAC;IAC/B,IAAI,CAACG,KAAK,gBAAGlC,KAAK,CAAC+B,SAAS,CAAC,CAAC;IAE9B,IAAI,CAACI,KAAK,GAAG;MACXC,mBAAmB,EAAE,CAAC;MACtBC,UAAU,EAAE,KAAK;MACjBC,UAAU,EAAE,GAAG;MACfC,UAAU,EAAEnB,WAAW,CAACD,KAAK,CAAC;MAC9BqB,YAAY,EAAE;IAChB,CAAC;EACH;EAUAC,eAAeA,CAAA,EAAW;IACxB,IAAM;MAAEC,OAAO;MAAEvB,KAAK;MAAEwB;IAAY,CAAC,GAAG,IAAI,CAAC1B,KAAK;IAClD,IAAM;MAAEsB;IAAW,CAAC,GAAG,IAAI,CAACJ,KAAK;IAEjC,IAAIhB,KAAK,KAAK,IAAI,EAAE;MAClB,OAAOwB,WAAW;IACpB;IAEA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,OAAO,CAACG,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;MAC1C,IAAME,MAAM,GAAGJ,OAAO,CAACE,CAAC,CAAC;MACzB,IAAIE,MAAM,CAAC3B,KAAK,KAAKA,KAAK,EAAE;QAC1B,OAAO2B,MAAM,CAACC,KAAK;MACrB;IACF;IAEA,OAAO1C,SAAS,CAAC2C,UAAU,CAACT,UAAU,CAAC;EACzC;EAEAU,aAAaA,CAAA,EAAS;IACpB,IAAI,IAAI,CAACnB,WAAW,CAACoB,OAAO,EAAE;MAC5B,IAAI,CAACC,QAAQ,CAAC;QACZb,UAAU,EAAE,IAAI,CAACR,WAAW,CAACoB,OAAO,CAACE,qBAAqB,CAAC,CAAC,CAACC;MAC/D,CAAC,CAAC;IACJ;EACF;EAEAC,KAAKA,CAAA,EAAS;IAAA,IAAAC,oBAAA;IACZ,CAAAA,oBAAA,OAAI,CAACtB,MAAM,CAACiB,OAAO,cAAAK,oBAAA,uBAAnBA,oBAAA,CAAqBD,KAAK,CAAC,CAAC;EAC9B;EAEAE,gBAAgBA,CAACrC,KAAa,EAAQ;IACpC,IAAM;MAAEsC;IAAS,CAAC,GAAG,IAAI,CAACxC,KAAK;IAC/BwC,QAAQ,CAACtC,KAAK,CAAC;EACjB;EAEAuC,YAAYA,CAAA,EAAS;IACnB,IAAI,CAACT,aAAa,CAAC,CAAC;EACtB;EAEA1B,iBAAiBA,CAACoC,KAA0C,EAAQ;IAAA,IAAAC,qBAAA;IAClE,IAAM;MAAExB,mBAAmB;MAAEI;IAAa,CAAC,GAAG,IAAI,CAACL,KAAK;IACxD,IAAM;MAAEO;IAAQ,CAAC,GAAG,IAAI,CAACzB,KAAK;IAE9B,QAAQ0C,KAAK,CAACE,GAAG;MACf,KAAK,OAAO;MACZ,KAAK,GAAG;QAAE;QACR,IAAIrB,YAAY,EAAE;UAChB,IAAI,CAACsB,gBAAgB,CAAC,CAAC;QACzB,CAAC,MAAM;UACL,IAAI,CAACN,gBAAgB,CAACd,OAAO,CAACN,mBAAmB,CAAC,CAACjB,KAAK,CAAC;QAC3D;QACA,IAAI,CAACK,SAAS,CAAC,CAAC;QAChB,CAAAoC,qBAAA,OAAI,CAAC3B,MAAM,CAACiB,OAAO,cAAAU,qBAAA,uBAAnBA,qBAAA,CAAqBN,KAAK,CAAC,CAAC;QAC5BK,KAAK,CAACI,eAAe,CAAC,CAAC;QACvBJ,KAAK,CAACK,cAAc,CAAC,CAAC;QACtB;MACF,KAAK,KAAK;QACR,IAAIL,KAAK,CAACM,QAAQ,EAAE;UAClB,IAAI,CAACC,oBAAoB,CACvBnD,gBAAgB,CAACD,yBAAyB,CAACqD,EAC7C,CAAC;QACH,CAAC,MAAM;UACL,IAAI,CAACD,oBAAoB,CACvBnD,gBAAgB,CAACD,yBAAyB,CAACsD,IAC7C,CAAC;QACH;QACAT,KAAK,CAACI,eAAe,CAAC,CAAC;QACvBJ,KAAK,CAACK,cAAc,CAAC,CAAC;QACtB;MACF,KAAK,SAAS;QACZ,IAAI,CAACE,oBAAoB,CACvBnD,gBAAgB,CAACD,yBAAyB,CAACqD,EAC7C,CAAC;QACDR,KAAK,CAACI,eAAe,CAAC,CAAC;QACvBJ,KAAK,CAACK,cAAc,CAAC,CAAC;QACtB;MACF,KAAK,WAAW;QACd,IAAI,CAACE,oBAAoB,CACvBnD,gBAAgB,CAACD,yBAAyB,CAACsD,IAC7C,CAAC;QACDT,KAAK,CAACI,eAAe,CAAC,CAAC;QACvBJ,KAAK,CAACK,cAAc,CAAC,CAAC;QACtB;MACF,KAAK,QAAQ;QACX,IAAI,CAACxC,SAAS,CAAC,CAAC;QAChB;MACF;QACE;IACJ;EACF;EAEA0C,oBAAoBA,CAACG,SAAoC,EAAQ;IAC/D,IAAM;MAAEjC,mBAAmB;MAAEI;IAAa,CAAC,GAAG,IAAI,CAACL,KAAK;IACxD,IAAM;MAAEO;IAAQ,CAAC,GAAG,IAAI,CAACzB,KAAK;IAC9B,IAAMqD,iBAAiB,GAAG5B,OAAO,CAACG,MAAM;IACxC,IAAI0B,sBAAsB,GAAGnC,mBAAmB;IAChD,QAAQiC,SAAS;MACf,KAAKtD,gBAAgB,CAACD,yBAAyB,CAACqD,EAAE;QAChD,IAAI,CAAC3B,YAAY,IAAIJ,mBAAmB,KAAK,CAAC,EAAE;UAC9C,IAAI,CAACoC,UAAU,CAAC,CAAC;UACjB;QACF,CAAC,MAAM,IAAIhC,YAAY,EAAE;UACvB,IAAI,CAACiC,WAAW,CAACrC,mBAAmB,CAAC;QACvC;QAEA,IAAIA,mBAAmB,GAAG,CAAC,IAAI,CAACI,YAAY,EAAE;UAC5C+B,sBAAsB,GACpB,CAACA,sBAAsB,GAAG,CAAC,IAAID,iBAAiB;UAClD,IAAI,CAACnB,QAAQ,CAAC;YACZf,mBAAmB,EAAEmC;UACvB,CAAC,CAAC;QACJ,CAAC,MAAM,IAAInC,mBAAmB,KAAK,CAAC,EAAE;UACpCmC,sBAAsB,GAAGD,iBAAiB,GAAG,CAAC;UAC9C,IAAI,CAACnB,QAAQ,CAAC;YACZf,mBAAmB,EAAEmC;UACvB,CAAC,CAAC;QACJ;QACA,IAAI,CAACG,oBAAoB,CAACH,sBAAsB,CAAC;QACjD;MACF,KAAKxD,gBAAgB,CAACD,yBAAyB,CAACsD,IAAI;QAClD,IAAI,CAAC5B,YAAY,IAAIJ,mBAAmB,KAAKkC,iBAAiB,GAAG,CAAC,EAAE;UAClE,IAAI,CAACE,UAAU,CAAC,CAAC;UACjB;QACF,CAAC,MAAM,IAAIhC,YAAY,EAAE;UACvB,IAAI,CAACiC,WAAW,CAACrC,mBAAmB,CAAC;QACvC;QAEA,IACEA,mBAAmB,GAAGkC,iBAAiB,IACvC,EAAE9B,YAAY,IAAIJ,mBAAmB,KAAK,CAAC,CAAC,EAC5C;UACAmC,sBAAsB,GACpB,CAACA,sBAAsB,GAAG,CAAC,IAAID,iBAAiB;UAClD,IAAI,CAACnB,QAAQ,CAAC;YACZf,mBAAmB,EAAEmC;UACvB,CAAC,CAAC;QACJ;QACA,IAAI,CAACG,oBAAoB,CAACH,sBAAsB,CAAC;QACjD;MACF;QACE;IACJ;EACF;EAEA9C,iBAAiBA,CAACkC,KAA0C,EAAQ;IAClE,IAAMgB,WAAW,GAAGC,MAAM,CAACjB,KAAK,CAACkB,aAAa,CAAC1D,KAAK,CAAC;IACrD,IAAM;MAAEuB,OAAO;MAAEoC;IAAY,CAAC,GAAG,IAAI,CAAC7D,KAAK;IAC3C,IAAM;MAAEsB;IAAW,CAAC,GAAG,IAAI,CAACJ,KAAK;IAEjC,IAAIwC,WAAW,KAAK9D,aAAa,EAAE;MACjC,IAAMkE,MAAM,GAAGD,WAAW,CAACvC,UAAU,CAAC;MACtC,IAAI,CAACyC,cAAc,CAACD,MAAM,CAAC;IAC7B,CAAC,MAAM;MACL,IAAI,CAACC,cAAc,CAACtC,OAAO,CAACiC,WAAW,CAAC,CAACxD,KAAK,CAAC;IACjD;EACF;EAEA6D,cAAcA,CAACD,MAAc,EAAQ;IAAA,IAAAE,qBAAA;IACnC,IAAI,CAACzB,gBAAgB,CAACuB,MAAM,CAAC;IAC7B,IAAI,CAACvD,SAAS,CAAC,CAAC;IAChB,CAAAyD,qBAAA,OAAI,CAAChD,MAAM,CAACiB,OAAO,cAAA+B,qBAAA,uBAAnBA,qBAAA,CAAqB3B,KAAK,CAAC,CAAC;EAC9B;EAEA5B,iBAAiBA,CAACiC,KAA0C,EAAQ;IAClE,IAAI,CAACR,QAAQ,CAAC;MAAEf,mBAAmB,EAAEwC,MAAM,CAACjB,KAAK,CAACuB,MAAM,CAAC/D,KAAK;IAAE,CAAC,CAAC;EACpE;EAEAQ,gBAAgBA,CAAA,EAAS;IAAA,IAAAwD,qBAAA;IACvB,IAAM;MAAEzC,OAAO;MAAEvB;IAAM,CAAC,GAAG,IAAI,CAACF,KAAK;IACrC,IAAM;MAAEmB;IAAoB,CAAC,GAAG,IAAI,CAACD,KAAK;IAC1C,IAAI,CAACuC,oBAAoB,CAACtC,mBAAmB,CAAC;IAC9C,IAAMgD,YAAY,IAAAD,qBAAA,GAAG,IAAI,CAACnD,aAAa,CAACkB,OAAO,cAAAiC,qBAAA,uBAA1BA,qBAAA,CAA4BE,aAAa,CAC5D,gCACF,CAAC;IACD,IAAID,YAAY,YAAYE,WAAW,EAAE;MACvCF,YAAY,CAAC9B,KAAK,CAAC,CAAC;IACtB;IAEA,IAAInC,KAAK,KAAK,IAAI,EAAE;MAClB;IACF;IACA,IAAMoE,UAAU,GAAG7C,OAAO,CAAC8C,GAAG,CAAC1C,MAAM,IAAIA,MAAM,CAAC3B,KAAK,CAAC,CAACsE,OAAO,CAACtE,KAAK,CAAC;IACrE,IAAIoE,UAAU,GAAG,CAAC,EAAE;MAClB;MACA,IAAI,CAACf,UAAU,CAAC,CAAC;IACnB;EACF;EAEAA,UAAUA,CAAA,EAAS;IAAA,IAAAkB,mBAAA;IACjB,CAAAA,mBAAA,OAAI,CAACxD,KAAK,CAACgB,OAAO,cAAAwC,mBAAA,uBAAlBA,mBAAA,CAAoBpC,KAAK,CAAC,CAAC;EAC7B;EAEAmB,WAAWA,CAACkB,KAAa,EAAQ;IAAA,IAAAC,sBAAA;IAC/B,IAAMlD,OAAO,IAAAkD,sBAAA,GAAG,IAAI,CAAC5D,aAAa,CAACkB,OAAO,cAAA0C,sBAAA,uBAA1BA,sBAAA,CAA4BP,aAAa,CAAC,aAAa,CAAC;IACxE,IAAI3C,OAAO,IAAIA,OAAO,CAACmD,QAAQ,IAAI,IAAI,EAAE;MACvC,IAAM/C,MAAM,GAAGJ,OAAO,CAACmD,QAAQ,CAACC,IAAI,CAACH,KAAK,CAAC;MAC3C,IAAI7C,MAAM,YAAYwC,WAAW,EAAE;QACjCxC,MAAM,CAACQ,KAAK,CAAC,CAAC;MAChB;IACF;EACF;EAEA1B,gBAAgBA,CAAA,EAAS;IACvB,IAAM;MAAES;IAAW,CAAC,GAAG,IAAI,CAACF,KAAK;IACjC,IAAIE,UAAU,EAAE;MACd,IAAI,CAACc,QAAQ,CAAC;QAAEd,UAAU,EAAE,KAAK;QAAED,mBAAmB,EAAE;MAAE,CAAC,CAAC;IAC9D;EACF;EAEAP,iBAAiBA,CAACV,KAAa,EAAQ;IACrC,IAAM;MAAE2D;IAAY,CAAC,GAAG,IAAI,CAAC7D,KAAK;IAElC,IAAM8D,MAAM,GAAGD,WAAW,CAAC3D,KAAK,CAAC;IACjC,IAAI,CAACqC,gBAAgB,CAACuB,MAAM,CAAC;IAC7B,IAAI,CAAC5B,QAAQ,CAAC;MACZZ,UAAU,EAAEpB;IACd,CAAC,CAAC;EACJ;EAEA2C,gBAAgBA,CAAA,EAAS;IACvB,IAAM;MAAEgB;IAAY,CAAC,GAAG,IAAI,CAAC7D,KAAK;IAClC,IAAM;MAAEsB;IAAW,CAAC,GAAG,IAAI,CAACJ,KAAK;IAEjC,IAAM4C,MAAM,GAAGD,WAAW,CAACvC,UAAU,CAAC;IACtC,IAAI,CAACiB,gBAAgB,CAACuB,MAAM,CAAC;EAC/B;EAEA1D,UAAUA,CAACsC,KAA0C,EAAQ;IAC3D,IAAM;MAAEtB;IAAW,CAAC,GAAG,IAAI,CAACF,KAAK;IACjC,IAAIE,UAAU,EAAE;MACd,IAAI,CAACb,SAAS,CAAC,CAAC;IAClB,CAAC,MAAM;MACL,IAAI,CAACuE,QAAQ,CAAC,CAAC;IACjB;IACApC,KAAK,CAACI,eAAe,CAAC,CAAC;EACzB;EAEAgC,QAAQA,CAAA,EAAS;IACf,IAAI,CAACC,mBAAmB,CAAC,CAAC;IAC1B,IAAI,CAAC/C,aAAa,CAAC,CAAC;IACpB,IAAI,CAACE,QAAQ,CAAC;MAAEd,UAAU,EAAE;IAAK,CAAC,CAAC;EACrC;EAEAb,SAASA,CAAA,EAA2B;IAAA,IAA1ByE,WAAW,GAAAC,SAAA,CAAArD,MAAA,QAAAqD,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,IAAI;IAC1B,IAAI,CAAC/C,QAAQ,CAAC;MAAEd,UAAU,EAAE;IAAM,CAAC,CAAC;IACpC,IAAI4D,WAAW,EAAE;MAAA,IAAAG,qBAAA;MACf,CAAAA,qBAAA,OAAI,CAACnE,MAAM,CAACiB,OAAO,cAAAkD,qBAAA,uBAAnBA,qBAAA,CAAqB9C,KAAK,CAAC,CAAC;IAC9B;EACF;EAEA0C,mBAAmBA,CAAA,EAAS;IAC1B,IAAM;MAAEtD,OAAO;MAAEvB;IAAM,CAAC,GAAG,IAAI,CAACF,KAAK;IACrC,IAAIE,KAAK,KAAK,IAAI,EAAE;MAClB;IACF;IACA,IAAMoE,UAAU,GAAG7C,OAAO,CAAC8C,GAAG,CAAC1C,MAAM,IAAIA,MAAM,CAAC3B,KAAK,CAAC,CAACsE,OAAO,CAACtE,KAAK,CAAC;IACrE,IAAIoE,UAAU,GAAG,CAAC,EAAE;MAClB,IAAI,CAACpC,QAAQ,CAAC;QAAEf,mBAAmB,EAAEmD;MAAW,CAAC,CAAC;IACpD;EACF;EAEAb,oBAAoBA,CAACiB,KAAa,EAAQ;IAAA,IAAAU,sBAAA;IACxC,IAAM3D,OAAO,IAAA2D,sBAAA,GAAG,IAAI,CAACrE,aAAa,CAACkB,OAAO,cAAAmD,sBAAA,uBAA1BA,sBAAA,CAA4BhB,aAAa,CAAC,aAAa,CAAC;IACxE,IAAI3C,OAAO,IAAIA,OAAO,CAACmD,QAAQ,IAAI,IAAI,EAAE;MACvC,IAAMT,YAAY,GAAG1C,OAAO,CAACmD,QAAQ,CAACC,IAAI,CAACH,KAAK,CAAC;MACjD,IACEP,YAAY,YAAYE,WAAW,IACnCF,YAAY,CAACkB,SAAS,GAAGvF,gBAAgB,CAACwF,qBAAqB,EAC/D;QACA7D,OAAO,CAAC8D,SAAS,GACfpB,YAAY,CAACkB,SAAS,GAAGvF,gBAAgB,CAACwF,qBAAqB;MACnE,CAAC,MAAM,IACJnB,YAAY,YAAYE,WAAW,IAAIF,YAAY,CAACkB,SAAS,GAAG,CAAC,IAClEX,KAAK,KAAK,CAAC,EACX;QACAjD,OAAO,CAAC8D,SAAS,GAAG,CAAC;MACvB;IACF;EACF;EAEAC,iBAAiBA,CAAA,EAAgB;IAC/B,IAAM;MAAEnE;IAAW,CAAC,GAAG,IAAI,CAACH,KAAK;IACjC,oBACEzB,IAAA;MACEgG,SAAS,EAAC,mBAAmB;MAC7BC,GAAG,EAAE,IAAI,CAAC3E,aAAc;MACxB4E,IAAI,EAAC,cAAc;MACnBC,SAAS,EAAE,IAAI,CAACtF,iBAAkB;MAClCuF,OAAO,EAAEnD,KAAK,IAAI;QAChBA,KAAK,CAACI,eAAe,CAAC,CAAC;MACzB,CAAE;MACFgD,KAAK,EAAE;QAAE1D,KAAK,EAAEf;MAAW,CAAE;MAAAuD,QAAA,eAE7BnF,IAAA;QAAKgG,SAAS,EAAC,sBAAsB;QAAAb,QAAA,eACnCnF,IAAA;UAAKgG,SAAS,EAAC,YAAY;UAAAb,QAAA,EAAE,IAAI,CAACmB,aAAa,CAAC;QAAC,CAAM;MAAC,CACrD;IAAC,CACH,CAAC;EAEV;EAEAA,aAAaA,CAAA,EAAoB;IAC/B,IAAM;MAAEtE,OAAO;MAAEvB,KAAK;MAAE8F,IAAI;MAAEC;IAAW,CAAC,GAAG,IAAI,CAACjG,KAAK;IACvD,IAAM;MAAEmB,mBAAmB;MAAEG,UAAU;MAAEC;IAAa,CAAC,GAAG,IAAI,CAACL,KAAK;IAEpE,IAAIgF,UAAU,GAAG,KAAK;IACtB,IAAMC,WAA0B,GAAG,EAAE;IACrC,KAAK,IAAIzB,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGjD,OAAO,CAACG,MAAM,EAAE8C,KAAK,IAAI,CAAC,EAAE;MACtD,IAAM7C,MAAM,GAAGJ,OAAO,CAACiD,KAAK,CAAC;MAC7B,IAAM9B,GAAG,aAAAwD,MAAA,CAAa1B,KAAK,OAAA0B,MAAA,CAAIvE,MAAM,CAAC3B,KAAK,CAAE;MAC7CgG,UAAU,GAAGA,UAAU,IAAIrE,MAAM,CAAC3B,KAAK,KAAKA,KAAK;MACjDiG,WAAW,CAACE,IAAI,eACd1G,KAAA;QAEE2G,IAAI,EAAC,QAAQ;QACbpG,KAAK,EAAEwE,KAAM;QACbe,SAAS,EAAEpG,UAAU,CAAC,eAAe,EAAE;UACrC,iBAAiB,EAAE8B,mBAAmB,KAAKuD,KAAK,IAAI,CAACnD;QACvD,CAAC,CAAE;QACHsE,OAAO,EAAE,IAAI,CAACrF,iBAAkB;QAChC+F,OAAO,EAAE,IAAI,CAAC9F,iBAAkB;QAAAmE,QAAA,GAE/B/C,MAAM,CAAC3B,KAAK,KAAKA,KAAK,iBACrBT,IAAA,CAACR,eAAe;UAAC+G,IAAI,EAAEA,IAAK;UAACP,SAAS,EAAC;QAAM,CAAE,CAChD,EACA5D,MAAM,CAAC3B,KAAK,KAAKA,KAAK,iBAAIT,IAAA;UAAMgG,SAAS,EAAC;QAAM,CAAE,CAAC,EACnD5D,MAAM,CAACC,KAAK;MAAA,GAbRc,GAcC,CACV,CAAC;IACH;IAEAuD,WAAW,CAACE,IAAI,eAAC5G,IAAA;MAAIgG,SAAS,EAAC;IAAY,GAAK,gBAAkB,CAAC,CAAC;IAEpEU,WAAW,CAACE,IAAI,eACd1G,KAAA;MAEE2G,IAAI,EAAC,QAAQ;MACbpG,KAAK,EAAEN,aAAc;MACrB6F,SAAS,EAAEpG,UAAU,CAAC,eAAe,EAAE;QACrC,iBAAiB,EAAEkC;MACrB,CAAC,CAAE;MACHsE,OAAO,EAAE,IAAI,CAACrF,iBAAkB;MAChC+F,OAAO,EAAE,IAAI,CAAC9F,iBAAkB;MAAAmE,QAAA,GAE/B,CAACsB,UAAU,IAAIhG,KAAK,KAAK,IAAI,gBAC5BT,IAAA,CAACR,eAAe;QAAC+G,IAAI,EAAEA,IAAK;QAACP,SAAS,EAAC;MAAM,CAAE,CAAC,gBAEhDhG,IAAA;QAAMgG,SAAS,EAAC;MAAM,CAAE,CACzB,EACAQ,UAAU;IAAA,GAdP,qBAeE,CACV,CAAC;IAEDE,WAAW,CAACE,IAAI,eACd1G,KAAA;MAA+B8F,SAAS,EAAC,qBAAqB;MAAAb,QAAA,gBAC5DnF,IAAA;QAAMgG,SAAS,EAAC;MAAM,CAAE,CAAC,eACzBhG,IAAA,CAACH,SAAS;QAERoG,GAAG,EAAE,IAAI,CAACzE,KAAM;QAChBuB,QAAQ,EAAE,IAAI,CAAC5B,iBAAkB;QACjCV,KAAK,EAAEoB,UAAW;QAClBiF,OAAO,EAAEA,CAAA,KAAM,IAAI,CAACrE,QAAQ,CAAC;UAAEX,YAAY,EAAE;QAAK,CAAC,CAAE;QACrDiF,MAAM,EAAEA,CAAA,KAAM,IAAI,CAACtE,QAAQ,CAAC;UAAEX,YAAY,EAAE;QAAM,CAAC;MAAE,GALjD,cAML,CAAC,eACF9B,IAAA;QAAMgG,SAAS,EAAC;MAAM,CAAE,CAAC;IAAA,GAVlB,qBAWJ,CACP,CAAC;IAEDU,WAAW,CAACE,IAAI,eAAC5G,IAAA;MAAqBgG,SAAS,EAAC;IAAM,GAA7B,YAA+B,CAAC,CAAC;IAE1D,OAAOU,WAAW;EACpB;EAEAM,MAAMA,CAAA,EAAgB;IACpB,IAAM;MAAEC,QAAQ;MAAEC,OAAO;MAAEzG,KAAK;MAAE,aAAa,EAAE0G;IAAW,CAAC,GAAG,IAAI,CAAC5G,KAAK;IAC1E,IAAM;MAAEoB;IAAW,CAAC,GAAG,IAAI,CAACF,KAAK;IACjC,IAAI;MAAE2F;IAAc,CAAC,GAAG,IAAI,CAAC7G,KAAK;IAClC6G,aAAa,GAAAC,aAAA;MACXC,SAAS,EAAE,YAAY;MACvBC,SAAS,EAAE;QACTC,eAAe,EAAE;UAAEC,OAAO,EAAE;QAAM;MACpC;IAAC,GACEL,aAAa,CACjB;IAED,oBACEpH,IAAA;MACEgG,SAAS,EAAC,uCAAuC;MACjDC,GAAG,EAAE,IAAI,CAAC7E,WAAY;MACtB,eAAa+F,UAAW;MAAAhC,QAAA,eAExBnF,IAAA;QACEgG,SAAS,EAAEpG,UAAU,CAAC,gCAAgC,EAAE;UACtD,qBAAqB,EAAEsH;QACzB,CAAC,CAAE;QAAA/B,QAAA,eAEHjF,KAAA;UACE2G,IAAI,EAAC,QAAQ;UACbb,SAAS,EAAEpG,UAAU,CAAC,yBAAyB,EAAE;YAC/C,gBAAgB,EAAEsH;UACpB,CAAC,CAAE;UACHjB,GAAG,EAAE,IAAI,CAAC1E,MAAO;UACjB6E,OAAO,EAAE,IAAI,CAACzF,UAAW;UACzBsG,QAAQ,EAAEA,QAAS;UAAA9B,QAAA,gBAEnBnF,IAAA;YACEgG,SAAS,EAAEpG,UAAU,CAAC;cACpB,YAAY,EAAEa,KAAK,KAAK;YAC1B,CAAC,CAAE;YAAA0E,QAAA,EAEF,IAAI,CAACpD,eAAe,CAAC;UAAC,CACnB,CAAC,eACP/B,IAAA;YAAAmF,QAAA,eACEnF,IAAA,CAACR,eAAe;cAAC+G,IAAI,EAAE7G,MAAO;cAACsG,SAAS,EAAC;YAAU,CAAE;UAAC,CAClD,CAAC,eACPhG,IAAA,CAACF,YAAY;YACX4H,OAAO,EAAE/F,UAAW;YACpBgG,OAAO,EAAE;cAAEC,WAAW,EAAE,IAAI,CAAC7B,iBAAiB,CAAC;YAAE,CAAE;YACnDqB,aAAa,EAAEA,aAAc;YAC7BS,eAAe,EAAC,kBAAkB;YAClCC,YAAY,EAAE,IAAI,CAAC7G,gBAAiB;YACpC8G,YAAY,EAAE,IAAI,CAAC7G,gBAAiB;YACpC8G,SAAS,EAAE;cAAEC,QAAQ,EAAE;YAAS;UAAE,CACnC,CAAC;QAAA,CACI;MAAC,CACN;IAAC,CACH,CAAC;EAEV;AACF;AAACzH,eAAA,CA1eKH,gBAAgB,+BAIeD,yBAAyB;AAAAI,eAAA,CAJxDH,gBAAgB,2BAMW,GAAG;AAAAG,eAAA,CAN9BH,gBAAgB,kBAQkC;EACpD0C,QAAQA,CAAA,EAAS;IACf;EAAA,CACD;EACDtC,KAAK,EAAE,IAAI;EACXwG,QAAQ,EAAE,KAAK;EACfG,aAAa,EAAE,CAAC,CAAC;EACjBb,IAAI,EAAE9G,OAAO;EACb+G,UAAU,EAAE,QAAQ;EACpBvE,WAAW,EAAE,eAAe;EAC5BvB,WAAW,EAAED,KAAK,IAAKA,KAAK,KAAK,IAAI,GAAG,CAAC,GAAGyH,IAAI,CAACC,KAAK,CAAC1H,KAAK,GAAG,IAAI,CAAE;EACrE2D,WAAW,EAAEgE,IAAI,IAAIA,IAAI,GAAG,IAAI;EAChClB,OAAO,EAAE,KAAK;EACd,aAAa,EAAEzB;AACjB,CAAC;AAsdH,eAAepF,gBAAgB"}
|
|
1
|
+
{"version":3,"file":"CustomTimeSelect.js","names":["React","Component","FontAwesomeIcon","vsCheck","dhSort","TimeUtils","classNames","TimeInput","DropdownMenu","jsx","_jsx","jsxs","_jsxs","CUSTOM_OPTION","MENU_NAVIGATION_DIRECTION","CustomTimeSelect","constructor","props","_defineProperty","value","valueToTime","toggleMenu","bind","handleMenuKeyDown","closeMenu","handleOptionClick","handleOptionFocus","handleMenuOpened","handleMenuExited","handleCustomInput","csContainer","createRef","menuContainer","button","input","state","keyboardOptionIndex","menuIsOpen","inputWidth","customTime","inputFocused","getSelectedText","options","placeholder","i","length","option","title","formatTime","setInputWidth","current","setState","getBoundingClientRect","width","focus","_this$button$current","updateInputValue","onChange","handleResize","event","_this$button$current2","key","updateFromCustom","stopPropagation","preventDefault","shiftKey","handleMenuNavigation","UP","DOWN","direction","menuOptionsLength","newKeyboardOptionIndex","focusInput","focusOption","scrollOptionIntoView","optionIndex","Number","currentTarget","timeToValue","update","updateAndClose","_this$button$current3","target","_this$menuContainer$c","activeOption","querySelector","HTMLElement","valueIndex","map","indexOf","_this$input$current","index","_this$menuContainer$c2","children","item","openMenu","updateKeyboardIndex","focusButton","arguments","undefined","_this$button$current4","_this$menuContainer$c3","offsetTop","DROP_DOWN_MENU_HEIGHT","scrollTop","renderMenuElement","className","ref","role","onKeyDown","onClick","style","renderOptions","icon","customText","matchFound","optionArray","concat","push","type","onFocus","onBlur","render","disabled","invalid","dataTestId","popperOptions","_objectSpread","placement","modifiers","preventOverflow","enabled","isShown","actions","menuElement","popperClassName","onMenuOpened","onMenuClosed","menuStyle","maxWidth","Math","round","time"],"sources":["../src/CustomTimeSelect.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport { PopperOptions } from 'popper.js';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsCheck, dhSort, IconDefinition } from '@deephaven/icons';\nimport { TimeUtils } from '@deephaven/utils';\nimport classNames from 'classnames';\nimport TimeInput, { TimeInputElement } from './TimeInput';\nimport DropdownMenu from './menu-actions/DropdownMenu';\nimport './CustomTimeSelect.scss';\n\nconst CUSTOM_OPTION = -1;\n\nenum MENU_NAVIGATION_DIRECTION {\n UP = 'UP',\n DOWN = 'DOWN',\n}\n\ntype CustomTimeSelectProps = {\n options: { title: string; value: number }[];\n popperOptions: PopperOptions;\n value: number | null;\n onChange: (value: number) => void;\n disabled: boolean;\n icon: IconDefinition;\n placeholder: string;\n customText: string;\n // Defaults to converting the value in milliseconds to time in seconds\n valueToTime: (val: number | null) => number;\n // Defaults to converting the time in seconds to value in milliseconds\n timeToValue: (time: number) => number;\n invalid: boolean;\n 'data-testid'?: string;\n};\n\ntype TimeInSeconds = number;\n\ntype CustomTimeSelectState = {\n keyboardOptionIndex: number;\n menuIsOpen: boolean;\n inputWidth: number;\n customTime: TimeInSeconds;\n inputFocused: boolean;\n};\n\nclass CustomTimeSelect extends Component<\n CustomTimeSelectProps,\n CustomTimeSelectState\n> {\n static MENU_NAVIGATION_DIRECTION = MENU_NAVIGATION_DIRECTION;\n\n static DROP_DOWN_MENU_HEIGHT = 125;\n\n static defaultProps: Partial<CustomTimeSelectProps> = {\n onChange(): void {\n // no-op\n },\n value: null,\n disabled: false,\n popperOptions: {},\n icon: vsCheck,\n customText: 'Custom',\n placeholder: 'Select a time',\n valueToTime: value => (value === null ? 0 : Math.round(value / 1000)),\n timeToValue: time => time * 1000,\n invalid: false,\n 'data-testid': undefined,\n };\n\n constructor(props: CustomTimeSelectProps) {\n super(props);\n\n const { value, valueToTime } = props;\n\n this.toggleMenu = this.toggleMenu.bind(this);\n this.handleMenuKeyDown = this.handleMenuKeyDown.bind(this);\n this.closeMenu = this.closeMenu.bind(this);\n\n this.handleOptionClick = this.handleOptionClick.bind(this);\n this.handleOptionFocus = this.handleOptionFocus.bind(this);\n\n this.handleMenuOpened = this.handleMenuOpened.bind(this);\n this.handleMenuExited = this.handleMenuExited.bind(this);\n this.handleCustomInput = this.handleCustomInput.bind(this);\n\n this.csContainer = React.createRef();\n this.menuContainer = React.createRef();\n this.button = React.createRef();\n this.input = React.createRef();\n\n this.state = {\n keyboardOptionIndex: 0,\n menuIsOpen: false,\n inputWidth: 100,\n customTime: valueToTime(value),\n inputFocused: false,\n };\n }\n\n csContainer: React.RefObject<HTMLDivElement>;\n\n menuContainer: React.RefObject<HTMLDivElement>;\n\n button: React.RefObject<HTMLButtonElement>;\n\n input: React.RefObject<TimeInputElement>;\n\n getSelectedText(): string {\n const { options, value, placeholder } = this.props;\n const { customTime } = this.state;\n\n if (value === null) {\n return placeholder;\n }\n\n for (let i = 0; i < options.length; i += 1) {\n const option = options[i];\n if (option.value === value) {\n return option.title;\n }\n }\n\n return TimeUtils.formatTime(customTime);\n }\n\n setInputWidth(): void {\n if (this.csContainer.current) {\n this.setState({\n inputWidth: this.csContainer.current.getBoundingClientRect().width,\n });\n }\n }\n\n focus(): void {\n this.button.current?.focus();\n }\n\n updateInputValue(value: number): void {\n const { onChange } = this.props;\n onChange(value);\n }\n\n handleResize(): void {\n this.setInputWidth();\n }\n\n handleMenuKeyDown(event: React.KeyboardEvent<HTMLDivElement>): void {\n const { keyboardOptionIndex, inputFocused } = this.state;\n const { options } = this.props;\n\n switch (event.key) {\n case 'Enter':\n case ' ': // Space Bar\n if (inputFocused) {\n this.updateFromCustom();\n } else {\n this.updateInputValue(options[keyboardOptionIndex].value);\n }\n this.closeMenu();\n this.button.current?.focus();\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'Tab':\n if (event.shiftKey) {\n this.handleMenuNavigation(\n CustomTimeSelect.MENU_NAVIGATION_DIRECTION.UP\n );\n } else {\n this.handleMenuNavigation(\n CustomTimeSelect.MENU_NAVIGATION_DIRECTION.DOWN\n );\n }\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'ArrowUp':\n this.handleMenuNavigation(\n CustomTimeSelect.MENU_NAVIGATION_DIRECTION.UP\n );\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'ArrowDown':\n this.handleMenuNavigation(\n CustomTimeSelect.MENU_NAVIGATION_DIRECTION.DOWN\n );\n event.stopPropagation();\n event.preventDefault();\n break;\n case 'Escape':\n this.closeMenu();\n break;\n default:\n break;\n }\n }\n\n handleMenuNavigation(direction: MENU_NAVIGATION_DIRECTION): void {\n const { keyboardOptionIndex, inputFocused } = this.state;\n const { options } = this.props;\n const menuOptionsLength = options.length;\n let newKeyboardOptionIndex = keyboardOptionIndex;\n switch (direction) {\n case CustomTimeSelect.MENU_NAVIGATION_DIRECTION.UP:\n if (!inputFocused && keyboardOptionIndex === 0) {\n this.focusInput();\n break;\n } else if (inputFocused) {\n this.focusOption(keyboardOptionIndex);\n }\n\n if (keyboardOptionIndex > 0 && !inputFocused) {\n newKeyboardOptionIndex =\n (newKeyboardOptionIndex - 1) % menuOptionsLength;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex,\n });\n } else if (keyboardOptionIndex === 0) {\n newKeyboardOptionIndex = menuOptionsLength - 1;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex,\n });\n }\n this.scrollOptionIntoView(newKeyboardOptionIndex);\n break;\n case CustomTimeSelect.MENU_NAVIGATION_DIRECTION.DOWN:\n if (!inputFocused && keyboardOptionIndex === menuOptionsLength - 1) {\n this.focusInput();\n break;\n } else if (inputFocused) {\n this.focusOption(keyboardOptionIndex);\n }\n\n if (\n keyboardOptionIndex < menuOptionsLength &&\n !(inputFocused && keyboardOptionIndex === 0)\n ) {\n newKeyboardOptionIndex =\n (newKeyboardOptionIndex + 1) % menuOptionsLength;\n this.setState({\n keyboardOptionIndex: newKeyboardOptionIndex,\n });\n }\n this.scrollOptionIntoView(newKeyboardOptionIndex);\n break;\n default:\n break;\n }\n }\n\n handleOptionClick(event: React.MouseEvent<HTMLButtonElement>): void {\n const optionIndex = Number(event.currentTarget.value);\n const { options, timeToValue } = this.props;\n const { customTime } = this.state;\n\n if (optionIndex === CUSTOM_OPTION) {\n const update = timeToValue(customTime);\n this.updateAndClose(update);\n } else {\n this.updateAndClose(options[optionIndex].value);\n }\n }\n\n updateAndClose(update: number): void {\n this.updateInputValue(update);\n this.closeMenu();\n this.button.current?.focus();\n }\n\n handleOptionFocus(event: React.FocusEvent<HTMLButtonElement>): void {\n this.setState({ keyboardOptionIndex: Number(event.target.value) });\n }\n\n handleMenuOpened(): void {\n const { options, value } = this.props;\n const { keyboardOptionIndex } = this.state;\n this.scrollOptionIntoView(keyboardOptionIndex);\n const activeOption = this.menuContainer.current?.querySelector(\n '.cs-option-btn.keyboard-active'\n );\n if (activeOption instanceof HTMLElement) {\n activeOption.focus();\n }\n\n if (value === null) {\n return;\n }\n const valueIndex = options.map(option => option.value).indexOf(value);\n if (valueIndex < 0) {\n // The custom option should be selected\n this.focusInput();\n }\n }\n\n focusInput(): void {\n this.input.current?.focus();\n }\n\n focusOption(index: number): void {\n const options = this.menuContainer.current?.querySelector('.cs-options');\n if (options && options.children != null) {\n const option = options.children.item(index);\n if (option instanceof HTMLElement) {\n option.focus();\n }\n }\n }\n\n handleMenuExited(): void {\n const { menuIsOpen } = this.state;\n if (menuIsOpen) {\n this.setState({ menuIsOpen: false, keyboardOptionIndex: 0 });\n }\n }\n\n handleCustomInput(value: number): void {\n const { timeToValue } = this.props;\n\n const update = timeToValue(value);\n this.updateInputValue(update);\n this.setState({\n customTime: value,\n });\n }\n\n updateFromCustom(): void {\n const { timeToValue } = this.props;\n const { customTime } = this.state;\n\n const update = timeToValue(customTime);\n this.updateInputValue(update);\n }\n\n toggleMenu(event: React.MouseEvent<HTMLButtonElement>): void {\n const { menuIsOpen } = this.state;\n if (menuIsOpen) {\n this.closeMenu();\n } else {\n this.openMenu();\n }\n event.stopPropagation();\n }\n\n openMenu(): void {\n this.updateKeyboardIndex();\n this.setInputWidth();\n this.setState({ menuIsOpen: true });\n }\n\n closeMenu(focusButton = true): void {\n this.setState({ menuIsOpen: false });\n if (focusButton) {\n this.button.current?.focus();\n }\n }\n\n updateKeyboardIndex(): void {\n const { options, value } = this.props;\n if (value === null) {\n return;\n }\n const valueIndex = options.map(option => option.value).indexOf(value);\n if (valueIndex > 0) {\n this.setState({ keyboardOptionIndex: valueIndex });\n }\n }\n\n scrollOptionIntoView(index: number): void {\n const options = this.menuContainer.current?.querySelector('.cs-options');\n if (options && options.children != null) {\n const activeOption = options.children.item(index);\n if (\n activeOption instanceof HTMLElement &&\n activeOption.offsetTop > CustomTimeSelect.DROP_DOWN_MENU_HEIGHT\n ) {\n options.scrollTop =\n activeOption.offsetTop - CustomTimeSelect.DROP_DOWN_MENU_HEIGHT;\n } else if (\n (activeOption instanceof HTMLElement && activeOption.offsetTop < 0) ||\n index === 0\n ) {\n options.scrollTop = 0;\n }\n }\n }\n\n renderMenuElement(): JSX.Element {\n const { inputWidth } = this.state;\n return (\n <div\n className=\"cs-menu-container\"\n ref={this.menuContainer}\n role=\"presentation\"\n onKeyDown={this.handleMenuKeyDown}\n onClick={event => {\n event.stopPropagation();\n }}\n style={{ width: inputWidth }}\n >\n <div className=\"cs-options-container\">\n <div className=\"cs-options\">{this.renderOptions()}</div>\n </div>\n </div>\n );\n }\n\n renderOptions(): React.ReactNode {\n const { options, value, icon, customText } = this.props;\n const { keyboardOptionIndex, customTime, inputFocused } = this.state;\n\n let matchFound = false;\n const optionArray: JSX.Element[] = [];\n for (let index = 0; index < options.length; index += 1) {\n const option = options[index];\n const key = `option-${index}-${option.value}`;\n matchFound = matchFound || option.value === value;\n optionArray.push(\n <button\n key={key}\n type=\"button\"\n value={index}\n className={classNames('cs-option-btn', {\n 'keyboard-active': keyboardOptionIndex === index && !inputFocused,\n })}\n onClick={this.handleOptionClick}\n onFocus={this.handleOptionFocus}\n >\n {option.value === value && (\n <FontAwesomeIcon icon={icon} className=\"mr-2\" />\n )}\n {option.value !== value && <span className=\"mr-4\" />}\n {option.title}\n </button>\n );\n }\n\n optionArray.push(<hr className=\"cs-divider\" key=\"option-divider\" />);\n\n optionArray.push(\n <button\n key=\"option-custom-label\"\n type=\"button\"\n value={CUSTOM_OPTION}\n className={classNames('cs-option-btn', {\n 'keyboard-active': inputFocused,\n })}\n onClick={this.handleOptionClick}\n onFocus={this.handleOptionFocus}\n >\n {!matchFound && value !== null ? (\n <FontAwesomeIcon icon={icon} className=\"mr-2\" />\n ) : (\n <span className=\"mr-4\" />\n )}\n {customText}\n </button>\n );\n\n optionArray.push(\n <div key=\"cs-custom-container\" className=\"cs-custom-container\">\n <span className=\"mr-2\" />\n <TimeInput\n key=\"option-input\"\n ref={this.input}\n onChange={this.handleCustomInput}\n value={customTime}\n onFocus={() => this.setState({ inputFocused: true })}\n onBlur={() => this.setState({ inputFocused: false })}\n />\n <span className=\"ml-2\" />\n </div>\n );\n\n optionArray.push(<hr key=\"option-end\" className=\"mb-2\" />);\n\n return optionArray;\n }\n\n render(): JSX.Element {\n const { disabled, invalid, value, 'data-testid': dataTestId } = this.props;\n const { menuIsOpen } = this.state;\n let { popperOptions } = this.props;\n popperOptions = {\n placement: 'bottom-end',\n modifiers: {\n preventOverflow: { enabled: false },\n },\n ...popperOptions,\n };\n\n return (\n <div\n className=\"input-group cs-container context-menu\"\n ref={this.csContainer}\n data-testid={dataTestId}\n >\n <div\n className={classNames('input-group-append cs-dropdown', {\n 'cs-dropdown-invalid': invalid,\n })}\n >\n <button\n type=\"button\"\n className={classNames('btn cs-btn form-control', {\n 'cs-btn-invalid': invalid,\n })}\n ref={this.button}\n onClick={this.toggleMenu}\n disabled={disabled}\n >\n <span\n className={classNames({\n 'text-muted': value === null,\n })}\n >\n {this.getSelectedText()}\n </span>\n <span>\n <FontAwesomeIcon icon={dhSort} className=\"cs-caret\" />\n </span>\n <DropdownMenu\n isShown={menuIsOpen}\n actions={{ menuElement: this.renderMenuElement() }}\n popperOptions={popperOptions}\n popperClassName=\"CustomTimeSelect\"\n onMenuOpened={this.handleMenuOpened}\n onMenuClosed={this.handleMenuExited}\n menuStyle={{ maxWidth: '100rem' }}\n />\n </button>\n </div>\n </div>\n );\n }\n}\n\nexport default CustomTimeSelect;\n"],"mappings":"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"}
|
package/dist/DateInput.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
type DateInputProps = {
|
|
3
3
|
className?: string;
|
|
4
|
-
onChange
|
|
4
|
+
onChange?: (date?: string) => void;
|
|
5
5
|
defaultValue?: string;
|
|
6
|
-
onFocus
|
|
7
|
-
onBlur
|
|
6
|
+
onFocus?: () => void;
|
|
7
|
+
onBlur?: () => void;
|
|
8
8
|
'data-testid'?: string;
|
|
9
9
|
};
|
|
10
10
|
declare const DateInput: React.ForwardRefExoticComponent<DateInputProps & React.RefAttributes<HTMLInputElement>>;
|
package/dist/DateInput.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateInput.d.ts","sourceRoot":"","sources":["../src/DateInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAYrD,KAAK,cAAc,GAAG;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"DateInput.d.ts","sourceRoot":"","sources":["../src/DateInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAYrD,KAAK,cAAc,GAAG;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,QAAA,MAAM,SAAS,yFA0Cd,CAAC;AAaF,eAAe,SAAS,CAAC"}
|