Listings view

This commit is contained in:
Edin Dazdarevic
2016-11-09 15:14:16 +01:00
parent e840556fd1
commit a6fcbc578c
4 changed files with 255 additions and 88 deletions

View File

@@ -1,10 +1,24 @@
import React from 'react'; import React from 'react';
export default class Filters extends React.Component { export default class Filters extends React.Component {
onCloseClick(e) {
if (this.props.onClose) {
this.props.onClose();
}
}
render() { render() {
return ( return (
<div className="filters"> <div className="filters">
<div className="filters-close">
Uslovi Pretrage
<i onClick={this.onCloseClick.bind(this)}
className="close-icon fa fa-times"
aria-hidden="true"></i>
</div>
<div className="filter-row"> <div className="filter-row">
<div className="filter-title"> <div className="filter-title">
CIJENA CIJENA
@@ -15,34 +29,37 @@ export default class Filters extends React.Component {
</div> </div>
</div> </div>
<div className="filter-row"> <div className="filter-row filter-property-types">
<div className="filter-title"> <div className="filter-title">
TIP TIP
</div> </div>
<div className="filter-content"> <div className="filter-content">
<div className="filter-btn property-type-btn"> <div className="filter-btn property-type-btn">
Stan Stan
</div>
<div className="filter-btn property-type-btn">
Kuća
</div>
</div> </div>
<div className="filter-btn property-type-btn"> <div className="filter-content">
Kuća <div className="filter-btn property-type-btn">
Zemljište
</div>
<div className="filter-btn property-type-btn">
Poslovni prostor
</div>
</div> </div>
<div className="filter-btn property-type-btn">
Zemljište
</div>
<div className="filter-btn property-type-btn">
Poslovni prostor
</div>
</div>
</div> </div>
<div className="filter-row"> <div className="filter-row">
<div className="filter-title"> <div className="filter-title">
KVADRATA KVADRATA
</div> </div>
<div className="filter-content"> <div className="filter-content">
od <input></input> do <input></input> od <input></input>
do <input></input>
</div> </div>
</div> </div>
<div className="filter-row"> <div className="filter-row filter-property-rooms">
<div className="filter-title"> <div className="filter-title">
BROJ SOBA BROJ SOBA
</div> </div>
@@ -68,6 +85,8 @@ export default class Filters extends React.Component {
<div className="filter-btn more-filters">Više Filtera</div> <div className="filter-btn more-filters">Više Filtera</div>
</div> </div>
</div> </div>
<div className="clear-both">
</div>
<div className="filter-bottom"> <div className="filter-bottom">
</div> </div>
</div>) </div>)

View File

@@ -5,6 +5,21 @@ export default class Listings extends React.Component {
return ( return (
<div className="listings"> <div className="listings">
<div className="listings-header">
<div className="select-group">
<select name="listings-type" id="listings-type">
<option value="cijena">Cijena: od najmanje</option>
</select>
</div>
<div className="listings-count">
322 rezultata
</div>
<div className="listings-options">
<div className="lo-list"></div>
<div className="lo-grid"></div>
<div className="lo-single"></div>
</div>
</div>
</div>) </div>)
} }
} }

View File

@@ -42,10 +42,16 @@ class Main extends React.Component {
}); });
control.index = 1; control.index = 1;
map.controls[google.maps.ControlPosition.TOP_RIGHT].push(control); map.controls[google.maps.ControlPosition.TOP_RIGHT].push(control);
this.map = map;
} }
onCloseClick(e) { onCloseClick(e) {
if (this.state.mapClicked) {
setTimeout(() => {
google.maps.event.trigger(this.map, 'resize');
}, 100);
}
this.setState({ this.setState({
mapClicked: false mapClicked: false
}); });
@@ -55,8 +61,8 @@ class Main extends React.Component {
const leftStyle = {}; const leftStyle = {};
const rightStyle = {}; const rightStyle = {};
let leftClass = 'left-base'; let leftClass = 'left-base';
let rightClass ='right-base'; let rightClass = 'right-base';
if (this.state.mapClicked) { if (this.state.mapClicked) {
leftClass = 'left-hidden'; leftClass = 'left-hidden';
@@ -85,10 +91,7 @@ class Main extends React.Component {
<div id="right" style={rightStyle} className={rightClass}> <div id="right" style={rightStyle} className={rightClass}>
<div className="right-content"> <div className="right-content">
<div className="filters-close-button"> <Filters onClose={this.onCloseClick.bind(this)}/>
<button onClick={this.onCloseClick.bind(this)}>Close me!</button>
</div>
<Filters />
<Listings /> <Listings />
</div> </div>
</div> </div>

262
web/dist/main.css vendored
View File

@@ -69,11 +69,10 @@ html {
height: 100%; height: 100%;
} }
.right-content { .right-content {
padding: 10px 10px 0;
overflow-y: auto; overflow-y: auto;
height: 100%; height: 100%;
padding: 10px 10px 0;
} }
#right { #right {
@@ -123,65 +122,6 @@ html {
margin-left: 10px; margin-left: 10px;
} }
@media (max-width : 768px) {
#right {
width: 100%;
}
.filters-btn-toggle {
margin-top: 90px;
display: block;
}
.filters-close-button {
display: block;
}
.left-hidden{
display: none;
}
.right-shown {
display: block;
}
.right-base {
display: none;
}
.left-base {
display: block;
}
#header .title {
display: none;
}
.hamburger-menu {
display: inline-block;
}
.where-to {
width: 70%;
}
.where-to:focus {
width: 85%;
}
.view-types {
display: flex;
}
.filter-row {
display: block;
}
.filter-title {
margin-bottom: 10px;
}
}
.where-to { .where-to {
max-width: 352px; max-width: 352px;
height: 40px; height: 40px;
@@ -203,6 +143,7 @@ html {
width: 100%; width: 100%;
} }
.pac-container { .pac-container {
z-index: 10000051 !important; z-index: 10000051 !important;
} }
@@ -258,14 +199,10 @@ html {
letter-spacing: .2px; letter-spacing: .2px;
} }
.property-type-btn {
width: 171px;
}
.filter-btn { .filter-btn {
display: inline-block; display: inline-block;
border: 1px solid #b6d53b;; border: 1px solid #b6d53b;;
padding: 12px; padding: 6px 12px;
cursor: pointer; cursor: pointer;
margin: 0 6px 6px 0; margin: 0 6px 6px 0;
color: #2d3138; color: #2d3138;
@@ -276,6 +213,15 @@ html {
touch-action: manipulation; touch-action: manipulation;
vertical-align: middle; vertical-align: middle;
text-align: center; text-align: center;
flex-grow: 1;
text-overflow: ellipsis;
overflow: hidden;
height: 35px;
}
.property-type-btn {
width: 171px;
text-align: left;
} }
.property-rooms-btn { .property-rooms-btn {
@@ -284,6 +230,7 @@ html {
.property-rooms-studio { .property-rooms-studio {
width: 93px; width: 93px;
flex-grow: 2;
} }
.filter-row.no-border { .filter-row.no-border {
@@ -298,3 +245,186 @@ html {
.filter-btn:hover { .filter-btn:hover {
background-color: #FFFFEE; background-color: #FFFFEE;
} }
.clear-both {
clear: both;
}
.filter-property-rooms .filter-content,
.filter-property-types .filter-content {
display: flex;
}
.filter-property-types .filter-content {
flex-wrap: wrap;
width: 50%;
}
.close-icon {
position: absolute;
right: 0;
cursor: pointer;
color: #c1c1c1;
}
.filters-close {
position: relative;
text-align: center;
padding: 5px;
font-size: 18px;
font-weight: 500;
border-bottom: 1px solid #e6e6e6;
display: none;
}
.listings-header {
padding: 10px 0;
position: relative;
}
#listings-type {
padding: 5px 20px 6px 10px;
border: 1px solid #d8d8d8;
-webkit-appearance: none;
background: #fff;
height: 32px;
padding: 5px 20px 6px 10px;
color: #2d3138;
font-size: 13px;
letter-spacing: .81px;
border-radius: 3px;
width: 101%;
}
.select-group {
position: relative;
display: inline-flex;
align-items: center;
}
.select-group:after {
font-family: FontAwesome;
content: '\F0D7';
position: absolute;
right: 6px;
}
.listings-count {
display: inline-block;
width: 274px;
color: #878698;
font-size: 16px;
text-align: center;
letter-spacing: .5px;
vertical-align: middle;
}
.listings-options {
position: absolute;
right: 0;
top: 0;
right: 0;
display: flex;
height: 100%;
vertical-align: middle;
align-items: center;
}
@media (max-width : 768px) {
#right {
width: 100%;
}
.filters-btn-toggle {
margin-top: 90px;
display: block;
}
.filters-close-button {
display: block;
}
.left-hidden {
position: absolute;
left: -100%;
}
.right-shown {
display: block;
}
.right-base {
display: none;
}
.left-base {
display: block;
}
#header .title {
display: none;
}
.hamburger-menu {
display: inline-block;
}
.where-to {
max-width: none;
margin-left: 10px;
font-size: 14px;
height: 32px;
padding-left: 35px;
}
.where-to:focus {
/*width: 85%;*/
}
.view-types {
display: flex;
}
.filter-row {
display: block;
padding: 11px 0;
border: 0;
}
.filter-title {
width: 100%;
padding-bottom: 15px;
}
.property-type-btn {
width: 33.3%;
}
.property-rooms-btn {
width: 15%;
}
.property-rooms-studio-btn {
width: 40%;
}
.filters {
border: none;
padding: 0 15px;
}
.filters-close {
display: block;
padding: 10px 0;
}
.right-content {
padding: 0;
}
.filter-property-types .filter-content {
width: 100%;
}
}