2017-03-11 06:45:34 +00:00
|
|
|
import Cookies from 'js-cookie';
|
2017-02-15 01:49:36 +00:00
|
|
|
|
2017-02-17 17:28:52 +00:00
|
|
|
const userCalloutElementName = '.user-callout';
|
2017-02-20 15:39:23 +00:00
|
|
|
const closeButton = '.close-user-callout';
|
2017-02-17 17:28:52 +00:00
|
|
|
const userCalloutBtn = '.user-callout-btn';
|
2017-02-23 21:23:33 +00:00
|
|
|
const userCalloutSvgAttrName = 'callout-svg';
|
2017-02-16 22:02:40 +00:00
|
|
|
|
2017-02-17 17:28:52 +00:00
|
|
|
const USER_CALLOUT_COOKIE = 'user_callout_dismissed';
|
2017-02-15 01:49:36 +00:00
|
|
|
|
2017-02-23 21:23:33 +00:00
|
|
|
const USER_CALLOUT_TEMPLATE = `
|
|
|
|
<div class="bordered-box landing content-block">
|
|
|
|
<button class="btn btn-default close close-user-callout" type="button">
|
|
|
|
<i class="fa fa-times dismiss-icon"></i>
|
|
|
|
</button>
|
|
|
|
<div class="row">
|
|
|
|
<div class="col-sm-3 col-xs-12 svg-container">
|
|
|
|
</div>
|
2017-02-24 17:31:11 +00:00
|
|
|
<div class="col-sm-8 col-xs-12 inner-content">
|
|
|
|
<h4>
|
|
|
|
Customize your experience
|
|
|
|
</h4>
|
|
|
|
<p>
|
|
|
|
Change syntax themes, default project pages, and more in preferences.
|
|
|
|
</p>
|
|
|
|
<a class="btn user-callout-btn" href="/profile/preferences">Check it out</a>
|
|
|
|
</div>
|
2017-02-23 21:23:33 +00:00
|
|
|
</div>
|
|
|
|
</div>`;
|
|
|
|
|
2017-02-17 17:28:52 +00:00
|
|
|
class UserCallout {
|
|
|
|
constructor() {
|
|
|
|
this.isCalloutDismissed = Cookies.get(USER_CALLOUT_COOKIE);
|
2017-02-23 21:23:33 +00:00
|
|
|
this.userCalloutBody = $(userCalloutElementName);
|
|
|
|
this.userCalloutSvg = $(userCalloutElementName).attr(userCalloutSvgAttrName);
|
|
|
|
$(userCalloutElementName).removeAttr(userCalloutSvgAttrName);
|
2017-02-17 17:28:52 +00:00
|
|
|
this.init();
|
|
|
|
}
|
2017-02-15 01:49:36 +00:00
|
|
|
|
2017-02-17 17:28:52 +00:00
|
|
|
init() {
|
2017-02-23 21:23:33 +00:00
|
|
|
const $template = $(USER_CALLOUT_TEMPLATE);
|
|
|
|
if (!this.isCalloutDismissed || this.isCalloutDismissed === 'false') {
|
|
|
|
$template.find('.svg-container').append(this.userCalloutSvg);
|
|
|
|
this.userCalloutBody.append($template);
|
|
|
|
$template.find(closeButton).on('click', e => this.dismissCallout(e));
|
|
|
|
$template.find(userCalloutBtn).on('click', e => this.dismissCallout(e));
|
2017-03-02 21:10:39 +00:00
|
|
|
} else {
|
|
|
|
this.userCalloutBody.remove();
|
2017-02-23 21:23:33 +00:00
|
|
|
}
|
2017-02-17 17:28:52 +00:00
|
|
|
}
|
2017-02-16 22:02:40 +00:00
|
|
|
|
2017-02-23 21:23:33 +00:00
|
|
|
dismissCallout(e) {
|
2017-02-22 00:32:51 +00:00
|
|
|
Cookies.set(USER_CALLOUT_COOKIE, 'true');
|
2017-02-23 21:23:33 +00:00
|
|
|
const $currentTarget = $(e.currentTarget);
|
|
|
|
if ($currentTarget.hasClass('close-user-callout')) {
|
2017-03-02 21:10:39 +00:00
|
|
|
this.userCalloutBody.remove();
|
2017-02-15 01:49:36 +00:00
|
|
|
}
|
|
|
|
}
|
2017-02-17 17:28:52 +00:00
|
|
|
}
|
2017-02-15 01:49:36 +00:00
|
|
|
|
2017-02-17 17:28:52 +00:00
|
|
|
module.exports = UserCallout;
|