jobiqo-cl
Version:
[](https://circleci.com/gh/jobiqo/jobiqo-cl)
144 lines (133 loc) • 6.04 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
var tslib_es6 = require('../../../../../../node_modules/tslib/tslib.es6.js');
var React = require('react');
var React__default = _interopDefault(React);
var styled = require('styled-components');
var styled__default = _interopDefault(styled);
var Geosuggest_esm = require('../../../../../../node_modules/react-geosuggest/module/Geosuggest.esm.js');
/**
* @file index.tsx
*
* @fileoverview Displays a google places API Autocomplete component.
*/
const GoogleAutocompleteWrapper = styled__default.div `
position: relative;
.geosuggest__input {
box-sizing: border-box;
background: ${props => props.theme.autocomplete.input.background};
font-size: ${props => props.theme.autocomplete.input.fontSize};
line-height: ${props => props.theme.autocomplete.input.lineHeight};
margin: ${props => props.theme.autocomplete.input.margin};
padding: ${props => props.theme.autocomplete.input.padding};
border-radius: ${props => props.theme.autocomplete.input.borderRadius};
border-width: ${props => props.theme.autocomplete.input.borderWidth};
border-style: ${props => props.theme.autocomplete.input.borderStyle};
border-color: ${props => props.theme.autocomplete.input.borderColor};
width: ${props => props.theme.autocomplete.input.width};
${props => props.theme.mediaQueries.medium} {
max-width: ${props => props.theme.autocomplete.input.width};
width: auto;
}
&:focus,
&:active {
outline: 0;
border-color: ${props => props.theme.colors.focusRingColor};
box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05),
0 0 4px ${props => props.theme.colors.focusRingColor};
}
}
.geosuggest__suggests {
background: ${props => props.theme.autocomplete.dropMenu.background};
max-height: ${props => props.theme.autocomplete.dropMenu.maxHeight};
max-width: ${props => props.theme.autocomplete.dropMenu.maxWidth};
border-right-width: ${props => props.theme.autocomplete.dropMenu.borderWidth};
border-bottom-width: ${props => props.theme.autocomplete.dropMenu.borderWidth};
border-left-width: ${props => props.theme.autocomplete.dropMenu.borderWidth};
border-radius: ${props => props.theme.autocomplete.dropMenu.borderRadius};
border-color: ${props => props.theme.autocomplete.dropMenu.borderColor};
box-shadow: ${props => props.theme.autocomplete.dropMenu.boxShadow};
position: absolute;
z-index: 100;
border-top-width: 0;
overflow-y: auto;
overflow-x: hidden;
outline: 0;
transition: opacity 0.1s ease;
border-style: solid;
list-style: none;
margin: 0;
padding: 0;
}
.geosuggest__suggests--hidden {
max-height: 0;
overflow: hidden;
border-width: 0;
}
.geosuggest__item {
font-size: ${props => props.theme.autocomplete.option.fontSize};
margin: ${props => props.theme.autocomplete.option.margin};
padding: ${props => props.theme.autocomplete.option.padding};
border-radius: ${props => props.theme.autocomplete.option.borderRadius};
border-width: ${props => props.theme.autocomplete.option.borderWidth};
border-style: ${props => props.theme.autocomplete.option.borderStyle};
border-color: ${props => props.theme.autocomplete.option.borderColor};
position: relative;
cursor: pointer;
display: block;
border: none;
height: auto;
border-top: none;
text-transform: none;
box-shadow: none;
white-space: normal;
word-wrap: normal;
}
.geosuggest__item:hover,
.geosuggest__item:focus {
background: ${props => props.theme.autocomplete.option.backgroundHover};
}
.geosuggest__item__matched-text {
color: ${props => props.theme.autocomplete.userValue.color};
font-weight: ${props => props.theme.autocomplete.userValue.fontWeight};
font-style: ${props => props.theme.autocomplete.userValue.fontStyle};
}
`;
const StyledFocusElementsWrapp = styled__default.div `
position: absolute;
border-top-width: 0;
border-style: solid;
width: 100%;
z-index: 90;
background: ${props => props.theme.autocomplete.dropMenu.background};
max-height: ${props => props.theme.autocomplete.dropMenu.maxHeight};
max-width: ${props => props.theme.autocomplete.dropMenu.maxWidth};
border-right-width: ${props => props.theme.autocomplete.dropMenu.borderWidth};
border-bottom-width: ${props => props.theme.autocomplete.dropMenu.borderWidth};
border-left-width: ${props => props.theme.autocomplete.dropMenu.borderWidth};
border-radius: ${props => props.theme.autocomplete.dropMenu.borderRadius};
border-color: ${props => props.theme.autocomplete.dropMenu.borderColor};
`;
const GoogleGEOAutocomplete = (_a) => {
var { size = 40, refElement, focusElements = null } = _a, props = tslib_es6.__rest(_a, ["size", "refElement", "focusElements"]);
const [showFocusElements, setShowFocusElements] = React.useState(false);
return (React__default.createElement(GoogleAutocompleteWrapper, null,
React__default.createElement(Geosuggest_esm.default, Object.assign({}, (refElement ? { ref: refElement } : null), { size: size }, props, (focusElements
? {
onFocus: e => setShowFocusElements(true),
onBlur: e => {
setTimeout(() => {
setShowFocusElements(false);
}, 50);
},
onSuggestSelect: suggest => {
props.onSuggestSelect(suggest);
setShowFocusElements(false);
}
}
: null))),
showFocusElements && (React__default.createElement(StyledFocusElementsWrapp, { className: "focus-elements" }, focusElements))));
};
exports.GoogleGEOAutocomplete = GoogleGEOAutocomplete;
exports.StyledFocusElementsWrapp = StyledFocusElementsWrapp;