{"version":3,"file":"Autocomplete-DHGzWX72.js","sources":["../../Client/legacy/Components/FormGroups/Autocomplete.tsx"],"sourcesContent":["import * as HOApi from '@api/HOApi';\r\nimport { Autocomplete } from '@legacy/Components/AutoComplete';\r\nimport { TooltipPlacement } from '@legacy/Components/Tooltip';\r\nimport { InlineError } from '@legacy/FormFields';\r\nimport * as Models from '@shared/Models';\r\nimport Portal from '@webkit/components/portal';\r\nimport { Value } from '@webkit/index';\r\nimport * as React from 'react';\r\nimport { ReactNode } from 'react';\r\n\r\nexport interface IAutocompleteFormGroupProps extends Models.IAutocompleteProps {\r\n    /** The value containing input properties and validation state. */\r\n    value: Value<string>;\r\n\r\n    /** Indicates whether the autocomplete selector should be scrollable. Defaults to true. */\r\n    scrollable?: boolean;\r\n}\r\n\r\nexport class AutocompleteFormGroup<TModel> extends React.Component<\r\n    IAutocompleteFormGroupProps & Models.IAutocompleteMethodProps<TModel>\r\n> {\r\n    autocomplete: Autocomplete<TModel>;\r\n\r\n    render() {\r\n        const p = this.props;\r\n        return (\r\n            <div>\r\n                <Autocomplete<TModel>\r\n                    {...p}\r\n                    inputClassName={`${p.inputClassName} ${p.value.error ? 'form-group-input-error-cp' : ''}`}\r\n                    ref={c => {\r\n                        this.autocomplete = c as Autocomplete<TModel>;\r\n                    }}\r\n                    defaultValue={p.value.content}\r\n                    onChange={value => p.onChange && p.onChange(value)}\r\n                    customSelector={(\r\n                        visible: boolean,\r\n                        models: TModel[],\r\n                        left: number,\r\n                        top: number,\r\n                        width: number,\r\n                        onSelect: (selected: TModel) => void,\r\n                        onMouseEnter: (index: number) => void,\r\n                        selectedIndex: number\r\n                    ) => {\r\n                        return (\r\n                            <Portal className='autocomplete-form-group-selector-cp'>\r\n                                <div\r\n                                    className={`form-group-selector-cp ${\r\n                                        visible ? 'form-group-selector-shown-cp' : ''\r\n                                    } ${p.scrollable === false ? '' : 'form-group-selector-scrollable-cp'}`}\r\n                                    style={{ width: `${width}px`, left: `${left}px`, top: `${top}px` }}\r\n                                >\r\n                                    {models.map((model, i) => (\r\n                                        <div\r\n                                            key={i}\r\n                                            className={`form-group-selector-item-cp 1${\r\n                                                selectedIndex === i ? 'form-group-selector-item-selected-cp' : ''\r\n                                            }`}\r\n                                            onClick={onSelect.bind(this, model)}\r\n                                            onMouseEnter={() => onMouseEnter(i)}\r\n                                        >\r\n                                            {p.display ? p.display(model) : (model as ReactNode)}\r\n                                        </div>\r\n                                    ))}\r\n                                </div>\r\n                            </Portal>\r\n                        );\r\n                    }}\r\n                />\r\n\r\n                <InlineError error={p.value.error} placement={TooltipPlacement.BottomLeft} />\r\n            </div>\r\n        );\r\n    }\r\n\r\n    focus() {\r\n        this.autocomplete.focus();\r\n    }\r\n\r\n    clear() {\r\n        this.autocomplete.clear();\r\n    }\r\n}\r\n\r\nexport class AddressAutocompleteFormGroup extends React.Component<IAutocompleteFormGroupProps, {}> {\r\n    render() {\r\n        const p = this.props;\r\n        return (\r\n            <AutocompleteFormGroup\r\n                {...p}\r\n                className={`form-group-cp ${p.className || ''} ${p.value.valid ? '' : 'form-group-error-cp'}`}\r\n                inputClassName={`form-group-input-cp ${p.inputClassName || ''}`}\r\n                labelClassName={`form-group-label-cp ${p.labelClassName || ''}`}\r\n                selectorClassName={`form-group-selector-cp ${p.selectorClassName || ''}`}\r\n                get={(value: string, max: number) => HOApi.getProperties(value, max)}\r\n                display={(record: Models.PropertyData) => record.FullAddress}\r\n                map={(record: Models.PropertyData) => record.FullAddress}\r\n            />\r\n        );\r\n    }\r\n}\r\n"],"names":["AutocompleteFormGroup","React.Component","__publicField","p","jsx","Autocomplete","c","value","visible","models","left","top","width","onSelect","onMouseEnter","selectedIndex","Portal","model","i","InlineError","TooltipPlacement","AddressAutocompleteFormGroup","max","HOApi.getProperties","record"],"mappings":"waAkBa,MAAAA,UAAsCC,EAAAA,SAEjD,CAFW,kCAGTC,EAAA,qBAEA,QAAS,CACL,MAAMC,EAAI,KAAK,MACf,cACK,MACG,CAAA,SAAA,CAAAC,EAAA,IAACC,EAAA,CACI,GAAGF,EACJ,eAAgB,GAAGA,EAAE,cAAc,IAAIA,EAAE,MAAM,MAAQ,4BAA8B,EAAE,GACvF,IAAUG,GAAA,CACN,KAAK,aAAeA,CACxB,EACA,aAAcH,EAAE,MAAM,QACtB,SAAmBI,GAAAJ,EAAE,UAAYA,EAAE,SAASI,CAAK,EACjD,eAAgB,CACZC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,IAGIX,EAAAA,IAACY,EAAO,CAAA,UAAU,sCACd,SAAAZ,EAAA,IAAC,MAAA,CACG,UAAW,0BACPI,EAAU,+BAAiC,EAC/C,IAAIL,EAAE,aAAe,GAAQ,GAAK,mCAAmC,GACrE,MAAO,CAAE,MAAO,GAAGS,CAAK,KAAM,KAAM,GAAGF,CAAI,KAAM,IAAK,GAAGC,CAAG,IAAK,EAEhE,SAAOF,EAAA,IAAI,CAACQ,EAAOC,IAChBd,EAAA,IAAC,MAAA,CAEG,UAAW,gCACPW,IAAkBG,EAAI,uCAAyC,EACnE,GACA,QAASL,EAAS,KAAK,KAAMI,CAAK,EAClC,aAAc,IAAMH,EAAaI,CAAC,EAEjC,SAAEf,EAAA,QAAUA,EAAE,QAAQc,CAAK,EAAKA,CAAA,EAP5BC,CASZ,CAAA,CAAA,CAAA,EAET,CAER,CACJ,EAEAd,MAACe,GAAY,MAAOhB,EAAE,MAAM,MAAO,UAAWiB,EAAiB,UAAY,CAAA,CAAA,EAC/E,CAAA,CAIR,OAAQ,CACJ,KAAK,aAAa,MAAM,CAAA,CAG5B,OAAQ,CACJ,KAAK,aAAa,MAAM,CAAA,CAEhC,CAEa,MAAAC,UAAqCpB,EAAAA,SAAiD,CAC/F,QAAS,CACL,MAAME,EAAI,KAAK,MAEX,OAAAC,EAAA,IAACJ,EAAA,CACI,GAAGG,EACJ,UAAW,iBAAiBA,EAAE,WAAa,EAAE,IAAIA,EAAE,MAAM,MAAQ,GAAK,qBAAqB,GAC3F,eAAgB,uBAAuBA,EAAE,gBAAkB,EAAE,GAC7D,eAAgB,uBAAuBA,EAAE,gBAAkB,EAAE,GAC7D,kBAAmB,0BAA0BA,EAAE,mBAAqB,EAAE,GACtE,IAAK,CAACI,EAAee,IAAgBC,EAAoBhB,EAAOe,CAAG,EACnE,QAAUE,GAAgCA,EAAO,YACjD,IAAMA,GAAgCA,EAAO,WAAA,CACjD,CAAA,CAGZ"}