2019-08-24 03:06:57 +00:00
< template >
2019-11-01 11:15:53 +00:00
< div class = "wrapper" >
< header class = "header" >
2019-09-02 04:48:01 +00:00
< div >
< div class = "slide-in" >
< nuxt-link to = "/" >
2019-11-01 11:15:53 +00:00
< h1 class = "logo" > Postwoman < / h1 >
2019-09-02 04:48:01 +00:00
< / nuxt-link >
2019-11-01 11:15:53 +00:00
< h3 class = "tagline" > API request builder < / h3 >
2019-09-02 04:48:01 +00:00
< / div >
2019-11-01 11:53:13 +00:00
< a href = "https://github.com/liyasthomas/postwoman" target = "_blank" rel = "noopener" >
< button class = "icon" >
< img id = "imgGitHub" src = "~static/icons/github.svg" alt = "GitHub" :style = "logoStyle()" / >
< span > GitHub < / span >
< / button >
< / a >
2019-09-02 04:48:01 +00:00
< / div >
< / header >
2019-11-01 11:15:53 +00:00
< div class = "content" >
< div class = "columns" >
< aside class = "nav-first" >
< nav class = "primary-nav" >
<!--
We ' re using manual checks for linkActive because the query string
seems to mess up the nuxt - link active class .
-- >
2019-11-03 06:06:41 +00:00
< nuxt-link to = "/" :class = "linkActive('/')" v -tooltip .right = " ' Home ' " aria -label = " Home " >
2019-11-01 11:15:53 +00:00
< logo alt style = "height: 24px;" > < / logo >
< / nuxt-link >
2019-11-02 05:32:21 +00:00
< nuxt-link
to = "/websocket"
: class = "linkActive('/websocket')"
v - tooltip . right = "'WebSocket'"
>
2019-11-01 11:15:53 +00:00
< i class = "material-icons" > cloud < / i >
< / nuxt-link >
< nuxt-link
to = "/settings"
: class = "linkActive('/settings')"
2019-11-01 11:43:55 +00:00
v - tooltip . right = "'Settings'"
2019-11-01 11:15:53 +00:00
aria - label = "Settings"
>
< i class = "material-icons" > settings < / i >
< / nuxt-link >
< / nav >
< div v-if = "['/'].includes($route.path)" >
< nav class = "secondary-nav" >
< ul >
< li >
2019-11-01 11:43:55 +00:00
< a href = "#request" v -tooltip .right = " ' Request ' " >
2019-11-01 11:15:53 +00:00
< i class = "material-icons" > cloud _upload < / i >
< / a >
< / li >
< li >
2019-11-01 11:43:55 +00:00
< a href = "#options" v -tooltip .right = " ' Options ' " >
2019-11-01 11:15:53 +00:00
< i class = "material-icons" > toc < / i >
< / a >
< / li >
< li >
2019-11-01 11:43:55 +00:00
< a href = "#response" v -tooltip .right = " ' Response ' " >
2019-11-01 11:15:53 +00:00
< i class = "material-icons" > cloud _download < / i >
< / a >
< / li >
< li >
2019-11-01 11:43:55 +00:00
< a href = "#collections" v -tooltip .right = " ' Collections ' " >
2019-11-01 11:15:53 +00:00
< i class = "material-icons" > folder _special < / i >
< / a >
< / li >
< li >
2019-11-01 11:43:55 +00:00
< a href = "#history" v -tooltip .right = " ' History ' " >
2019-11-01 11:15:53 +00:00
< i class = "material-icons" > watch _later < / i >
< / a >
< / li >
< / ul >
< / nav >
< / div >
< div v -else -if = " [ ' / websocket ' ] .includes ( $ route.path ) " >
< nav class = "secondary-nav" >
< ul >
< li >
2019-11-01 11:43:55 +00:00
< a href = "#request" v -tooltip .right = " ' Request ' " >
2019-11-01 11:15:53 +00:00
< i class = "material-icons" > cloud _upload < / i >
< / a >
< / li >
< li >
2019-11-01 11:43:55 +00:00
< a href = "#response" v -tooltip .right = " ' Response ' " >
2019-11-01 11:15:53 +00:00
< i class = "material-icons" > cloud _download < / i >
< / a >
< / li >
< / ul >
< / nav >
< / div >
< div v -else -if = " [ ' / settings ' ] .includes ( $ route.path ) " >
< nav class = "secondary-nav" >
< ul >
< li >
2019-11-01 11:43:55 +00:00
< a href = "#theme" v -tooltip .right = " ' Theme ' " >
2019-11-01 11:15:53 +00:00
< i class = "material-icons" > brush < / i >
< / a >
< / li >
< li >
2019-11-01 11:43:55 +00:00
< a href = "#proxy" v -tooltip .right = " ' Proxy ' " >
2019-11-01 11:15:53 +00:00
< i class = "material-icons" > public < / i >
< / a >
< / li >
< / ul >
< / nav >
< / div >
< / aside >
2019-11-01 14:12:40 +00:00
< nuxt id = "main" class = "main" / >
2019-11-01 11:15:53 +00:00
< aside class = "nav-second" > < / aside >
< / div >
< / div >
< footer class = "footer" >
2019-09-02 04:48:01 +00:00
<!-- Top section of footer : GitHub / install links -- >
2019-09-25 09:14:44 +00:00
< div class = "flex-wrap" >
2019-09-26 07:30:19 +00:00
< button class = "icon" id = "installPWA" @click.prevent ="showInstallPrompt()" >
2019-09-25 11:43:42 +00:00
< i class = "material-icons" > add _to _home _screen < / i >
2019-09-20 13:04:42 +00:00
< span > Install PWA < / span >
2019-09-02 04:48:01 +00:00
< / button >
2019-10-25 08:14:34 +00:00
< button
class = "icon"
onClick = "window.open('https://twitter.com/share?text=👽 Postwoman • API request builder - Helps you create your requests faster, saving you precious time on your development&url=https://postwoman.io&hashtags=postwoman&via=liyasthomas');"
>
2019-09-25 09:14:44 +00:00
< svg xmlns = "http://www.w3.org/2000/svg" width = "18" height = "18" viewBox = "0 0 24 24" >
2019-10-25 08:14:34 +00:00
< path
d = "M24 4.557c-.883.392-1.832.656-2.828.775 1.017-.609 1.798-1.574 2.165-2.724-.951.564-2.005.974-3.127 1.195-.897-.957-2.178-1.555-3.594-1.555-3.179 0-5.515 2.966-4.797 6.045-4.091-.205-7.719-2.165-10.148-5.144-1.29 2.213-.669 5.108 1.523 6.574-.806-.026-1.566-.247-2.229-.616-.054 2.281 1.581 4.415 3.949 4.89-.693.188-1.452.232-2.224.084.626 1.956 2.444 3.379 4.6 3.419-2.07 1.623-4.678 2.348-7.29 2.04 2.179 1.397 4.768 2.212 7.548 2.212 9.142 0 14.307-7.721 13.995-14.646.962-.695 1.797-1.562 2.457-2.549z"
/ >
2019-09-25 09:14:44 +00:00
< / svg >
< span > Tweet < / span >
< / button >
2019-09-02 04:48:01 +00:00
< / div >
<!-- Bottom section of footer : version / author information -- >
< p class = "align-center" >
2019-09-05 08:49:38 +00:00
< span v-if = "version.name" >
2019-10-25 08:14:34 +00:00
< a
v - bind : href = "'https://github.com/liyasthomas/postwoman/releases/tag/' + version.name"
target = "_blank"
rel = "noopener"
> { { version . name } } < / a >
2019-09-05 08:49:38 +00:00
< span v-if = "version.hash" >
2019-10-25 08:14:34 +00:00
-
< a
v - bind : href = "'https://github.com/liyasthomas/postwoman/commit/' + version.hash"
target = "_blank"
rel = "noopener"
> { { version . hash } } < / a >
2019-09-16 08:20:28 +00:00
< / span >
2019-10-25 08:14:34 +00:00
< span v-if = "version.variant" > ( {{ version.variant }} ) < / span >
2019-09-16 08:20:28 +00:00
& # x2022 ;
2019-10-25 08:14:34 +00:00
< / span > by
< a href = "https://liyasthomas.web.app" target = "_blank" rel = "noopener" > Liyas Thomas 🦄 < / a > & # x2022 ;
< a href = "https://postwoman.launchaco.com" target = "_blank" rel = "noopener" > Subscribe < / a >
2019-09-02 04:48:01 +00:00
< / p >
< / footer >
< / div >
2019-08-24 03:06:57 +00:00
< / template >
2019-10-25 08:14:34 +00:00
2019-08-24 03:06:57 +00:00
< style lang = "scss" >
2019-09-02 04:48:01 +00:00
< / style >
2019-10-25 08:14:34 +00:00
2019-09-02 04:48:01 +00:00
< script >
2019-10-25 08:14:34 +00:00
import intializePwa from "../assets/js/pwa" ;
2019-09-02 04:48:01 +00:00
import logo from "../components/logo" ;
2019-10-25 08:14:34 +00:00
import * as version from "../.postwoman/version.json" ;
2019-09-02 04:48:01 +00:00
export default {
components : {
logo
} ,
2019-10-20 00:57:47 +00:00
methods : {
2019-10-25 08:14:34 +00:00
linkActive ( path ) {
2019-10-20 00:57:47 +00:00
return {
2019-10-25 08:14:34 +00:00
"nuxt-link-exact-active" : this . $route . path === path ,
"nuxt-link-active" : this . $route . path === path
2019-10-20 00:57:47 +00:00
} ;
}
} ,
2019-09-02 04:48:01 +00:00
data ( ) {
return {
// Once the PWA code is initialized, this holds a method
// that can be called to show the user the installation
// prompt.
showInstallPrompt : null ,
logoStyle ( ) {
2019-10-25 08:14:34 +00:00
return (
this . $store . state . postwoman . settings . THEME _CLASS || ""
) . includes ( "light" )
? " filter: invert(100%); -webkit-filter: invert(100%);"
: "" ;
2019-09-02 04:48:01 +00:00
} ,
version : { }
2019-10-25 08:14:34 +00:00
} ;
2019-09-02 04:48:01 +00:00
} ,
beforeMount ( ) {
// Set version data
this . version = version . default ;
// Load theme settings
( ( ) => {
// Apply theme from settings.
2019-10-25 08:14:34 +00:00
document . documentElement . className =
this . $store . state . postwoman . settings . THEME _CLASS || "" ;
2019-09-02 04:48:01 +00:00
// Load theme color data from settings, or use default color.
2019-10-25 08:14:34 +00:00
let color = this . $store . state . postwoman . settings . THEME _COLOR || "#50fa7b" ;
2019-09-02 04:48:01 +00:00
let vibrant = this . $store . state . postwoman . settings . THEME _COLOR _VIBRANT ;
if ( vibrant == null ) vibrant = true ;
2019-10-25 08:14:34 +00:00
document . documentElement . style . setProperty ( "--ac-color" , color ) ;
document . documentElement . style . setProperty (
"--act-color" ,
vibrant ? "rgb(37, 38, 40)" : "#ffffff"
) ;
2019-09-02 04:48:01 +00:00
} ) ( ) ;
} ,
mounted ( ) {
2019-10-25 08:14:34 +00:00
if ( process . client ) {
document . body . classList . add ( "afterLoad" ) ;
2019-10-20 00:57:47 +00:00
}
2019-11-01 11:15:53 +00:00
document
. querySelector ( "meta[name=theme-color]" )
. setAttribute (
"content" ,
this . $store . state . postwoman . settings . THEME _TAB _COLOR || "#252628"
) ;
2019-10-20 00:57:47 +00:00
2019-09-02 04:48:01 +00:00
// Initializes the PWA code - checks if the app is installed,
// etc.
( async ( ) => {
this . showInstallPrompt = await intializePwa ( ) ;
2019-10-25 08:14:34 +00:00
let cookiesAllowed = localStorage . getItem ( "cookiesAllowed" ) === "yes" ;
if ( ! cookiesAllowed ) {
this . $toast . show ( "We use cookies" , {
icon : "info" ,
2019-10-16 09:55:29 +00:00
duration : 5000 ,
2019-10-25 08:14:34 +00:00
theme : "toasted-primary" ,
2019-10-15 11:57:16 +00:00
action : [
{
2019-10-25 08:14:34 +00:00
text : "Dismiss" ,
2019-10-15 11:57:16 +00:00
onClick : ( e , toastObject ) => {
2019-10-25 08:14:34 +00:00
localStorage . setItem ( "cookiesAllowed" , "yes" ) ;
2019-10-15 11:57:16 +00:00
toastObject . goAway ( 0 ) ;
}
}
]
} ) ;
}
2019-09-02 04:48:01 +00:00
} ) ( ) ;
2019-11-01 11:15:53 +00:00
window . addEventListener ( "scroll" , event => {
let mainNavLinks = document . querySelectorAll ( "nav ul li a" ) ;
let fromTop = window . scrollY ;
mainNavLinks . forEach ( link => {
let section = document . querySelector ( link . hash ) ;
if (
section . offsetTop <= fromTop &&
section . offsetTop + section . offsetHeight > fromTop
) {
link . classList . add ( "current" ) ;
} else {
link . classList . remove ( "current" ) ;
}
} ) ;
} ) ;
2019-10-20 00:57:47 +00:00
} ,
watch : {
2019-10-25 08:14:34 +00:00
$route ( ) {
2019-10-20 00:57:47 +00:00
this . $toast . clear ( ) ;
}
2019-08-24 03:06:57 +00:00
}
2019-10-25 08:14:34 +00:00
} ;
2019-08-24 03:06:57 +00:00
< / script >