1- import React , { useEffect , useRef , useState } from 'react'
1+ import React , { useState } from 'react'
22import { Form } from 'react-bootstrap'
33import { Typeahead } from 'react-bootstrap-typeahead'
44import { normalizeName } from '../utils'
@@ -16,6 +16,7 @@ export const PcDropdownSelect = ({
1616 hasIcon = false ,
1717 onChange,
1818 onInputChange,
19+ onClearInput,
1920 ...props
2021 } ) => {
2122 const [ isMenuOpen , setIsMenuOpen ] = useState ( false )
@@ -40,31 +41,39 @@ export const PcDropdownSelect = ({
4041 setIsMenuOpen ( false )
4142 }
4243
43- const handleChenge = ( selected ) => {
44+ const handleChange = ( selected ) => {
4445 onChange ( selected )
4546
4647 if ( selected . length !== 0 ) setIsMenuOpen ( false )
4748 }
4849
4950 const handleInputChange = ( t , e ) => {
5051 onInputChange ( t , e )
52+
5153 if ( t ) setIsMenuOpen ( true )
5254 }
5355
5456 const handleClick = ( e ) => {
5557 setIsMenuOpen ( true )
5658 }
5759
58- const DropdownToggleIcon = ( ) =>
59- < div className = "pc-typeahead-toggle position-absolute end-0 top-0 h-100"
60- onClick = { handleOpenMenu } >
61- < div className = { 'd-flex justify-content-start align-items-center h-100' } >
60+ const TransparentButton = ( { children, className, ...props } ) =>
61+ ( < button className = { `bg-transparent rounded-0 border-0 p-0 m-0 ${ className } ` } { ...props } >
62+ { children }
63+ </ button > )
64+
65+ const TypeaheadControls = ( ) =>
66+ ( < div className = "pc-typeahead-controls position-absolute end-0 top-0 h-100 d-flex flex-row" >
67+ < TransparentButton onClick = { onClearInput } className = { 'pc-typeahead-button' } >
68+ < PcIcon name = { 'cross' } alt = { 'Cross' } className = { 'pc-icon-cross' } />
69+ </ TransparentButton >
70+ < TransparentButton onClick = { handleOpenMenu } className = { 'pc-typeahead-button' } >
6271 < PcIcon
6372 name = { isMenuOpen ? 'dropdownArrowUp' : 'dropdownArrowDown' }
6473 alt = { isMenuOpen ? 'Arrow pointing up' : 'Arrow pointing down' }
6574 />
66- </ div >
67- </ div >
75+ </ TransparentButton >
76+ </ div > )
6877
6978 return (
7079 < Form . Group controlId = { id } >
@@ -76,7 +85,7 @@ export const PcDropdownSelect = ({
7685 filterBy = { handleFilterBy }
7786 allowNew
7887 newSelectionPrefix = "Add new customer: "
79- className = "pc-icon-reserve-place border border-primary rounded-1"
88+ className = "pc-icon-reserve-place border border-primary rounded-1 bg-white "
8089 style = { { height } }
8190 selected = { selectedOption ? [ selectedOption ] : [ ] }
8291 maxResults = { maxResults }
@@ -85,13 +94,13 @@ export const PcDropdownSelect = ({
8594 onMenuToggle = { ( isOpen ) => setIsMenuOpen ( isOpen ) }
8695 onFocus = { handleFocus }
8796 onBlur = { handleBlur }
88- onChange = { handleChenge }
97+ onChange = { handleChange }
8998 onInputChange = { handleInputChange }
90- inputProps = { { onClick : handleClick } }
99+ inputProps = { { onClick : handleClick } }
91100 { ...props }
92101 />
93102 < Form . Label className = "border-label fw-bold fs-11 lh-sm px-1" > { label } </ Form . Label >
94- { hasIcon && < DropdownToggleIcon /> }
103+ { hasIcon && < TypeaheadControls /> }
95104 </ div >
96105 { error && < div className = "text-danger fs-12" > { error } </ div > }
97106 </ Form . Group >
0 commit comments