Index¶
- Name
- Realtyspace - Responsive Real Estate Template
- Created by
- codefactory47
- Support
- support@codefactory47.com
Thank you for purchasing Realtyspace - Responsive Real Estate Template. If you have questions that are beyound the scope of this help file, please feel free to email us at support@codefactory47.com
Table of contents¶
Getting started¶
About¶
Realtyspace is a fully functional HTML5 template designed and developed for Real Estate agents and agencies.
It is 100% responsive template based on Twitter Bootstrap 3.0 framework that works well on all screen sizes from the bigger ones to smartphones.
The theme is based on Bootstrap 3 framework.
Structure¶
template/
- is recommended quick & easy way to start using Realtyspace theme, no setup needed, more details here.template-src/
- contains source Jade templates, SASS stylesheets and JS modules from which you can build the template yourself. If these abbreviations are unknown to you, just ignore this folder and use this instead. More details here.docs/
- Documentation
Compiled version (recommended)¶
The compiled version is located in the template/
directory and is the one that you’re most probably going to use.
No setup whatsoever is required.
Structure¶
template/assets/js/
- JS files with libraries, core functionality and examples (see html comments for details).template/assets/fonts/
- Font iconstemplate/assets/img/
- Image assets that are used in the themetemplate/assets/media-demo/
- Demonstration images licensed under Creative Commons, please replace them with your own assets.- template/*.html - HTML templates
Templates¶
- index.html
- Main homepage version with the most common elements
- index_not_available.html
- Helper elements to use when there are no items available
- index_vmap_light.html
- A map with white vertical search bar
- index_vmap_dark.html
- A map with dark vertical search bar
- index_hmap_light.html
- A map with white horizontal collapsible search bar
- feature_map_leaflet.html
- Example of Openstreet Map usage on homepage
- feature_vmap_fullscreen.html
- A fullscreen Google Map at the top of the page
- feature_loaders.html
- Example usage of loaders useful for long-running requests, AJAX, etc
- feature_boxed.html
- Boxed layout
- feature_header_colorize.html
- Header variation (colored)
- feature_header_large.html
- Header variation (large)
- feature_grid_large.html
- Example of using a large grid for displaying properties
- feature_grid_small.html
- Example of using a small grid for displaying properties
- feature_typography.html
- Typography examples
- feature_ui.html
- Demonstration of custom UI elements
- feature_left_sidebar.html
- Left sidebar placement
- agents_listing_grid.html
- Agent grid display
- agents_listing.html
- Agent list display
- properties_listing_grid.html
- Property search results - grid display
- properties_listing.html
- Property search results - list display
- property_details.html
- Property details page
- property_details_agent.html
- Property details page variation, with the agent in the sidebar
- my_listings.html
- User-submitted properties and their status
- my_listings_add_edit.html
- A form for submitting new property
- agent_listing.html
- Agent properties page with agent details and contact form
- agent_listing_sidebar.html
- Agent properties page with agent details and contact form in the sidebar
- blog.html
- Blog page
- blog_details.html
- Blog details page
- blog_empty.html
- Blog template for empty post search results
- contacts.html
- Contact page
- faq.html
- F.A.Q. page
- reviews.html
- Dedicated page for dipslaying user testimanonial
- gallery.html
- Property gallery with lightbox support
- pricing.html
- A few styles of pricing block
- page.html
- Generic content page
- user_login.html
- Standalone login page
- user_register.html
- Standalone register page
- user_restore_pass.html
- Standalone reset password page
- bootstrap.html
- Examples of using standart Bootstrap 3 elements
- error_403.html
- 403 Error page
- error_404.html
- 404 Error page
- error_500.html
- 500 Error page
- email.html
- Well-tested HTML email template that you can use to send out notifications to users
Source version¶
The source version is located in the template-src/
directory and is intended
for people that are proficient with tools like SASS, Jade, NPM, etc.
Structure¶
template-src/gulpfile.js/
- Build system, that compiles all jade, sass, js modules into ready to use, standalone html, css and js filestemplate-src/src/jade/
- Template files from which final HTML templates are builttemplate-src/src/assets/js/
- JS modules from which final js files injs/
are builttemplate-src/src/assets/sass/
- SASS files from which final css files incss/
are builttemplate-src/src/assets/img/
- Images that are used in the themetemplate-src/src/assets/media-demo/
- Demonstration images licensed under Creative Commons, please replace them with your own assets.template-src/bower.js
- Bower package manager configurationtemplate-src/package.json
- NPM package manager configuration
Setup¶
Requirements for running the builds:
- Ruby (https://www.ruby-lang.org/)
- SASS gem (http://sass-lang.com/)
- Node.js (https://nodejs.org/)
- NPM (https://www.npmjs.com/)
- Git (https://git-scm.com/)
Please follow the links above in order to get installation instructions for each application.
Once you have installed the required applications, open a console and navigate to your/path/to/template-src
Run the following command to install the gulp build system:
npm install -g gulp
Install packages listed in template-src/packages.json
(npm will load automatically this file
and read its list of required modules):
npm install
Available commands¶
gulp build:dev - developer mode¶
To run the build in developer mode, navigate to your/path/to/template-src
and run:
gulp build:dev
and access the dev-server on http://localhost:4000
When to use¶
During development in order to preview the changes made in src
directory.
Features and differences:¶
- The changes in sass files, jade files, etc. are automatically detected and the page is refreshed.
- Sourcemaps are attached to js and css in order to simplify debugging.
- The build process is tuned to skip some time-consuming tasks (like building stylesheets for all color schemes).
gulp build:release - release mode¶
To run the build in release mode, run:
gulp build:release
After executing this command, the build will be located in template-build/
directory.
When to use¶
After you’ve finished editing the source files and you’d like to receive the compiled, compressed and minified
version of the theme. The resulting files are similar to the ones that you’ve got in template/
directory
and are located in template-build/
folder.
Features and differences:¶
- The css and js files are compressed and can be found next to non-compressed files in
js/
andcss/
directories. - Unlike running the build in dev-mode, the non-default color schemes are also generated.
CSS¶
About¶
All css files that you will need are located in template/css
folder
- vendor.css
- Styles from Bootstrap and other plugins
- font-awesome.css
- Styles for Font-Awesome
- theme-default.css
- Styles for Realtyspace default color theme
- theme-*.css
- Styles for other Realtyspace color themes
- custom.css
- Empty file, you can add here your custom styles
Tip
We are using BEM methodology for theme development. It promotes a specific naming convention, style reuse and clean, bloat-free code. If you’d like to follow this methodology, please consult this list of tutorials.
Normally you should connect the following files in your html template:
<link href="http://fonts.googleapis.com/css?family=Source+Sans+Pro:200,400,600,700,400italic,700italic&subset=latin,latin-ext" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="css/vendor.css">
<link rel="stylesheet" href="css/font-awesome.css">
<link rel="stylesheet" href="css/theme-default.css">
<link rel="stylesheet" href="css/style.css">
Note
The theme css code is split into vendor.css
and theme-default.css
for compatility reasons,
because IE9 has
4095 rule limit
per one stylesheet.
How do I...¶
...change color scheme?¶
Just replace the stylesheet
<link rel="stylesheet" href="css/theme-default.css" id="link-styles">
with
<link rel="stylesheet" href="css/theme-pink_yellow.css" id="link-styles">
to use pink_yellow color scheme.
JavaScript¶
About¶
All js files that you will need are located in template/js
folder
- vendor.js
- contains vendor libraries (Bootstrap3, Jquery, Chosen, etc) already compiled into a single file, with versions that are verified to work with our theme. Normally, you should not edit that file.
- app.js
- JavaScript library code that Realtyspace theme relies on, in order to function properly. Normally, you should not edit this file or add your own code there. This file exposes a very simple API that you can use in your own code.
- demodata.js
- This file is used for demonstration purposes and contains example property items, that are mostly used to render markers on the map. You can safely delete this file, after you’ve adapted the demo.js code to use your own data.
- demo.js
- the main file, that you should modify (or create another one). It contains lots of examples of plugin usage, with detailed comments about specific sections of the code. This is the file that runs most of the code defined in vendor.js and app.js, therefore you can easily make changes in this file, which will affect the way the theme works.
Here is the correct order to connect these JavaScript in your template:
<script type="text/javascript" src="https://maps.google.com/maps/api/js?libraries=places&sensor=false"></script>
<script type="text/javascript" src="js/vendor.js"></script>
<script type="text/javascript" src="js/demodata.js"></script>
<script type="text/javascript" src="js/app.js"></script>
<script type="text/javascript" src="js/demo.js"></script>
F.A.Q.¶
...Can i use create my own file intead of demo.js?¶
Totally! We’ve created this file so you can look at examples of module and plugin initialization. But if you know what you’re doing, you can remove the line
<script type="text/javascript" src="js/demo.js"></script>
from the template and connect instead your own file with the code that you need.
HTML structure¶
Realtyspace is a responsive theme with 2 column layout (1 column is also supported). This is a basic structure:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=9,chrome=1"><![endif]-->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0">
<!-- Loading Source Sans Pro font that is used in this theme-->
<link href="http://fonts.googleapis.com/css?family=Source+Sans+Pro:200,400,600,700,400italic,700italic&subset=latin,latin-ext" rel="stylesheet" type="text/css">
<!-- Boostrap and other lib styles-->
<link rel="stylesheet" href="assets/css/vendor.css">
<!-- Font-awesome lib-->
<link rel="stylesheet" href="assets/css/font-awesome.css">
<!-- Theme styles, please replace "default" with other color scheme from the list available in template/css-->
<link rel="stylesheet" href="assets/css/theme-default.css" id="link-styles">
<!-- Your styles should go in this file-->
<link rel="stylesheet" href="assets/css/custom.css">
<link rel="icon" href="assets/img/favicon.ico" type="image/x-icon">
</head>
<body>
<div class="box">
<!-- BEGIN HEADER-->
<header class="header"></header>
<!-- END HEADER-->
<!-- BEGIN NAVBAR-->
<div id="header-nav-offset"></div>
<nav id="header-nav" class="navbar-main"></nav>
<!-- END NAVBAR-->
<!-- YOUR CONTENT -->
<!-- BEGIN FOOTER-->
<footer class="footer"></footer>
<!-- END FOOTER-->
</div>
<!-- BEGIN SCRIPTS and INCLUDES-->
<script type="text/javascript" src="https://maps.google.com/maps/api/js?libraries=places&sensor=false"></script>
<!--
Contains vendor libraries (Bootstrap3, Jquery, Chosen, etc) already compiled into a single file, with
versions that are verified to work with our theme. Normally, you should not edit that file.
-->
<script type="text/javascript" src="js/vendor.js"></script>
<!--
This file is used for demonstration purposes and contains example property items, that are mostly used to
render markers on the map. You can safely delete this file, after you've adapted the demo.js code
to use your own data.
-->
<script type="text/javascript" src="js/demodata.js"></script>
<!--
The library code that Realtyspace theme relies on, in order to function properly.
Normally, you should not edit this file or add your own code there.
-->
<script type="text/javascript" src="js/app.js"></script>
<!--
the main file, that you should modify. It contains lots of examples of
plugin usage, with detailed comments about specific sections of the code.
-->
<script type="text/javascript" src="js/demo.js"></script>
<!-- END SCRIPTS and INCLUDES-->
</body>
</html>
UI Elements¶
You can see working examples on this page.
Address¶
Source¶
Sass styles are in folder template_src/src/assets/sass/widgets/_address.sass
Jade source are in template_src/src/jade/partials/widgets/address.jade
Example¶
<!-- modificator 'address--footer' because this is a part of footer -->
<section class="address address--footer">
<div class="address__header">
<h3 class="address__title">Contact</h3>
<h4 class="address__headline">Our office</h4>
</div>
<address class="address__main">
<!-- put here any contact details, use tags 'span' or 'a', to have better styles -->
<span>1950 New York, NY, Ave NW, California, DC 3000600, USA</span>
<span>08 - 17 mon-fr</span>
<a href="tel:+442240052225">+1 202 555 0135</a>
<a href="tel:+442240052225">+1 202 555 0135</a>
<span>Fax: +1 202 555 0135</span>
<a href="mailto:hello@example.com">hello@example.com</a>
</address>
</section>
Article¶
Source¶
Sass styles are in folder template_src/src/assets/sass/widgets/_article.sass
Jade sources are in template_src/src/jade/partials/widgets/article.jade
Js sources are in template_src/src/assets/js/module/ui/show-hide-btn.js
// widget show on mobile
var $widgetShow = $('.js-widget-show');
$widgetShow.on('click', function () {
$(this).closest('.js-widget-block').addClass('opened');
});
Note
This is a common behavaior for many blocks, be careful when change it.
Variations¶
There are 6 variations of the article block
article--index
wide grid articlesarticle--sidebar
article item in sidebararticle--list
list of articlesarticle--details
articles detailsarticle--empty
when no articlearticle--footer
in footer
Example¶
<!-- BEGIN SECTION ARTICLE -->
<!-- class 'js-widget-block' and button 'js-widget-show' works together for showing this block on mobile devices -->
<section class="article js-widget-block article--index">
<!-- Button is required on mobiles devices -->
<button type="button" class="widget__show js-widget-show">Show articles</button>
<div class="container">
<div class="article__header">
<h3 class="article__title">News/Blog</h3>
<h4 class="article__headline">Insights, tips how-to guides on selling property and preparing your home or investment property for sale and working to maximise your sale price.</h4>
</div>
<!-- end of block .article__header-->
<div class="article__list">
<div class="article__item">
<a href="blog_details.html" class="article__photo">
<img src="assets/media-demo/news/news-1.jpg" alt="News title" class="article__photo-img">
<time datetime="2005-09-01" class="article__time">SEP<strong>01</strong></time>
</a>
<div class="article__details">
<a href="blog_details.html" class="article__item-title">You've been approved for a rental home. Now what?</a>
<div class="article__intro">
<p>If you bought a home in these four areas during the downturn, you�ll make a tidy profit if you want to sell today.</p>
</div>
<a href="blog_details.html" class="article__more">Read more</a>
</div>
</div>
<!-- end of block .article__item-->
<!-- no limit to news items -->
<...>
<!-- div 'loading' is usable when you mask block, and load through ajax more items -->
<div class="loading"></div>
</div>
<!-- end of block .article__list-->
<a href="blog.html" class="article__btn-more">More articles...</a>
</div>
</section>
<!-- END SECTION ARTICLE -->
Auth¶
Source¶
Sass source are in template_src/src/assets/sass/block/_auth.sass
Jade source are in folder template_src/jade/partials/chunks/auth
JS source are in template_src/src/assets/js/module/ui/auth-btn.js
Variations¶
auth--login
- register form<div class="dropdown-menu auth auth--login"> <!-- BEGIN AUTH LOGIN--> <h5 class="auth__title">Login in your account</h5> <form action="#" class="auth__form js-login-form"> <div class="auth__row form-group"> <label for="login-username" class="auth__label control-label">Username</label> <input type="text" name="username" id="login-username" required data-parsley-trigger="keyup" data-parsley-minlength="6" data-parsley-validation-threshold="5" data-parsley-minlength-message="Login should be at least 6 chars" class="auth__in auth__in--text form-control"> </div> <div class="auth__row auth__row--password form-group"> <label for="login-password" class="auth__label control-label">Password</label> <input type="password" name="password" id="login-password" required class="auth__in auth__in--text form-control"> </div> <div class="auth__row"> <button type="button" class="auth__forgot js-user-restore">Forgot password ?</button> <button type="submit" class="auth__in auth__in--submit">Sign in</button><span class="auth__remember"> <input id="remember_in" type="checkbox" class="in-checkbox"> <label for="remember_in" class="in-label">Remember me</label></span> </div> <div class="auth__row"><span class="auth__links">Not a user yet? <button type="button" class="js-user-register">Get an account</button></span></div> </form> <!-- end of block .auth__form--> <!-- END AUTH LOGIN--> </div>
auth--register
- register form<div class="dropdown-menu auth auth--register"> <!-- BEGIN AUTH REGISTER--> <h5 class="auth__title">Sign up a new account</h5> <form action="#" class="auth__form js-register-form"> <div class="auth__coll form-group"> <label for="register-name" class="auth__label control-label">First name</label> <input type="text" name="username" id="register-name" required class="auth__in auth__in--text form-control"> </div> <div class="auth__coll auth__coll--right form-group"> <label for="register-lastname" class="auth__label control-label">Last name</label> <input type="text" name="name" id="register-lastname" required class="auth__in auth__in--text form-control"> </div> <div class="auth__coll auth__coll--email form-group"> <label for="register-email" class="auth__label control-label">E-mail</label> <input type="email" name="email" id="register-email" required class="auth__in auth__in--text form-control"> </div> <div class="auth__coll auth__coll--right form-group"> <label for="register-password" class="auth__label control-label">Password</label> <input type="password" name="password" id="register-password" required class="auth__in auth__in--text form-control"> </div> <div class="auth__row"><span class="auth__links">Back to <button type="button" class="js-user-login">Log In</button></span> <button type="submit" class="auth__in auth__in--submit">Sign up</button> </div> </form> <!-- end of block .auth__form--> <!-- END AUTH REGISTER-->
auth--restore
- register form<div class="dropdown-menu auth auth--restore"> <!-- BEGIN AUTH RESTORE--> <h5 class="auth__title">Reset password</h5> <form action="#" class="auth__form js-restore-form"> <div class="auth__row form-group"> <label for="restore-email" class="auth__label control-label">Enter your User Name or Email</label> <input type="email" name="email" id="restore-email" required class="auth__in auth__in--text form-control"> </div> <div class="auth__row"> <button type="submit" class="auth__in auth__in--submit">Reset password</button> </div> <div class="auth__row"><span class="auth__links">Back to <button type="button" class="js-user-login">Log In</button>or <button type="button" class="js-user-register">Registration</button></span> <!-- end of block .auth__links--> </div> </form> <!-- end of block .auth__form--> <!-- END AUTH RESTORE--> </div>
auth--logged-in
- register form<div class="dropdown-menu auth auth--logged-in js-user-logged-in"> <!-- BEGIN WORKER PROFILE--> <div class="worker worker--navbar"> <div class="worker__item"> <h3 class="worker__name">Jenniffer Hartnet</h3> <div class="worker__photo"> <div class="worker__avatar"> <svg> <use xlink:href="#icon-avatar"></use> </svg> </div> <button class="worker__avatar-upload">Upload your profile picture</button> </div> <nav class="worker__nav"> <ul> <li><a href="my_listings.html">My listing</a></li> <li><a href="my_profile.html">My Profile</a></li> <li><a href="my_profile.html">Settings</a></li> </ul> </nav> <!-- end of block .worker__nav--> </div> <!-- end of block .worker__item--> </div> <!-- END WORKER PROFILE--> </div>
auth--inline
- inline form, remove classdropdown-menu
, add classauth--inline
<div class="auth auth--login auth--inline">
Note
Pay attention to input’s attributes data-parsley-*
this are rules for validation, see documentation Parsleyjs
Breadcrumbs¶

Source¶
Sass source are in template_src/src/assets/sass/block/_breadcrumbs.sass
Variations¶
Default html breadcrumbs
<nav class="breadcrumbs"> <ul> <li class="breadcrumbs__item"><a href="" class="breadcrumbs__link">Home</a></li> <li class="breadcrumbs__item"><a href="" class="breadcrumbs__link">Listing estate</a></li> <li class="breadcrumbs__item"><a href="" class="breadcrumbs__link">1600 Pennsylvania Ave NW</a></li> </ul> </nav>
WP like
<nav class="breadcrumbs"> <ul class="breadcrumbs__list"> <li class="home"> <span typeof="v:Breadcrumb"> <a rel="v:url" property="v:title" title="Go to Realtyspace." href="http://realtyspace.dev" class="home">Realtyspace</a> </span> </li> <li> <span typeof="v:Breadcrumb"> <a rel="v:url" property="v:title" title="Go to Blog." href="http://realtyspace.dev/blog/">Blog</a> </span> </li> <li class="current_item"> <span typeof="v:Breadcrumb"> <span property="v:title">FAQ</span> </span> </li> </ul> </nav>
Checkboxes and radioboxes¶
Source¶
Sass sources are in template_src/src/assets/sass/block/_checkbox.sass
Options¶
<!-- Checkbox -->
<!-- add class 'in-checkbox' for checkbox -->
<input id="option_1" type="checkbox" class="in-checkbox">
<!-- add class 'in-label' for label -->
<label for="option_1" class="in-label">Wireless Internet</label>
<!-- radiobox -->
<!-- add class 'in-radio' for radio -->
<input id="option_2" type="checkbox" class="in-radio">
<!-- add class 'in-label' for label -->
<label for="option_2" class="in-label">Wheelchair Accessible</label>
Note
Important to connect label and input with “for” and “id” attributes.
Faq¶
Source¶
Sass source are in template_src/src/assets/sass/layout/_faq.sass
Jade source are in folder template_src/jade/faq.jade
Example¶
<div id="accordion" role="tablist" aria-multiselectable="true" class="faq">
<dl class="faq__item">
<dt id="heading-0" role="tab" class="faq__title">
<!-- heading questions -->
<a data-toggle="collapse" data-parent="#accordion" href="#collapse-0" aria-expanded="true" aria-controls="collapse-0" class="faq__expander collapsed">How do we determine how much we can afford to pay for a home?</a>
</dt>
<dd id="collapse-0" role="tabpanel" aria-labelledby="heading-0" class="faq__content collapse">
<div class="faq__body">
<!-- issue response -->
<p>In order to determine how much you can afford, we need to understand debt to income ratios. First, we must determine what your gross annual income is and divide that income by 12. (12 months). Second, we must determine your long term debt. For example: home mortgage (principal & interest), taxes & insurance (T & I), school loan, car loan, credit card debt, etc. and calculate the monthly payments. Third, the debt to income ratio is established by dividing the monthly debt by the monthly income. The debt to income ratio should, in most cases not exceed 35%. Forth, if the debt to income ratio is 35% or less and your credit rating is decent, there is a good chance you will be able to get approved for a mortgage loan.</p>
</div>
<div class="faq__footer">
<!-- close button -->
<a data-toggle="collapse" data-parent="#accordion" href="#collapse-0" aria-controls="collapse-0" class="faq__close">Close</a>
</div>
</dd>
</dl>
<!-- end of block .faq__item-->
<...>
</div>
<!-- END FAQ-->
Note
Attributes id="heading-0"
where 0
are in all controls, must be correlated, for this you can just increment it.
Form¶
Source¶
Sass styles are in folder template_src/src/assets/sass/widgets/_form.sass
.
Jade source are in template_src/src/jade/partials/chunks/form.jade
.
Variations¶
<div class="form form--properties">
- form on property details page<div class="form form--comment">
- comment form<div class="form form--contacts">
- contacts form<div class="form form--workers">
- worker’s form<div class="form form--sidebar-workers">
- sidebar worker’s form<div class="form form--footer">
- form in footer
Example¶
You can use rangeSlider insteand of simple selects,
<div class="form form--properties">
<form action="#" method="POST" class="form__wrap js-contact-form">
<!-- wrap each inputs group in row -->
<div class="form__row form-group">
<!-- include standrart bootstraps classes 'control-label', 'form-control', 'form-group', very usable for some plugins -->
<label for="in-form-name" class="form__label control-label">Your Name</label>
<input id="in-form-name" type="text" name="name" required class="form__in form__in--text form-control">
</div>
<!-- modificators 'form__row--tel' and 'form__row--email' are usable when it should be aligned in columns -->
<div class="form__row form__row--tel form-group">
<label for="in-form-phone" class="form__label control-label">Telephone</label>
<input id="in-form-phone" type="text" name="phone" class="form__in form__in--text form-control">
</div>
<div class="form__row form__row--email form-group">
<label for="in-form-email" class="form__label control-label">E-mail</label>
<input id="in-form-email" type="email" name="email" required data-parsley-trigger="change" class="form__in form__in--text form-control">
</div>
<div class="form__row form-group">
<label for="in-form-message" class="form__label control-label">Message</label>
<textarea id="in-form-message" name="message" required data-parsley-trigger="keyup" data-parsley-minlength="20" data-parsley-validation-threshold="10" data-parsley-minlength-message="You need to enter at least a 20 caracters long comment.." class="form__in form__in--textarea form-control"></textarea>
</div>
<div class="form__row">
<button type="submit" class="form__submit">Submit</button>
</div>
</form>
</div>
<!-- end of block form-->
Note
Pay attention to input’s attributes data-parsley-*
this are rules for validation, see documentation Parsleyjs
Map¶
Source¶
Sass styles are in folder template_src/src/assets/sass/widgets/_form.sass
.
Js source are in template_src/src/js/module/gmap
.
Variations¶
<div class="map map--properties">
- map on property details page<div class="map map--index">
- map on page<div class="map map--contacts">
- map on contacts<div class="map map--submit">
- map on submit page
Options¶
Initialize map on index page¶
/***************************************************************
* Initialize map on index page
==============================================================*/
function initIndexMap() {
// Array with sample properties, used to display markers on the map
var properties = window.demodata;
// Default map zoom
var zoom = 10;
// We're using here sample coordinates, please replace them with real ones
var coordinates = new google.maps.LatLng(33.74229160384012, -117.86845207214355);
// jQuery object with map container
var $mapCanvas = $('.js-map-index-canvas');
// Temporary array for storing markers for clustering
var markers = [];
/**
* This is a wrapper around original Google Maps object,
* which brings some user experience improvements for mobile users,
* So that, when user loads the map on small-screen device, it
* is replaced by a button, clicking on it will open full screen
* popup with the map in it.
*
* If you don't want/need that, you can call `google.maps.Map` contructor directly
*
* See https://developers.google.com/maps/documentation/javascript/
* for more examples and options
*/
app.createGoogleMap(
// Map container
$mapCanvas,
/**
* See more options
* https://developers.google.com/maps/documentation/javascript/reference#MapOptions
*/
{
zoom: zoom,
center: coordinates,
// Disable scrolling wheel for usability purposes
scrollwheel: false,
zoomControl: true,
zoomControlOptions: {
position: google.maps.ControlPosition.RIGHT_CENTER
},
scaleControl: true,
scaleControlOptions: {
position: google.maps.ControlPosition.RIGHT_TOP
},
panControl: true,
panControlOptions: {
position: google.maps.ControlPosition.RIGHT_TOP
}
},
// A button, clicking on which will display the map in a fullscreen popup on small screens
$('.js-map-btn'),
/**
* This callback is executed when the Google Map is loaded
* As first agrument it receives the google map object
*
* Please place here all the code that needs the google map object
*/
function (map) {
markers = [];
// Loop over demo properties to create markers over map
_.each(properties, function (item) {
var infoboxHtml = generateMarkerHTML(item);
/**
* app.createInfoboxMarker is a helper which contains:
* - preconfigured Marker object (see docs https://developers.google.com/maps/documentation/javascript/markers)
* - preconfigured Infobox object (see docs http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobox/docs)
* to make sure they work and look good with our theme.
*
* If you want something more sophisticated, please use these libraries directly
*/
var marker = app.createGmapInfoboxMarker(
map,
new google.maps.LatLng(item.lat, item.lng),
item.address,
infoboxHtml,
// You can pass directly the 'white' or 'dark' value or get it some other way
$mapCanvas.data('infoboxTheme')
);
// Save the created marker for later use for clustering
markers.push(marker);
});
/**
* Wrapper object for MarkerClustererPlus library preconfigured to work with our theme
* See http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclustererplus/docs/reference.html
* for examples
*
* You can use it directly instead of wrapper if you want to customizer its options
* Remove this if you don't want to cluster properties.
*/
app.createGmapClustering(map, markers);
});
}
Initialize map on preperty details page¶
function initPropertyMapAndPanorama() {
// Getting first sample property to display marker for it
var property = window.demodata[3];
// We're using here sample coordinates, please replace them with real ones
var coordinates = new google.maps.LatLng(property.lat, property.lng);
// Default map zoom
var zoom = 10;
// jQuery object with map container
var $mapCanvas = $('.js-map-canvas[data-type="map"]');
var $panoramaCanvas = $('.js-map-canvas[data-type="panorama"]');
var $mapBtn = $('.js-map-btn');
var $panoramaBtn = $('.js-panorama-btn');
var active;
/**
* This is a wrapper around original Google Maps object,
* which brings some user experience improvements for mobile users,
* So that, when user loads the map on small-screen device, it
* is replaced by a button, clicking on it will open full screen
* popup with the map in it.
*
* If you don't want/need that, you can call `google.maps.Map` contructor directly
*
* See https://developers.google.com/maps/documentation/javascript/
* for more examples and options
*/
app.createGoogleMap(
// Map container
$mapCanvas,
/**
* See more options
* https://developers.google.com/maps/documentation/javascript/reference#MapOptions
*/
{
zoom: zoom,
center: coordinates,
// Disable scrolling wheel for usability purposes
scrollwheel: false,
zoomControl: true,
zoomControlOptions: {
position: google.maps.ControlPosition.RIGHT_CENTER
},
scaleControl: true,
scaleControlOptions: {
position: google.maps.ControlPosition.RIGHT_TOP
},
panControl: true,
panControlOptions: {
position: google.maps.ControlPosition.RIGHT_TOP
}
},
// A button, clicking on which will display the map in a fullscreen popup on small screens
$mapBtn,
/**
* This callback is executed when the Google Map is loaded
* As first agrument it receives the google map object
*
* Please place here all the code that needs the google map object
*/
function (map) {
var infoboxHtml = generateMarkerHTML(property);
/**
* app.createInfoboxMarker is a helper which contains:
* - preconfigured Marker object (see docs https://developers.google.com/maps/documentation/javascript/markers)
* - preconfigured Infobox object (see docs http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobox/docs)
* to make sure they work and look good with our theme.
*
* If you want something more sophisticated, please use these libraries directly
*/
app.createGmapInfoboxMarker(
map,
coordinates,
property.address,
infoboxHtml,
// You can pass directly the 'white' or 'dark' value or get it some other way
$mapCanvas.data('infoboxTheme')
);
// Save the created marker for later use for clustering
});
/**
* This is a wrapper around original Google Maps Panorama object,
* which brings some user experience improvements for mobile users,
* So that, when user loads the panorama on small-screen device, it
* is replaced by a button, clicking on it will open full screen
* popup with the panorama in it.
*
* If you don't want/need that, you can call `google.maps.StreetViewPanorama` contructor directly
*
* See https://developers.google.com/maps/documentation/javascript/
* for more examples and options
*/
app.createGooglePanorama(
// Map container
$panoramaCanvas,
/**
* See more options
* https://developers.google.com/maps/documentation/javascript/streetview#StreetViewMapUsage
*/
{
position: coordinates,
pov: {
heading: 34,
pitch: 10
},
zoomControl: true,
zoomControlOptions: {
position: google.maps.ControlPosition.RIGHT_CENTER
},
panControl: true,
panControlOptions: {
position: google.maps.ControlPosition.RIGHT_TOP
}
},
// A button, clicking on which will display the map in a fullscreen popup on small screens
$panoramaBtn);
if (app.gridSize !== 'xs') {
active = $mapBtn.add($panoramaBtn).filter('.active');
$mapBtn.on('click', function () {
toggleActive(this);
$panoramaCanvas.css({zIndex: 5});
$mapCanvas.css({zIndex: 10});
});
$panoramaBtn.on('click', function () {
toggleActive(this);
$panoramaCanvas.css({zIndex: 10});
$mapCanvas.css({zIndex: 5});
});
function toggleActive(newActive) {
if (active) {
active.removeClass('active');
}
active = $(newActive);
active.addClass('active');
}
} else {
$mapBtn.removeClass('active');
}
}
Initialize Leaflet map¶
/***************************************************************
* As an alternative to Google Maps, you can use Leaflet
* which uses data from OSM and tiles from MapBox
==============================================================*/
function initLeafletMap() {
// Array with sample properties, used to display markers on the map
var properties = window.demodata;
// Default map zoom
var zoom = 10;
// We're using here sample coordinates, please replace them with real ones
var coordinates = new L.LatLng(33.74229160384012, -117.86845207214355);
// jQuery object with map container
var $mapCanvas = $('.js-map-canvas');
/*
* This is a wrapper around original Leftlet map object,
* which brings some user experience improvements for mobile users,
*
* If you don't want/need that, you can call ` L.map` contructor directly
*
* See http://leafletjs.com/reference.html
* for more examples and options
==============================================================*/
app.createLeafletMap(
// Map container
$mapCanvas,
/* Leaftlet map options
* http://leafletjs.com/reference.html#map-options
==============================================================*/
{
zoom: zoom,
center: coordinates,
zoomControl: false,
// Disable scrolling wheel for usability purposes
scrollWheelZoom: false
},
// A button, clicking on which will display the map in a fullscreen popup on small screens
$('.js-map-btn'),
/**
* This callback is executed when the Leftlet is loaded
* As first agrument it receives the Leftlet object
*
* Please place here all the code that needs the Leftlet object
*/
function (map) {
// Loop over demo properties to create markers over map
_.each(properties, function (item) {
var infoboxHtml = generateMarkerHTML(item);
/**
* app.createLeafletInfoboxMarker is a helper which contains:
* - preconfigured Marker object (see docs http://leafletjs.com/reference.html#marker)
* - preconfigured Popup object (see docs http://leafletjs.com/reference.html#popup)
* to make sure they work and look good with our theme.
*
* If you want something more sophisticated, please use these objects directly
*/
app.createLeafletInfoboxMarker(
map,
new L.LatLng(item.lat, item.lng),
item.address,
infoboxHtml,
// You can pass directly the 'white' or 'dark' value or get it some other way
$mapCanvas.data('infoboxTheme')
);
});
});
}
Html content for infoboxes¶
// Simple helper for generating html content for infoboxes
function generateMarkerHTML(data) {
return "<span class='map__address'>" + data.address +
"</span> <span class='map__info'>" +
"<img class='map__photo' src='assets/media-demo/properties/277x180/" + data.image +
".jpg'/><span class='map__details'> " +
"<dl><dt>Type:</dt> <dd>" + data.type + "</dd></dl>" +
"<dl><dt>Area:</dt> <dd>" + data.area + " m2</dd></dl>" +
"<dl><dt>Bedrooms:</dt> <dd>" + data.bedrooms + "</dd></dl>" +
"</span></span> <span class='map__price'><strong>$" + data.price +
"</strong></span> <a class='map__more' href='property_details.html'>Details</a>";
}
Examples¶
Map on index page¶
<div class="map map--index">
<div class="map__buttons">
<button class="map__change-map js-map-btn active">Property Map</button>
</div>
<div class="map__wrap">
<div style="" data-infobox-theme="white" class="map__view js-map-index-canvas"></div>
</div>
<div class="container">
<!-- BEGIN SEARCH-->
<div class="search js-search-form search--map-sidebar">
<button type="button" class="search__show js-search-form-show"></button>
<...>
</div>
</div>
</div>
Map on property details page¶
<div class="map map--properties">
<div class="map__buttons">
<button class="map__change-map js-map-btn active">Property Map</button>
<button class="map__change-panorama js-panorama-btn">Street view</button>
</div>
<div class="map__wrap">
<div style="" data-type="map" class="map__view js-map-canvas"></div>
<div style="" data-type="panorama" class="map__view map__view--panorama js-map-canvas"></div>
</div>
</div>
Partners¶
Source¶
Sass styles are in folder template_src/src/assets/sass/widgets/_partners.sass
.
Jade source are in template_src/src/jade/partials/widgets/partners.jade
.
Js initialization are in template_src/src/js/demo.js
.
Ooptions¶
/**
* Slick slider for "Our partners" block
* See documentation for options http://kenwheeler.github.io/slick/
==============================================================*/
var $partnersSlider = $('#partners-slider');
$partnersSlider
.find('.js-slick-slider')
.slick({
dots: false,
infinite: true,
speed: 300,
slidesToShow: 5,
autoplay: true,
prevArrow: $partnersSlider.find('.js-partners-prev'),
nextArrow: $partnersSlider.find('.js-partners-next'),
responsive: [
{
breakpoint: 1100,
settings: {
slidesToShow: 4
}
},
{
breakpoint: 1000,
settings: {
slidesToShow: 3
}
},
{
breakpoint: 768,
settings: {
slidesToShow: 1
}
}
]
});
Example¶
<!-- BEGIN PARTNERS-->
<section class="partners">
<div class="container">
<header class="partners__header">
<h3 class="partners__title">Our Partners</h3>
<h4 class="partners__headline">
At RS, our partners make great digital experiences possible by offering our products, consulting
expertise and the products of our technology partners
</h4>
</header>
<!-- end of block .partners__header-->
<div id="partners-slider" class="partners__list">
<div class="partners__slider js-slick-slider">
<div class="partners__item"><img src="assets/media-demo/partners/logo-company-1.png" alt=""></div>
<!-- end of block .partners__item-->
<...>
</div>
<div class="partners__controls">
<button class="partners__arrow partners__arrow--prev js-partners-prev"></button>
<button class="partners__arrow partners__arrow--next js-partners-next"></button>
</div>
<!-- end of block .partners__controls-->
</div>
<!-- end of block .partners__list-->
</div>
</section>
<!-- end of block .partners-->
<!-- END PARTNERS-->
Pnotify¶
Source¶
Sass styles are in folder template_src/src/assets/sass/block/pnotify.sass
.
Js are in template_src/src/js/demo.js
and template_src/src/assets/js/module/notifier.js
.
Options¶
Use global triggers for generating notifications:
app.notifier.showSuccess('You have been successfully subscribed!');
- success notification.app.notifier.showError('Subscription failed! Please try again.');
- error notification.
Example¶
/**
* Subscribe form validation initialization as well as
* displaying PNotify global message on error/success
*
* app.notifier.showSuccess/showError is a wrapper around `PNotify` function
* with predefined defaults to make it look good in this theme
*
* if you would like to modify it, feel free to use the PNotify
* plugin directly
==============================================================*/
var subscribeForm = $('.js-subscribe-form');
if (subscribeForm.length) {
subscribeForm
.parsley()
.on('form:success', function (formInstance) {
// trigger here success notification
app.notifier.showSuccess('You have been successfully subscribed!');
return false;
})
.on('form:error', function (formInstance) {
// trigger here error notification
app.notifier.showError('Subscription failed! Please try again.');
return false;
})
;
}
Note
More documentaion PNotify
Pricing¶
Source¶
Sass styles are in folder template_src/src/assets/sass/widgets/_pricing.sass
.
Jade source are in template_src/src/jade/pricing.jade
.
Example¶
<div class="pricing">
<div class="pricing__row">
<div class="pricing__col3">
<div class="pricing__item">
<dl class="pricing__list">
<dt class="pricing__type">Free</dt>
<dd class="pricing__total"><span class="pricing__currency">$</span><span class="pricing__summa">0</span><span class="pricing__period">/monthly</span></dd>
<dd class="pricing__feature"><strong>2</strong>Properties</dd>
<dd class="pricing__feature"><strong>1</strong>Agent Profiles</dd>
<dd class="pricing__feature">Agency Profiles</dd>
<dd class="pricing__feature">Featured Properties</dd>
</dl>
<div class="pricing__actions">
<button class="pricing__button">Sign in</button>
</div>
</div>
</div>
<...>
</div>
</div>
Properties¶
Source¶
Sass styles are in folder template_src/src/assets/sass/widgets/_properties.sass
.
Jade source are in template_src/src/jade/partials/chunks/properties_item.jade
.
Variations¶
properties--index
properties on index pageproperties--grid
properties gridproperties--list
properties listproperties--similar
properties similar widgetproperties--workers
properties on workers pageproperties--sidebar
properties in sidebarproperties--gallery
properties gallery
Options¶
<div class="properties properties--grid">
<div class="properties__list">
<div class="properties__item">
<div class="properties__thumb">
<a href="property_details.html" class="item-photo">
<img src="assets/media-demo/properties/830x540/02.jpg" style="" alt="">
<figure class="item-photo__hover">
<span class="item-photo__more">View Details</span>
</figure>
</a>
<span class="properties__ribon">For rent</span>
</div>
<!-- end of block .properties__thumb-->
<a href="property_details.html" class="properties__address">649 West Adams Boulevard, Los Angeles, CA 90007, USA</a>
<dl class="properties__param">
<dt>Property type:</dt>
<dd>Self Storage</dd>
<dt>Area:</dt>
<dd>371 m2</dd>
<dt>Bedrooms:</dt>
<dd>2</dd>
<dt>Bathrooms:</dt>
<dd>1</dd>
</dl>
<!-- end of block .properties__param--><span class="properties__price">$ 4,555<span class="properties__price-period">per month</span></span><a href="property_details.html" class="properties__more">View Details</a>
</div>
<!-- end of block .properties__item-->
<...>
</div>
</div>
Review¶
Source¶
Sass styles are in template_src/src/assets/sass/widgets/_review.sass
.
Jade source are in template_src/src/jade/partials/widgets/review.jade
, template_src/src/jade/partials/chunks/review_item.jade
.
Variations¶
review--wide
- wide reviewreview--list
- list review
Options¶
Review wide¶
<!-- BEGIN SECTION REVIEW-->
<section class="review review--wide">
<div class="container">
<div class="review__header">
<h3 class="review__title">Testimonials</h3>
<h4 class="review__headline">Some nice words from our clients. The funds are strictly designed to help single-family homeowners retrofit their residences for safety purposes.</h4>
</div>
<!-- end of block .review__header-->
<div id="review-slider" class="review__list">
<div class="review__slider js-slick-slider">
<div class="review__item">
<div class="review__photo"><img src="assets/media-demo/testimonials/01.jpg" alt="ALT" class="review__photo-img"></div>
<div class="review__details"><span class="review__name">Vanessa Kasinsky</span><span class="review__post">Back-End Developer</span>
<div class="review__stars"><i class="glyphicon glyphicon-star"></i><i class="glyphicon glyphicon-star"></i><i class="glyphicon glyphicon-star"></i><i class="glyphicon glyphicon-star"></i><i class="glyphicon glyphicon-star"></i></div>
</div>
<!--.clearfix-->
<div class="review__info">
<div class="review__info-quote review__info-quote--open">”</div>
<p>Mariusz always addressed my questions professionally and in a very timely manner. Working with him was a pleasure and would come with my recommendation.
</p>
<div class="review__info-quote review__info-quote--close">“</div>
</div>
</div>
<!-- end of block .review__item-->
<...>
</div>
<div class="review__controls">
<button class="review__arrow review__arrow--prev js-review-prev"></button>
<button class="review__arrow review__arrow--next js-review-next"></button>
</div>
</div>
<!-- end of block .review__list-->
</div>
</section>
<!-- END SECTION REVIEW-->
Review wide initialization¶
function initReviewSlider() {
/***************************************************************
* Initialize sliders for user reviews
* See http://kenwheeler.github.io/slick/ for more options
==============================================================*/
var $reviewSlider = $('#review-slider');
$reviewSlider
.find('.js-slick-slider')
.slick({
dots: false,
infinite: true,
speed: 300,
slidesToShow: 1,
autoplay: true,
prevArrow: $reviewSlider.find('.js-review-prev'),
nextArrow: $reviewSlider.find('.js-review-next')
});
}
Review list¶
<section class="review review--list">
<div class="review__list">
<div class="review__item">
<div class="review__photo"><img src="assets/media-demo/testimonials/01.jpg" alt="ALT" class="review__photo-img"></div>
<div class="review__details"><span class="review__name">Vanessa Kasinsky</span><span class="review__post">Back-End Developer</span>
<div class="review__stars"><i class="glyphicon glyphicon-star"></i><i class="glyphicon glyphicon-star"></i><i class="glyphicon glyphicon-star"></i><i class="glyphicon glyphicon-star"></i><i class="glyphicon glyphicon-star"></i></div>
</div>
<div class="review__info">
<p>Mariusz always addressed my questions professionally and in a very timely manner. Working with him was a pleasure and would come with my recommendation.This summer helper is smokin' hot! Porter is a multi-purpose BBQ tray that eliminates extra trips between your kitchen and grill. Containers with lids keep raw food safely separated.</p>
</div>
</div>
<!-- end of block .review__item-->
<...>
</div>
</section>
Search¶
Source¶
Sass styles are in folder template_src/src/assets/sass/widgets/_search.sass
Jade source are in template_src/src/jade/partials/widgets/search.jade
Js initialization are in template_src/src/assets/js/demo.js
initSearch()
- function which init interaction in search widgetinitRangeSliders()
- function which initializes wide rangeSlider$('.js-in-select').select2();
- stylish standart selects with select2 pluginlocationTree.bonsai();
- builds tree jquery-qubitlocationTree.qubit();
- make tree checkboxes relation jquery-qubit
Variations¶
There are 6 variations of slider
search--index
wide search, full widthsearch--sidebar
search in sidebarsearch--map-sidebar
search in sidebar of mapsearch--map-bottom
search in bottom of mapsearch--map-dark
search in map, dark stylesearch--banner-sidebar
search in sidebar of banner
Slick Slider¶
- Documentation and examples
- http://kenwheeler.github.io/slick/
Animations¶
We have included for you a list of animations that the Slick slider can use, to transition from one slide to another.
To apply an animation to specific slider, add it as its class. For example, if we want to use zoomIn
animation,
we will use a slider-zoomIn
class, that we append to slider’s class list like this:
<div id="simple-slider" class="slider slider--wide slider-zoomIn">
<div class="slider__block js-slider-block">
Source¶
Sass styles are in folder template_src/sass/widgets/slider.sass
Jade source are in:
template_src/jade/partials/widgets/wide_slider.jade
- wide slider with captiontemplate_src/jade/partials/widgets/small_slider.jade
- small slider with counters
Js initialization are in assets/src/assets/js/demo.js
initWideSlider()
- function which init wide sliderinitBlogSlider()
- initilize blog’s page sliderinitPropertyDetailsPage()
- initilize slider on property details page
Options¶
Slider are reponsive, touchbased, and free to change. You can remove caption from wide slider, or hide arrows through sass.
Importants js configuration:
autoplay
- enable autoplayinfinite
- continuous scrollingspeed
- speed slide’s change
Examples¶
Wide slider¶

<!-- START SLIDER-->
<div id="simple-slider" class="slider slider--wide">
<div class="slider__block js-slider-block">
<div class="slider__item">
<img src="media-demo/properties/1168x550/01.jpg" class="slider__img">
<div class="slider__caption"><img src="img/icon-marker-white.svg" class="slider__marker">
<a href="property_details.html" class="slider__address">
<span>4011 South Sycamore Street, Santa Ana, CA 92701, USA</span>
</a>
<div class="slider__params">
<dl>
<dt>Area:</dt>
<dd>460m2</dd>
<dt>Elevator:</dt>
<dd>Yes</dd>
</dl>
<dl>
<dt>Bedrooms:</dt>
<dd>1</dd>
<dt>Baths:</dt>
<dd>1</dd>
<dt>Kitchen:</dt>
<dd>Yes</dd>
</dl>
</div>
<!-- end of block .slider__params-->
<span class="slider__price"><strong>$ 8780</strong>per month</span>
<a href="/" class="slider__more">Details</a>
</div>
<!-- end of block .slider__caption-->
</div>
<!-- end of block .slider__item-->
</div>
<!-- end of block .slider__block-->
<div class="slider__controls">
<button class="slider__control slider__control--prev js-banner-prev"></button>
<button class="slider__control slider__control--next js-banner-next"></button>
</div>
</div>
<!-- END SLIDER-->
var $indexBanner = $('#simple-slider');
$indexBanner
.find('.js-slick-slider')
.slick({
dots: false,
infinite: true,
speed: 300,
slidesToShow: 1,
centerMode: true,
variableWidth: true,
prevArrow: $indexBanner.find('.js-banner-prev'),
nextArrow: $indexBanner.find('.js-banner-next'),
responsive: [
{
breakpoint: 1300,
settings: {
centerMode: false,
variableWidth: false,
arrows: true
}
}
]
}
);
Small slider example¶

<div id="slider-small-example" class="slider slider--properties">
<div class="slider__block js-slick-items">
<div class="slider__item"><img src="media-demo/properties/1740x960/02.jpg" style="" alt=""></div>
<div class="slider__item"><img src="media-demo/properties/1740x960/03.jpg" style="" alt=""></div>
<div class="slider__item"><img src="media-demo/properties/1740x960/11.jpg" style="" alt=""></div>
</div>
<div class="slider__controls">
<button type="button" class="slider__control slider__control--prev js-banner-prev"></button>
<span class="slider__current js-properties-banner-current">1 /</span>
<span class="slider__total js-properties-banner-total"></span>
<button type="button" class="slider__control slider__control--next js-banner-next"></button>
</div>
</div>
var $simpleSlider = $('#counter-slider'),
$simpleSliderCurrent = $simpleSlider.find('.js-properties-banner-current'),
$simpleSliderTotal = $simpleSlider.find('.js-properties-banner-total');
var totalItems = $simpleSlider.find('.slider__item').length;
$simpleSliderTotal.html(totalItems);
$simpleSlider
.find('.js-slick-items')
.slick({
dots: false,
infinite: true,
speed: 300,
slidesToShow: 1,
prevArrow: $simpleSlider.find('.js-banner-prev'),
nextArrow: $simpleSlider.find('.js-banner-next')
}).on('afterChange', function (event, slick, currentSlide) {
$simpleSliderCurrent.html(currentSlide + 1 + ' /');
});
Subscribe¶
Source¶
Sass styles are in template_src/src/assets/sass/widgets/_subscribe.sass
.
Jade source are in template_src/src/jade/partials/widgets/subscribe.jade
.
Example¶
<!-- BEGIN SUBSCRIBE-->
<div class="subscribe">
<div class="container">
<div class="subscribe__row">
<form action="#" class="subscribe__form js-subscribe-form">
<h4 class="subscribe__title">Newsletters</h4>
<div class="subscribe__field form-group">
<label class="sr-only">Newsletters</label>
<input type="email" placeholder="Input your e-mail" name="email" required data-parsley-trigger="change" class="subscribe__in subscribe__in--text form-control js-subscribe-email">
</div>
<button type="submit" class="subscribe__in subscribe__in--submit js-subscribe-submit">SUBMIT</button>
</form>
<!-- end of block .subscribe__form-->
</div>
</div>
</div>
<!-- END SUBSCRIBE-->
/**
* Subscribe form validation initialization as well as
* displaying PNotify global message on error/success
*
* app.notifier.showSuccess/showError is a wrapper around `PNotify` function
* with predefined defaults to make it look good in this theme
*
* if you would like to modify it, feel free to use the PNotify
* plugin directly
==============================================================*/
var subscribeForm = $('.js-subscribe-form');
if (subscribeForm.length) {
subscribeForm
.parsley()
.on('form:success', function (formInstance) {
app.notifier.showSuccess('You have been successfully subscribed!');
return false;
})
.on('form:error', function (formInstance) {
app.notifier.showError('Subscription failed! Please try again.');
return false;
})
;
}
Note
More documentaion PNotify
Note
Pay attention to input’s attributes data-parsley-*
this are rules for validation, see documentation Parsleyjs
Workers¶
Source¶
Sass styles are in template_src/src/assets/sass/widgets/_worker.sass
.
Jade source are in template_src/src/jade/partials/widgets/worker.jade
.
Variations¶
worker--index
worker--grid
worker--list
worker--details
worker--navbar
worker--properties
worker--sidebar
worker--sidebar-advanced
worker--sidebar-nav
Options¶
Worker index page¶
<!-- BEGIN SECTION WORKER INDEX-->
<section class="worker worker--index">
<div class="container">
<header class="worker__header">
<h3 class="worker__title">Our Agents</h3>
<h4 class="worker__headline">Our agents are licensed professionals that specialise in searching, evaluating and negotiating the purchase of property on behalf of the buyer. They will sell you real estate. Insights, tips & how-to guides on selling property and preparing your home or investment property for sale and working to maximise your sale price.</h4>
</header>
<!-- end of block .worker__header-->
<div class="worker__list">
<div class="worker__item vcard">
<h3 class="worker__name fn">Christopher Pakulla</h3>
<div class="worker__photo">
<a href="agent_listing.html" class="item-photo">
<img src="assets/media-demo/workers/worker-1.jpg" alt="Christopher Pakulla" class="photo">
<figure class="item-photo__hover">
<span class="item-photo__more">View Details</span>
</figure>
</a>
</div>
<a href="tel:+44(0)2035102390" class="worker__tel uri">+44 (0) 20 3510 2390</a>
<div class="worker__contacts">
<div class="email">
<a href="mailto:c_walken@realtyspace.com" class="uri value">c_walken@realtyspace.com</a>
</div>
</div>
<!-- end of block .worker__contacts-->
</div>
<!-- end of block .worker__item-->
<...>
<div class="loading"></div>
</div>
<!-- end of block .worker__list-->
</div>
</section>
<!-- END SECTION WORKER INDEX-->
Browser Support¶
Compatible browsers are IE9, IE10, IE11, Firefox, Safari, Opera, Chrome
Out of the box, Realtyspace theme does not support browsers older than IE9, however
you may add some basic older browser support by adding this code into template <head>
.
<!--[if lt IE 9]>
<script type="text/javascript" src='https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js'></script>
<script type="text/javascript" src='https://oss.maxcdn.com/respond/1.4.2/respond.min.js'></script>
<![endif]-->
and switching jQuery 2
version to jQuery 1
.
Note
We can provide support only for issues in browsers IE9 and higher, Firefox, Safari, Opera and Chrome.
Reference¶
Animations¶
Animate.css is a bunch of cool, fun, and cross-browser animations for you to use in your projects. Great for emphasis, home pages, sliders, and general just-add-water-awesomeness.
These animations can be used for ui-slick-slider and ui/ui-menu dropdowns.
default
bounce
pulse
rubberBand
shake
swing
tada
wobble
bounceIn
bounceInDown
bounceInLeft
bounceInRight
bounceInUp
fadeIn
fadeInDown
fadeInDownBig
fadeInLeft
fadeInLeftBig
fadeInRight
fadeInRightBig
fadeInUp
fadeInUpBig
flipInX
flipInY
lightSpeedIn
rotateIn
rotateInDownLeft
rotateInDownRight
rotateInUpLeft
rotateInUpRight
zoomIn
zoomInDown
zoomInLeft
zoomInRight
zoomInUp
slideInDown
slideInLeft
slideInRight
slideInUp
Libraries and modules¶
The following libraries are bundled with the theme, for usage examples folow the specified links:
Changelog¶
1.2¶
- Visual-hierarchy improvememnt: Major changes in property block area in order to remove the crowded feeling, all the secondary information was removed or hidden in order to reveal on hover action
- Visual-hierarchy improvement: Removed secondary information in agent and news blocks in order to make them look more lightweight
- Visual-hierarchy improvement: Increased font-sizing and spacing between blocks and headers
- More improvements related to spacing, alignment and consistency
- Removed other unimportant information from theme and moved it to the dedicated item page.
1.1¶
- Added new “Welcome” block and frontpage
- Added new “Call to action” block on frontpage
- Redesigner main slide banner to a bigger and nicer version
- Major overhaul and redesign of UI blocks in order to follow along WebDesign Hierarchy principles
- Improved color contrast in all color themes
- Major improvements in domain of spacing and alignment issues between UI elements
- Performance improvements on smartphones
- Complete menu module rewrite, now it works even better on mobile devices
1.0¶
- First version
Credits¶
Images¶
For demonstration purposes, Realtyspace uses images licensed under Creative Commons
- “Sustainable Living Room” by Jeremy Levine
- “Dining Room with Recycled Wood Ceiling” by Jeremy Levine
- “Steve Larkin” by Apex Shaker Vanilla Kitchen
- “Untitled” by Woodsview Realty
- “Lawhill Apartments - 3 Bed Superior Kitchen” by John Hickey-Fry
- “Premium Club Luxury Room 2” by Sofitel Dubai Downtown
- “Apex Cottage White Kitchen” by Steve Larkin
- “interiors” by tommerton2010
- “interiors” by tommerton2010
- “interiors” by tommerton2010
- “Dining Room with Recycled Wood Ceiling” by Jeremy Levine
- “Kensington - Sherwood Country Club” by Sherwood CC
- “Cantabria | Sherwood Real Estate” by Sherwood CC
- “The Margaret Mitchell House, Atlanta, Georgia” by Lars Juhl Jensen
- “Amalfi | Sherwood Real Estae” by Sherwood CC
- “Rose Creek | 16829 Little Leaf Edmond OK” by Bill Wilson
- “Self Portrait” by thebarrowboy
- “Stefano” by David Goehring
- “1” by ILLYA ZORYA
- “girl with hat” by Patrick
- “***” by Artur Potosi
- “beautiful faces” by tommerton2010
- “Smiling businessman” by Steve wilson
- “DSC_1678” by bradfordst219
- “Woman Photographer” by Pedro Ribeiro Simões
- “Business” by Steve wilson
- “2012-10-20 TT Business” by Eselsmann
- “Men at work” by reynermedia
- “2015-02-07 Florian Business” by Eselsmann