Hi there, I have creatd a CRM Card using ui-extensions, just using Flex, Tile and Text components as shown below: <Flex direction={'column'} gap={'small'}>
{
deals.map(deal => {
return (
<Tile flush= 続きを読む
Thank you @aanchalsheth ! It looks better now, not exatcly as the native HubSpot card but closer. It would be nice if we could have the same spacin...続きを読む
Hi there, I have creatd a CRM Card using ui-extensions, just using Flex, Tile and Text components as shown below: <Flex direction={'column'} gap={'small'}>
{
deals.map(deal => {
return (
<Tile flush= 続きを読む
Thank you @aanchalsheth ! It looks better now, not exatcly as the native HubSpot card but closer. It would be nice if we could have the same spacin...続きを読む
Hi there, I have creatd a CRM Card using ui-extensions, just using Flex, Tile and Text components as shown below: <Flex direction={'column'} gap={'small'}>
{
deals.map(deal => {
return (
<Tile flush= 続きを読む
Thank you @aanchalsheth ! It looks better now, not exatcly as the native HubSpot card but closer. It would be nice if we could have the same spacin...続きを読む
Hi there, I have creatd a CRM Card using ui-extensions, just using Flex, Tile and Text components as shown below: <Flex direction={'column'} gap={'small'}>
{
deals.map(deal => {
return (
<Tile flush= 続きを読む
Thank you @aanchalsheth ! It looks better now, not exatcly as the native HubSpot card but closer. It would be nice if we could have the same spacin...続きを読む
Hi there, I have creatd a CRM Card using ui-extensions, just using Flex, Tile and Text components as shown below: <Flex direction={'column'} gap={'small'}>
{
deals.map(deal => {
return (
<Tile flush= 続きを読む
Thank you @aanchalsheth ! It looks better now, not exatcly as the native HubSpot card but closer. It would be nice if we could have the same spacin...続きを読む
I am using HubSpot API to get current Deals through the following endpoint. More information here . GET /crm/v3/objects/deals Deals could or should have contacts and company info linked to them. I can retrieve this information with the quer 続きを読む
I am using HubSpot API to get current Deals through the following endpoint. More information here . GET /crm/v3/objects/deals Deals could or should have contacts and company info linked to them. I can retrieve this information with the quer 続きを読む
Hi there, I have creatd a CRM Card using ui-extensions, just using Flex, Tile and Text components as shown below: <Flex direction={'column'} gap={'small'}>
{
deals.map(deal => {
return (
<Tile flush= 続きを読む
Thank you @aanchalsheth ! It looks better now, not exatcly as the native HubSpot card but closer. It would be nice if we could have the same spacin...続きを読む
I just want to use jQuery to modify the input styles when is checked. But somehow nothing is applied, even using the raw HTML of the form. $( document ).ready(function() { $('#id').css('color', 'red') }); What's going on? Thank you!
I want to push a datalayer with the form data. To do so I am trying to access form data after submission as explained in this solution but is not working: <script type="text/javascript">
window.addEventListener("message", function(eve 続きを読む
HubSpot supports the possibility of knowing when a user has or hasn't interact with a certain Facebook campaign, but does not know when did the interaction happen and when the last time was. This is important as we might expect older clients that 続きを読む
Hi all, I just want to know if there is any way to handle form submissions when there area errors. I need to sent a datalayer after each form submission, doesn't matter if it is ok or not. To do this I´m working with onFormSubmit attr 続きを読む
//
//
//
//
//
(function($) {
//START END-USER CONFIGURATION
//------------------------------
//selectors for hover card triggers
var allHoverCardTriggers = '.author-name-link,.friend-list .friend a,.username a,.avatar,.user-avatar,.author-img, .authors a, .messageauthorusername a, a.lia-user-name-link, .js-latest-post-by-from a, .user-online-list li a, a.UserAvatar, .customUsersOnline a, #authors a,.dashboard-followers a.user-name, .dashboard-following a.user-name,.author-login-wrapper a, .hb-leaderboard a, .author-img-floated';
// Forward calling page's URL params to endpoint URL as well, helps with testing!
var params = (new URL(location.href)).searchParams;
var userApiUrl = '/plugins/custom/hubspot/hubspot/hovercardendpoint?' + ((params.set('user_id', '') == []._) && params.toString());
if($('.hover-card-container').length<1){
$('body').append('');
}
var cardWrapper = $('.hover-card-container');
var error = false;
var thisUserID = '';
var thisUserLogin = '';
var userLink ='';
var cardTimer;
var leaveTimer;
function mouseenter(Elem) {
var thisEl = Elem;
cardTimer = setTimeout(function(){
var docWidth = $(document).width();
var rightSide = false;
var userLink = thisEl.attr('href');
if($('.ViewProfilePage').length && $('img.lia-user-avatar-profile',thisEl).length){thisUserID = '122537';}
else if(thisEl.attr('href')=='#' || thisEl.attr('href')=='' || !userLink.match('viewprofilepage')){
return false;}
else{
var thisLen = (userLink).split('/');
thisUserID = (thisLen)[thisLen.length-1];
}
var thisCard = $('.profileCard[data-user='+thisUserID+']',cardWrapper);
var cardId = 'userProfileCard-'+ thisUserID;
var addAttr = thisEl.attr('aria-describedby',cardId);
var thisElTopOffset = Math.round(thisEl.offset().top+(thisEl.height()/2)+30);
var thisElbottomoffset = "auto";
var className = "";
var winHeight = $(window).height();
var elOffset = thisEl.offset();
var scrollTop = $(window).scrollTop();
var elementOffset = thisEl.offset().top;
var distanceTop = (elementOffset - scrollTop);
var distanceBottom = (winHeight + scrollTop) - (elOffset.top + thisEl.outerHeight(true));
var distanceLeft = Math.round(thisEl.offset().left);
var bodyHight = $('body').height();
var topParam = '';
var bottomparam = '';
var position = '';
var className = 'topArrow';
cardId
if(distanceBottom < 300 ){
if(distanceLeft < 59){
thisCard.removeClass('bottomArrow');
var className = 'leftArrow';
var distanceLeft = (distanceLeft)+(39);
var thisElTopOffset = (thisElTopOffset)-(150);
}else{
var thisElTopOffset = (thisElTopOffset)-(301); var className = 'bottomArrow'; thisCard.removeClass('topArrow');
thisCard.removeClass('leftArrow');
var distanceLeft = (distanceLeft)-(45);
}
}
else{
if(distanceLeft < 59){
thisCard.removeClass('topArrow');
var className = 'leftArrow';
var distanceLeft = (distanceLeft)+(39);
var thisElTopOffset = (thisElTopOffset)-(150);
}else{
thisCard.removeClass('leftArrow');
thisCard.removeClass('bottomArrow').addClass('topArrow');
var distanceLeft = (distanceLeft)-(45);
}
}
if(thisCard.length && $('.profileCard[data-user='+thisUserID+'] .preloader',cardWrapper).length<1){
$('.profileCard',cardWrapper).hide();
thisCard.addClass(className);
rightSide?thisCard.addClass('rightArrow'):thisCard.removeClass('rightArrow');
thisCard.delay(0).css({'top':(thisElTopOffset),'left':distanceLeft,'bottom':thisElbottomoffset}).fadeIn();
} else {
var ajaxReturn = '';
//just in case
thisCard.remove();
//hover card wrapper markup
var rightArrowClass = rightSide?'rightArrow':'';
if(thisElTopOffset != "auto"){
topParam = 'px';
}
if(thisElbottomoffset != "auto"){
bottomparam = 'px';
}
var profileCardHtml = '';
$.when(
//get the background
$.ajax({
type: 'GET',
url: userApiUrl+thisUserID,
dataType: 'html',
success: function(data) {
$('.profileCard',cardWrapper).hide();
ajaxReturn = data;
}
})
)
.done(function(){
cardWrapper.append(profileCardHtml);
$('.profileCard[data-user='+thisUserID+']',cardWrapper).eq(0).empty().html(ajaxReturn);
if($('.profileCard[data-user='+thisUserID+'] .preloader',cardWrapper).length){
$('.profileCard[data-user='+thisUserID+'] .preloader',cardWrapper).parents('div.profileCard').remove();
}
})
.fail(function(){
//uh oh - bail out!
$('.profileCard',cardWrapper).hide();
});
}
}, 360);
}
function mouseleave(e) {
clearTimeout(cardTimer);
// glowingblue: When the user leaves the hovercard trigger, wait because the leaving could be
// to interact with the hovercard, if we don't wait it will just disappear...because
// we left the trigger, right...so we'll have another handler that check if the mouse is
// over the hovercard and if so clears this timer, so the card doesn't close here
leaveTimer = setTimeout(function() {
if ($('.profileCard[data-user="'+thisUserID+'"]',cardWrapper).length) {
$('.profileCard[data-user="'+thisUserID+'"]',cardWrapper).fadeOut('fast');
} else {
$(".profileCard").fadeOut('fast');
}
}, 2400);
}
$(document).on("mouseenter focusin", allHoverCardTriggers, function(event) {
if(!($(this).parents().hasClass('custom-header'))&& !($(this).parents().hasClass('green-wrap'))){
(leaveTimer !== []._) && clearTimeout(leaveTimer);
mouseenter($(this));
event.stopPropagation();
}
});
$(document).on("mouseleave focusout", allHoverCardTriggers, function(event) {
(leaveTimer !== []._) && clearTimeout(leaveTimer);
mouseleave(event);
event.stopPropagation();
});
// glowingblue: Add handlers for when the users interacts with the hovercard, no closing!
$('.hover-card-container').on('mouseenter', function(e) {
(leaveTimer !== []._) && clearTimeout(leaveTimer);
});
$('.hover-card-container').on('mouseleave', function(e) {
(leaveTimer !== []._) && clearTimeout(leaveTimer);
if ( $(e.target).is('.profileCard[style*="block"]') ) {
leaveTimer = setTimeout(function() {
$(e.target).fadeOut('fast');
}, 2400);
}
});
// glowingblue: add one global root level click handler to also close any visible hovercards
// if the user taps/clicks outside the hovercard
$(document).on('mousedown', function(e) {
if ( !$(e.target).parents('.hover-card-container').length ) {
(leaveTimer != []._) && clearTimeout(leaveTimer);
$('.hover-card-container .profileCard[style*="block"]').each(function() {
$(this).fadeOut('fast');
});
}
});
})(LITHIUM.jQuery);
(function($) {
$(document).ready(function(){
var originalElementId;
function setCookie(cname,cvalue,exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires=" + d.toGMTString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
function getCookie(cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
function errorDisplay(errType) {
var errAuth = '