Created
May 20, 2017 15:57
-
-
Save garrettmac/4610026f6f01c14262dc8853d54bc23d to your computer and use it in GitHub Desktop.
thumbtack.com
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<!--[if IE 7 ]> <html lang="en" class="ie7 "> <![endif]--> | |
<!--[if IE 8 ]> <html lang="en" class="ie8 "> <![endif]--> | |
<!--[if IE 9 ]> <html lang="en" class="ie9 "> <![endif]--> | |
<!--[if (gt IE 9)|!(IE)]><!--> <html lang="en" class=""> <!--<![endif]--> | |
<head> | |
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><meta name="viewport" | |
content="width=device-width, initial-scale=1, maximum-scale=1"><meta http-equiv="Content-Style-Type" content="text/css" /><meta http-equiv="Content-Script-Type" content="text/javascript" /><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name=dropbox-domain-verification content=0gjo970nvgw9 /><title>Thumbtack - Consider it done</title><meta property="fb:app_id" content="131357050011"><meta | |
property="og:url" | |
content="https://www.thumbtack.com/"><meta property="og:title" content="Thumbtack - Consider it done"><meta property="og:type" content="website"><meta property="og:site_name" content="Thumbtack"><meta property="og:description" content="Thumbtack is the destination for getting things done. Just tell us what you need and we’ll deliver up to five custom quotes from local pros ready to help."><meta name="description" content="Thumbtack is the destination for getting things done. Just tell us what you need and we’ll deliver up to five custom quotes from local pros ready to help." /><link rel="image_src" href="https://static4.thumbtackstatic.com/theme/images/thumbtack2.png"><meta property="og:image" | |
content="https://static5.thumbtackstatic.com/media/logos/thumbtack_logomark_200x200.png"><meta property="og:image:secure_url" | |
content="https://static5.thumbtackstatic.com/media/logos/thumbtack_logomark_200x200.png"><meta property="og:image:width" content="200"><meta property="og:image:height" content="200"><meta property="og:image:type" content="image/png"><link rel="canonical" href="index.html" /><meta name="omg:cute" href="https://static5.thumbtackstatic.com/media/puppies/pup.jpg"><link rel="icon" href="https://www.thumbtack.com/favicon.ico" /><link rel="apple-touch-icon" href="https://www.thumbtack.com/apple-touch-icon-152x152.png" /><link rel="icon" type="image/png" href="https://www.thumbtack.com/favicon-32x32.png" sizes="32x32"><link rel="icon" type="image/png" href="https://www.thumbtack.com/favicon-16x16.png" sizes="16x16"><link rel="manifest" href="https://www.thumbtack.com/manifest.json"><link rel="mask-icon" href="https://www.thumbtack.com/safari-pinned-tab.svg" color="#f27802 "><meta name="msapplication-TileColor" content="#ff0000 "><meta name="msapplication-TileImage" content="/mstile-144x144.png"><meta name="theme-color" content="#ffffff "><link rel="stylesheet" media="all" href="https://static5.thumbtackstatic.com/_assets/styles/release/legacy-css/thumbprint/pages/banner-app-upsell-62ab7e10.css.gz" /><script> | |
TT_FB_KEY = "131357050011"; | |
RECAPTCHA_SITE_KEY = "6LeUcx0UAAAAAD5r8_HlLr4M77iuL-Lj3Mo-VKYJ"; | |
TT_MOBILE = false; | |
</script> | |
<link rel="stylesheet" | |
href="https://static2.thumbtackstatic.com/_assets/styles/release/globals/styles/core-0b1c5c96.css.gz" /> | |
<link rel="stylesheet" | |
href="https://static5.thumbtackstatic.com/_assets/styles/release/globals/styles/fonts/full-f074da3d.css.gz" /> | |
<link rel="stylesheet" | |
href="https://static5.thumbtackstatic.com/_assets/styles/release/pages/homepage/styles/homepage-1178d9ea.css.gz" /> | |
</head> | |
<body id="" class=""> | |
<!--[if !(IE 9)]>--><script> | |
(function(){ | |
var svgFile = "https:\/\/static7.thumbtackstatic.com\/_assets\/svg\/release\/symbol\/svg\/sprite.symbol-d31beca0.svg.gz"; | |
var xhr = new XMLHttpRequest(); | |
xhr.open("GET", svgFile); | |
// Use text/plain instead of text/xml http://stackoverflow.com/a/13030629 | |
xhr.setRequestHeader("Content-Type", "text/plain"); | |
xhr.onreadystatechange = function () { | |
if (xhr.readyState !== XMLHttpRequest.DONE) { | |
return; | |
} | |
if (200 <= xhr.status && xhr.status < 300) { | |
var wrap = document.createElement("div"); | |
try { | |
wrap.appendChild(xhr.responseXML.documentElement); | |
} catch (e) { | |
wrap.innerHTML = xhr.responseText; | |
} | |
wrap.style.display = "none"; | |
document.body.insertBefore(wrap, document.body.firstChild); | |
return; | |
} | |
}; | |
xhr.send(); | |
})() | |
</script><!--<![endif]--><svg class="curtain-visible" viewBox="0 0 76 12" style="position: absolute; height: 0;"><defs><clipPath id="aura-stars-mask"><polygon points="6 9.95015528 2.29179607 12 3 7.65835921 0 4.58359214 4.14589803 | |
3.95015528 6 0 7.85410197 3.95015528 12 4.58359214 9 7.65835921 9.70820393 12 | |
"></polygon><polygon points="22 9.95015528 18.2917961 12 19 7.65835921 16 4.58359214 20.145898 | |
3.95015528 22 0 23.854102 3.95015528 28 4.58359214 25 7.65835921 25.7082039 12 | |
"></polygon><polygon points="38 9.95015528 34.2917961 12 35 7.65835921 32 4.58359214 36.145898 | |
3.95015528 38 0 39.854102 3.95015528 44 4.58359214 41 7.65835921 41.7082039 12 | |
"></polygon><polygon points="54 9.95015528 50.2917961 12 51 7.65835921 48 4.58359214 52.145898 | |
3.95015528 54 0 55.854102 3.95015528 60 4.58359214 57 7.65835921 57.7082039 12 | |
"></polygon><polygon points="70 9.95015528 66.2917961 12 67 7.65835921 64 4.58359214 68.145898 | |
3.95015528 70 0 71.854102 3.95015528 76 4.58359214 73 7.65835921 73.7082039 12 | |
"></polygon></clipPath></defs></svg><install-native-app | |
user-type = "customer" | |
data-flavor = "header" | |
utm-source = "HP" | |
android-icon-url = "https://static4.thumbtackstatic.com/_assets/images/release/components/install-native-app/images/google-play-badge-8c7ddebe.svg" | |
iphone-icon-url = "https://static6.thumbtackstatic.com/_assets/images/release/components/install-native-app/images/apple-app-store-c62cc2f9.svg" | |
></install-native-app><div class="glorious-header theme-inverse-overlay | |
GlobalHeader " | |
data-section="header"><div class="wrapper"><div class="row header-row"><div class="header-logo"><a href="index.html" | |
><svg-icon | |
class=" IconContainer" | |
style="min-width:178px;min-height:28px" | |
twig-rendered><svg class="Icon" viewBox="0 0 178 28"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#thumbprinticon-thumbtack-logo_178x28"></use></svg></svg-icon><img class="GlobalHeader-fallbackLogo" | |
src="https://static1.thumbtackstatic.com/media/logos/thumbtack_brand_152x24.svg" | |
width="152" height="24" alt="Thumbtack"></a></div><div class="header-middle-container"><a class="middle-tab | |
" href="https://www.thumbtack.com/explore"event-track="dashboard/click explore" | |
event-track-on="click"> | |
Explore | |
</a></div><div class="header-navigation by-tabs-nav "><a href="https://www.thumbtack.com/pro" rel="nofollow" | |
event-track="home page/clicked join as a pro" | |
event-track-on="click" | |
class="gray-link"> | |
Join as a Pro | |
</a><a href="https://www.thumbtack.com/choose-account" rel="nofollow" | |
event-track="home page/clicked sign up" | |
event-track-on="click" | |
class="gray-link"> | |
Sign Up | |
</a><a href="https://www.thumbtack.com/login" rel="nofollow" | |
event-track="home page/clicked log in" | |
event-track-on="click" | |
class="gray-link log-in-link"> | |
Log In | |
</a></div></div></div><input type="checkbox" | |
id="mobile-navigation-toggle" | |
class="mobile-navigation-toggle "><label | |
for="mobile-navigation-toggle" | |
class="mobile-navigation-trigger "><svg-icon class="GlobalHeader-down" type="hamburger" size="md"></svg-icon><svg-icon class="GlobalHeader-up" type="close-experimental" size="md"></svg-icon></label><div class="glorious-navigation-wrapper | |
hidden "><div class="glorious-navigation | |
column-lg-6 "><div class="wrapper browse-wrapper empty-default" data-browse-container><ul class="navigation-row"><li class="mobile-navigation-item GlobalHeader-loginLink"><a href="https://www.thumbtack.com/pro" rel="nofollow" | |
event-track="home page/clicked join as a pro" | |
event-track-on="click">Join as a Pro</a></li><li class="mobile-navigation-item GlobalHeader-loginLink"><a href="https://www.thumbtack.com/choose-account" rel="nofollow" | |
event-track="home page/clicked sign up" | |
event-track-on="click">Sign Up</a></li><li class="mobile-navigation-item GlobalHeader-loginLink"><a href="https://www.thumbtack.com/login" rel="nofollow" | |
event-track="home page/clicked log in" | |
event-track-on="click">Log In</a></li><li class="mobile-navigation-item GlobalHeader-loginLink"><a href="https://www.thumbtack.com/explore">Explore</a></li></ul></div></div></div></div> | |
<div class="Homepage"> | |
<div viewport-element="hero"> | |
<hero | |
class="Hero " | |
responsive-image | |
responsive-grid="page" | |
uses-densities | |
above-md="{ | |
'1x': ' https://static6.thumbtackstatic.com/_assets/images/release/modules/hero-create-request/images/home-hero-lg-1x-c459a9bc.jpg | |
', | |
'2x': ' https://static7.thumbtackstatic.com/_assets/images/release/modules/hero-create-request/images/home-hero-lg-2x-c29caea0.jpg | |
' | |
}" | |
above-sm-below-md="{ | |
'1x': ' https://static6.thumbtackstatic.com/_assets/images/release/modules/hero-create-request/images/home-hero-lg-1x-c459a9bc.jpg | |
', | |
'2x': ' https://static7.thumbtackstatic.com/_assets/images/release/modules/hero-create-request/images/home-hero-lg-2x-c29caea0.jpg | |
' | |
}" | |
below-sm="{ | |
'1x': ' https://static5.thumbtackstatic.com/_assets/images/release/modules/hero-create-request/images/home-hero-sm-1x-69b7d987.jpg | |
', | |
'2x': ' https://static3.thumbtackstatic.com/_assets/images/release/modules/hero-create-request/images/home-hero-sm-2x-dd04ae90.jpg | |
' | |
}" | |
> | |
<div class="Hero-tint " | |
> | |
</div> | |
<div class="page-grid Hero-grid"> | |
<div | |
class="Hero-content"> | |
<div class="column-lg-6"> | |
<h1 class="Hero-content-title tp-heading-1 | |
" | |
> | |
Consider it done. | |
</h1> | |
</div> | |
<div class="column-lg-4 column-md-6"> | |
<h4 class="H4-R Hero-content-subtitle theme-inverted "> | |
From house painting to personal training, we bring you the right pros for every project on your list. | |
</h4> | |
</div> | |
<div class="column-lg-4 column-md-6"> | |
<div | |
ng-cloak | |
ng-if="!lpRestartExperience.showRestartCta" | |
class="Hero-content-cta"> | |
<div class="SearchForm theme-default"> | |
<form search-form open-request-form-modal | |
from-homepage="1" | |
hide-intro-screen="" | |
ng-submit="submitSearch($event)" | |
class="SearchForm-form" | |
action="index.html#" | |
hercule-root-url="https://hercule.thumbtack.io" | |
hercule-version="0" | |
include-test="" | |
page-type="4" | |
search-origin="searchform-homepage" | |
event-name="searchform-homepage" | |
> | |
<div class="SearchForm-form-inputGroup multi-line-sm" > | |
<span class="SearchForm-form-query B2-S" | |
ng-class="{'dropdownOpen': suggestionsOpen}"> | |
<input class="query" | |
ng-class="{'is-empty-state': isEmptyState}" | |
required | |
autocomplete="off" | |
placeholder="What service do you need?" | |
type="search" | |
event-track="home page/start service query" | |
event-track-on="keypress" | |
event-track-data="{ | |
pageType: '4', | |
searchOrigin: 'searchform-homepage', | |
}" | |
event-track-once | |
/> | |
<div class="SearchForm-form-query-clearQuery"> | |
<label | |
ng-class="{'is-empty-state': isEmptyState}" | |
class="SearchForm-form-query-clearQuery-wrapper" | |
for="clear-input-field" | |
ng-click="clearSearchField()" | |
> | |
<svg-icon | |
type="declined" | |
size="sm" | |
class="SearchForm-form-query-clearQuery-wrapper-icon"> | |
</svg-icon> | |
</label> | |
</div> | |
</span> | |
<button class=" | |
SearchForm-form-submitBtn | |
Button | |
theme-large | |
" | |
type="submit" | |
event-track="hercule/click get started" | |
event-track-on="click" | |
event-track-data="{ | |
pageType: '4', | |
searchOrigin: 'searchform-homepage', | |
}"> | |
Get Started | |
</button> | |
</div> | |
</form> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</hero> | |
</div> | |
<div class="CategoryNavV3"> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<p class="H4-R CategoryNavV3-heading"> | |
All Services | |
</p> | |
<ul class="CategoryNavV3-list"> | |
<li class="CategoryNavV3-item"> | |
<a href="https://www.thumbtack.com/events" | |
class="CategoryNavV3-link" | |
event-track="home page/clicked meta category" | |
event-track-on="click" | |
event-track-data="{ category_type: 'category-group--events' }"> | |
<svg-icon | |
class="CategoryNavV3-item-icon icon-md" | |
type="category-group--events" | |
size="md"> | |
</svg-icon> | |
<svg-icon | |
class="CategoryNavV3-item-icon icon-lg" | |
type="category-group--events" | |
size="lg"> | |
</svg-icon> | |
<span class="T2-S CategoryNavV3-item-label">Events</span> | |
<svg-icon | |
class="CategoryNavV3-item-expand" | |
type="right-caret2" | |
size="md"> | |
</svg-icon> | |
</a> | |
</li> | |
<li class="CategoryNavV3-item"> | |
<a href="https://www.thumbtack.com/home-improvement" | |
class="CategoryNavV3-link" | |
event-track="home page/clicked meta category" | |
event-track-on="click" | |
event-track-data="{ category_type: 'category-group--home-improvement' }"> | |
<svg-icon | |
class="CategoryNavV3-item-icon icon-md" | |
type="category-group--home-improvement" | |
size="md"> | |
</svg-icon> | |
<svg-icon | |
class="CategoryNavV3-item-icon icon-lg" | |
type="category-group--home-improvement" | |
size="lg"> | |
</svg-icon> | |
<span class="T2-S CategoryNavV3-item-label">Home</span> | |
<svg-icon | |
class="CategoryNavV3-item-expand" | |
type="right-caret2" | |
size="md"> | |
</svg-icon> | |
</a> | |
</li> | |
<li class="CategoryNavV3-item"> | |
<a href="https://www.thumbtack.com/lessons" | |
class="CategoryNavV3-link" | |
event-track="home page/clicked meta category" | |
event-track-on="click" | |
event-track-data="{ category_type: 'category-group--lessons' }"> | |
<svg-icon | |
class="CategoryNavV3-item-icon icon-md" | |
type="category-group--lessons" | |
size="md"> | |
</svg-icon> | |
<svg-icon | |
class="CategoryNavV3-item-icon icon-lg" | |
type="category-group--lessons" | |
size="lg"> | |
</svg-icon> | |
<span class="T2-S CategoryNavV3-item-label">Lessons</span> | |
<svg-icon | |
class="CategoryNavV3-item-expand" | |
type="right-caret2" | |
size="md"> | |
</svg-icon> | |
</a> | |
</li> | |
<li class="CategoryNavV3-item"> | |
<a href="https://www.thumbtack.com/wellness" | |
class="CategoryNavV3-link" | |
event-track="home page/clicked meta category" | |
event-track-on="click" | |
event-track-data="{ category_type: 'category-group--wellness' }"> | |
<svg-icon | |
class="CategoryNavV3-item-icon icon-md" | |
type="category-group--wellness" | |
size="md"> | |
</svg-icon> | |
<svg-icon | |
class="CategoryNavV3-item-icon icon-lg" | |
type="category-group--wellness" | |
size="lg"> | |
</svg-icon> | |
<span class="T2-S CategoryNavV3-item-label">Wellness</span> | |
<svg-icon | |
class="CategoryNavV3-item-expand" | |
type="right-caret2" | |
size="md"> | |
</svg-icon> | |
</a> | |
</li> | |
<li class="CategoryNavV3-item"> | |
<a href="https://www.thumbtack.com/more-services#category-group-business" | |
class="CategoryNavV3-link" | |
event-track="home page/clicked meta category" | |
event-track-on="click" | |
event-track-data="{ category_type: 'category-group--business' }"> | |
<svg-icon | |
class="CategoryNavV3-item-icon icon-md" | |
type="category-group--business" | |
size="md"> | |
</svg-icon> | |
<svg-icon | |
class="CategoryNavV3-item-icon icon-lg" | |
type="category-group--business" | |
size="lg"> | |
</svg-icon> | |
<span class="T2-S CategoryNavV3-item-label">Business</span> | |
<svg-icon | |
class="CategoryNavV3-item-expand" | |
type="right-caret2" | |
size="md"> | |
</svg-icon> | |
</a> | |
</li> | |
<li class="CategoryNavV3-item"> | |
<a href="https://www.thumbtack.com/more-services#category-group-crafts" | |
class="CategoryNavV3-link" | |
event-track="home page/clicked meta category" | |
event-track-on="click" | |
event-track-data="{ category_type: 'category-group--crafts' }"> | |
<svg-icon | |
class="CategoryNavV3-item-icon icon-md" | |
type="category-group--crafts" | |
size="md"> | |
</svg-icon> | |
<svg-icon | |
class="CategoryNavV3-item-icon icon-lg" | |
type="category-group--crafts" | |
size="lg"> | |
</svg-icon> | |
<span class="T2-S CategoryNavV3-item-label">Crafts</span> | |
<svg-icon | |
class="CategoryNavV3-item-expand" | |
type="right-caret2" | |
size="md"> | |
</svg-icon> | |
</a> | |
</li> | |
<li class="CategoryNavV3-item"> | |
<a href="https://www.thumbtack.com/more-services#category-group-designWeb" | |
class="CategoryNavV3-link" | |
event-track="home page/clicked meta category" | |
event-track-on="click" | |
event-track-data="{ category_type: 'category-group--design-and-web' }"> | |
<svg-icon | |
class="CategoryNavV3-item-icon icon-md" | |
type="category-group--design-and-web" | |
size="md"> | |
</svg-icon> | |
<svg-icon | |
class="CategoryNavV3-item-icon icon-lg" | |
type="category-group--design-and-web" | |
size="lg"> | |
</svg-icon> | |
<span class="T2-S CategoryNavV3-item-label">Design & Web</span> | |
<svg-icon | |
class="CategoryNavV3-item-expand" | |
type="right-caret2" | |
size="md"> | |
</svg-icon> | |
</a> | |
</li> | |
<li class="CategoryNavV3-item"> | |
<a href="https://www.thumbtack.com/more-services" | |
class="CategoryNavV3-link" | |
event-track="home page/clicked meta category" | |
event-track-on="click" | |
event-track-data="{ category_type: 'category-group--more' }"> | |
<svg-icon | |
class="CategoryNavV3-item-icon icon-md" | |
type="category-group--more" | |
size="md"> | |
</svg-icon> | |
<svg-icon | |
class="CategoryNavV3-item-icon icon-lg" | |
type="category-group--more" | |
size="lg"> | |
</svg-icon> | |
<span class="T2-S CategoryNavV3-item-label">More</span> | |
<svg-icon | |
class="CategoryNavV3-item-expand" | |
type="right-caret2" | |
size="md"> | |
</svg-icon> | |
</a> | |
</li> | |
</ul> | |
<div class="CategoryNavV3-moreLink"> | |
<a class="T2-S Link" href="https://www.thumbtack.com/more-services"> | |
See more | |
</a> | |
</div> | |
</div> | |
</div> | |
</div> | |
<div class="Moments "> | |
<div class="Moments-container"> | |
<div class="Moments-moment"> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<h4 class="H4-R Moments-moment-title">Popular in your area</h4> | |
</div> | |
</div> | |
<div class="page-grid theme-full-bleed-at-xs"> | |
<div class="column-lg-6"> | |
<category-carousel | |
count="25" | |
responsive-grid="page"> | |
<div class="CategoryCarousel"> | |
<div | |
class="CategoryCarousel-paddle paddle-left" | |
ng-click="clickLeft()"> | |
<svg-icon | |
type="left-caret" | |
size="md"> | |
</svg-icon> | |
</div> | |
<div class="CategoryCarousel-container"> | |
<div class="CategoryCarousel-list"> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"GTdkGWTMaOx4Wg","categoryName":0,"origin":null,"position":0,"block_position":0,"block_type":2}" | |
waypoint-track-data="{"encodedCategoryId":"GTdkGWTMaOx4Wg","categoryName":0,"origin":null,"position":0,"block_position":0,"block_type":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('GTdkGWTMaOx4Wg', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static5.thumbtackstatic.com/production/hero-images/1432_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Dog Training | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"DlKFbmZEwCYQyA","categoryName":0,"origin":null,"position":1,"block_position":0,"block_type":2}" | |
waypoint-track-data="{"encodedCategoryId":"DlKFbmZEwCYQyA","categoryName":0,"origin":null,"position":1,"block_position":0,"block_type":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('DlKFbmZEwCYQyA', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static2.thumbtackstatic.com/production/hero-images/1310_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Lawn Mowing and Trimming | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"GhsBh:XCyI0ORQ","categoryName":0,"origin":null,"position":2,"block_position":0,"block_type":2}" | |
waypoint-track-data="{"encodedCategoryId":"GhsBh:XCyI0ORQ","categoryName":0,"origin":null,"position":2,"block_position":0,"block_type":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('GhsBh:XCyI0ORQ', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static3.thumbtackstatic.com/production/hero-images/2031_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Sprinkler and Irrigation System Repair and Maintenance | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"dQJN84Ndr5s$Xg","categoryName":0,"origin":null,"position":3,"block_position":0,"block_type":2}" | |
waypoint-track-data="{"encodedCategoryId":"dQJN84Ndr5s$Xg","categoryName":0,"origin":null,"position":3,"block_position":0,"block_type":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('dQJN84Ndr5s$Xg', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/2525_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Party Bus Rental | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"M:HwIR8qa:MQww","categoryName":0,"origin":null,"position":4,"block_position":0,"block_type":2}" | |
waypoint-track-data="{"encodedCategoryId":"M:HwIR8qa:MQww","categoryName":0,"origin":null,"position":4,"block_position":0,"block_type":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('M:HwIR8qa:MQww', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static7.thumbtackstatic.com/production/hero-images/2233_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Handyman | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"Ef:ZOOYOXFaD2A","categoryName":0,"origin":null,"position":6,"block_position":0,"block_type":2}" | |
waypoint-track-data="{"encodedCategoryId":"Ef:ZOOYOXFaD2A","categoryName":0,"origin":null,"position":6,"block_position":0,"block_type":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('Ef:ZOOYOXFaD2A', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static5.thumbtackstatic.com/production/hero-images/2833_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
House Cleaning | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"nV8DGI4:dEUXtQ","categoryName":0,"origin":null,"position":7,"block_position":0,"block_type":2}" | |
waypoint-track-data="{"encodedCategoryId":"nV8DGI4:dEUXtQ","categoryName":0,"origin":null,"position":7,"block_position":0,"block_type":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('nV8DGI4:dEUXtQ', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static7.thumbtackstatic.com/production/hero-images/1434_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Local Moving (under 50 miles) | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"1axLKc3DdQ6g5w","categoryName":0,"origin":null,"position":8,"block_position":0,"block_type":2}" | |
waypoint-track-data="{"encodedCategoryId":"1axLKc3DdQ6g5w","categoryName":0,"origin":null,"position":8,"block_position":0,"block_type":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('1axLKc3DdQ6g5w', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static7.thumbtackstatic.com/production/hero-images/2992_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Personal Training | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"kMI95pqKXLU9vQ","categoryName":0,"origin":null,"position":9,"block_position":0,"block_type":2}" | |
waypoint-track-data="{"encodedCategoryId":"kMI95pqKXLU9vQ","categoryName":0,"origin":null,"position":9,"block_position":0,"block_type":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('kMI95pqKXLU9vQ', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static2.thumbtackstatic.com/production/hero-images/2849_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Massage Therapy | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"Q9sYIW2IZP5AkA","categoryName":0,"origin":null,"position":10,"block_position":0,"block_type":2}" | |
waypoint-track-data="{"encodedCategoryId":"Q9sYIW2IZP5AkA","categoryName":0,"origin":null,"position":10,"block_position":0,"block_type":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('Q9sYIW2IZP5AkA', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static5.thumbtackstatic.com/production/hero-images/3009_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Wedding and Event Makeup | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"N3RO9AsfLUgQUA","categoryName":0,"origin":null,"position":11,"block_position":0,"block_type":2}" | |
waypoint-track-data="{"encodedCategoryId":"N3RO9AsfLUgQUA","categoryName":0,"origin":null,"position":11,"block_position":0,"block_type":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('N3RO9AsfLUgQUA', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static2.thumbtackstatic.com/production/hero-images/1880_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Photo Booth Rental | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"9J5P8q6rNlEGlQ","categoryName":0,"origin":null,"position":12,"block_position":0,"block_type":2}" | |
waypoint-track-data="{"encodedCategoryId":"9J5P8q6rNlEGlQ","categoryName":0,"origin":null,"position":12,"block_position":0,"block_type":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('9J5P8q6rNlEGlQ', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/3063_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Fence and Gate Installation | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"XyyEps5FZMepLQ","categoryName":0,"origin":null,"position":13,"block_position":0,"block_type":2}" | |
waypoint-track-data="{"encodedCategoryId":"XyyEps5FZMepLQ","categoryName":0,"origin":null,"position":13,"block_position":0,"block_type":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('XyyEps5FZMepLQ', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static8.thumbtackstatic.com/production/hero-images/1316_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Interior Painting | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"iJlabHh2QF9ylg","categoryName":0,"origin":null,"position":14,"block_position":0,"block_type":2}" | |
waypoint-track-data="{"encodedCategoryId":"iJlabHh2QF9ylg","categoryName":0,"origin":null,"position":14,"block_position":0,"block_type":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('iJlabHh2QF9ylg', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/2165_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
DJ | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"Rfn88VIV27Tb3g","categoryName":0,"origin":null,"position":15,"block_position":0,"block_type":2}" | |
waypoint-track-data="{"encodedCategoryId":"Rfn88VIV27Tb3g","categoryName":0,"origin":null,"position":15,"block_position":0,"block_type":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('Rfn88VIV27Tb3g', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/2514_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Portrait Photography | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"1AlrokYQ00L8eQ","categoryName":0,"origin":null,"position":16,"block_position":0,"block_type":2}" | |
waypoint-track-data="{"encodedCategoryId":"1AlrokYQ00L8eQ","categoryName":0,"origin":null,"position":16,"block_position":0,"block_type":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('1AlrokYQ00L8eQ', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static2.thumbtackstatic.com/production/hero-images/1512_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Roof Installation or Replacement | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"b7cSvw5Y7PhRlA","categoryName":0,"origin":null,"position":17,"block_position":0,"block_type":2}" | |
waypoint-track-data="{"encodedCategoryId":"b7cSvw5Y7PhRlA","categoryName":0,"origin":null,"position":17,"block_position":0,"block_type":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('b7cSvw5Y7PhRlA', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static2.thumbtackstatic.com/production/hero-images/1857_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Wedding Officiant | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"Vin8kPc8QyC5KQ","categoryName":0,"origin":null,"position":18,"block_position":0,"block_type":2}" | |
waypoint-track-data="{"encodedCategoryId":"Vin8kPc8QyC5KQ","categoryName":0,"origin":null,"position":18,"block_position":0,"block_type":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('Vin8kPc8QyC5KQ', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static2.thumbtackstatic.com/production/hero-images/2085_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Computer Repair | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"WI6X4ybzsrA6:A","categoryName":0,"origin":null,"position":19,"block_position":0,"block_type":2}" | |
waypoint-track-data="{"encodedCategoryId":"WI6X4ybzsrA6:A","categoryName":0,"origin":null,"position":19,"block_position":0,"block_type":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('WI6X4ybzsrA6:A', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/2172_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Concrete Installation | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"yZUmyVje7z70Mw","categoryName":0,"origin":null,"position":20,"block_position":0,"block_type":2}" | |
waypoint-track-data="{"encodedCategoryId":"yZUmyVje7z70Mw","categoryName":0,"origin":null,"position":20,"block_position":0,"block_type":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('yZUmyVje7z70Mw', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static2.thumbtackstatic.com/production/hero-images/1952_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Nutritionist | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"HSN$F3bPaZ1iaw","categoryName":0,"origin":null,"position":21,"block_position":0,"block_type":2}" | |
waypoint-track-data="{"encodedCategoryId":"HSN$F3bPaZ1iaw","categoryName":0,"origin":null,"position":21,"block_position":0,"block_type":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('HSN$F3bPaZ1iaw', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static7.thumbtackstatic.com/production/hero-images/1401_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Piano Lessons | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"6WTJnO6mPxjoag","categoryName":0,"origin":null,"position":22,"block_position":0,"block_type":2}" | |
waypoint-track-data="{"encodedCategoryId":"6WTJnO6mPxjoag","categoryName":0,"origin":null,"position":22,"block_position":0,"block_type":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('6WTJnO6mPxjoag', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static6.thumbtackstatic.com/production/hero-images/1552_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Pest Control Services | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"EImutic0TgVgHQ","categoryName":0,"origin":null,"position":23,"block_position":0,"block_type":2}" | |
waypoint-track-data="{"encodedCategoryId":"EImutic0TgVgHQ","categoryName":0,"origin":null,"position":23,"block_position":0,"block_type":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('EImutic0TgVgHQ', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static2.thumbtackstatic.com/production/hero-images/1585_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Private Cooking Lessons | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"BsZRjG9vqYu:KQ","categoryName":0,"origin":null,"position":24,"block_position":0,"block_type":2}" | |
waypoint-track-data="{"encodedCategoryId":"BsZRjG9vqYu:KQ","categoryName":0,"origin":null,"position":24,"block_position":0,"block_type":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('BsZRjG9vqYu:KQ', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/2367_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Electrical and Wiring Issues | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"NrOTJXyTYoMHaA","categoryName":0,"origin":null,"position":25,"block_position":0,"block_type":2}" | |
waypoint-track-data="{"encodedCategoryId":"NrOTJXyTYoMHaA","categoryName":0,"origin":null,"position":25,"block_position":0,"block_type":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('NrOTJXyTYoMHaA', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static7.thumbtackstatic.com/production/hero-images/1838_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Land Surveying | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item item-cloned"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"GTdkGWTMaOx4Wg","categoryName":0,"origin":null,"position":0,"block_position":0,"block_type":2}" | |
waypoint-track-data="{"encodedCategoryId":"GTdkGWTMaOx4Wg","categoryName":0,"origin":null,"position":0,"block_position":0,"block_type":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('GTdkGWTMaOx4Wg', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static5.thumbtackstatic.com/production/hero-images/1432_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Dog Training | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item item-cloned"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"DlKFbmZEwCYQyA","categoryName":0,"origin":null,"position":1,"block_position":0,"block_type":2}" | |
waypoint-track-data="{"encodedCategoryId":"DlKFbmZEwCYQyA","categoryName":0,"origin":null,"position":1,"block_position":0,"block_type":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('DlKFbmZEwCYQyA', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static2.thumbtackstatic.com/production/hero-images/1310_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Lawn Mowing and Trimming | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item item-cloned"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"GhsBh:XCyI0ORQ","categoryName":0,"origin":null,"position":2,"block_position":0,"block_type":2}" | |
waypoint-track-data="{"encodedCategoryId":"GhsBh:XCyI0ORQ","categoryName":0,"origin":null,"position":2,"block_position":0,"block_type":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('GhsBh:XCyI0ORQ', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static3.thumbtackstatic.com/production/hero-images/2031_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Sprinkler and Irrigation System Repair and Maintenance | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item item-cloned"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"dQJN84Ndr5s$Xg","categoryName":0,"origin":null,"position":3,"block_position":0,"block_type":2}" | |
waypoint-track-data="{"encodedCategoryId":"dQJN84Ndr5s$Xg","categoryName":0,"origin":null,"position":3,"block_position":0,"block_type":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('dQJN84Ndr5s$Xg', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/2525_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Party Bus Rental | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item item-cloned"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"M:HwIR8qa:MQww","categoryName":0,"origin":null,"position":4,"block_position":0,"block_type":2}" | |
waypoint-track-data="{"encodedCategoryId":"M:HwIR8qa:MQww","categoryName":0,"origin":null,"position":4,"block_position":0,"block_type":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('M:HwIR8qa:MQww', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static7.thumbtackstatic.com/production/hero-images/2233_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Handyman | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item item-cloned"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"Ef:ZOOYOXFaD2A","categoryName":0,"origin":null,"position":6,"block_position":0,"block_type":2}" | |
waypoint-track-data="{"encodedCategoryId":"Ef:ZOOYOXFaD2A","categoryName":0,"origin":null,"position":6,"block_position":0,"block_type":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('Ef:ZOOYOXFaD2A', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static5.thumbtackstatic.com/production/hero-images/2833_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
House Cleaning | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
</div> | |
</div> | |
<div | |
class="CategoryCarousel-paddle paddle-right" | |
ng-click="clickRight()"> | |
<svg-icon | |
type="right-caret" | |
size="md"> | |
</svg-icon> | |
</div> | |
</div> | |
</category-carousel> | |
</div> | |
</div> | |
</div> | |
<div class="Moments-moment"> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<h4 class="H4-R Moments-moment-title">Trending now</h4> | |
</div> | |
</div> | |
<div class="page-grid theme-full-bleed-at-xs"> | |
<div class="column-lg-6"> | |
<category-carousel | |
count="3" | |
responsive-grid="page"> | |
<div class="CategoryCarousel"> | |
<div | |
class="CategoryCarousel-paddle paddle-left" | |
ng-click="clickLeft()"> | |
<svg-icon | |
type="left-caret" | |
size="md"> | |
</svg-icon> | |
</div> | |
<div class="CategoryCarousel-container"> | |
<div class="CategoryCarousel-list"> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"ul0uwKP9LZbBfg","categoryName":0,"origin":null,"position":0,"block_position":1,"block_type":3}" | |
waypoint-track-data="{"encodedCategoryId":"ul0uwKP9LZbBfg","categoryName":0,"origin":null,"position":0,"block_position":1,"block_type":3}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('ul0uwKP9LZbBfg', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static8.thumbtackstatic.com/production/hero-images/2465_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Deck Staining | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"29EdERcHj04lig","categoryName":0,"origin":null,"position":1,"block_position":1,"block_type":3}" | |
waypoint-track-data="{"encodedCategoryId":"29EdERcHj04lig","categoryName":0,"origin":null,"position":1,"block_position":1,"block_type":3}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('29EdERcHj04lig', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static6.thumbtackstatic.com/production/hero-images/1581_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Central Air Conditioning Repair | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"tni6zTcgxEePow","categoryName":0,"origin":null,"position":2,"block_position":1,"block_type":3}" | |
waypoint-track-data="{"encodedCategoryId":"tni6zTcgxEePow","categoryName":0,"origin":null,"position":2,"block_position":1,"block_type":3}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('tni6zTcgxEePow', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static2.thumbtackstatic.com/production/hero-images/1383_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Stucco Application | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item item-cloned"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"ul0uwKP9LZbBfg","categoryName":0,"origin":null,"position":0,"block_position":1,"block_type":3}" | |
waypoint-track-data="{"encodedCategoryId":"ul0uwKP9LZbBfg","categoryName":0,"origin":null,"position":0,"block_position":1,"block_type":3}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('ul0uwKP9LZbBfg', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static8.thumbtackstatic.com/production/hero-images/2465_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Deck Staining | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item item-cloned"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"29EdERcHj04lig","categoryName":0,"origin":null,"position":1,"block_position":1,"block_type":3}" | |
waypoint-track-data="{"encodedCategoryId":"29EdERcHj04lig","categoryName":0,"origin":null,"position":1,"block_position":1,"block_type":3}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('29EdERcHj04lig', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static6.thumbtackstatic.com/production/hero-images/1581_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Central Air Conditioning Repair | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item item-cloned"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track="recommendation/click" | |
event-track-on="click" | |
waypoint-track="category recommendation" | |
event-track-data="{"encodedCategoryId":"tni6zTcgxEePow","categoryName":0,"origin":null,"position":2,"block_position":1,"block_type":3}" | |
waypoint-track-data="{"encodedCategoryId":"tni6zTcgxEePow","categoryName":0,"origin":null,"position":2,"block_position":1,"block_type":3}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('tni6zTcgxEePow', '')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static2.thumbtackstatic.com/production/hero-images/1383_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Stucco Application | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
</div> | |
</div> | |
<div | |
class="CategoryCarousel-paddle paddle-right" | |
ng-click="clickRight()"> | |
<svg-icon | |
type="right-caret" | |
size="md"> | |
</svg-icon> | |
</div> | |
</div> | |
</category-carousel> | |
</div> | |
</div> | |
</div> | |
<div | |
class="Moments-moment" | |
waypoint-track="moments" | |
waypoint-track-data="{ 'moment_index': 0 }"> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<h4 class="H4-R Moments-moment-title">Home Improvement</h4> | |
</div> | |
</div> | |
<div class="page-grid theme-full-bleed-at-xs"> | |
<div class="column-lg-6"> | |
<category-carousel | |
count="11" | |
responsive-grid="page"> | |
<div class="CategoryCarousel"> | |
<div | |
class="CategoryCarousel-paddle paddle-left" | |
ng-click="clickLeft()"> | |
<svg-icon | |
type="left-caret" | |
size="md"> | |
</svg-icon> | |
</div> | |
<div class="CategoryCarousel-container"> | |
<div class="CategoryCarousel-list"> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"dZvApXl02R95eA","categoryName":0,"origin":"moments","moment_index":0,"category_index":0}" | |
waypoint-track-data="{"encodedCategoryId":"dZvApXl02R95eA","categoryName":0,"origin":"moments","moment_index":0,"category_index":0}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('dZvApXl02R95eA', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/2216_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Furniture assembly | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"dGELR947mm7esA","categoryName":0,"origin":"moments","moment_index":0,"category_index":1}" | |
waypoint-track-data="{"encodedCategoryId":"dGELR947mm7esA","categoryName":0,"origin":"moments","moment_index":0,"category_index":1}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('dGELR947mm7esA', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/2163_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Interior design | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"4V0Dr$GdjC7zbg","categoryName":0,"origin":"moments","moment_index":0,"category_index":2}" | |
waypoint-track-data="{"encodedCategoryId":"4V0Dr$GdjC7zbg","categoryName":0,"origin":"moments","moment_index":0,"category_index":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('4V0Dr$GdjC7zbg', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/2236_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Carpet installation | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"FgkDqgZUb6Ws8g","categoryName":0,"origin":"moments","moment_index":0,"category_index":3}" | |
waypoint-track-data="{"encodedCategoryId":"FgkDqgZUb6Ws8g","categoryName":0,"origin":"moments","moment_index":0,"category_index":3}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('FgkDqgZUb6Ws8g', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/1430_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
TV mounting | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"XyyEps5FZMepLQ","categoryName":0,"origin":"moments","moment_index":0,"category_index":4}" | |
waypoint-track-data="{"encodedCategoryId":"XyyEps5FZMepLQ","categoryName":0,"origin":"moments","moment_index":0,"category_index":4}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('XyyEps5FZMepLQ', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/1316_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Interior painting | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"r4auLL7JI2I9Og","categoryName":0,"origin":"moments","moment_index":0,"category_index":5}" | |
waypoint-track-data="{"encodedCategoryId":"r4auLL7JI2I9Og","categoryName":0,"origin":"moments","moment_index":0,"category_index":5}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('r4auLL7JI2I9Og', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/1865_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Home security and alarms install | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"Bg9:OPqOradztw","categoryName":0,"origin":"moments","moment_index":0,"category_index":6}" | |
waypoint-track-data="{"encodedCategoryId":"Bg9:OPqOradztw","categoryName":0,"origin":"moments","moment_index":0,"category_index":6}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('Bg9:OPqOradztw', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/1469_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Outdoor landscaping | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"9J5P8q6rNlEGlQ","categoryName":0,"origin":"moments","moment_index":0,"category_index":7}" | |
waypoint-track-data="{"encodedCategoryId":"9J5P8q6rNlEGlQ","categoryName":0,"origin":"moments","moment_index":0,"category_index":7}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('9J5P8q6rNlEGlQ', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/1915_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Fence and Gate Installation | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"BhkJ:4VSZgitbg","categoryName":0,"origin":"moments","moment_index":0,"category_index":8}" | |
waypoint-track-data="{"encodedCategoryId":"BhkJ:4VSZgitbg","categoryName":0,"origin":"moments","moment_index":0,"category_index":8}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('BhkJ:4VSZgitbg', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/1770_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Packing and unpacking | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"CGoqNwAGYYU2qA","categoryName":0,"origin":"moments","moment_index":0,"category_index":9}" | |
waypoint-track-data="{"encodedCategoryId":"CGoqNwAGYYU2qA","categoryName":0,"origin":"moments","moment_index":0,"category_index":9}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('CGoqNwAGYYU2qA', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/2296_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Carpet cleaning | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"MO18xmpaxkHcSw","categoryName":0,"origin":"moments","moment_index":0,"category_index":10}" | |
waypoint-track-data="{"encodedCategoryId":"MO18xmpaxkHcSw","categoryName":0,"origin":"moments","moment_index":0,"category_index":10}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('MO18xmpaxkHcSw', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/2023_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Pressure washing | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item item-cloned"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"dZvApXl02R95eA","categoryName":0,"origin":"moments","moment_index":0,"category_index":0}" | |
waypoint-track-data="{"encodedCategoryId":"dZvApXl02R95eA","categoryName":0,"origin":"moments","moment_index":0,"category_index":0}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('dZvApXl02R95eA', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/2216_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Furniture assembly | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item item-cloned"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"dGELR947mm7esA","categoryName":0,"origin":"moments","moment_index":0,"category_index":1}" | |
waypoint-track-data="{"encodedCategoryId":"dGELR947mm7esA","categoryName":0,"origin":"moments","moment_index":0,"category_index":1}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('dGELR947mm7esA', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/2163_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Interior design | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item item-cloned"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"4V0Dr$GdjC7zbg","categoryName":0,"origin":"moments","moment_index":0,"category_index":2}" | |
waypoint-track-data="{"encodedCategoryId":"4V0Dr$GdjC7zbg","categoryName":0,"origin":"moments","moment_index":0,"category_index":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('4V0Dr$GdjC7zbg', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/2236_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Carpet installation | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item item-cloned"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"FgkDqgZUb6Ws8g","categoryName":0,"origin":"moments","moment_index":0,"category_index":3}" | |
waypoint-track-data="{"encodedCategoryId":"FgkDqgZUb6Ws8g","categoryName":0,"origin":"moments","moment_index":0,"category_index":3}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('FgkDqgZUb6Ws8g', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/1430_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
TV mounting | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item item-cloned"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"XyyEps5FZMepLQ","categoryName":0,"origin":"moments","moment_index":0,"category_index":4}" | |
waypoint-track-data="{"encodedCategoryId":"XyyEps5FZMepLQ","categoryName":0,"origin":"moments","moment_index":0,"category_index":4}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('XyyEps5FZMepLQ', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/1316_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Interior painting | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item item-cloned"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"r4auLL7JI2I9Og","categoryName":0,"origin":"moments","moment_index":0,"category_index":5}" | |
waypoint-track-data="{"encodedCategoryId":"r4auLL7JI2I9Og","categoryName":0,"origin":"moments","moment_index":0,"category_index":5}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('r4auLL7JI2I9Og', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/1865_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Home security and alarms install | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
</div> | |
</div> | |
<div | |
class="CategoryCarousel-paddle paddle-right" | |
ng-click="clickRight()"> | |
<svg-icon | |
type="right-caret" | |
size="md"> | |
</svg-icon> | |
</div> | |
</div> | |
</category-carousel> | |
</div> | |
</div> | |
</div> | |
<div | |
class="Moments-moment" | |
waypoint-track="moments" | |
waypoint-track-data="{ 'moment_index': 1 }"> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<h4 class="H4-R Moments-moment-title">Weddings and Events</h4> | |
</div> | |
</div> | |
<div class="page-grid theme-full-bleed-at-xs"> | |
<div class="column-lg-6"> | |
<category-carousel | |
count="9" | |
responsive-grid="page"> | |
<div class="CategoryCarousel"> | |
<div | |
class="CategoryCarousel-paddle paddle-left" | |
ng-click="clickLeft()"> | |
<svg-icon | |
type="left-caret" | |
size="md"> | |
</svg-icon> | |
</div> | |
<div class="CategoryCarousel-container"> | |
<div class="CategoryCarousel-list"> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"Q9sYIW2IZP5AkA","categoryName":0,"origin":"moments","moment_index":1,"category_index":0}" | |
waypoint-track-data="{"encodedCategoryId":"Q9sYIW2IZP5AkA","categoryName":0,"origin":"moments","moment_index":1,"category_index":0}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('Q9sYIW2IZP5AkA', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/1973_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Wedding and Event Makeup | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"iJlabHh2QF9ylg","categoryName":0,"origin":"moments","moment_index":1,"category_index":1}" | |
waypoint-track-data="{"encodedCategoryId":"iJlabHh2QF9ylg","categoryName":0,"origin":"moments","moment_index":1,"category_index":1}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('iJlabHh2QF9ylg', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/2165_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
DJ | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"N3RO9AsfLUgQUA","categoryName":0,"origin":"moments","moment_index":1,"category_index":2}" | |
waypoint-track-data="{"encodedCategoryId":"N3RO9AsfLUgQUA","categoryName":0,"origin":"moments","moment_index":1,"category_index":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('N3RO9AsfLUgQUA', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/1880_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Photo Booth Rental | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"856A3475nmblEA","categoryName":0,"origin":"moments","moment_index":1,"category_index":3}" | |
waypoint-track-data="{"encodedCategoryId":"856A3475nmblEA","categoryName":0,"origin":"moments","moment_index":1,"category_index":3}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('856A3475nmblEA', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/3029_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Event Photography | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"8HROc4dEjopfYA","categoryName":0,"origin":"moments","moment_index":1,"category_index":4}" | |
waypoint-track-data="{"encodedCategoryId":"8HROc4dEjopfYA","categoryName":0,"origin":"moments","moment_index":1,"category_index":4}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('8HROc4dEjopfYA', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/1956_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Bartending | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"UyomZzHyHN433g","categoryName":0,"origin":"moments","moment_index":1,"category_index":5}" | |
waypoint-track-data="{"encodedCategoryId":"UyomZzHyHN433g","categoryName":0,"origin":"moments","moment_index":1,"category_index":5}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('UyomZzHyHN433g', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/1716_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Wedding Planning | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"b7cSvw5Y7PhRlA","categoryName":0,"origin":"moments","moment_index":1,"category_index":6}" | |
waypoint-track-data="{"encodedCategoryId":"b7cSvw5Y7PhRlA","categoryName":0,"origin":"moments","moment_index":1,"category_index":6}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('b7cSvw5Y7PhRlA', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/1857_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Wedding Officiant | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"CCTDl7L5T97CDQ","categoryName":0,"origin":"moments","moment_index":1,"category_index":7}" | |
waypoint-track-data="{"encodedCategoryId":"CCTDl7L5T97CDQ","categoryName":0,"origin":"moments","moment_index":1,"category_index":7}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('CCTDl7L5T97CDQ', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/3007_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Event Videography | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"4cSkMRhLRZuHPg","categoryName":0,"origin":"moments","moment_index":1,"category_index":8}" | |
waypoint-track-data="{"encodedCategoryId":"4cSkMRhLRZuHPg","categoryName":0,"origin":"moments","moment_index":1,"category_index":8}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('4cSkMRhLRZuHPg', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/2094_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Event Catering (Buffet) | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item item-cloned"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"Q9sYIW2IZP5AkA","categoryName":0,"origin":"moments","moment_index":1,"category_index":0}" | |
waypoint-track-data="{"encodedCategoryId":"Q9sYIW2IZP5AkA","categoryName":0,"origin":"moments","moment_index":1,"category_index":0}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('Q9sYIW2IZP5AkA', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/1973_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Wedding and Event Makeup | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item item-cloned"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"iJlabHh2QF9ylg","categoryName":0,"origin":"moments","moment_index":1,"category_index":1}" | |
waypoint-track-data="{"encodedCategoryId":"iJlabHh2QF9ylg","categoryName":0,"origin":"moments","moment_index":1,"category_index":1}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('iJlabHh2QF9ylg', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/2165_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
DJ | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item item-cloned"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"N3RO9AsfLUgQUA","categoryName":0,"origin":"moments","moment_index":1,"category_index":2}" | |
waypoint-track-data="{"encodedCategoryId":"N3RO9AsfLUgQUA","categoryName":0,"origin":"moments","moment_index":1,"category_index":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('N3RO9AsfLUgQUA', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/1880_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Photo Booth Rental | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item item-cloned"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"856A3475nmblEA","categoryName":0,"origin":"moments","moment_index":1,"category_index":3}" | |
waypoint-track-data="{"encodedCategoryId":"856A3475nmblEA","categoryName":0,"origin":"moments","moment_index":1,"category_index":3}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('856A3475nmblEA', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/3029_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Event Photography | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item item-cloned"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"8HROc4dEjopfYA","categoryName":0,"origin":"moments","moment_index":1,"category_index":4}" | |
waypoint-track-data="{"encodedCategoryId":"8HROc4dEjopfYA","categoryName":0,"origin":"moments","moment_index":1,"category_index":4}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('8HROc4dEjopfYA', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/1956_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Bartending | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item item-cloned"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"UyomZzHyHN433g","categoryName":0,"origin":"moments","moment_index":1,"category_index":5}" | |
waypoint-track-data="{"encodedCategoryId":"UyomZzHyHN433g","categoryName":0,"origin":"moments","moment_index":1,"category_index":5}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('UyomZzHyHN433g', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/1716_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Wedding Planning | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
</div> | |
</div> | |
<div | |
class="CategoryCarousel-paddle paddle-right" | |
ng-click="clickRight()"> | |
<svg-icon | |
type="right-caret" | |
size="md"> | |
</svg-icon> | |
</div> | |
</div> | |
</category-carousel> | |
</div> | |
</div> | |
</div> | |
<div | |
class="Moments-moment" | |
waypoint-track="moments" | |
waypoint-track-data="{ 'moment_index': 2 }"> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<h4 class="H4-R Moments-moment-title">Wellness</h4> | |
</div> | |
</div> | |
<div class="page-grid theme-full-bleed-at-xs"> | |
<div class="column-lg-6"> | |
<category-carousel | |
count="9" | |
responsive-grid="page"> | |
<div class="CategoryCarousel"> | |
<div | |
class="CategoryCarousel-paddle paddle-left" | |
ng-click="clickLeft()"> | |
<svg-icon | |
type="left-caret" | |
size="md"> | |
</svg-icon> | |
</div> | |
<div class="CategoryCarousel-container"> | |
<div class="CategoryCarousel-list"> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"1axLKc3DdQ6g5w","categoryName":0,"origin":"moments","moment_index":2,"category_index":0}" | |
waypoint-track-data="{"encodedCategoryId":"1axLKc3DdQ6g5w","categoryName":0,"origin":"moments","moment_index":2,"category_index":0}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('1axLKc3DdQ6g5w', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/1941_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Personal Training | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"yZUmyVje7z70Mw","categoryName":0,"origin":"moments","moment_index":2,"category_index":1}" | |
waypoint-track-data="{"encodedCategoryId":"yZUmyVje7z70Mw","categoryName":0,"origin":"moments","moment_index":2,"category_index":1}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('yZUmyVje7z70Mw', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/1952_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Nutritionist | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"kMI95pqKXLU9vQ","categoryName":0,"origin":"moments","moment_index":2,"category_index":2}" | |
waypoint-track-data="{"encodedCategoryId":"kMI95pqKXLU9vQ","categoryName":0,"origin":"moments","moment_index":2,"category_index":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('kMI95pqKXLU9vQ', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/1416_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Massage Therapy | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"wA9nRFT$rabDJQ","categoryName":0,"origin":"moments","moment_index":2,"category_index":3}" | |
waypoint-track-data="{"encodedCategoryId":"wA9nRFT$rabDJQ","categoryName":0,"origin":"moments","moment_index":2,"category_index":3}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('wA9nRFT$rabDJQ', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/1605_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Career Coaching | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"giwGb4fVT5SXwg","categoryName":0,"origin":"moments","moment_index":2,"category_index":4}" | |
waypoint-track-data="{"encodedCategoryId":"giwGb4fVT5SXwg","categoryName":0,"origin":"moments","moment_index":2,"category_index":4}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('giwGb4fVT5SXwg', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/2223_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Life Coaching | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"GmauKy9DW8jlXw","categoryName":0,"origin":"moments","moment_index":2,"category_index":5}" | |
waypoint-track-data="{"encodedCategoryId":"GmauKy9DW8jlXw","categoryName":0,"origin":"moments","moment_index":2,"category_index":5}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('GmauKy9DW8jlXw', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/1420_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Marriage and Relationship Counseling | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"KSNmubPXvxL2Lg","categoryName":0,"origin":"moments","moment_index":2,"category_index":6}" | |
waypoint-track-data="{"encodedCategoryId":"KSNmubPXvxL2Lg","categoryName":0,"origin":"moments","moment_index":2,"category_index":6}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('KSNmubPXvxL2Lg', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/1591_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Health and Wellness Coaching | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"y6HwE0mUynjRbA","categoryName":0,"origin":"moments","moment_index":2,"category_index":7}" | |
waypoint-track-data="{"encodedCategoryId":"y6HwE0mUynjRbA","categoryName":0,"origin":"moments","moment_index":2,"category_index":7}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('y6HwE0mUynjRbA', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/2848_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Private Yoga Instruction | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"nGRG2KjdLvVA:g","categoryName":0,"origin":"moments","moment_index":2,"category_index":8}" | |
waypoint-track-data="{"encodedCategoryId":"nGRG2KjdLvVA:g","categoryName":0,"origin":"moments","moment_index":2,"category_index":8}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('nGRG2KjdLvVA:g', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/2274_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Reiki Healing | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item item-cloned"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"1axLKc3DdQ6g5w","categoryName":0,"origin":"moments","moment_index":2,"category_index":0}" | |
waypoint-track-data="{"encodedCategoryId":"1axLKc3DdQ6g5w","categoryName":0,"origin":"moments","moment_index":2,"category_index":0}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('1axLKc3DdQ6g5w', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/1941_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Personal Training | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item item-cloned"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"yZUmyVje7z70Mw","categoryName":0,"origin":"moments","moment_index":2,"category_index":1}" | |
waypoint-track-data="{"encodedCategoryId":"yZUmyVje7z70Mw","categoryName":0,"origin":"moments","moment_index":2,"category_index":1}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('yZUmyVje7z70Mw', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/1952_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Nutritionist | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item item-cloned"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"kMI95pqKXLU9vQ","categoryName":0,"origin":"moments","moment_index":2,"category_index":2}" | |
waypoint-track-data="{"encodedCategoryId":"kMI95pqKXLU9vQ","categoryName":0,"origin":"moments","moment_index":2,"category_index":2}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('kMI95pqKXLU9vQ', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/1416_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Massage Therapy | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item item-cloned"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"wA9nRFT$rabDJQ","categoryName":0,"origin":"moments","moment_index":2,"category_index":3}" | |
waypoint-track-data="{"encodedCategoryId":"wA9nRFT$rabDJQ","categoryName":0,"origin":"moments","moment_index":2,"category_index":3}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('wA9nRFT$rabDJQ', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/1605_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Career Coaching | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item item-cloned"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"giwGb4fVT5SXwg","categoryName":0,"origin":"moments","moment_index":2,"category_index":4}" | |
waypoint-track-data="{"encodedCategoryId":"giwGb4fVT5SXwg","categoryName":0,"origin":"moments","moment_index":2,"category_index":4}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('giwGb4fVT5SXwg', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/2223_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Life Coaching | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item item-cloned"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-smaller theme-carousel " | |
event-track="moments/click" | |
event-track-on="click" | |
event-track-data="{"encodedCategoryId":"GmauKy9DW8jlXw","categoryName":0,"origin":"moments","moment_index":2,"category_index":5}" | |
waypoint-track-data="{"encodedCategoryId":"GmauKy9DW8jlXw","categoryName":0,"origin":"moments","moment_index":2,"category_index":5}"> | |
<a class="ServiceBox-item" | |
open-request-form-modal | |
ng-click="openModalWithCategoryId('GmauKy9DW8jlXw', 'moments')" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/1420_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Marriage and Relationship Counseling | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
</div> | |
</div> | |
<div | |
class="CategoryCarousel-paddle paddle-right" | |
ng-click="clickRight()"> | |
<svg-icon | |
type="right-caret" | |
size="md"> | |
</svg-icon> | |
</div> | |
</div> | |
</category-carousel> | |
</div> | |
</div> | |
</div> | |
<div | |
class="Moments-moment" | |
waypoint-track="nearme suggestion cards"> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<h4 class="H4-R Moments-moment-title">More Services Near You</h4> | |
</div> | |
</div> | |
<div class="page-grid theme-full-bleed-at-xs"> | |
<div class="column-lg-6"> | |
<category-carousel | |
count="14" | |
responsive-grid="page"> | |
<div class="CategoryCarousel"> | |
<div | |
class="CategoryCarousel-paddle paddle-left" | |
ng-click="clickLeft()"> | |
<svg-icon | |
type="left-caret" | |
size="md"> | |
</svg-icon> | |
</div> | |
<div class="CategoryCarousel-container"> | |
<div class="CategoryCarousel-list"> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}" | |
waypoint-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}"> | |
<a class="ServiceBox-item" | |
href="https://www.thumbtack.com/k/affordable-moving/near-me" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static7.thumbtackstatic.com/production/hero-images/1434_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Affordable Movers Near You | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}" | |
waypoint-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}"> | |
<a class="ServiceBox-item" | |
href="https://www.thumbtack.com/k/concrete-contractors/near-me" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/2172_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Concrete Contractors | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}" | |
waypoint-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}"> | |
<a class="ServiceBox-item" | |
href="https://www.thumbtack.com/k/residential-electrical-services/near-me" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/2367_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Residential Electrical Services | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}" | |
waypoint-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}"> | |
<a class="ServiceBox-item" | |
href="https://www.thumbtack.com/k/marriage-counselors/near-me" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static6.thumbtackstatic.com/production/hero-images/2988_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Marriage Counselors Near You | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}" | |
waypoint-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}"> | |
<a class="ServiceBox-item" | |
href="https://www.thumbtack.com/k/lawyers/near-me" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static2.thumbtackstatic.com/production/hero-images/3033_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Lawyers Near You | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}" | |
waypoint-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}"> | |
<a class="ServiceBox-item" | |
href="https://www.thumbtack.com/k/modeling-photographers/near-me" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static2.thumbtackstatic.com/production/hero-images/2342_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Modeling Photographers | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}" | |
waypoint-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}"> | |
<a class="ServiceBox-item" | |
href="https://www.thumbtack.com/k/tarot-readers/near-me" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static8.thumbtackstatic.com/production/hero-images/1738_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Tarot Readers Near You | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}" | |
waypoint-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}"> | |
<a class="ServiceBox-item" | |
href="https://www.thumbtack.com/k/affordable-plumbing-services/near-me" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static7.thumbtackstatic.com/production/hero-images/1940_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Affordable Plumbing Services | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}" | |
waypoint-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}"> | |
<a class="ServiceBox-item" | |
href="https://www.thumbtack.com/k/pest-control/near-me" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static6.thumbtackstatic.com/production/hero-images/1552_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Pest Control Companies | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}" | |
waypoint-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}"> | |
<a class="ServiceBox-item" | |
href="https://www.thumbtack.com/k/junk-removal/near-me" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static4.thumbtackstatic.com/production/hero-images/2832_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Junk Removal Services | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}" | |
waypoint-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}"> | |
<a class="ServiceBox-item" | |
href="https://www.thumbtack.com/k/commercial-roofing/near-me" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static2.thumbtackstatic.com/production/hero-images/1512_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Roofing Near You | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}" | |
waypoint-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}"> | |
<a class="ServiceBox-item" | |
href="https://www.thumbtack.com/k/window-restoration-companies/near-me" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/1595_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Window Restoration Near You | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}" | |
waypoint-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}"> | |
<a class="ServiceBox-item" | |
href="https://www.thumbtack.com/k/vinyl-siding-install/near-me" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static7.thumbtackstatic.com/production/hero-images/2303_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Vinyl Siding Installers | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}" | |
waypoint-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}"> | |
<a class="ServiceBox-item" | |
href="https://www.thumbtack.com/k/affordable-divorce-lawyers/near-me" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static3.thumbtackstatic.com/production/hero-images/2185_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Affordable Divorce Lawyers | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item item-cloned"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}" | |
waypoint-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}"> | |
<a class="ServiceBox-item" | |
href="https://www.thumbtack.com/k/affordable-moving/near-me" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static7.thumbtackstatic.com/production/hero-images/1434_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Affordable Movers Near You | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item item-cloned"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}" | |
waypoint-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}"> | |
<a class="ServiceBox-item" | |
href="https://www.thumbtack.com/k/concrete-contractors/near-me" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/2172_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Concrete Contractors | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item item-cloned"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}" | |
waypoint-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}"> | |
<a class="ServiceBox-item" | |
href="https://www.thumbtack.com/k/residential-electrical-services/near-me" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static1.thumbtackstatic.com/production/hero-images/2367_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Residential Electrical Services | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item item-cloned"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}" | |
waypoint-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}"> | |
<a class="ServiceBox-item" | |
href="https://www.thumbtack.com/k/marriage-counselors/near-me" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static6.thumbtackstatic.com/production/hero-images/2988_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Marriage Counselors Near You | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item item-cloned"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}" | |
waypoint-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}"> | |
<a class="ServiceBox-item" | |
href="https://www.thumbtack.com/k/lawyers/near-me" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static2.thumbtackstatic.com/production/hero-images/3033_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Lawyers Near You | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="CategoryCarousel-item item-cloned"> | |
<div | |
class=" | |
ServiceBox-container | |
theme-carousel " | |
event-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}" | |
waypoint-track-data="{"encodedCategoryId":null,"categoryName":0,"origin":null}"> | |
<a class="ServiceBox-item" | |
href="https://www.thumbtack.com/k/modeling-photographers/near-me" | |
> | |
<div | |
class="ServiceBox-item-image" | |
lazy-image | |
lazy-image-src="https://static2.thumbtackstatic.com/production/hero-images/2342_small" | |
refresh-on-document-scroll > | |
</div> | |
<div class="ServiceBox-item-label"> | |
<span class=" T2-R "> | |
Modeling Photographers | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
</div> | |
</div> | |
<div | |
class="CategoryCarousel-paddle paddle-right" | |
ng-click="clickRight()"> | |
<svg-icon | |
type="right-caret" | |
size="md"> | |
</svg-icon> | |
</div> | |
</div> | |
</category-carousel> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
<about-thumbtack> | |
<div class="AboutThumbtack"> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<h2 class="AboutThumbtack-headline H2-R">How Thumbtack works</h2> | |
</div> | |
</div> | |
<div class="page-grid AboutThumbtack-wrapper"> | |
<div class="AboutThumbtack-image column-lg-3"> | |
<img id="demo-image-tag" | |
responsive-image | |
responsive-grid="page" | |
uses-densities | |
above-md="{ | |
'1x': 'https://static4.thumbtackstatic.com/_assets/images/release/pages/homepage/submodules/about-thumbtack/images/how-to-1x-4ccfe4e4.png', | |
'2x': 'https://static5.thumbtackstatic.com/_assets/images/release/pages/homepage/submodules/about-thumbtack/images/how-to-2x-6d720865.png' | |
}" | |
below-md="{ | |
'1x': 'https://static4.thumbtackstatic.com/_assets/images/release/pages/homepage/submodules/about-thumbtack/images/how-to-1x-4ccfe4e4.png', | |
'2x': 'https://static5.thumbtackstatic.com/_assets/images/release/pages/homepage/submodules/about-thumbtack/images/how-to-2x-6d720865.png' | |
}" /> | |
</div> | |
<div class="AboutThumbtack-content column-lg-3"> | |
<h3 class="AboutThumbtack-stepTitle H4-R">1. Tell us what you need</h3> | |
<p class="AboutThumbtack-stepText B2-S">First, answer a few quick questions about what type of pro you’re looking for.</p> | |
<h3 class="AboutThumbtack-stepTitle H4-R">2. Review free quotes</h3> | |
<p class="AboutThumbtack-stepText B2-S">Within hours, you’ll receive up to five custom quotes based on your specific needs.</p> | |
<h3 class="AboutThumbtack-stepTitle H4-R">3. Hire the right pro</h3> | |
<p class="AboutThumbtack-stepText B2-S">Compare quotes, profiles, and reviews, then hire the pro that’s right for you.</p> | |
</div> | |
</div> | |
</div> | |
</about-thumbtack> | |
<states-list> | |
<div class="StatesList "> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<h2 class="StatesList-headline H2-R">Find us in all 50 states</h2> | |
</div> | |
<div class="column-lg-6"> | |
<ul class="StatesList-list"> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/al/"> | |
Alabama | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/ak/"> | |
Alaska | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/az/"> | |
Arizona | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/ar/"> | |
Arkansas | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/ca/"> | |
California | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/co/"> | |
Colorado | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/ct/"> | |
Connecticut | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/de/"> | |
Delaware | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/fl/"> | |
Florida | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/ga/"> | |
Georgia | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/hi/"> | |
Hawaii | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/id/"> | |
Idaho | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/il/"> | |
Illinois | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/in/"> | |
Indiana | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/ia/"> | |
Iowa | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/ks/"> | |
Kansas | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/ky/"> | |
Kentucky | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/la/"> | |
Louisiana | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/me/"> | |
Maine | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/md/"> | |
Maryland | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/ma/"> | |
Massachusetts | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/mi/"> | |
Michigan | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/mn/"> | |
Minnesota | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/ms/"> | |
Mississippi | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/mo/"> | |
Missouri | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/mt/"> | |
Montana | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/ne/"> | |
Nebraska | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/nv/"> | |
Nevada | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/nh/"> | |
New Hampshire | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/nj/"> | |
New Jersey | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/nm/"> | |
New Mexico | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/ny/"> | |
New York | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/nc/"> | |
North Carolina | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/nd/"> | |
North Dakota | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/oh/"> | |
Ohio | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/ok/"> | |
Oklahoma | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/or/"> | |
Oregon | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/pa/"> | |
Pennsylvania | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/ri/"> | |
Rhode Island | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/sc/"> | |
South Carolina | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/sd/"> | |
South Dakota | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/tn/"> | |
Tennessee | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/tx/"> | |
Texas | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/ut/"> | |
Utah | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/vt/"> | |
Vermont | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/va/"> | |
Virginia | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/wa/"> | |
Washington | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/dc/"> | |
Washington, DC | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/wv/"> | |
West Virginia | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/wi/"> | |
Wisconsin | |
</a> | |
</li> | |
<li class="B2-S"> | |
<a class="StatesList-list-link" | |
event-track="home page/clicked usa state" | |
event-track-on="click" | |
href="https://www.thumbtack.com/wy/"> | |
Wyoming | |
</a> | |
</li> | |
</ul> | |
</div> | |
</div> | |
</div> | |
</states-list> | |
<guarantee-tout> | |
<div class="GuaranteeTout"> | |
<div responsive-if="below-sm" | |
responsive-grid="page"> | |
<img class="GuaranteeTout-background" | |
responsive-image | |
responsive-grid="page" | |
uses-densities | |
below-sm="{ | |
'1x': 'https://static1.thumbtackstatic.com/_assets/images/release/pages/homepage/submodules/guarantee-tout/images/mobile-1x-c7a530ae.jpg', | |
'2x': 'https://static2.thumbtackstatic.com/_assets/images/release/pages/homepage/submodules/guarantee-tout/images/mobile-2x-ce406c68.jpg' | |
}" | |
> | |
</div> | |
<div responsive-if="above-sm" | |
responsive-grid="page"> | |
<div class="GuaranteeTout-background" | |
responsive-image | |
responsive-grid="page" | |
uses-densities | |
above-sm="{ | |
'1x': 'https://static5.thumbtackstatic.com/_assets/images/release/pages/homepage/submodules/guarantee-tout/images/desktop-1x-64d870ca.jpg', | |
'2x': 'https://static5.thumbtackstatic.com/_assets/images/release/pages/homepage/submodules/guarantee-tout/images/desktop-2x-e0c9d924.jpg' | |
}" | |
> | |
</div> | |
</div> | |
<div class="GuaranteeTout-toutText"> | |
<div class="page-grid"> | |
<div class="column-lg-3 column-lg-offset-3"> | |
<div class="GuaranteeTout-toutText-inner"> | |
<img class="GuaranteeTout-toutText-emblem" | |
src="https://static4.thumbtackstatic.com/_assets/svg/release/tt-guarantee-emblem_48-326a5272.svg.gz"/> | |
<div class="GuaranteeTout-toutText-title H4-R"> | |
Thumbtack Guarantee | |
</div> | |
<div class="GuaranteeTout-toutText-text B2-S"> | |
$1 Million Property Protection on over a thousand local services. | |
</div> | |
<span class="T2-S"> | |
<a class="GuaranteeTout-toutText-link" | |
href="https://www.thumbtack.com/guarantee/"> | |
Learn more | |
</a> | |
</span> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</guarantee-tout> | |
<customer-stories> | |
<div class="CustomerStories"> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<h2 class="CustomerStories-headline H2-R">Customers use Thumbtack to get millions of projects done quickly and easily</h2> | |
</div> | |
</div> | |
<div class="page-grid CustomerStories-outerWrapper"> | |
<div class="column-lg-2 CustomerStories-innerWrapper"> | |
<a href="https://www.thumbtack.com/blog/finding-an-engagement-photographer-on-thumbtack/" class="CustomerStory" | |
event-track="home page/clicked customer story" | |
event-track-on="click" | |
event-track-data="{ story_type: 'amanda' }"> | |
<div class="CustomerStory-figure" | |
style="background-image: url(https://static8.thumbtackstatic.com/_assets/images/release/pages/homepage/submodules/customer-stories/images/amanda-2fa7c886.jpg)"> | |
<div class="CustomerStory-heading"> | |
<h3 class="H4-R CustomerStory-headingCaption"> | |
Amanda hired a photographer | |
</h3> | |
</div> | |
</div> | |
<div class="CustomerStory-content"> | |
<cite class="CustomerStory-content-description B2-S theme-secondary"> | |
“<strong>Mickey</strong> is incredibly talented, worked within our budget and gave us GREAT results for the price. He's an awesome guy, and we couldn't be happier with how our engagement photos turned out.” | |
</cite> | |
<div class="CustomerStory-pro"> | |
<img src="https://static8.thumbtackstatic.com/_assets/images/release/pages/homepage/submodules/customer-stories/images/pro-mickey-76701e1b.jpg" | |
class="CustomerStory-pro-image"> | |
<div class="CustomerStory-pro-content"> | |
<h5 class="T4-S theme-secondary CustomerStory-pro-label"> | |
The pro | |
</h5> | |
<h4 class="T2-S">Mickey Strider</h4> | |
<span star-rating | |
star-rating-bind="4.7"> | |
</span> | |
<span class="B3-S"> | |
(20 reviews) | |
</span> | |
</div> | |
</div> | |
</div> | |
</a> | |
</div> | |
<div class="column-lg-2 CustomerStories-innerWrapper"> | |
<a href="https://www.thumbtack.com/blog/finding-your-voice-on-thumbtack/" class="CustomerStory" | |
event-track="home page/clicked customer story" | |
event-track-on="click" | |
event-track-data="{ story_type: 'gurpreet' }"> | |
<div class="CustomerStory-figure" | |
style="background-image: url(https://static1.thumbtackstatic.com/_assets/images/release/pages/homepage/submodules/customer-stories/images/gurpreet-e04a1d83.jpg)"> | |
<div class="CustomerStory-heading"> | |
<h3 class="H4-R CustomerStory-headingCaption"> | |
Guprit hired a singing teacher | |
</h3> | |
</div> | |
</div> | |
<div class="CustomerStory-content"> | |
<cite class="CustomerStory-content-description B2-S theme-secondary"> | |
“It was an honor learning from <strong>Sam</strong>. He is an amazing singer and teacher! I saw major improvements in my voice, breathing and vocal dynamics; connecting with songs at a level I didn't know existed.” | |
</cite> | |
<div class="CustomerStory-pro"> | |
<img src="https://static4.thumbtackstatic.com/_assets/images/release/pages/homepage/submodules/customer-stories/images/pro-sam-da0071d9.jpg" | |
class="CustomerStory-pro-image"> | |
<div class="CustomerStory-pro-content"> | |
<h5 class="T4-S theme-secondary CustomerStory-pro-label"> | |
The pro | |
</h5> | |
<h4 class="T2-S">Sam Shin</h4> | |
<span star-rating | |
star-rating-bind="4.7"> | |
</span> | |
<span class="B3-S"> | |
(32 reviews) | |
</span> | |
</div> | |
</div> | |
</div> | |
</a> | |
</div> | |
<div class="column-lg-2 CustomerStories-innerWrapper"> | |
<a href="https://www.thumbtack.com/blog/thumbtack-artists-mural-supports-colorado-river-at-colfax-whole-foods/" class="CustomerStory" | |
event-track="home page/clicked customer story" | |
event-track-on="click" | |
event-track-data="{ story_type: 'sarah' }"> | |
<div class="CustomerStory-figure" | |
style="background-image: url(https://static5.thumbtackstatic.com/_assets/images/release/pages/homepage/submodules/customer-stories/images/sarah-b78df6e9.jpg)"> | |
<div class="CustomerStory-heading"> | |
<h3 class="H4-R CustomerStory-headingCaption"> | |
Sarah hired a mural painter | |
</h3> | |
</div> | |
</div> | |
<div class="CustomerStory-content"> | |
<cite class="CustomerStory-content-description B2-S theme-secondary"> | |
“<strong>Gary</strong> was friendly, professional, and his work was incredible. He helped us create a design we loved within our budget. Whole Foods customers say how much the mural brightens our space!” | |
</cite> | |
<div class="CustomerStory-pro"> | |
<img src="https://static2.thumbtackstatic.com/_assets/images/release/pages/homepage/submodules/customer-stories/images/pro-gary-85649e63.jpg" | |
class="CustomerStory-pro-image"> | |
<div class="CustomerStory-pro-content"> | |
<h5 class="T4-S theme-secondary CustomerStory-pro-label"> | |
The pro | |
</h5> | |
<h4 class="T2-S">Gary Gomez</h4> | |
<span star-rating | |
star-rating-bind="4.7"> | |
</span> | |
<span class="B3-S"> | |
(26 reviews) | |
</span> | |
</div> | |
</div> | |
</div> | |
</a> | |
</div> | |
</div> | |
</div> | |
</customer-stories> | |
<app-upsell | |
reset-timeout-duration="4000"> | |
<div class="AppUpsell" | |
responsive-image | |
responsive-grid="page" | |
uses-densities | |
above-sm="{ | |
'1x': 'https://static1.thumbtackstatic.com/_assets/images/release/modules/app-upsell/images/appupsell-bg-1x-56aa6732.jpg', | |
'2x': 'https://static3.thumbtackstatic.com/_assets/images/release/modules/app-upsell/images/appupsell-bg-2x-e8c738a7.jpg' | |
}" | |
below-sm="false"> | |
<div class="page-grid"> | |
<div class="column-lg-3 column-sm-6"> | |
<h3 class="AppUpsell-title H3-R">Get more done anytime, anywhere</h3> | |
<p class="AppUpsell-text T2-S theme-secondary">Send project requests, get quotes, and hire the right pro with the free Thumbtack app for iPhone.</p> | |
<div class="AppUpsell-input InputButtonGroup" ng-cloak> | |
<input | |
type="text" | |
name="cellphone" | |
placeholder="Phone number" | |
ng-model="$parent.phoneNumber" /> | |
<button | |
type="submit" | |
class="Button" | |
event-track="home page/clicked text me a link" | |
event-track-on="click" | |
ng-bind="transmissionStatus || 'Text me a link'" | |
ng-click="send()"> | |
</button> | |
</div> | |
<p class="T3-S AppUpsell-helper"> | |
<a href="http://r.yoz.io/Z3.c.t"> | |
<img src="https://static3.thumbtackstatic.com/_assets/svg/release/ios-app-store-download_135x40-d0558d91.svg.gz" /> | |
</a> | |
</p> | |
</div> | |
</div> | |
</div> | |
</app-upsell> | |
<testimonial-videos> | |
<div class="TestimonialVideos"> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<h2 class="TestimonialVideos-headline H2-R">Thousands of professionals are growing their businesses with Thumbtack</h2> | |
</div> | |
</div> | |
<div class="page-grid"> | |
<div class="column-lg-4"> | |
<a href="index.html#" | |
class="TestimonialVideo-link TestimonialVideo-linkHighlight" | |
style="background-image: url(https://static1.thumbtackstatic.com/_assets/images/release/pages/homepage/submodules/testimonial-videos/images/sara-3e60bf01.jpg)" | |
event-track="home page/clicked pro stories" | |
event-track-on="click" | |
open-youtube-modal | |
youtube-autoplay | |
youtube-id="bruu4u_Z-SY"> | |
<span class="TestimonialVideo-play"> | |
<svg-icon type="play_10x10"></svg-icon> | |
</span> | |
<div class="TestimonialVideo-wrapper"> | |
<h3 class="TestimonialVideo-title H4-R">Sara</h3> | |
<span class="TestimonialVideo-description B2-S"> | |
Chef · Brooklyn, NY | |
</span> | |
</div> | |
</a> | |
</div> | |
<div class="column-lg-2"> | |
<a href="index.html#" class="TestimonialVideo-link" | |
style="background-image: url(https://static4.thumbtackstatic.com/_assets/images/release/pages/homepage/submodules/testimonial-videos/images/richard-2d596554.jpg)" | |
event-track="home page/clicked pro stories" | |
event-track-on="click" | |
open-youtube-modal | |
youtube-autoplay | |
youtube-id="jiDNg8Ichgk"> | |
<span class="TestimonialVideo-play"> | |
<svg-icon type="play_10x10"></svg-icon> | |
</span> | |
<div class="TestimonialVideo-wrapper"> | |
<h3 class="TestimonialVideo-title H4-R">Richard</h3> | |
<span class="TestimonialVideo-description B2-S"> | |
Photographer · Bronx, NY | |
</span> | |
</div> | |
</a> | |
<a href="index.html#" class="TestimonialVideo-link" | |
style="background-image: url(https://static1.thumbtackstatic.com/_assets/images/release/pages/homepage/submodules/testimonial-videos/images/katie-cd576b4e.jpg)" | |
event-track="home page/clicked pro stories" | |
event-track-on="click" | |
open-youtube-modal | |
youtube-autoplay | |
youtube-id="4NmVC8Wpxgs"> | |
<span class="TestimonialVideo-play"> | |
<svg-icon type="play_10x10"></svg-icon> | |
</span> | |
<div class="TestimonialVideo-wrapper"> | |
<h3 class="TestimonialVideo-title H4-R">Kate</h3> | |
<span class="TestimonialVideo-description B2-S"> | |
Pet Sitter · Bradenton, FL | |
</span> | |
</div> | |
</a> | |
</div> | |
</div> | |
<div class="page-grid"> | |
<div class="column-lg-2"> | |
<a href="index.html#" class="TestimonialVideo-link" | |
style="background-image: url(https://static3.thumbtackstatic.com/_assets/images/release/pages/homepage/submodules/testimonial-videos/images/bonnie-86155b0d.jpg)" | |
event-track="home page/clicked pro stories" | |
event-track-on="click" | |
open-youtube-modal | |
youtube-autoplay | |
youtube-id="_3NsbqnjNxU"> | |
<span class="TestimonialVideo-play"> | |
<svg-icon type="play_10x10"></svg-icon> | |
</span> | |
<div class="TestimonialVideo-wrapper"> | |
<h3 class="TestimonialVideo-title H4-R">Bonnie</h3> | |
<span class="TestimonialVideo-description B2-S"> | |
Tutor · Houston, TX | |
</span> | |
</div> | |
</a> | |
</div> | |
<div class="column-lg-2"> | |
<a href="index.html#" class="TestimonialVideo-link" | |
style="background-image: url(https://static2.thumbtackstatic.com/_assets/images/release/pages/homepage/submodules/testimonial-videos/images/eric-7d68e969.jpg)" | |
event-track="home page/clicked pro stories" | |
event-track-on="click" | |
open-youtube-modal | |
youtube-autoplay | |
youtube-id="aMJaW5eLsis"> | |
<span class="TestimonialVideo-play"> | |
<svg-icon type="play_10x10"></svg-icon> | |
</span> | |
<div class="TestimonialVideo-wrapper"> | |
<h3 class="TestimonialVideo-title H4-R">Eric</h3> | |
<span class="TestimonialVideo-description B2-S"> | |
Locksmith · Phoenix, AZ | |
</span> | |
</div> | |
</a> | |
</div> | |
<div class="column-lg-2"> | |
<div class="GreyBox"> | |
<h3 class="T1-R theme-secondary GreyBox-title">Are you a professional looking for new customers?</h3> | |
<a class="Button theme-medium" href="https://www.thumbtack.com/pro">Sign Up</a> | |
</div> | |
</div> | |
</div> | |
</div> | |
</testimonial-videos> | |
<homepage-sticky-header | |
fallback-logo="https://static1.thumbtackstatic.com/media/logos/thumbtack_brand_152x24.svg" | |
corresponding-element="hero"> | |
<div class="SearchForm theme-default"> | |
<form search-form open-request-form-modal | |
from-homepage="" | |
hide-intro-screen="" | |
ng-submit="submitSearch($event)" | |
class="SearchForm-form" | |
action="index.html#" | |
hercule-root-url="https://hercule.thumbtack.io" | |
hercule-version="0" | |
include-test="" | |
page-type="4" | |
search-origin="searchform-stickyheader" | |
event-name="searchform-stickyheader" | |
> | |
<div class="SearchForm-form-inputGroup 1" > | |
<span class="SearchForm-form-query B2-S" | |
ng-class="{'dropdownOpen': suggestionsOpen}"> | |
<input class="query" | |
ng-class="{'is-empty-state': isEmptyState}" | |
required | |
autocomplete="off" | |
placeholder="What service do you need?" | |
type="search" | |
event-track="home page/start service query" | |
event-track-on="keypress" | |
event-track-data="{ | |
pageType: '4', | |
searchOrigin: 'searchform-stickyheader', | |
}" | |
event-track-once | |
/> | |
<div class="SearchForm-form-query-clearQuery"> | |
<label | |
ng-class="{'is-empty-state': isEmptyState}" | |
class="SearchForm-form-query-clearQuery-wrapper" | |
for="clear-input-field" | |
ng-click="clearSearchField()" | |
> | |
<svg-icon | |
type="declined" | |
size="sm" | |
class="SearchForm-form-query-clearQuery-wrapper-icon"> | |
</svg-icon> | |
</label> | |
</div> | |
</span> | |
<label for="search-submit" | |
class=" | |
SearchForm-form-smallSubmit-wrapper | |
is-visible" | |
> | |
<svg-icon | |
type="search" | |
size="md" | |
class="HeaderSearch-form-smallSubmit-wrapper-icon"> | |
</svg-icon> | |
</label> | |
<button class=" | |
SearchForm-form-submitBtn | |
Button | |
theme-large | |
is-hidden | |
is-hidden-at-sm | |
" | |
type="submit" | |
event-track="hercule/click get started" | |
event-track-on="click" | |
event-track-data="{ | |
pageType: '4', | |
searchOrigin: 'searchform-stickyheader', | |
}"> | |
Get Started | |
</button> | |
</div> | |
</form> | |
</div> | |
</homepage-sticky-header> | |
</div> | |
<script id="template-request-form-section-header" type="text/template"> | |
<div class="page-grid"> | |
<div class="column-lg-4 column-lg-offset-1"> | |
<div class="RequestForm-sectionHeader" | |
ng-class="[ | |
(isBrandedScreen | |
? 'theme-left-aligned' : '') | |
]"> | |
<span tabindex="0" | |
ng-transclude | |
ng-class="[ | |
(isBrandedScreen | |
? 'theme-inverted H3-R theme-bold theme-title-branded' : 'H4-R') | |
]"></span> | |
</div> | |
</div> | |
</div> | |
</script> | |
<script id="template-request-form-hercule" type="text/template"> | |
<form | |
ng-submit="deepValidate() | |
? requestForm.updateCategoriesFromQuery(rfHerculeModel.chosenCategory) | |
: false" | |
schema="rfHerculeSchema" | |
schema-assign="EmptySchema" | |
schema-yields="rfHerculeModel"> | |
<request-form-template template-id="template-request-form-section-header"> | |
What are you looking for? | |
<div ng-if="!$question.field.required" class="T3-S"> | |
From house painting to personal training, we bring | |
you the right pros for every project on your list. | |
</div> | |
</request-form-template> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<span | |
search-form | |
class="SearchForm" | |
schema="rfHerculeSchema.chosenCategory" | |
schema-assign="TextInputSchema"> | |
<input class="query" | |
autocomplete="off" | |
placeholder="What services do you need?" | |
type="text" | |
ng-model="rfHerculeModel.chosenCategory" /> | |
</span> | |
</div> | |
</div> | |
<div class="T3-S RequestForm-error" | |
ng-repeat="$err in $validationErrors" | |
ng-bind="$err"> | |
</div> | |
<request-form-template | |
template-id="template-request-form-navigation" | |
scope-vars="hideBack,continueText" | |
hide-back="true" | |
continue-text="'Get started'"> | |
</request-form-template> | |
</form> | |
</script> | |
<script id="template-request-form-no-results" type="text/template"> | |
<form closes-modal-on-submit> | |
<request-form-template template-id="template-request-form-section-header"> | |
We're sorry, no categories matched that query. | |
<p>Please try again.</p> | |
</request-form-template> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<p class="B2-R RequestForm-noResultsMessage"> | |
Or, browse categories in | |
<a href="https://www.thumbtack.com/events">events</a>, | |
<a href="https://www.thumbtack.com/home-improvement">home</a>, | |
<a href="https://www.thumbtack.com/lessons">lessons</a>, | |
<a href="https://www.thumbtack.com/wellness">wellness</a>, and | |
<a href="https://www.thumbtack.com/more-services">more</a>. | |
</p> | |
</div> | |
</div> | |
<request-form-template | |
template-id="template-request-form-navigation" | |
scope-vars="hideBack,continueText" | |
hide-back="true" | |
continue-text="'Close'"> | |
</request-form-template> | |
</form> | |
</script> | |
<script id="template-request-category-chooser-radio" type="text/template"> | |
<form | |
ng-if="categories.length > 0" | |
event-track="request form/view category chooser" | |
event-track-on-init | |
event-track-data="trackingData.viewCategoryChooser()" | |
ng-init="chooserState = { showCount: 13 }" | |
ng-submit="deepValidate() | |
? setCategory($chosenCategory.value) | |
: false" | |
schema="chooserSchema" | |
schema-assign="ObjectValueKeySchema" | |
schema-yields="$chosenCategory" | |
schema-cache-id="request-form-category-chooser"> | |
<div class="RequestForm-proTout" ng-if="requestForm.serviceData"> | |
<div class="page-grid"> | |
<div class="column-lg-4 column-lg-offset-1" | |
ng-class="{'no-photo': !requestForm.serviceData.profile_picture}"> | |
<div class="RequestForm-proTout-content"> | |
<img class="RequestForm-proTout-image" | |
ng-if="requestForm.serviceData.profile_picture" | |
ng-src="{[{ requestForm.serviceData.profile_picture }]}" /> | |
<h3 class="RequestForm-proTout-text B3-S"> | |
Get quotes from | |
<span class="RequestForm-proTout-businessName B2-S"> | |
{[{ requestForm.serviceData.display_name }]} | |
</span> | |
and dozens of other | |
professionals | |
in your area. | |
</h3> | |
</div> | |
</div> | |
</div> | |
</div> | |
<request-form-template template-id="template-request-form-section-header"> | |
Which service are you interested in? | |
</request-form-template> | |
<div id="category-chooser" | |
ng-class="{'valid': $valid, 'invalid': $valid === false}"> | |
<div ng-repeat="category in categories | limitTo: chooserState.showCount" | |
class="InputContainer"> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<input-radio | |
input-radio-label="{[{ category.name }]}"> | |
<input name="category-chooser" | |
value="{[{ category.id }]}" | |
ng-model="$parent.$parent.$chosenCategory.value" | |
type="radio"> | |
</input-radio> | |
</div> | |
</div> | |
</div> | |
<div class="T3-S RequestForm-error" | |
ng-repeat="$err in $validationErrors" | |
ng-bind="$err"> | |
</div> | |
<div ng-if="chooserState.showCount < categories.length" | |
class="RequestForm-chooserShowMore"> | |
<button class="Link" | |
ng-click="chooserState.showCount = chooserState.showCount + 10"> | |
(Show more) | |
</button> | |
</div> | |
</div> | |
<request-form-template | |
template-id="template-request-form-navigation" | |
scope-vars="hideBack,forceShowSubmit" | |
force-show-submit="true" | |
hide-back="true"> | |
</request-form-template> | |
</form> | |
</script> | |
<script id="template-request-question-checkbox" type="text/template"> | |
<div | |
schema="requestFormSchema.questions[$qID].selection" | |
schema-assign="CheckboxArrayInputSchema" | |
schema-optional-if="!question.field.required" | |
ng-init="$qID = question.field.id" | |
ng-class="{'valid': $valid, 'invalid': $valid === false}"> | |
<div | |
ng-repeat="answer in question.field.possible_values" | |
ng-init="$value = '' + answer.value" | |
class="InputContainer"> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<div ng-if="!answer.can_describe"> | |
<input-checkbox | |
input-checkbox-label="{[{ answer.label }]}"> | |
<input | |
name="metadata_{[{ $qID }]}_keys[]" | |
ng-model="$model.questions[$qID].selection[$value]" | |
value="{[{ $value }]}" | |
type="checkbox"> | |
</input-checkbox> | |
</div> | |
<div ng-if="answer.can_describe" choice-other> | |
<input-checkbox> | |
<input | |
name="metadata_{[{ $qID }]}_keys[]" | |
id="{[{ $qID }]}_{[{ $value }]}" | |
ng-model="$model.questions[$qID].selection[$value]" | |
value="{[{ $value }]}" | |
type="checkbox"> | |
<label | |
for="{[{ $qID }]}_{[{ $value }]}" | |
class="InputCheckbox-label"> | |
<input | |
schema=" | |
requestFormSchema.questions[$qID][$value + '_description']" | |
schema-assign="TextInputSchema" | |
schema-optional-if="!$model.questions[$qID].selection[$value]" | |
ng-model="$model.questions[$qID][$value + '_description']" | |
name="metadata_{[{ $qID }]}_descriptions[{[{ $value }]}]" | |
type="text" | |
ng-focus="bottomInputFocus()" | |
ng-blur="bottomInputBlur()" | |
placeholder="{[{ answer.label }]}" | |
class="InputCheckbox-label-inner"> | |
</label> | |
</input-checkbox> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
<div class="T3-S RequestForm-error" | |
ng-repeat="$err in $validationErrors" | |
ng-bind="$err"> | |
</div> | |
</script> | |
<script id="template-request-question-radio" type="text/template"> | |
<div | |
schema="requestFormSchema.questions[$qID].selection" | |
schema-assign="ObjectValueKeySchema" | |
schema-optional-if="!question.field.required" | |
ng-init="$qID = question.field.id" | |
ng-class="{'valid': $valid, 'invalid': $valid === false}"> | |
<div ng-repeat="answer in question.field.possible_values" | |
ng-init="$value = '' + answer.value" | |
class="InputContainer"> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<div ng-if="!answer.can_describe"> | |
<input-radio | |
input-radio-label="{[{ answer.label }]}"> | |
<input name="metadata_{[{ $qID }]}_keys[]" | |
ng-model="$model.questions[$qID].selection.value" | |
value="{[{ $value }]}" | |
type="radio" /> | |
</input-radio> | |
</div> | |
<div ng-if="answer.can_describe" choice-other> | |
<input-radio> | |
<input name="metadata_{[{ $qID }]}_keys[]" | |
id="{[{ $qID }]}_{[{ $value }]}" | |
ng-model="$model.questions[$qID].selection.value" | |
value="{[{ $value }]}" | |
type="radio" /> | |
<label | |
for="{[{ $qID }]}_{[{ $value }]}" | |
class="InputRadio-label"> | |
<input | |
schema=" | |
requestFormSchema.questions[$qID][$value + '_description']" | |
schema-assign="TextInputSchema" | |
schema-optional-if="$model.questions[$qID].selection.value !== | |
$value" | |
ng-model="$model.questions[$qID][$value + '_description']" | |
name="metadata_{[{ $qID }]}_descriptions[{[{ $value }]}]" | |
type="text" | |
ng-focus="bottomInputFocus()" | |
ng-blur="bottomInputBlur()" | |
placeholder="{[{ answer.label }]}" /> | |
</label> | |
</input-radio> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
<div class="T3-S RequestForm-error" | |
ng-repeat="$err in $validationErrors" | |
ng-bind="$err"> | |
</div> | |
</script> | |
<script id="template-request-question-visual-checkbox" type="text/template"> | |
<div | |
schema="requestFormSchema.questions[$qID].selection" | |
schema-assign="CheckboxArrayInputSchema" | |
schema-optional-if="!question.field.required" | |
ng-init="$qID = question.field.id" | |
ng-class="{'valid': $valid, 'invalid': $valid === false}"> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<div class="VisualSelectionGroup"> | |
<div ng-repeat="answer in question.field.visual_possible_values" | |
ng-init="$value = '' + answer.key" | |
ng-class="{ | |
'VisualSelectionGroup-item': !answer.can_describe, | |
'VisualSelectionGroup-other': answer.can_describe, | |
}"> | |
<visual-selection | |
ng-if="!answer.can_describe" | |
image-src="{[{ answer.picture_url }]}" | |
image-label="{[{ answer.label }]}"> | |
<input | |
name="metadata_{[{ $qID }]}_keys[]" | |
ng-model="$model.questions[$qID].selection[$value]" | |
value="{[{ $value }]}" | |
type="checkbox" /> | |
</visual-selection> | |
<div ng-if="answer.can_describe" choice-other> | |
<input-checkbox> | |
<input | |
name="metadata_{[{ $qID }]}_keys[]" | |
ng-model="$model.questions[$qID].selection[$value]" | |
value="{[{ $value }]}" | |
type="checkbox" | |
id="{[{ $qID }]}_{[{ $value }]}_selection"/> | |
<label for="{[{ $qID }]}_{[{ $value }]}_selection" | |
class="InputCheckbox-label"> | |
<input | |
schema=" | |
requestFormSchema | |
.questions[$qID][$value + '_description']" | |
schema-assign="TextInputSchema" | |
schema-optional-if=" | |
!$model.questions[$qID].selection[$value]" | |
ng-model="$model.questions[$qID][$value + '_description']" | |
name="metadata_{[{ $qID }]}_descriptions[{[{ $value }]}]" | |
type="text" | |
ng-focus="bottomInputFocus()" | |
ng-blur="bottomInputBlur()" | |
placeholder="{[{ answer.label }]}" /> | |
</label> | |
</input-checkbox> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
<div class="T3-S RequestForm-error" | |
ng-repeat="$err in $validationErrors" | |
ng-bind="$err"> | |
</div> | |
</script> | |
<script id="template-request-question-visual-radio" type="text/template"> | |
<div | |
schema="requestFormSchema.questions[$qID].selection" | |
schema-assign="ObjectValueKeySchema" | |
schema-optional-if="!question.field.required" | |
ng-init="$qID = question.field.id" | |
ng-class="{'valid': $valid, 'invalid': $valid === false}"> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<div class="VisualSelectionGroup"> | |
<div ng-repeat="answer in question.field.visual_possible_values" | |
ng-init="$value = '' + answer.key" | |
ng-class="{ | |
'VisualSelectionGroup-item': !answer.can_describe, | |
'VisualSelectionGroup-other': answer.can_describe, | |
}"> | |
<visual-selection | |
ng-if="!answer.can_describe" | |
image-src="{[{ answer.picture_url }]}" | |
image-label="{[{ answer.label }]}"> | |
<input | |
name="metadata_{[{ $qID }]}_keys[]" | |
ng-model="$model.questions[$qID].selection.value" | |
value="{[{ $value }]}" | |
type="radio" /> | |
</visual-selection> | |
<div ng-if="answer.can_describe" choice-other> | |
<input-radio> | |
<input | |
name="metadata_{[{ $qID }]}_keys[]" | |
ng-model="$model.questions[$qID].selection.value" | |
value="{[{ $value }]}" | |
type="radio" | |
id="{[{ $qID }]}_{[{ $value }]}_selection" /> | |
<label for="{[{ $qID }]}_{[{ $value }]}_selection" | |
class="InputRadio-label"> | |
<input | |
schema="requestFormSchema | |
.questions[$qID][$value + '_description']" | |
schema-assign="TextInputSchema" | |
schema-optional-if=" | |
$model.questions[$qID].selection.value !== $value" | |
ng-model="$model.questions[$qID][$value + '_description']" | |
name="metadata_{[{ $qID }]}_descriptions[{[{ $value }]}]" | |
type="text" | |
ng-focus="bottomInputFocus()" | |
ng-blur="bottomInputBlur()" | |
placeholder="{[{ answer.label }]}" /> | |
</label> | |
</input-radio> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
<div class="T3-S RequestForm-error" | |
ng-repeat="$err in $validationErrors" | |
ng-bind="$err"> | |
</div> | |
</script> | |
<script id="template-request-question-text" type="text/template"> | |
<div | |
schema="requestFormSchema.questions[question.field.id].description" | |
schema-assign="TextInputSchema" | |
schema-optional-if="!question.field.required" | |
ng-class="{'valid': $valid, 'invalid': $valid === false}" | |
class="page-grid"> | |
<div class="column-lg-6"> | |
<textarea | |
ng-if="question.field.multi_line" | |
class="RequestForm-textArea" | |
ng-focus="bottomInputFocus()" | |
ng-blur="bottomInputBlur()" | |
ng-model="$model.questions[question.field.id].description" | |
name="metadata_{[{ question.field.id }]}" | |
placeholder="{[{ question.field.placeholder }]}" /> | |
<input | |
ng-if="!question.field.multi_line" | |
ng-model="$model.questions[question.field.id].description" | |
name="metadata_{[{ question.field.id }]}" | |
type="text" | |
placeholder="{[{ question.field.placeholder }]}" /> | |
</div> | |
</div> | |
<div class="T3-S RequestForm-error" | |
ng-repeat="$err in $validationErrors" | |
ng-bind="$err"> | |
</div> | |
</script> | |
<script id="template-request-questions" type="text/template"> | |
<div | |
event-track="request form/view category questions" | |
event-track-watch="activeSection.id" | |
event-track-if="!usesSections || activeSection.id.indexOf('question-') === 0" | |
event-track-once | |
event-track-data="trackingData.viewCategoryQuestions()"> | |
<fieldset | |
ng-repeat="$question in requestForm.form.fields" | |
ng-if="$question.field.type === 'text' | |
|| $question.field.type === 'enumeration' | |
|| $question.field.type === 'visual_enumeration'" | |
ng-show="!usesSections || | |
activeSection.id === 'question-' + $question.field.id" | |
request-form-section="'question-' + $question.field.id" | |
schema-validation-subsection | |
event-track="request form/provide category question answer" | |
event-track-on="change" | |
event-track-data="trackingData.provideCategoryQuestionAnswer($question)" | |
ng-class="{ | |
required: $question.field.required, | |
Card: !usesSections | |
}" | |
schema="requestFormSchema.questions[{[{ $question.field.id }]}]" | |
schema-assign="EmptySchema"> | |
<div | |
ng-if="activeSection.id === 'question-' + $question.field.id" | |
event-track="request form/view category question section" | |
event-track-on-init | |
event-track-data="trackingData.viewCategoryQuestionSection($question)"></div> | |
<input | |
type="hidden" | |
name="metadata_fields[]" | |
value="{[{ $question.id }]}" /> | |
<request-form-template template-id="template-request-form-section-header"> | |
{[{ $question.label }]} | |
<div ng-if="$question.subtext" class="B2-S"> | |
{[{ $question.subtext }]} | |
</div> | |
<div ng-if="!$question.field.required" class="B3-S"> | |
Optional | |
</div> | |
</request-form-template> | |
<request-form-template | |
ng-if="$question.field.type === 'enumeration' && | |
$question.field.allows_multiple_values" | |
template-id="template-request-question-checkbox" | |
scope-vars="question" | |
question="$question"> | |
</request-form-template> | |
<request-form-template | |
ng-if="$question.field.type === 'enumeration' && | |
!$question.field.allows_multiple_values" | |
template-id="template-request-question-radio" | |
scope-vars="question" | |
question="$question"> | |
</request-form-template> | |
<request-form-template | |
ng-if="$question.field.type === 'visual_enumeration' && | |
$question.field.allows_multiple_values" | |
template-id="template-request-question-visual-checkbox" | |
scope-vars="question" | |
question="$question"> | |
</request-form-template> | |
<request-form-template | |
ng-if="$question.field.type === 'visual_enumeration' && | |
!$question.field.allows_multiple_values" | |
template-id="template-request-question-visual-radio" | |
scope-vars="question" | |
question="$question"> | |
</request-form-template> | |
<request-form-template | |
ng-if="$question.field.type === 'text'" | |
template-id="template-request-question-text" | |
class="RequestForm-standaloneInputSection" | |
scope-vars="question" | |
question="$question"> | |
</request-form-template> | |
<request-form-template | |
template-id="template-request-form-navigation" | |
scope-vars="hideBack" | |
hide-back="$first && requestForm.categories.length === 1 && hideIntroScreen"> | |
</request-form-template> | |
</fieldset> | |
</div> | |
</script> | |
<script id="template-request-description" type="text/template"> | |
<div | |
schema="requestFormSchema.anythingElse.anythingElse" | |
schema-assign="EmptySchema" | |
schema-default="{ customerHasMoreInfo: false }"> | |
<request-form-template template-id="template-request-form-section-header"> | |
Anything else the {[{ requestForm.activeCategory.sentence_taxonym }]} should know? | |
</request-form-template> | |
<div class="InputContainer is-first"> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<input-radio | |
input-radio-label="No"> | |
<input | |
name="ngAnythingElse" | |
ng-model="$model.anythingElse.anythingElse.customerHasMoreInfo" | |
ng-value="false" | |
type="radio" /> | |
</input-radio> | |
</div> | |
</div> | |
</div> | |
<div class="InputContainer"> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<input-radio | |
input-radio-label="Yes"> | |
<input | |
name="ngAnythingElse" | |
ng-model="$model.anythingElse.anythingElse.customerHasMoreInfo" | |
ng-value="true" | |
type="radio" /> | |
</input-radio> | |
</div> | |
</div> | |
</div> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<div | |
ng-show="$model.anythingElse.anythingElse.customerHasMoreInfo" | |
ng-class="{'valid': $valid, 'invalid': $valid === false}" | |
schema="requestFormSchema.anythingElse.anythingElse.moreInfo" | |
schema-assign="TextInputSchema" | |
schema-optional> | |
<textarea | |
class="RequestForm-textArea" | |
placeholder="Tell us more." | |
ng-model="$model.anythingElse.anythingElse.moreInfo" | |
event-track="request form/provide additional information" | |
event-track-on="blur" | |
event-track-once | |
event-track-if="$valid && form.req_description.$dirty" | |
event-track-data="trackingData.provideAdditionalInformation( | |
$model.anythingElse.anythingElse.moreInfo)" | |
name="req_description"> | |
</textarea> | |
<div class="T3-S RequestForm-error" | |
ng-repeat="$err in $validationErrors" | |
ng-bind="$err"> | |
</div> | |
</div> | |
<div ng-if="!$model.anythingElse.anythingElse.customerHasMoreInfo"> | |
<input type="hidden" name="req_description" value=""> | |
</div> | |
</div> | |
</div> | |
</div> | |
</script> | |
<script id="template-request-service-location" type="text/template"> | |
<div ng-if="category.travel_types.length > 1" | |
schema="requestFormSchema.location.serviceLocation" | |
schema-assign="CheckboxArrayInputSchema" | |
schema-default="{ toprovider: true, tocustomer: true }"> | |
<div ng-class="{'valid': $valid, 'invalid': $valid === false}"> | |
<request-form-template template-id="template-request-form-section-header"> | |
How would you like to meet with the {[{ category.sentence_taxonym }]}? | |
</request-form-template> | |
<div class="InputContainer is-first page-grid"> | |
<div | |
class="column-lg-6" | |
ng-if="category.travel_types.indexOf('toprovider') >= 0"> | |
<input-checkbox | |
input-checkbox-label="I travel to the {[{ category.sentence_taxonym }]}"> | |
<input | |
id="service-location-toprovider" | |
ng-model="$model.location.serviceLocation.toprovider" | |
event-track="request form/change travel selection" | |
event-track-on="change" | |
event-track-data="trackingData.changeTravelSelection( | |
$model.location.serviceLocation)" | |
name="req_travel[]" | |
value="toprovider" | |
type="checkbox"> | |
</input-checkbox> | |
<request-form-template | |
ng-if="$model.location.serviceLocation.toprovider" | |
template-id="template-request-service-location-distance"> | |
</request-form-template> | |
</div> | |
</div> | |
<div class="InputContainer page-grid"> | |
<div | |
class="column-lg-6" | |
ng-if="category.travel_types.indexOf('tocustomer') >= 0"> | |
<input-checkbox | |
input-checkbox-label="The {[{ category.sentence_taxonym }]} travels to me"> | |
<input | |
id="service-location-tocustomer" | |
ng-model="$model.location.serviceLocation.tocustomer" | |
event-track="request form/change travel selection" | |
event-track-on="change" | |
event-track-data="trackingData.changeTravelSelection( | |
$model.location.serviceLocation)" | |
name="req_travel[]" | |
value="tocustomer" | |
type="checkbox"> | |
</input-checkbox> | |
</div> | |
</div> | |
<div class="InputContainer page-grid"> | |
<div | |
class="column-lg-6" | |
ng-if="category.travel_types.indexOf('remote') >= 0"> | |
<input-checkbox | |
input-checkbox-label="Phone or internet (no in-person meeting)"> | |
<input | |
id="service-location-remote" | |
ng-model="$model.location.serviceLocation.remote" | |
event-track="request form/change travel selection" | |
event-track-on="change" | |
event-track-data="trackingData.changeTravelSelection( | |
$model.location.serviceLocation)" | |
name="req_travel[]" | |
value="remote" | |
type="checkbox"> | |
</input-checkbox> | |
</div> | |
</div> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<div class="T3-S RequestForm-error" | |
ng-repeat="$err in $validationErrors" | |
ng-bind="$err"> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</script> | |
<script id="template-request-service-location-distance-standalone" type="text/template"> | |
<request-form-template template-id="template-request-form-section-header"> | |
How far are you willing to travel? | |
</request-form-template> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<request-form-template template-id="template-request-service-location-distance"> | |
</request-form-template> | |
<div class="T3-S RequestForm-error" | |
ng-repeat="$err in $validationErrors" | |
ng-bind="$err"> | |
</div> | |
</div> | |
</div> | |
</script> | |
<script id="template-request-service-location-distance" type="text/template"> | |
<div | |
class="RequestForm-serviceLocationDistance" | |
schema="requestFormSchema.location.distance" | |
schema-assign="ObjectValueKeySchema" | |
schema-default="requestForm.options.location.defaultDistance"> | |
<input | |
type="hidden" | |
name="req_travel_dist" | |
value="{[{ $model.location.distance.value }]}"> | |
<aura-select> | |
<select | |
id="travel-distance" | |
ng-model="$model.location.distance.value" | |
ng-options="dist.value as dist.label for dist | |
in requestForm.options.location.distances"> | |
</select> | |
</aura-select> | |
</div> | |
</script> | |
<script id="template-request-image-upload" type="text/template"> | |
<request-form-template template-id="template-request-form-section-header"> | |
{[{ | |
category.image_upload_question_copy | |
|| "Would you like to add photos to describe your project?" | |
}]} | |
</request-form-template> | |
<div class="InputContainer InputContainer-isFirst"> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<input-radio | |
input-radio-label="No"> | |
<input | |
ng-model="requestForm.addImages" | |
ng-value="false" | |
type="radio" /> | |
</input-radio> | |
</div> | |
</div> | |
</div> | |
<div class="InputContainer"> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<input-radio | |
input-radio-label="Yes"> | |
<input | |
ng-model="requestForm.addImages" | |
ng-value="true" | |
type="radio" /> | |
</input-radio> | |
</div> | |
</div> | |
</div> | |
<div class="page-grid RequestForm-attachments" ng-show="requestForm.addImages"> | |
<div> | |
<div class="column-lg-3 column-md-6" | |
ng-repeat="attachment in requestForm.attachments"> | |
<div class="RequestForm-attachmentBox"> | |
<div class="RequestForm-attachmentPreview" | |
ng-hide="attachment.uploadFailed" | |
ng-class="{'is-focused': attachment.previewInFocus}"> | |
<div class="RequestForm-attachmentPreview-image" | |
ng-class="{'uploading': attachment.isUploading}" | |
ng-style="{'background-image': requestForm.getImageSource(attachment)}"> | |
</div> | |
<textarea | |
class="RequestForm-attachmentPreview-description" | |
ng-model="attachment.description" | |
ng-focus="attachment.previewInFocus = true" | |
ng-blur="attachment.previewInFocus = false" | |
type="text" | |
autosize | |
placeholder="Write your description here" | |
maxlength="350"> | |
</textarea> | |
</div> | |
<div class="RequestForm-attachmentError" | |
ng-show="attachment.uploadFailed"> | |
<svg-icon class="RequestForm-attachmentError-icon" | |
type="error" | |
size="lg"> | |
</svg-icon> | |
<span class="B2-S RequestForm-attachmentError-title"> | |
Upload failed | |
</span> | |
<span class="B2-S RequestForm-attachmentError-text"> | |
A problem occurred during the upload. | |
</span> | |
<button class="Button theme-secondary theme-large | |
RequestForm-attachmentError-button" | |
ng-click="requestForm.tryAgain($event, attachment)"> | |
Try Again | |
</button> | |
</div> | |
<div class="RequestForm-attachmentBox-close" | |
ng-click="removeAttachment($index)"> | |
<svg-icon type="cancel" size="sm"></svg-icon> | |
</div> | |
<div class="RequestForm-imageLoader" ng-show="attachment.isUploading"> | |
<svg-icon type="puff_44x44"></svg-icon> | |
</div> | |
</div> | |
<div class="Spacer-3"></div> | |
</div> | |
<attach-button | |
class="column-lg-6" | |
attachments-bind="attachments" | |
ng-show="requestForm.attachments.length < requestForm.maxAttachments" | |
on-attachment="processImage" | |
accept-file-types="image/bmp, image/gif, image/jpeg, image/jpg, image/png"> | |
<a class="Button theme-large RequestForm-addPhotos theme-secondary"> | |
<svg-icon type="add" size="sm"></svg-icon> | |
Add {[{ requestForm.attachments.length > 0 ? "More " : "" }]}Photos | |
</a> | |
</attach-button> | |
</div> | |
<input type="hidden" name="attachment_data" value="{[{ requestForm.getAttachmentData() }]}"> | |
</div> | |
<div class="T3-S RequestForm-error" ng-repeat="$err in requestForm.imageUploadErrors" | |
ng-bind="$err"> | |
</div> | |
</script> | |
<script id="template-request-scheduling-event" type="text/template"> | |
<request-form-template | |
template-id="template-request-form-section-header"> | |
What day do you need the {[{ category.sentence_name }]}? | |
</request-form-template> | |
<div | |
ng-if="activeSection.id === 'scheduling'" | |
event-track="request form/view scheduling event calendar selector" | |
event-track-on-init | |
event-track-data="trackingData.getSchedulingDefault(requestForm)"></div> | |
<div class="RequestForm-calendarSelector InputContainer" | |
schema="requestFormSchema.scheduling.eventDay" | |
schema-assign="CalendarSchema" | |
ng-class="{'valid': $valid, 'invalid': $valid === false}"> | |
<calendar-selector | |
is-single-select-calendar="true" | |
is-job-date-selector="true" | |
selected-days="$model.scheduling.eventDay" | |
start-date="schedulingHandler.getCalendarStartDate()"> | |
</calendar-selector> | |
<div class="T3-S RequestForm-error" | |
ng-repeat="$err in $validationErrors" | |
ng-bind="$err"> | |
</div> | |
</div> | |
</script> | |
<script id="template-request-scheduling-event-time" type="text/template"> | |
<request-form-template | |
template-id="template-request-form-section-header"> | |
What time do you need the {[{ category.sentence_name }]}? | |
</request-form-template> | |
<div | |
ng-if="activeSection.id === 'schedulingTimes'" | |
event-track="request form/view scheduling event time picker" | |
event-track-on-init | |
event-track-data="trackingData.getSchedulingDefault(requestForm)"></div> | |
<input | |
type="hidden" | |
name="scheduling_timestamps_array" | |
ng-value="schedulingHandler.finalizedTimestamps" /> | |
<div class="InputContainer theme-group-container"> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<div | |
schema="requestFormSchema.event.eventTime" | |
schema-assign="TimeSchema" | |
class="RequestForm-schedulingSelector" | |
ng-class="{'valid': $valid, 'invalid': $valid === false}"> | |
<label for="scheduling-time" class="RequestForm-inputLabel T2-S"> | |
{[{ schedulingHandler.hasDuration ? 'Start time' : 'Time' }]} | |
</label> | |
<aura-select theme-limit-height> | |
<select | |
id="scheduling-time" | |
ng-model="$model.event.eventTime" | |
ng-options="selectedTime.value as selectedTime.label for | |
selectedTime in schedulingHandler.selectTimesArray"> | |
</select> | |
</aura-select> | |
<div class="T3-S RequestForm-error" | |
ng-repeat="$err in $validationErrors" | |
ng-bind="$err"> | |
</div> | |
</div> | |
<div ng-if="schedulingHandler.hasDuration"> | |
<div | |
ng-if="activeSection.id === 'schedulingTimes'" | |
event-track="request form/view scheduling event time picker (duration)" | |
event-track-on-init | |
event-track-data="trackingData.getSchedulingDefault(requestForm)"></div> | |
<request-form-template | |
template-id="template-request-scheduling-event-duration" | |
scope-vars="category" | |
category="requestForm.activeCategory"> | |
</request-form-template> | |
</div> | |
</div> | |
</div> | |
</div> | |
</script> | |
<script id="template-request-scheduling-event-duration" type="text/template"> | |
<div | |
schema="requestFormSchema.event.eventDuration" | |
schema-assign="{[{ | |
category.specifiedDurationArray | |
? 'ObjectValueKeySchema' | |
: 'DurationSchema' | |
}]}" | |
class="RequestForm-schedulingSelector" | |
ng-class="{'valid': $valid, 'invalid': $valid === false}"> | |
<label for="scheduling-duration" class="RequestForm-inputLabel T2-S"> | |
Duration (hours) | |
</label> | |
<div ng-if="category.specifiedDurationArray"> | |
<aura-select theme-limit-height> | |
<select | |
id="scheduling-duration" | |
ng-model="$model.event.eventDuration" | |
ng-options="duration in category.specifiedDurationArray"> | |
</select> | |
</aura-select> | |
</div> | |
<div ng-if="!category.specifiedDurationArray"> | |
<input | |
id="scheduling-duration" | |
ng-model="$model.event.eventDuration" | |
placeholder="ex. "4"" | |
type="tel"> | |
</div> | |
<div class="T3-S RequestForm-error" | |
ng-repeat="$err in $validationErrors" | |
ng-bind="$err"> | |
</div> | |
</div> | |
</script> | |
<script id="template-request-scheduling-multi-cadence" type="text/template"> | |
<request-form-template | |
ng-if="schedulingHandler.schedulingArchetype === 'multi_recurring'" | |
template-id="template-request-form-section-header"> | |
How often do you need the {[{ category.sentence_name }]}? | |
</request-form-template> | |
<request-form-template | |
ng-if="schedulingHandler.schedulingArchetype === 'multi_mixed'" | |
template-id="template-request-form-section-header"> | |
Will you need {[{ category.sentence_name }]} more than once? | |
</request-form-template> | |
<div | |
ng-if="activeSection.id === 'cadence'" | |
event-track="request form/view scheduling cadence preference" | |
event-track-on-init | |
event-track-data="trackingData.getSchedulingDefault(requestForm)"></div> | |
<div | |
schema="requestFormSchema.cadence.cadencePreference" | |
schema-assign="MultipleChoiceInputSchema"> | |
<div | |
class="InputContainer" | |
ng-repeat="cadence in schedulingHandler.cadenceOptions"> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<input-radio input-radio-label="{[{ cadence.label }]}"> | |
<input | |
name="cadence_preference" | |
ng-model="$model.cadence.cadencePreference" | |
value="{[{ cadence.value }]}" | |
type="radio" /> | |
</input-radio> | |
</div> | |
</div> | |
</div> | |
</div> | |
<div class="T3-S RequestForm-error" | |
ng-repeat="$err in $validationErrors" | |
ng-bind="$err"> | |
</div> | |
</script> | |
<script id="template-request-scheduling-multi-cadence-days-times" type="text/template"> | |
<request-form-template | |
template-id="template-request-form-section-header"> | |
When are you available? | |
</request-form-template> | |
<div | |
ng-if="activeSection.id === 'cadenceDaysTimes'" | |
event-track="request form/view scheduling cadence timeslots" | |
event-track-on-init | |
event-track-data="trackingData.getSchedulingDefault(requestForm)"></div> | |
<input | |
type="hidden" | |
name="scheduling_timestamps_array" | |
ng-value="schedulingHandler.finalizedTimestamps" /> | |
<input | |
type="hidden" | |
name="cadence_days_times" | |
ng-value="schedulingHandler.finalizedCadenceDaysTimes" /> | |
<div | |
class="RequestForm-scheduling-timeslots | |
" | |
schema="requestFormSchema.cadenceDaysTimes.daysTimes" | |
schema-assign="CheckboxArrayInputSchema"> | |
<div class="InputContainer" ng-repeat="timeslot in schedulingHandler.cadenceDaysTimes"> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<input-checkbox | |
input-checkbox-label="{[{ timeslot.value }]}"> | |
<input | |
type="checkbox" | |
ng-model="$model.cadenceDaysTimes.daysTimes[timeslot.value]"> | |
</input-checkbox> | |
</div> | |
</div> | |
</div> | |
<div class="T3-S RequestForm-error" | |
ng-repeat="$err in $validationErrors" | |
ng-bind="$err"> | |
</div> | |
</div> | |
</script> | |
<script id="template-request-scheduling-multi" type="text/template"> | |
<request-form-template | |
ng-if="schedulingHandler.schedulingArchetype === 'multi_nonrecurring' | |
|| (schedulingHandler.schedulingArchetype === 'multi_mixed' | |
&& $model.cadence.cadencePreference === 'just_once')" | |
template-id="template-request-form-section-header"> | |
When would you like the {[{ category.sentence_name }]}? | |
</request-form-template> | |
<div | |
ng-if="activeSection.id === 'scheduling' && !schedulingHandler.isAsapCategory" | |
event-track="request form/view scheduling day preference" | |
event-track-on-init | |
event-track-data="trackingData.getSchedulingDefault(requestForm)"></div> | |
<div | |
ng-if="activeSection.id === 'scheduling' && schedulingHandler.isAsapCategory" | |
event-track="request form/view scheduling day preference (ASAP)" | |
event-track-on-init | |
event-track-data="trackingData.getSchedulingDefault(requestForm)"></div> | |
<input | |
type="hidden" | |
name="scheduling_timestamps_array" | |
ng-value="schedulingHandler.finalizedTimestamps" /> | |
<div | |
schema="requestFormSchema.scheduling.dayPreference" | |
schema-assign="MultipleChoiceInputSchema"> | |
<div class="InputContainer" ng-repeat="preference in schedulingHandler.dayPreferences"> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<input-radio | |
input-radio-label="{[{ preference.label }]}" | |
ng-click="scrollToSchedulingCalendar($event)"> | |
<input | |
name="scheduling_day_preference" | |
ng-model="$model.scheduling.dayPreference" | |
value="{[{ preference.value }]}" | |
type="radio" /> | |
</input-radio> | |
</div> | |
</div> | |
</div> | |
</div> | |
<request-form-template | |
ng-if="$model.scheduling.dayPreference === 'specific_dates'" | |
template-id="template-request-scheduling-multi-calendar"> | |
</request-form-template> | |
<div class="T3-S RequestForm-error" | |
ng-repeat="$err in $validationErrors" | |
ng-bind="$err"> | |
</div> | |
</script> | |
<script id="template-request-scheduling-multi-calendar" type="text/template"> | |
<div class="RequestForm-calendarSelector InputContainer" | |
schema="requestFormSchema.scheduling.selectedDays" | |
schema-assign="CalendarSchema" | |
ng-class="{'valid': $valid, 'invalid': $valid === false}"> | |
<calendar-selector | |
is-job-date-selector="true" | |
selected-days="$model.scheduling.selectedDays" | |
start-date="schedulingHandler.getCalendarStartDate()"> | |
</calendar-selector> | |
</div> | |
</script> | |
<script id="template-request-scheduling-timeslots" type="text/template"> | |
<request-form-template | |
ng-if="$model.scheduling.dayPreference === 'today' | |
|| $model.scheduling.dayPreference === 'tomorrow' | |
|| $model.scheduling.dayPreference === 'next_few_days' | |
|| $model.scheduling.dayPreference === 'within_a_week'" | |
template-id="template-request-scheduling-timeslots-general" | |
scope-vars="category" | |
category="requestForm.activeCategory"> | |
</request-form-template> | |
<request-form-template | |
ng-if="$model.scheduling.dayPreference === 'specific_dates'" | |
template-id="template-request-scheduling-timeslots-specific" | |
scope-vars="category" | |
category="requestForm.activeCategory"> | |
</request-form-template> | |
</script> | |
<script id="template-request-scheduling-timeslots-general" type="text/template"> | |
<request-form-template | |
template-id="template-request-form-section-header"> | |
What times work best for your schedule? | |
</request-form-template> | |
<div | |
ng-if="activeSection.id === 'schedulingTimes'" | |
event-track="request form/view scheduling general timeslots" | |
event-track-on-init | |
event-track-data="trackingData.getSchedulingDefault(requestForm)"></div> | |
<div | |
class="RequestForm-scheduling-timeslots | |
" | |
schema="requestFormSchema.timeslots.general" | |
schema-assign="CheckboxArrayInputSchema"> | |
<div | |
class="InputContainer" | |
ng-class="{ 'disabled': schedulingHandler.isAsapCategory | |
&& schedulingHandler.checkAsapTodayExpired( | |
$model, timeslot.hourOffset) }" | |
ng-repeat="timeslot in schedulingHandler.getTimeslots()"> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<input-checkbox | |
input-checkbox-label="{[{ timeslot.label }]}"> | |
<input | |
type="checkbox" | |
ng-model="$model.timeslots.general[timeslot.value]"> | |
</input-checkbox> | |
</div> | |
</div> | |
</div> | |
<div class="T3-S RequestForm-error" | |
ng-repeat="$err in $validationErrors" | |
ng-bind="$err"> | |
</div> | |
</div> | |
</script> | |
<script id="template-request-scheduling-timeslots-specific" type="text/template"> | |
<request-form-template | |
template-id="template-request-form-section-header"> | |
What times work best for your schedule? | |
</request-form-template> | |
<div | |
ng-if="activeSection.id === 'schedulingTimes'" | |
event-track="request form/view scheduling specific timeslots" | |
event-track-on-init | |
event-track-data="trackingData.getSchedulingDefault(requestForm)"></div> | |
<div | |
class="RequestForm-scheduling-timeslots | |
" | |
schema="requestFormSchema.timeslots.specific" | |
schema-assign="CalendarTimeslotSchema"> | |
<div ng-repeat="dateObj in $model.scheduling.selectedDays" | |
ng-init="specificTimeslots = schedulingHandler.generateSpecificTimeslots(dateObj)"> | |
<div class="RequestForm-scheduling-timeslots-label" | |
ng-init="dateLabel = schedulingHandler.generateSplitDateLabel(dateObj)"> | |
{[{ dateLabel.day }]}, | |
<span class="RequestForm-scheduling-timeslots-label-date"> | |
{[{ dateLabel.date }]} | |
</span> | |
</div> | |
<div class="InputContainer" ng-repeat="timeslot in specificTimeslots"> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<input-checkbox | |
input-checkbox-label="{[{ timeslot.label }]}"> | |
<input | |
type="checkbox" | |
ng-model="$model.timeslots.specific[timeslot.value]"> | |
</input-checkbox> | |
</div> | |
</div> | |
</div> | |
</div> | |
<div class="T3-S RequestForm-error" | |
ng-repeat="$err in $validationErrors" | |
ng-bind="$err"> | |
</div> | |
</div> | |
</script> | |
<script id="template-request-scheduling" type="text/template"> | |
<request-form-template template-id="template-request-form-section-header"> | |
When do you need {[{ category.sentence_name }]}? | |
</request-form-template> | |
<div | |
ng-if="category.scheduling_type === 'event'" | |
schema="requestFormSchema.scheduling.scheduling" | |
schema-assign="EmptySchema"> | |
<div> | |
<input type="hidden" name="req_schedule_description" | |
value="{[{ getRequestSchedulingString($model.scheduling.scheduling) }]}"> | |
<input type="hidden" name="req_date_estimate" | |
value="4"> | |
<input type="hidden" name="req_needed_time" | |
value="{[{ $model.scheduling.scheduling.date | |
+ ' ' | |
+ $model.scheduling.scheduling.time }]}"> | |
</div> | |
<request-form-template template-id="template-request-scheduling-date-and-time"> | |
</request-form-template> | |
</div> | |
<div | |
ng-if="category.scheduling_type === 'appointment'" | |
schema="requestFormSchema.scheduling.scheduling" | |
schema-assign="EmptySchema"> | |
<div | |
schema="requestFormSchema.scheduling.scheduling.schedulingType" | |
schema-assign="EmptySchema" | |
schema-default="'I\'m flexible'" | |
ng-class="{'valid': $valid, 'invalid': $valid === false}" | |
class="page-grid"> | |
<div class="column-lg-6"> | |
<input | |
ng-if="$model.scheduling.scheduling.schedulingType !== 'date' | |
&& $model.scheduling.scheduling.schedulingType !== 'other'" | |
type="hidden" | |
name="req_schedule_description" | |
value="{[{ $model.scheduling.scheduling.schedulingType }]}"> | |
<div ng-if="$model.scheduling.scheduling.schedulingType === 'date'"> | |
<input type="hidden" name="req_date_estimate" | |
value="4"> | |
<input type="hidden" name="req_needed_time" | |
value="{[{ $model.scheduling.scheduling.date | |
+ ' ' | |
+ $model.scheduling.scheduling.time }]}"> | |
</div> | |
<input | |
ng-if="$model.scheduling.scheduling.schedulingType === 'other'" | |
type="hidden" | |
name="req_schedule_description" | |
value="{[{ $model.scheduling.scheduling.customDescription }]}"> | |
<div class="RequestForm-schedulingSelector"> | |
<aura-select | |
aura-select-label="Select an option"> | |
<select | |
event-track="request form/change scheduling type" | |
event-track-on="change" | |
event-track-data="trackingData.genericSelection( | |
$model.scheduling.scheduling.schedulingType)" | |
ng-model="$model.scheduling.scheduling.schedulingType"> | |
<option | |
value="I'm flexible"> | |
I'm flexible | |
</option> | |
<option value="In the next few days"> | |
In the next few days | |
</option> | |
<option value="As soon as possible"> | |
As soon as possible | |
</option> | |
<option value="date"> | |
On one particular date | |
</option> | |
<option value="other"> | |
Other (I'd need to describe) | |
</option> | |
</select> | |
</aura-select> | |
</div> | |
</div> | |
</div> | |
<div ng-class="{'valid': $valid, 'invalid': $valid === false}" | |
class="page-grid"> | |
<div class="column-lg-6"> | |
<div | |
schema="requestFormSchema.scheduling.scheduling.customDescription" | |
schema-assign="TextInputSchema" | |
ng-if="$model.scheduling.scheduling.schedulingType === 'other'"> | |
<textarea | |
placeholder="When would you like to schedule this for?" | |
class="RequestForm-textArea" | |
id="scheduling-description" | |
ng-model="$model.scheduling.scheduling.customDescription"> | |
</textarea> | |
<div class="T3-S RequestForm-error" | |
ng-repeat="$err in $validationErrors" | |
ng-bind="$err"> | |
</div> | |
</div> | |
</div> | |
</div> | |
<request-form-template | |
ng-if="$model.scheduling.scheduling.schedulingType === 'date'" | |
template-id="template-request-scheduling-date-and-time"> | |
</request-form-template> | |
</div> | |
</script> | |
<script id="template-request-scheduling-date-and-time" type="text/template"> | |
<div class="InputContainer theme-group-container"> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<div | |
schema="requestFormSchema.scheduling.scheduling.date" | |
schema-assign="DateSchema" | |
ng-class="{'valid': $valid, 'invalid': $valid === false}"> | |
<label | |
for="scheduling-date" | |
class="RequestForm-inputLabel T2-S"> | |
{[{ category.scheduling_question_text || | |
"What day do you need the " + category.sentence_taxonym + "?" }]} | |
</label> | |
<input | |
date-picker | |
id="scheduling-date" | |
placeholder="Click to pick a date" | |
ng-model="$model.scheduling.scheduling.date" | |
type="text" | |
readonly="readonly"> | |
<div class="T3-S RequestForm-error" | |
ng-repeat="$err in $validationErrors" | |
ng-bind="$err"> | |
</div> | |
</div> | |
</div> | |
<div class="column-lg-3"> | |
<div | |
schema="requestFormSchema.scheduling.scheduling.time" | |
schema-assign="TimeSchema" | |
ng-class="{'valid': $valid, 'invalid': $valid === false}"> | |
<label for="scheduling-time" class="RequestForm-inputLabel T2-S"> | |
At what time? | |
</label> | |
<input | |
id="scheduling-time" | |
placeholder="ex. "2pm"" | |
ng-model="$model.scheduling.scheduling.time" | |
type="text"> | |
<div class="T3-S RequestForm-error" | |
ng-repeat="$err in $validationErrors" | |
ng-bind="$err"> | |
</div> | |
</div> | |
</div> | |
<div class="column-lg-3"> | |
<div | |
schema="requestFormSchema.scheduling.scheduling.duration" | |
schema-assign="DurationSchema" | |
schema-optional-if="!(category.requires_duration | |
|| $model.scheduling.scheduling.duration)" | |
ng-class="{'valid': $valid, 'invalid': $valid === false}"> | |
<label for="scheduling-duration" class="RequestForm-inputLabel T2-S"> | |
For how many hours? | |
<span ng-if="!category.requires_duration" class="T4-S"> | |
(Optional) | |
</span> | |
</label> | |
<input | |
id="scheduling-duration" | |
name="req_needed_duration_hours" | |
placeholder="ex. "4"" | |
ng-model="$model.scheduling.scheduling.duration" | |
type="text"> | |
<div class="T3-S RequestForm-error" | |
ng-repeat="$err in $validationErrors" | |
ng-bind="$err"> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</script> | |
<script id="template-request-zip-code" type="text/template"> | |
<div | |
schema="requestFormSchema.zipCode.zipCode" | |
schema-assign="ZipCodeSchema" | |
schema-default="'{[{ zipCode }]}'" | |
class="page-grid"> | |
<div | |
ng-class="{'valid': $valid, 'invalid': $valid === false}" | |
class="column-lg-4 column-lg-offset-1"> | |
<input | |
id="zip-code" | |
placeholder="Zip code" | |
class="theme-center-align" | |
ng-model="$model.zipCode.zipCode" | |
ng-change="updateZipCode($model.zipCode.zipCode)" | |
event-track="request form/provide zip code" | |
event-track-on="blur" | |
event-track-if="$valid && form.req_zip_code_id.$dirty" | |
event-track-data="trackingData.getDefault()" | |
name="req_zip_code_id" | |
type="text" | |
pattern="\d*" | |
placeholder="Zip code" /> | |
<div | |
class="T3-S RequestForm-error" | |
ng-repeat="$err in $validationErrors" | |
ng-bind="$err"> | |
</div> | |
</div> | |
</div> | |
</script> | |
<script id="template-request-contact-email" type="text/template"> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<div | |
schema="requestFormSchema.contactInfo.email" | |
schema-assign="EmailSchema" | |
ng-if="!requestForm.options.loggedIn"> | |
<div ng-class="{'valid': $valid, 'invalid': $valid === false}" | |
class="column-lg-4 column-lg-offset-1"> | |
<input | |
id="email" | |
placeholder="Email address" | |
ng-model="$model.contactInfo.email" | |
event-track="request form/provide email address" | |
event-track-on="blur" | |
event-track-if="$valid && form.usr_email.$dirty" | |
event-track-once | |
event-track-data="trackingData.getDefault()" | |
name="usr_email" | |
type="email"> | |
<div class="T3-S RequestForm-error | |
" | |
ng-repeat="$err in $validationErrors" | |
ng-bind="$err"> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</script> | |
<script id="template-request-full-name" type="text/template"> | |
<div class="page-grid"> | |
<div class="column-lg-4 column-lg-offset-1"> | |
<div schema="requestFormSchema.fullName.name" schema-assign="FullNameSchema"> | |
<div ng-class="{'valid': $valid, 'invalid': $valid === false}"> | |
<input | |
id="full-name" | |
placeholder="First and last name" | |
class="theme-center-align" | |
ng-model="$model.fullName.name" | |
event-track="request form/provide full name" | |
event-track-on="blur" | |
event-track-if="$valid && form.usr_full_name.$dirty" | |
event-track-once | |
event-track-data="trackingData.getDefault()" | |
name="usr_full_name" | |
type="text"> | |
<div | |
class="T3-S RequestForm-error | |
" | |
ng-repeat="$err in $validationErrors" | |
ng-bind="$err"> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</script> | |
<script id="template-request-form-navigation" type="text/template"> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<div class="RequestForm-sectionFooter"> | |
<div class="RequestForm-sectionFooter-submit" | |
ng-if="(usesSections || isLastSection) || forceShowSubmit"> | |
<button | |
type="submit" | |
ng-class="{ | |
'Button': !themeInvertedLinks, | |
'Link RequestForm-sectionFooter-navLink theme-inverted theme-bold': | |
themeInvertedLinks | |
}"> | |
<span ng-bind="continueText || ( isLastSection ? 'Submit' : 'Next')"> | |
</span> | |
<svg-icon type="right-caret2" size="md" ng-show="themeInvertedLinks"> | |
</svg-icon> | |
<div class="ThumbtackLoader" ng-if="requestForm.isSubmitting"> | |
<svg-icon type="puff_44x44"></svg-icon> | |
</div> | |
</button> | |
</div> | |
<button | |
ng-if="showSkip" | |
class="RequestForm-sectionFooter-skip Link" | |
ng-class="{ | |
'theme-inverted': isBrandedScreen | |
}" | |
type="submit"> | |
Skip | |
</button> | |
<div class="RequestForm-sectionFooter-terms" ng-if="isLastSection"> | |
<p class="theme-secondary RequestForm-sectionFooter-terms-text" | |
event-track="request form/click legal terms of service" | |
event-track-on="click" | |
ng-class="[ | |
'B5-S' | |
]"> | |
By clicking Submit you agree to the | |
<a href="https://www.thumbtack.com/terms" | |
target="_blank" | |
>Terms of Use</a> and | |
<a href="https://www.thumbtack.com/privacy" | |
target="_blank" | |
>Privacy Policy</a>. | |
</p> | |
</div> | |
<div ng-hide="hideBack" | |
ng-if="usesSections" | |
class="RequestForm-sectionFooter-back"> | |
<button | |
type="button" | |
class="Link RequestForm-sectionFooter-navLink" | |
ng-click="gotoPreviousSection()" | |
ng-class="{ | |
'theme-inverted theme-bold': themeInvertedLinks | |
}"> | |
<svg-icon | |
ng-if="!themeInvertedLinks" | |
type="left-caret" | |
size="sm"> | |
</svg-icon> | |
<svg-icon | |
ng-if="themeInvertedLinks" | |
type="right-caret2" | |
class="theme-rotate-180" | |
size="md"> | |
</svg-icon> | |
Back | |
</button> | |
</div> | |
</div> | |
</div> | |
</div> | |
</script> | |
<script id="template-request-explanation" type="text/template"> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<div class="RequestForm-explanation"> | |
<svg-icon | |
type="thumbtack-logo_178x28" | |
alt="Thumbtack" | |
class="RequestForm-thumbtackLogo"> | |
</svg-icon> | |
<p | |
tabindex="0" | |
class="H2-R RequestForm-explanation-content theme-inverted" | |
ng-bind="requestForm.introScreenCopy"> | |
</p> | |
</div> | |
</div> | |
</div> | |
<request-form-template | |
template-id="template-request-form-navigation" | |
scope-vars="themeInvertedLinks,hideBack" | |
theme-inverted-links="true" | |
hide-back="!(requestForm.categories.length > 1 || forceShowCategoryChooser)"> | |
</request-form-template> | |
</script> | |
<script id="template-request-form-phone-number" type="text/template"> | |
<div ng-show="isPhoneNumberSubmitting"> | |
<div class="RequestForm-loadingIcon"> | |
<svg-icon class="ThumbtackLoader" type="puff_44x44"></svg-icon> | |
</div> | |
</div> | |
<div ng-show="!isPhoneNumberSubmitting"> | |
<form | |
schema="addPhoneNumberSchema" | |
schema-assign="EmptySchema" | |
schema-yields="phoneNumber" | |
ng-submit="deepValidate() | |
? addPhoneNumber($event, phoneNumber.phoneNumber, phoneNumber.isPublic) | |
: false"> | |
<request-form-template template-id="template-request-form-section-header" | |
> | |
<p class="RequestForm-phoneNumber-header | |
"> | |
Get responses even faster with text alerts. | |
</p> | |
</request-form-template> | |
<div class="page-grid"> | |
<div class="column-lg-4 column-lg-offset-1"> | |
<input | |
schema="addPhoneNumberSchema.phoneNumber" | |
schema-assign="PhoneSchema" | |
schema-optional | |
ng-model="phoneNumber.phoneNumber" | |
ng-class="{'valid': $valid, 'invalid': $valid === false}" | |
ng-init="phoneNumber.phoneNumber = existingPhoneNumber" | |
placeholder="ex 555-555-5555" | |
type="tel" | |
name="phone_number"/> | |
<div class="T3-S RequestForm-error | |
" | |
ng-repeat="$err in $validationErrors" | |
ng-bind="$err"> | |
</div> | |
<div ng-if="phoneNumberError" class="T3-S RequestForm-error | |
" | |
ng-bind="phoneNumberError"> | |
</div> | |
</div> | |
<div class="column-lg-4 column-lg-offset-1"> | |
<input-checkbox | |
input-checkbox-label="{[{ | |
requestForm.activeCategory.plural_taxonym | |
}]} may call me directly with quotes" | |
> | |
<input | |
ng-model="phoneNumber.isPublic" | |
value="public" | |
type="checkbox"> | |
</input-checkbox> | |
</div> | |
<div class="column-lg-4 column-lg-offset-1 RequestForm-phoneNumber-description"> | |
<p class="theme-secondary | |
B5-S | |
"> | |
By selecting Next, you | |
<a href="https://help.thumbtack.com/?ar=kA131000000BOWj" | |
target="_blank" | |
> | |
electronically authorize | |
</a> | |
Thumbtack to send you automated text messages to notify you of quotes and | |
activity from Thumbtack pros. Receiving text messages is optional. | |
</p> | |
</div> | |
</div> | |
<request-form-template | |
template-id="template-request-form-navigation" | |
scope-vars="hideBack,showSkip" | |
hide-back="true" | |
show-skip="true"> | |
</request-form-template> | |
</form> | |
</div> | |
</script> | |
<script id="template-request-form-phone-number-experimental" type="text/template"> | |
<request-form-template template-id="template-request-form-section-header" | |
> | |
<p class="RequestForm-phoneNumber-header | |
"> | |
Get responses even faster with text alerts. | |
</p> | |
</request-form-template> | |
<div class="page-grid"> | |
<div class="column-lg-4 column-lg-offset-1"> | |
<input | |
schema="requestFormSchema.contactInfo.phoneNumber" | |
schema-assign="PhoneSchema" | |
ng-model="$model.contactInfo.phoneNumber" | |
schema-optional | |
ng-class="{'valid': $valid, 'invalid': $valid === false}" | |
ng-init="phoneNumber.phoneNumber = existingPhoneNumber" | |
placeholder="ex 555-555-5555" | |
event-track="request form/provide phone number" | |
event-track-on="blur" | |
event-track-if="$valid && form.phone_number.$dirty" | |
event-track-once | |
event-track-data="trackingData.getDefault()" | |
type="tel" | |
name="phone_number"/> | |
<div class="T3-S RequestForm-error | |
" | |
ng-repeat="$err in $validationErrors" | |
ng-bind="$err"> | |
</div> | |
<div ng-if="phoneNumberError" class="T3-S RequestForm-error | |
" | |
ng-bind="phoneNumberError"> | |
</div> | |
</div> | |
<div class="column-lg-4 column-lg-offset-1"> | |
<input | |
type="hidden" | |
name="req_phone_privacy" | |
value="{[{ $model.contactInfo.phonePrivacy ? 'public' : 'thumbtack' }]}" /> | |
<input-checkbox | |
input-checkbox-label="{[{ | |
requestForm.activeCategory.plural_taxonym | |
}]} may call me directly with quotes" | |
> | |
<input | |
schema="requestFormSchema.contactInfo.phonePrivacy" | |
schema-assign="EmptySchema" | |
schema-default="false" | |
ng-model="$model.contactInfo.phonePrivacy" | |
event-track="request form/select phone privacy" | |
event-track-on="change" | |
event-track-data="trackingData.genericSelection( | |
$model.contactInfo.phonePrivacy)" | |
value="public" | |
type="checkbox"> | |
</input-checkbox> | |
</div> | |
<div class="column-lg-4 column-lg-offset-1 RequestForm-phoneNumber-description"> | |
<p class="theme-secondary | |
B5-S | |
"> | |
By selecting Next, you | |
<a href="https://help.thumbtack.com/?ar=kA131000000BOWj" | |
target="_blank" | |
> | |
electronically authorize | |
</a> | |
Thumbtack to send you automated text messages to notify you of quotes and | |
activity from Thumbtack pros. Receiving text messages is optional. | |
</p> | |
</div> | |
</div> | |
</script> | |
<script id="template-request-form-login" type="text/template"> | |
<div class="ThumbtackLoader RequestForm-logging-loader" ng-if="isLoginSectionLoading"> | |
<svg-icon type="puff_44x44"></svg-icon> | |
</div> | |
<request-form-template template-id="template-request-form-section-header" | |
> | |
<p> | |
{[{ hasPassword | |
? "Almost there! You just need to enter your password." | |
: "Project created! Check your email to set your password and secure your account." | |
}]} | |
</p> | |
<span class="B3-S" ng-show="passwordEmailResent">Email sent.</span> | |
<span | |
class="Link B3-S " | |
ng-click="requirePasswordCreation(email, !hasPassword)" | |
target="_blank"> | |
{[{ hasPassword ? "Forgot password?" : "Didn't receive the email?" }]} | |
</span> | |
</request-form-template> | |
<form ng-submit="login($event, loginPassword)"> | |
<div class="theme-group-container | |
InputContainer | |
"> | |
<div class="page-grid"> | |
<div class=" | |
column-lg-6 | |
"> | |
<label for="password" class="RequestForm-inputLabel T2-S | |
"> | |
What's your password? | |
</label> | |
<input | |
placeholder="Password" | |
type="password" | |
ng-model="loginPassword" | |
ng-change="clearLoginError()"/> | |
<div ng-if="loginError" class="T3-S RequestForm-error | |
" ng-bind="loginError"> | |
</div> | |
</div> | |
</div> | |
</div> | |
<request-form-template | |
template-id="template-request-form-navigation" | |
scope-vars="continueText,isBrandedScreen,isBrandedSection" | |
is-branded-screen="" | |
is-branded-section="" | |
continue-text="'Get Quotes'"> | |
</request-form-template> | |
</form> | |
</script> | |
<script id="template-request-form" type="text/template"> | |
<div | |
class="RequestForm | |
" | |
ng-class="[activeSection.formClass | |
|| ((requestForm.isSubmitting && usesSections) ? 'theme-branded' : ''), | |
{ 'theme-standalone': usesSections }]"> | |
<div | |
event-track="request form/start form flow" | |
event-track-on-init | |
event-track-data="trackingData.startFormFlow( | |
requestForm.options.query, | |
zipCode | |
)"> | |
</div> | |
<div class="RequestForm-customClose | |
" | |
ng-show="usesSections | |
&& !requestForm.isSubmitting | |
&& !requestForm.options.hideClose | |
"> | |
<button class="Link RequestForm-customClose-icon" | |
ng-click="saveFormProgress()" | |
closes-modal-on-click> | |
<svg-icon type="close-experimental" size="md"></svg-icon> | |
</button> | |
</div> | |
<div | |
ng-if="usesSections" | |
ng-hide="(activeSection.hideProgressBar || | |
needPhoneNumber || | |
requestForm.isSubmitting | |
)" | |
class="page-grid" | |
> | |
<div class="column-lg-4 column-lg-offset-1"> | |
<div class="RequestForm-progressContainer | |
"> | |
<progress-bar | |
theme-animated | |
label-threshold="0.7" | |
current-step="currentStep" | |
total-steps="totalSteps" | |
percent-step-interval="0.05" | |
coefficient="0.7"> | |
</progress-bar> | |
</div> | |
</div> | |
</div> | |
<div ng-if="requestForm.generalError" class="page-grid"> | |
<div class="column-lg-6"> | |
<div class="RequestForm-generalError T2-S" ng-bind="requestForm.generalError"></div> | |
</div> | |
</div> | |
<div ng-show="( | |
!requestForm.categories && | |
(requestForm.options.query || requestForm.options.categoryId) | |
) || ( | |
requestForm.categories && | |
requestForm.activeCategory.id && | |
!requestForm.form | |
)"> | |
<div class="RequestForm-loadingIcon | |
"> | |
<svg-icon class="ThumbtackLoader" type="puff_44x44"></svg-icon> | |
</div> | |
</div> | |
<div ng-if="requestForm.isSubmitting && usesSections"> | |
<post-request-interstitial > | |
<div class="PostRequestInterstitial | |
theme-branded | |
"> | |
<div class="PostRequestInterstitial-postRequest"> | |
<div class="PostRequestInterstitial-postRequest-header"> | |
<p class="H4-R theme-inverted"> | |
We're reaching out to the best pros for your project. | |
</p> | |
</div> | |
<div class="PostRequestInterstitial-postRequest-pros"> | |
<div class="PostRequestInterstitial-postRequest-sidePro"> | |
<div class="PostRequestInterstitial-postRequest-sidePro-profilePicture"> | |
<div responsive-if="above-md" responsive-grid="page"> | |
<avatar class="Avatar Avatar--md"> | |
<div class="Avatar__circle"> | |
</div> | |
</avatar> | |
</div> | |
<div responsive-if="below-md" responsive-grid="page"> | |
<avatar class="Avatar Avatar--sm"> | |
<div class="Avatar__circle"> | |
</div> | |
</avatar> | |
</div> | |
</div> | |
<div class="PostRequestInterstitial-postRequest-sidePro-stars"> | |
<svg-icon class="PostRequestInterstitial-postRequest-star" | |
type="star" size="sm"></svg-icon> | |
<svg-icon class="PostRequestInterstitial-postRequest-star" | |
type="star" size="sm"></svg-icon> | |
<svg-icon class="PostRequestInterstitial-postRequest-star" | |
type="star" size="sm"></svg-icon> | |
<svg-icon class="PostRequestInterstitial-postRequest-star" | |
type="star" size="sm"></svg-icon> | |
<svg-icon class="PostRequestInterstitial-postRequest-star" | |
type="star" size="sm"></svg-icon> | |
</div> | |
</div> | |
<div class="PostRequestInterstitial-postRequest-centerPro"> | |
<div class="PostRequestInterstitial-postRequest-centerPro-profilePicture"> | |
<div responsive-if="above-md" responsive-grid="page"> | |
<avatar class="Avatar Avatar--mdLg"> | |
<div class="Avatar__circle"> | |
</div> | |
</avatar> | |
</div> | |
<div responsive-if="below-md" responsive-grid="page"> | |
<avatar class="Avatar Avatar--md"> | |
<div class="Avatar__circle"> | |
</div> | |
</avatar> | |
</div> | |
</div> | |
<div class="PostRequestInterstitial-postRequest-centerPro-stars"> | |
<div responsive-if="above-md" responsive-grid="page"> | |
<svg-icon class="PostRequestInterstitial-postRequest-star" | |
type="star" size="md"></svg-icon> | |
</div> | |
<div responsive-if="below-md" responsive-grid="page"> | |
<svg-icon class="PostRequestInterstitial-postRequest-star" | |
type="star" size="sm"></svg-icon> | |
</div> | |
<div responsive-if="above-md" responsive-grid="page"> | |
<svg-icon class="PostRequestInterstitial-postRequest-star" | |
type="star" size="md"></svg-icon> | |
</div> | |
<div responsive-if="below-md" responsive-grid="page"> | |
<svg-icon class="PostRequestInterstitial-postRequest-star" | |
type="star" size="sm"></svg-icon> | |
</div> | |
<div responsive-if="above-md" responsive-grid="page"> | |
<svg-icon class="PostRequestInterstitial-postRequest-star" | |
type="star" size="md"></svg-icon> | |
</div> | |
<div responsive-if="below-md" responsive-grid="page"> | |
<svg-icon class="PostRequestInterstitial-postRequest-star" | |
type="star" size="sm"></svg-icon> | |
</div> | |
<div responsive-if="above-md" responsive-grid="page"> | |
<svg-icon class="PostRequestInterstitial-postRequest-star" | |
type="star" size="md"></svg-icon> | |
</div> | |
<div responsive-if="below-md" responsive-grid="page"> | |
<svg-icon class="PostRequestInterstitial-postRequest-star" | |
type="star" size="sm"></svg-icon> | |
</div> | |
<div responsive-if="above-md" responsive-grid="page"> | |
<svg-icon class="PostRequestInterstitial-postRequest-star" | |
type="star" size="md"></svg-icon> | |
</div> | |
<div responsive-if="below-md" responsive-grid="page"> | |
<svg-icon class="PostRequestInterstitial-postRequest-star" | |
type="star" size="sm"></svg-icon> | |
</div> | |
</div> | |
</div> | |
<div class="PostRequestInterstitial-postRequest-sidePro"> | |
<div class="PostRequestInterstitial-postRequest-sidePro-profilePicture"> | |
<div responsive-if="above-md" responsive-grid="page"> | |
<avatar class="Avatar Avatar--md"> | |
<div class="Avatar__circle"> | |
</div> | |
</avatar> | |
</div> | |
<div responsive-if="below-md" responsive-grid="page"> | |
<avatar class="Avatar Avatar--sm"> | |
<div class="Avatar__circle"> | |
</div> | |
</avatar> | |
</div> | |
</div> | |
<div class="PostRequestInterstitial-postRequest-sidePro-stars"> | |
<svg-icon class="PostRequestInterstitial-postRequest-star" | |
type="star" size="sm"></svg-icon> | |
<svg-icon class="PostRequestInterstitial-postRequest-star" | |
type="star" size="sm"></svg-icon> | |
<svg-icon class="PostRequestInterstitial-postRequest-star" | |
type="star" size="sm"></svg-icon> | |
<svg-icon class="PostRequestInterstitial-postRequest-star" | |
type="star" size="sm"></svg-icon> | |
<svg-icon class="PostRequestInterstitial-postRequest-star" | |
type="star" size="sm"></svg-icon> | |
</div> | |
</div> | |
</div> | |
<div class="PostRequestInterstitial-postRequest-loader"> | |
<div class="LoadingDots | |
LoadingDots--inverse"> | |
<div></div> | |
<div></div> | |
<div></div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</post-request-interstitial> | |
</div> | |
<div ng-if="!requestForm.categories | |
&& !requestForm.options.categoryId | |
&& !requestForm.options.query" | |
request-form-section="'hercule'" | |
ng-show="!usesSections || activeSection.id === 'hercule'"> | |
<div ng-init="usesSections && initDisplayFirstSection()"></div> | |
<request-form-template template-id="template-request-form-hercule"> | |
</request-form-template> | |
</div> | |
<div ng-if="requestForm.options.query && requestForm.categories.length === 0" | |
request-form-section="'noResults'" | |
ng-show="!usesSections || activeSection.id === 'noResults'"> | |
<div ng-init="usesSections && initDisplayFirstSection()"></div> | |
<request-form-template template-id="template-request-form-no-results"> | |
</request-form-template> | |
</div> | |
<div ng-if="requestForm.categories.length > 1 || forceShowCategoryChooser" | |
request-form-section="'categoryChooser'" | |
ng-class="{ Card: !usesSections }" | |
ng-show="usesSections | |
? (activeSection.id === 'categoryChooser' && | |
!(requestForm.categories && requestForm.activeCategory.id && !requestForm.form)) | |
: (requestForm.categories && !requestForm.activeCategory.id)"> | |
<div ng-init="usesSections && initDisplayFirstSection()"></div> | |
<request-form-template | |
template-id="template-request-category-chooser-radio" | |
scope-vars="categories" | |
categories="requestForm.categories"> | |
</request-form-template> | |
</div> | |
<div | |
ng-if="needPhoneNumber" | |
ng-class="{ Card: !usesSections }" | |
request-form-section="'phoneNumber'" | |
> | |
<div | |
ng-if="activeSection.id === 'phoneNumber'" | |
event-track="request form/view phone number option" | |
event-track-on-init | |
event-track-data="trackingData.getDefault()"> | |
</div> | |
<request-form-template template-id="template-request-form-phone-number"> | |
</request-form-template> | |
</div> | |
<div | |
ng-cloak | |
ng-if="requestForm.categories && requestForm.form && requestForm.activeCategory.id" | |
ng-hide="(requestForm.isSubmitting && usesSections) || needPhoneNumber"> | |
<div ng-init="usesSections && initDisplayFirstSection()"></div> | |
<form | |
id="request-form" | |
schema="requestFormSchema" | |
schema-assign="EmptySchema" | |
schema-yields="$model" | |
schema-cache-id="{[{ requestForm.activeCategory.id }]}" | |
ng-submit=" | |
(schedulingHandler.processCustomerSchedulingData($model, activeSection.id) | |
&& deepValidate(activeSection.$scope)) | |
? handleSubmit($event, $model.contactInfo.email, $model.fullName.name) | |
: scrollToFirstInvalid($event)" | |
name="form" | |
action="https://www.thumbtack.com/request/create" | |
method="post"> | |
<input type="hidden" name="req_source" value="{[{ requestSource }]}"/> | |
<input type="hidden" name="request_origin" value="{[{ requestOrigin }]}"/> | |
<input type="hidden" name="rca" value="{[{ requestForm.activeCategory.id }]}"/> | |
<input type="hidden" name="rfo" value="{[{ requestForm.form.encoded_form_id }]}"/> | |
<input type="hidden" name="sav" value="{[{ encodedServiceId }]}"/> | |
<input type="hidden" name="device_fingerprint" value="{[{ requestForm.deviceFingerprint }]}"/> | |
<div | |
ng-if="!hideIntroScreen && usesSections" | |
ng-show="!usesSections || activeSection.id === 'explanationIntro'" | |
request-form-section="'explanationIntro'" | |
form-class-when-visible="'theme-branded'" | |
is-branded-section="true" | |
hide-progress-bar="true" | |
hide-back-button="!(requestForm.categories.length > 1 | |
|| forceShowCategoryChooser)" | |
schema="requestFormSchema.intro" | |
schema-assign="EmptySchema" | |
schema-validation-subsection> | |
<div | |
ng-if="activeSection.id === 'explanationIntro'" | |
event-track="request form/view intro explanation" | |
event-track-on-init | |
event-track-data="trackingData.getDefault()"> | |
</div> | |
<request-form-template | |
template-id="template-request-explanation" | |
scope-vars="category" | |
category="requestForm.activeCategory"> | |
</request-form-template> | |
</div> | |
<div schema="requestFormSchema.questions" schema-assign="EmptySchema"> | |
<request-form-template template-id="template-request-questions"> | |
</request-form-template> | |
</div> | |
<div | |
ng-if="requestForm.activeCategory.allows_image_upload" | |
ng-show="!usesSections || activeSection.id === 'imageUpload'" | |
request-form-section="'imageUpload'" | |
ng-class="{ Card: !usesSections }" | |
schema-validation-subsection | |
schema="requestFormSchema.imageUpload" | |
schema-assign="EmptySchema"> | |
<div | |
ng-if="activeSection.id === 'imageUpload'" | |
event-track="request form/view image upload question" | |
event-track-on-init | |
event-track-data="trackingData.getDefault()"> | |
</div> | |
<request-form-template | |
template-id="template-request-image-upload" | |
scope-vars="category" | |
category="requestForm.activeCategory"> | |
</request-form-template> | |
<request-form-template | |
template-id="template-request-form-navigation" | |
scope-vars="continueText" | |
continue-text="requestForm.addImages && !activeSection.hasImages | |
? 'Skip' | |
: ''"> | |
</request-form-template> | |
</div> | |
<div ng-if="requestForm.activeCategory.travel_types.length >= 1"> | |
<div | |
ng-if="activeSection.id === 'location'" | |
event-track="request form/view location questions" | |
event-track-on-init | |
event-track-data="trackingData.getDefault()"></div> | |
<div ng-if="requestForm.activeCategory.travel_types.length === 1"> | |
<input | |
type="hidden" | |
name="req_travel[]" | |
value="{[{ requestForm.activeCategory.travel_types[0] }]}"> | |
<div | |
ng-if="requestForm.activeCategory | |
.travel_types.indexOf('toprovider') !== -1" | |
ng-show="!usesSections || activeSection.id === 'location'" | |
request-form-section="'location'" | |
schema-validation-subsection | |
ng-class="{ Card: !usesSections }" | |
schema="requestFormSchema.location" | |
schema-assign="EmptySchema"> | |
<request-form-template | |
template-id="template-request-service-location-distance-standalone"> | |
</request-form-template> | |
<request-form-template template-id="template-request-form-navigation"> | |
</request-form-template> | |
</div> | |
</div> | |
<div | |
ng-if="requestForm.activeCategory.travel_types.length > 1" | |
ng-show="!usesSections || activeSection.id === 'location'" | |
request-form-section="'location'" | |
schema-validation-subsection | |
ng-class="{ Card: !usesSections }" | |
schema="requestFormSchema.location" | |
schema-assign="EmptySchema"> | |
<request-form-template | |
template-id="template-request-service-location" | |
scope-vars="category" | |
category="requestForm.activeCategory"> | |
</request-form-template> | |
<request-form-template template-id="template-request-form-navigation"> | |
</request-form-template> | |
</div> | |
</div> | |
<div ng-if="schedulingHandler.showNewSchedulingExperience"> | |
<div | |
ng-if="schedulingHandler.schedulingArchetype === 'event_with_duration' | |
|| schedulingHandler.schedulingArchetype === 'event_no_duration'" | |
ng-show="!usesSections || activeSection.id === 'scheduling'" | |
request-form-section="'scheduling'" | |
schema-validation-subsection | |
ng-class="{ Card: !usesSections }" | |
schema="requestFormSchema.scheduling" | |
schema-assign="EmptySchema"> | |
<div | |
ng-if="activeSection.id === 'scheduling'" | |
event-track="request form/view scheduling questions" | |
event-track-on-init | |
event-track-data="trackingData.getSchedulingDefault(requestForm)"></div> | |
<request-form-template | |
template-id="template-request-scheduling-event" | |
scope-vars="category" | |
category="requestForm.activeCategory"> | |
</request-form-template> | |
<request-form-template | |
template-id="template-request-form-navigation"> | |
</request-form-template> | |
</div> | |
<div | |
ng-if="schedulingHandler.schedulingArchetype === 'event_with_duration' | |
|| schedulingHandler.schedulingArchetype === 'event_no_duration'" | |
ng-show="!usesSections || activeSection.id === 'schedulingTimes'" | |
request-form-section="'schedulingTimes'" | |
ng-class="{ Card: !usesSections }" | |
schema="requestFormSchema.event" | |
schema-assign="EmptySchema"> | |
<request-form-template | |
template-id="template-request-scheduling-event-time" | |
scope-vars="category" | |
category="requestForm.activeCategory"> | |
</request-form-template> | |
<request-form-template | |
template-id="template-request-form-navigation"> | |
</request-form-template> | |
</div> | |
<div | |
ng-if="schedulingHandler.showV2CadenceQuestion | |
&& (schedulingHandler.schedulingArchetype === 'multi_recurring' | |
|| schedulingHandler.schedulingArchetype === 'multi_mixed')" | |
ng-show="!usesSections || activeSection.id === 'cadence'" | |
request-form-section="'cadence'" | |
schema-validation-subsection | |
ng-class="{ Card: !usesSections }" | |
schema="requestFormSchema.cadence" | |
schema-assign="EmptySchema"> | |
<div | |
ng-if="activeSection.id === 'scheduling'" | |
event-track="request form/view scheduling questions" | |
event-track-on-init | |
event-track-data="trackingData.getSchedulingDefault(requestForm)"></div> | |
<request-form-template | |
template-id="template-request-scheduling-multi-cadence" | |
scope-vars="category,scheduling" | |
category="requestForm.activeCategory" | |
scheduling="requestForm.scheduling"> | |
</request-form-template> | |
<request-form-template | |
template-id="template-request-form-navigation"> | |
</request-form-template> | |
</div> | |
<div | |
ng-if="schedulingHandler.schedulingArchetype === 'multi_recurring' | |
|| (schedulingHandler.schedulingArchetype === 'multi_mixed' | |
&& $model.cadence.cadencePreference !== 'just_once')" | |
ng-show="!usesSections || activeSection.id === 'cadenceDaysTimes'" | |
request-form-section="'cadenceDaysTimes'" | |
schema-validation-subsection | |
ng-class="{ Card: !usesSections }" | |
schema="requestFormSchema.cadenceDaysTimes" | |
schema-assign="EmptySchema"> | |
<request-form-template | |
template-id="template-request-scheduling-multi-cadence-days-times" | |
scope-vars="category,scheduling" | |
category="requestForm.activeCategory" | |
scheduling="requestForm.scheduling"> | |
</request-form-template> | |
<request-form-template | |
template-id="template-request-form-navigation"> | |
</request-form-template> | |
</div> | |
<div | |
ng-if="schedulingHandler.schedulingArchetype === 'multi_nonrecurring' | |
|| (schedulingHandler.schedulingArchetype === 'multi_mixed' | |
&& $model.cadence.cadencePreference === 'just_once')" | |
ng-show="!usesSections || activeSection.id === 'scheduling'" | |
request-form-section="'scheduling'" | |
schema-validation-subsection | |
ng-class="{ Card: !usesSections }" | |
schema="requestFormSchema.scheduling" | |
schema-assign="EmptySchema"> | |
<div | |
ng-if="activeSection.id === 'scheduling'" | |
event-track="request form/view scheduling questions" | |
event-track-on-init | |
event-track-data="trackingData.getSchedulingDefault(requestForm)"></div> | |
<request-form-template | |
template-id="template-request-scheduling-multi" | |
scope-vars="category,scheduling" | |
category="requestForm.activeCategory" | |
scheduling="requestForm.scheduling"> | |
</request-form-template> | |
<request-form-template | |
template-id="template-request-form-navigation"> | |
</request-form-template> | |
</div> | |
<div | |
ng-if="(schedulingHandler.schedulingArchetype === 'multi_nonrecurring' | |
|| (schedulingHandler.schedulingArchetype === 'multi_mixed' | |
&& $model.cadence.cadencePreference === 'just_once')) | |
&& $model.scheduling.dayPreference !== 'as_recommended_by_pro'" | |
ng-show="!usesSections || activeSection.id === 'schedulingTimes'" | |
request-form-section="'schedulingTimes'" | |
ng-class="{ Card: !usesSections }" | |
schema="requestFormSchema.timeslots" | |
schema-assign="EmptySchema"> | |
<request-form-template | |
template-id="template-request-scheduling-timeslots" | |
scope-vars="category,scheduling" | |
category="requestForm.activeCategory" | |
scheduling="requestForm.scheduling"> | |
</request-form-template> | |
<request-form-template | |
template-id="template-request-form-navigation"> | |
</request-form-template> | |
</div> | |
<div | |
ng-if="schedulingHandler.schedulingArchetype === 'completed_by'"> | |
<input | |
type="hidden" | |
name="scheduling_timestamps_array" | |
value="[]" /> | |
</div> | |
</div> | |
<div ng-if="!schedulingHandler.showNewSchedulingExperience"> | |
<div | |
ng-if="requestForm.activeCategory.scheduling_type === 'event' | |
|| requestForm.activeCategory.scheduling_type === 'appointment'" | |
ng-show="!usesSections || activeSection.id === 'originalScheduling'" | |
request-form-section="'originalScheduling'" | |
schema-validation-subsection | |
ng-class="{ Card: !usesSections }" | |
schema="requestFormSchema.scheduling" | |
schema-assign="EmptySchema"> | |
<div | |
ng-if="activeSection.id === 'originalScheduling'" | |
event-track="request form/view scheduling questions" | |
event-track-on-init | |
event-track-data="trackingData.getDefault()"></div> | |
<request-form-template | |
template-id="template-request-scheduling" | |
scope-vars="category" | |
category="requestForm.activeCategory"> | |
</request-form-template> | |
<request-form-template template-id="template-request-form-navigation"> | |
</request-form-template> | |
</div> | |
</div> | |
<div | |
ng-show="!usesSections || activeSection.id === 'anythingElse'" | |
ng-class="{ Card: !usesSections }" | |
request-form-section="'anythingElse'" | |
schema-validation-subsection | |
schema="requestFormSchema.anythingElse" | |
schema-assign="EmptySchema"> | |
<div | |
ng-if="activeSection.id === 'anythingElse'" | |
event-track="request form/view anything else question" | |
event-track-on-init | |
event-track-data="trackingData.getDefault()"></div> | |
<request-form-template template-id="template-request-description"> | |
</request-form-template> | |
<request-form-template template-id="template-request-form-navigation"> | |
</request-form-template> | |
</div> | |
<div | |
ng-show="!usesSections || activeSection.id === 'zipCode' && !needPhoneNumber" | |
ng-class="{ Card: !usesSections }" | |
request-form-section="'zipCode'" | |
schema-validation-subsection | |
schema="requestFormSchema.zipCode" | |
schema-assign="EmptySchema"> | |
<div | |
ng-if="activeSection.id === 'zipCode'" | |
event-track="request form/view zipcode input" | |
event-track-on-init | |
event-track-data="trackingData.getDefault()"></div> | |
<request-form-template template-id="template-request-form-section-header"> | |
Please confirm where you need the | |
{[{ requestForm.activeCategory.sentence_taxonym }]}. | |
</request-form-template> | |
<request-form-template | |
template-id="template-request-zip-code" | |
class="RequestForm-standaloneInputSection"> | |
</request-form-template> | |
<request-form-template | |
template-id="template-request-form-navigation" | |
scope-vars="isLastSection" | |
is-last-section="requestForm.options.loggedIn"> | |
</request-form-template> | |
</div> | |
<div | |
ng-if="!requestForm.options.loggedIn" | |
ng-show="!usesSections || activeSection.id === 'contactInfo'" | |
ng-class="{ Card: !usesSections }" | |
request-form-section="'contactInfo'" | |
schema-validation-subsection | |
schema="requestFormSchema.contactInfo" | |
schema-assign="EmptySchema"> | |
<div | |
ng-if="activeSection.id === 'contactInfo'" | |
event-track="request form/view contact form" | |
event-track-on-init | |
event-track-data="trackingData.viewContactForm()"></div> | |
<request-form-template template-id="template-request-form-section-header" | |
> | |
We don't share your email with pros. | |
</request-form-template> | |
<div class="RequestForm-standaloneInputSection | |
"> | |
<request-form-template | |
template-id="template-request-contact-email" | |
scope-vars="category" | |
category="requestForm.activeCategory"> | |
</request-form-template> | |
</div> | |
<request-form-template | |
ng-if="!requestForm.options.loggedIn" | |
template-id="template-request-form-navigation"> | |
</request-form-template> | |
</div> | |
<div | |
ng-if="!requestForm.options.loggedIn" | |
ng-show="!usesSections || activeSection.id === 'fullName'" | |
ng-class="{ Card: !usesSections }" | |
request-form-section="'fullName'" | |
schema-validation-subsection | |
schema="requestFormSchema.fullName" | |
schema-assign="EmptySchema"> | |
<div | |
ng-if="activeSection.id === 'fullName'" | |
event-track="request form/view name input" | |
event-track-on-init | |
event-track-data="trackingData.getDefault()"></div> | |
<request-form-template template-id="template-request-form-section-header" | |
> | |
Please enter your full name. | |
</request-form-template> | |
<request-form-template | |
template-id="template-request-full-name" | |
class="RequestForm-standaloneInputSection | |
theme-tos-visibility-full-name | |
"> | |
</request-form-template> | |
<request-form-template template-id="template-request-form-navigation" | |
scope-vars="isLastSection,isBrandedScreen" | |
is-branded-screen="" | |
is-last-section="true"> | |
</request-form-template> | |
</div> | |
</form> | |
<div | |
ng-if="!requestForm.options.loggedIn" | |
ng-show="activeSection.id === 'login'" | |
request-form-section="'login'" | |
> | |
<request-form-template template-id="template-request-form-login"> | |
</request-form-template> | |
</div> | |
</div> | |
</div> | |
</script> | |
<script id="template-request-modal" type="text/template"> | |
<div | |
standard-modal | |
disable-backdrop-close="true" | |
hide-close="true"> | |
<request-form | |
form-type="thumbprint" | |
uses-sections="true" | |
zip-code="'{[{ zipCode }]}'" | |
query="{[{ query }]}" | |
category-id="{[{ categoryId }]}" | |
logged-in="false" | |
from-homepage="{[{ fromHomepage }]}" | |
hercule-version="1" | |
hide-intro-screen="{[{ hideIntroScreen }]}" | |
intro-emphasize-projects="{[{ introEmphasizeProjects }]}" | |
progress-bar-total-offset="1" | |
use-unspecified-categories="{[{ useUnspecifiedCategories }]}" | |
active-section-id="{[{ activeSectionId }]}"> | |
</request-form> | |
</div> | |
</script> | |
<full-footer> | |
<div class="FullFooter"> | |
<div class="FullFooter-upper"> | |
<div class="page-grid FullFooter-upper-inner"> | |
<div class="column-lg-1 column-md-6 FullFooter-group"> | |
<div class="FullFooter-group-label" | |
ng-click="selectedMenu === 'Company' | |
? selectedMenu = null | |
: selectedMenu = 'Company'"> | |
<h3 class="FullFooter-group-label-title" | |
responsive-class="{ | |
'T2-S': 'above-md', | |
'T1-S': 'below-md' | |
}" | |
responsive-grid="page"> | |
Company | |
</h3> | |
<div responsive-if="below-md" responsive-grid="page"> | |
<svg-icon type="{[{ selectedMenu === 'Company' | |
? 'up-caret' | |
: 'down-caret' | |
}]}" | |
size="sm"> | |
</svg-icon> | |
</div> | |
</div> | |
<ul class="FullFooter-group-list" ng-class="{ | |
'is-collapsed': selectedMenu !== 'Company' | |
}"> | |
<li> | |
<a href="https://www.thumbtack.com/about" | |
class="FullFooter-group-list-link Link theme-secondary" | |
responsive-class="{ | |
'B2-S': 'below-md', | |
'B3-S': 'above-md' | |
}" | |
responsive-grid="page"> | |
About | |
</a> | |
</li> | |
<li> | |
<a href="https://www.thumbtack.com/jobs" | |
class="FullFooter-group-list-link Link theme-secondary" | |
responsive-class="{ | |
'B2-S': 'below-md', | |
'B3-S': 'above-md' | |
}" | |
responsive-grid="page"> | |
Jobs | |
</a> | |
</li> | |
<li> | |
<a href="https://www.thumbtack.com/team/" | |
class="FullFooter-group-list-link Link theme-secondary" | |
responsive-class="{ | |
'B2-S': 'below-md', | |
'B3-S': 'above-md' | |
}" | |
responsive-grid="page"> | |
Team | |
</a> | |
</li> | |
<li> | |
<a href="https://www.thumbtack.com/blog" | |
class="FullFooter-group-list-link Link theme-secondary" | |
responsive-class="{ | |
'B2-S': 'below-md', | |
'B3-S': 'above-md' | |
}" | |
responsive-grid="page"> | |
Blog | |
</a> | |
</li> | |
</ul> | |
</div> | |
<div class="column-lg-1 column-md-6 FullFooter-group"> | |
<div class="FullFooter-group-label" | |
ng-click="selectedMenu === 'Customers' | |
? selectedMenu = null | |
: selectedMenu = 'Customers'"> | |
<h3 class="FullFooter-group-label-title" | |
responsive-class="{ | |
'T2-S': 'above-md', | |
'T1-S': 'below-md' | |
}" | |
responsive-grid="page"> | |
Customers | |
</h3> | |
<div responsive-if="below-md" responsive-grid="page"> | |
<svg-icon type="{[{ selectedMenu === 'Customers' | |
? 'up-caret' | |
: 'down-caret' | |
}]}" | |
size="sm"> | |
</svg-icon> | |
</div> | |
</div> | |
<ul class="FullFooter-group-list" ng-class="{ | |
'is-collapsed': selectedMenu !== 'Customers' | |
}"> | |
<li> | |
<a href="https://www.thumbtack.com/how-it-works" | |
class="FullFooter-group-list-link Link theme-secondary" | |
responsive-class="{ | |
'B2-S': 'below-md', | |
'B3-S': 'above-md' | |
}" | |
responsive-grid="page"> | |
How it works | |
</a> | |
</li> | |
<li> | |
<a href="https://www.thumbtack.com/safety" | |
class="FullFooter-group-list-link Link theme-secondary" | |
responsive-class="{ | |
'B2-S': 'below-md', | |
'B3-S': 'above-md' | |
}" | |
responsive-grid="page"> | |
Safety | |
</a> | |
</li> | |
<li> | |
<a href="https://r.yoz.io/Z3.c.r" | |
class="FullFooter-group-list-link Link theme-secondary" | |
responsive-class="{ | |
'B2-S': 'below-md', | |
'B3-S': 'above-md' | |
}" | |
responsive-grid="page"> | |
iPhone app | |
</a> | |
</li> | |
<li> | |
<a href="https://www.thumbtack.com/near-me" | |
class="FullFooter-group-list-link Link theme-secondary" | |
responsive-class="{ | |
'B2-S': 'below-md', | |
'B3-S': 'above-md' | |
}" | |
responsive-grid="page"> | |
Services Near Me | |
</a> | |
</li> | |
<li> | |
<a href="https://www.thumbtack.com/prices" | |
class="FullFooter-group-list-link Link theme-secondary" | |
responsive-class="{ | |
'B2-S': 'below-md', | |
'B3-S': 'above-md' | |
}" | |
responsive-grid="page"> | |
Cost Estimates | |
</a> | |
</li> | |
<li> | |
<a href="https://www.thumbtack.com/service-guides" | |
class="FullFooter-group-list-link Link theme-secondary" | |
responsive-class="{ | |
'B2-S': 'below-md', | |
'B3-S': 'above-md' | |
}" | |
responsive-grid="page"> | |
Service Guides | |
</a> | |
</li> | |
<li> | |
<a href="https://www.thumbtack.com/how-to" | |
class="FullFooter-group-list-link Link theme-secondary" | |
responsive-class="{ | |
'B2-S': 'below-md', | |
'B3-S': 'above-md' | |
}" | |
responsive-grid="page"> | |
How To Pages | |
</a> | |
</li> | |
</ul> | |
</div> | |
<div class="column-lg-1 column-md-6 FullFooter-group"> | |
<div class="FullFooter-group-label" | |
ng-click="selectedMenu === 'Pros' | |
? selectedMenu = null | |
: selectedMenu = 'Pros'"> | |
<h3 class="FullFooter-group-label-title" | |
responsive-class="{ | |
'T2-S': 'above-md', | |
'T1-S': 'below-md' | |
}" | |
responsive-grid="page"> | |
Pros | |
</h3> | |
<div responsive-if="below-md" responsive-grid="page"> | |
<svg-icon type="{[{ selectedMenu === 'Pros' | |
? 'up-caret' | |
: 'down-caret' | |
}]}" | |
size="sm"> | |
</svg-icon> | |
</div> | |
</div> | |
<ul class="FullFooter-group-list" ng-class="{ | |
'is-collapsed': selectedMenu !== 'Pros' | |
}"> | |
<li> | |
<a href="https://www.thumbtack.com/blog/get-hired-guide/how-thumbtack-works/" | |
class="FullFooter-group-list-link Link theme-secondary" | |
responsive-class="{ | |
'B2-S': 'below-md', | |
'B3-S': 'above-md' | |
}" | |
responsive-grid="page"> | |
How it works | |
</a> | |
</li> | |
<li> | |
<a href="https://www.thumbtack.com/pro" | |
class="FullFooter-group-list-link Link theme-secondary" | |
responsive-class="{ | |
'B2-S': 'below-md', | |
'B3-S': 'above-md' | |
}" | |
responsive-grid="page"> | |
Sign up | |
</a> | |
</li> | |
<li> | |
<a href="https://www.thumbtack.com/pro-center" | |
class="FullFooter-group-list-link Link theme-secondary" | |
responsive-class="{ | |
'B2-S': 'below-md', | |
'B3-S': 'above-md' | |
}" | |
responsive-grid="page"> | |
Pro center | |
</a> | |
</li> | |
<li> | |
<a href="https://www.thumbtack.com/pro-center/stories" | |
class="FullFooter-group-list-link Link theme-secondary" | |
responsive-class="{ | |
'B2-S': 'below-md', | |
'B3-S': 'above-md' | |
}" | |
responsive-grid="page"> | |
Success stories | |
</a> | |
</li> | |
<li> | |
<a href="https://www.thumbtack.com/pro-app" | |
class="FullFooter-group-list-link Link theme-secondary" | |
responsive-class="{ | |
'B2-S': 'below-md', | |
'B3-S': 'above-md' | |
}" | |
responsive-grid="page"> | |
Mobile app | |
</a> | |
</li> | |
</ul> | |
</div> | |
<div class="column-lg-1 column-md-6 FullFooter-group"> | |
<div class="FullFooter-group-label" | |
ng-click="selectedMenu === 'Support' | |
? selectedMenu = null | |
: selectedMenu = 'Support'"> | |
<h3 class="FullFooter-group-label-title" | |
responsive-class="{ | |
'T2-S': 'above-md', | |
'T1-S': 'below-md' | |
}" | |
responsive-grid="page"> | |
Support | |
</h3> | |
<div responsive-if="below-md" responsive-grid="page"> | |
<svg-icon type="{[{ selectedMenu === 'Support' | |
? 'up-caret' | |
: 'down-caret' | |
}]}" | |
size="sm"> | |
</svg-icon> | |
</div> | |
</div> | |
<ul class="FullFooter-group-list" ng-class="{ | |
'is-collapsed': selectedMenu !== 'Support' | |
}"> | |
<li> | |
<a href="https://help.thumbtack.com/" | |
class="FullFooter-group-list-link Link theme-secondary" | |
responsive-class="{ | |
'B2-S': 'below-md', | |
'B3-S': 'above-md' | |
}" | |
responsive-grid="page"> | |
Help center | |
</a> | |
</li> | |
</ul> | |
</div> | |
<div class="column-lg-2 column-md-6 column-sm-6 FullFooter-logos"> | |
<a href="index.html" class="FullFooter-logos-brand"> | |
<svg-icon type="thumbtack-logo_178x28" alt="Thumbtack"> | |
</svg-icon> | |
</a> | |
<ul class="FullFooter-logos-socialMedia"> | |
<li> | |
<a href="http://twitter.com/thumbtack" class="theme-secondary"> | |
<svg-icon type="twitter" size="md"></svg-icon> | |
</a> | |
</li> | |
<li> | |
<a href="https://www.facebook.com/Thumbtack" class="theme-secondary"> | |
<svg-icon type="facebook" size="md"></svg-icon> | |
</a> | |
</li> | |
<li> | |
<a href="http://pinterest.com/thumbtackboards/" class="theme-secondary"> | |
<svg-icon type="pinterest" size="md"></svg-icon> | |
</a> | |
</li> | |
<li> | |
<a href="https://plus.google.com/110365850422119512162/posts" class="theme-secondary"> | |
<svg-icon type="google-plus" size="md"></svg-icon> | |
</a> | |
</li> | |
<li> | |
<a href="https://www.instagram.com/thumbtack/" class="theme-secondary"> | |
<svg-icon type="instagram" size="md"></svg-icon> | |
</a> | |
</li> | |
</ul> | |
<div class="FullFooter-logos-guarantee"> | |
<div class="TtGuaranteeText"> | |
<a href="https://www.thumbtack.com/guarantee/" | |
class="TtGuaranteeText-inner"> | |
<svg-icon type="tt-guarantee-emblem" size="lg" class="TtGuaranteeText-emblem"> | |
</svg-icon> | |
<div class="TtGuaranteeText-textContainer"> | |
<div class="TtGuaranteeText-textContainer-title B3-S theme-secondary"> | |
Thumbtack Guarantee | |
</div> | |
<div class="TtGuaranteeText-textContainer-text T3-S theme-secondary"> | |
$1M Property Protection | |
</div> | |
</div> | |
</a> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
<div class="FullFooter-lower"> | |
<div class="page-grid"> | |
<div class="column-lg-6"> | |
<div class="FullFooter-lower-inner"> | |
<div class="FullFooter-lower-copyright"> | |
<span class="B3-S theme-secondary">© 2017 Thumbtack, Inc.</span> | |
</div> | |
<div class="FullFooter-lower-legal"> | |
<ul class="B3-S theme-secondary"> | |
<li> | |
<a class="theme-secondary" href="https://www.thumbtack.com/privacy"> | |
Privacy Policy | |
</a> | |
</li><li> | |
<a class="theme-secondary" href="https://www.thumbtack.com/terms"> | |
Terms of use | |
</a> | |
</li> </ul> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</full-footer> | |
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script><script src="https://static7.thumbtackstatic.com/_assets/javascript/release/legacy-js/jquery/jquery.browser-c000434a.js.gz"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-migrate/3.0.0/jquery-migrate.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.13.1/lodash.min.js"></script><script> | |
_.contains = _.includes; | |
</script><script src="https://static6.thumbtackstatic.com/_assets/javascript/release/bundles/foundation_bundle-6b3b21fa.js.gz"></script><script> | |
_createTTNamespace( | |
false, | |
[], | |
[], | |
[] | |
); | |
function postResponsivenessMetrics() { | |
var metrics = {}; | |
for (var metric in window.performance.timing) { | |
if (metric !== 'toJSON' && _.isInteger(window.performance.timing[metric])) { | |
metrics[metric] = window.performance.timing[metric]; | |
} | |
} | |
var data = { | |
key: "1m7ujophhuk9hgblefu8b7i5ivcm31gms0aqovsntqba8bk8u8km", | |
tags: {}, | |
data: metrics, | |
}; | |
$.post( | |
'/ajax/responsiveness', | |
data | |
); | |
} | |
if (window.performance && window.performance.timing) { | |
postResponsivenessMetrics(); | |
$(document).ready(function() { | |
postResponsivenessMetrics() | |
$(window).on('load', function() { | |
window.setTimeout(function() { | |
postResponsivenessMetrics() | |
}, 0); | |
}); | |
}); | |
} | |
</script><script> | |
TT.domReady(function() { | |
TT.loggedin = false; | |
}); | |
</script><script> | |
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ | |
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), | |
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) | |
})(window,document,'script','//www.google-analytics.com/analytics.js','ga'); | |
ga('create', 'UA-6981433-1', 'auto'); | |
ga('require', 'GTM-PCGNZW'); | |
ga('send', 'pageview'); | |
</script><script> | |
var signalCoData = {}; | |
(function () { | |
var tagjs = document.createElement("script"); | |
var s = document.getElementsByTagName("script")[0]; | |
tagjs.async = true; | |
tagjs.src = "//s.btstatic.com/tag.js#site=GYp4tcM"; | |
s.parentNode.insertBefore(tagjs, s); | |
})(); | |
</script><noscript><iframe src="https://s.thebrighttag.com/iframe?c=GYp4tcM" width="1" height="1" frameborder="0" | |
scrolling="no" marginheight="0" marginwidth="0"></iframe></noscript><div id="preload"></div><script type="application/ld+json"> | |
[ | |
{ | |
"@context": "http:\/\/schema.org", | |
"@type": "Website", | |
"name": "Thumbtack", | |
"url": "https:\/\/www.thumbtack.com\/" | |
}, | |
{ | |
"@context": "http:\/\/schema.org", | |
"@type": "Organization", | |
"url": "https:\/\/www.thumbtack.com\/", | |
"logo": "https:\/\/static.thumbtackstatic.com\/media\/logos\/thumbtack_brand_152x24.svg", | |
"name": "Thumbtack", | |
"contactPoint": [ | |
{ | |
"@type": "ContactPoint", | |
"telephone": "+1(866)501-5809", | |
"contactType": "customer service" | |
} | |
], | |
"sameAs": [ | |
"https:\/\/www.facebook.com\/Thumbtack\/", | |
"https:\/\/twitter.com\/thumbtack\/", | |
"https:\/\/plus.google.com\/+thumbtack\/", | |
"https:\/\/www.youtube.com\/user\/thumbtackhq\/", | |
"https:\/\/www.linkedin.com\/company\/thumbtack-inc.\/", | |
"https:\/\/www.instagram.com\/thumbtack\/", | |
"https:\/\/www.pinterest.com\/thumbtack\/" | |
] | |
} | |
] | |
</script><script> | |
$(window).on("load", function() { | |
TT.initPiede(); | |
}); | |
</script><script> | |
$(document).ready(function() { | |
var $gloriousNavigationWrapper = $(".glorious-navigation-wrapper"); | |
$("#mobile-navigation-toggle").on("click", function() { | |
$gloriousNavigationWrapper.toggle(); | |
}); | |
if (TT.env.primo || true) { | |
TT.initPrimoHeader(); | |
} | |
}); | |
</script> | |
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.28/angular.min.js"></script> | |
<script src="https://static7.thumbtackstatic.com/_assets/javascript/release/bundles/core-550d3ad7.js.gz"></script> | |
<script src="https://static4.thumbtackstatic.com/_assets/javascript/release/bundles/core.es6-d4e264a2.js.gz"></script> | |
<script src="https://static8.thumbtackstatic.com/_assets/javascript/release/pages/homepage/submodules/homepage-sticky-header/scripts/homepage-sticky-header.es6-607dc99c.js.gz"> | |
</script> | |
<script src="https://static7.thumbtackstatic.com/_assets/javascript/release/modules/category-carousel/scripts/category-carousel.es6-3a8013c5.js.gz"> | |
</script> | |
<script src="https://static6.thumbtackstatic.com/_assets/javascript/release/modules/request-form/scripts/request-form-ng.es6-af06c88a.js.gz"> | |
</script> | |
<script src="https://static3.thumbtackstatic.com/_assets/javascript/release/components/install-native-app/scripts/install-native-app-ng.es6-fd82d728.js.gz"> | |
</script> | |
<script> | |
$(document).ready(function() { | |
angular.module('requestForm').constant( | |
'requestFormViewModel', | |
{"requestSource":10,"requestEntrySource":4,"requestOrigin":null,"embeddedSchedulingQuestions":[124,139,148,156,193,282,304,626,747,806,964,1034,1477,1946,1969,2176,2179,2180,2192,2193,2240,2241,2252,2253,2282,2368,2373,2421,2425,2431,2432,2696,2703,2704,2906,3082,3150,3179,3183,3184,3203,3204,3205,3216,3218,3244,3250,3256,3296,3344,3348,3349,3361,3362,3364,3401,3528,3563,3565,3569,3597,3606,3609,4103,4104,4142,4156,4159,4160,4176,4177,4180,4235,4260,4270,4319,4325,4331,4425,4426,4467,4515,4518,4519,4520,4522,4532,4533,4535,4536,4575,4593,4624,4709],"liveProAssistCategories":["Ef:ZOOYOXFaD2A","FgkDqgZUb6Ws8g","CRUfnOchCWhnQQ","1axLKc3DdQ6g5w","SLWNiAQVYBldaA","bmLJkhdk5vGLvg","CGoqNwAGYYU2qA","q75MpVw2qNDkmQ","b7cSvw5Y7PhRlA","6WTJnO6mPxjoag","GmauKy9DW8jlXw","iJlabHh2QF9ylg","HSN$F3bPaZ1iaw","N3RO9AsfLUgQUA","kMI95pqKXLU9vQ","XW5gh2LIjTJbqg","MaHm4Ia$pQ:uYQ","d0v6PveQOQGUoA","Q9sYIW2IZP5AkA"],"shouldUseRecaptcha":false,"isEligibleForGrowthSprintApr17RFExpt":true} | |
); | |
angular.bootstrap(angular.element('body'), [ | |
'auraComponents', | |
'requestForm', | |
]); | |
}); | |
</script> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
How to install
wget
Command to clone website: