decap-cms-core
Version:
Decap CMS core application, see decap-cms package for the main distribution.
63 lines (54 loc) • 1.4 kB
JavaScript
import PropTypes from 'prop-types';
import styled from '@emotion/styled';
import { Icon, lengths, colors, zIndex } from 'decap-cms-ui-default';
const SearchContainer = styled.div`
height: 37px;
display: flex;
align-items: center;
position: relative;
flex: 1 1 150px;
max-width: 460px;
`;
const SearchInput = styled.input`
background-color: #eff0f4;
border-radius: ${lengths.borderRadius};
font-size: 14px;
padding: 10px 6px 10px 32px;
width: 100%;
position: relative;
z-index: ${zIndex.zIndex1};
&:focus {
outline: none;
box-shadow: inset 0 0 0 2px ${colors.active};
}
`;
const SearchIcon = styled(Icon)`
position: absolute;
top: 50%;
left: 6px;
z-index: ${zIndex.zIndex2};
transform: translate(0, -50%);
pointer-events: none;
`;
function MediaLibrarySearch({ value, onChange, onKeyDown, placeholder, disabled }) {
return (
<SearchContainer>
<SearchIcon type="search" size="small" />
<SearchInput
value={value}
onChange={onChange}
onKeyDown={onKeyDown}
placeholder={placeholder}
disabled={disabled}
/>
</SearchContainer>
);
}
MediaLibrarySearch.propTypes = {
value: PropTypes.string,
onChange: PropTypes.func.isRequired,
onKeyDown: PropTypes.func.isRequired,
placeholder: PropTypes.string.isRequired,
disabled: PropTypes.bool,
};
export default MediaLibrarySearch;